diff --git a/dist/json-schema-faker.js b/dist/json-schema-faker.js index 10fa2502d5afeaf259f47f384ddda8e5cb405fd6..476626f735c9be72f7beb91b47eddc7e4296a52e 100644 Binary files a/dist/json-schema-faker.js and b/dist/json-schema-faker.js differ diff --git a/dist/json-schema-faker.min.js b/dist/json-schema-faker.min.js index 58883d08c0e075fd9b5f62965d95a4ef660d81e8..5285763f63ed25d7d557c0b59aec4c90e3a198cd 100644 Binary files a/dist/json-schema-faker.min.js and b/dist/json-schema-faker.min.js differ diff --git a/dist/locale/de.js b/dist/locale/de.js index 114b86c80512e98c16b43c5fbc1275e3388b0d79..413318dd166d2eeaea2a6648e290a146eacc8445 100644 Binary files a/dist/locale/de.js and b/dist/locale/de.js differ diff --git a/dist/locale/de.min.js b/dist/locale/de.min.js index 8b622ee2f73bd598ef3e1b5ebea90f17dea80d07..e04c02aeb590841a28455d1c1f9975e11e5b910d 100644 Binary files a/dist/locale/de.min.js and b/dist/locale/de.min.js differ diff --git a/dist/locale/de_AT.js b/dist/locale/de_AT.js index 21b4d5eff7ad7e0ebb95c22214707f52c16d7d11..c995ea73f8a4a375ac1bac87e303cc99abbea9e8 100644 Binary files a/dist/locale/de_AT.js and b/dist/locale/de_AT.js differ diff --git a/dist/locale/de_AT.min.js b/dist/locale/de_AT.min.js index 5f357c5e5fb23289e4494f9ad09c2356de2e93a6..17a26f9276cd356f1a7f55f8276d5a0f08576de1 100644 Binary files a/dist/locale/de_AT.min.js and b/dist/locale/de_AT.min.js differ diff --git a/dist/locale/de_CH.js b/dist/locale/de_CH.js index 8767e1ccee990c627d55ba7f5ee187933f19556a..e02750ba2022a7d0db6330c692082d1ab1c04349 100644 Binary files a/dist/locale/de_CH.js and b/dist/locale/de_CH.js differ diff --git a/dist/locale/de_CH.min.js b/dist/locale/de_CH.min.js index 205c78cb5541e79e564847750b752e3d21f5e839..9858d8aaf02a141d9a47d9bd39e8e807c07041eb 100644 Binary files a/dist/locale/de_CH.min.js and b/dist/locale/de_CH.min.js differ diff --git a/dist/locale/en.js b/dist/locale/en.js index 9a836021b8899905aa107a4ee934c19582fc6c4d..4e5c13215b0d88d6622279a2e92f339c28380494 100644 Binary files a/dist/locale/en.js and b/dist/locale/en.js differ diff --git a/dist/locale/en.min.js b/dist/locale/en.min.js index 808194ac0b7017f943c6219638da20a069ee9975..e39a4d9df70f90f1bc1dad4f6e72b8d13bbca5fe 100644 Binary files a/dist/locale/en.min.js and b/dist/locale/en.min.js differ diff --git a/dist/locale/en_AU.js b/dist/locale/en_AU.js index 91ef4a7bdb9db04d02c155d223fd402cc4ccfe1d..6e0d1b02a3df004c65b44ba4e8d90e7870b3a390 100644 Binary files a/dist/locale/en_AU.js and b/dist/locale/en_AU.js differ diff --git a/dist/locale/en_AU.min.js b/dist/locale/en_AU.min.js index 8b8f0e40e26a38bc5897981b35f7e72ec2102e90..462874d5ec3a5a5a6c0f1b8770c3ec727e698b57 100644 Binary files a/dist/locale/en_AU.min.js and b/dist/locale/en_AU.min.js differ diff --git a/dist/locale/en_BORK.js b/dist/locale/en_BORK.js index dc6aa63ab3b90477321c95d5bc2ada5781690755..106fe02f777a045e11f0607bb41c14c3ca68b825 100644 Binary files a/dist/locale/en_BORK.js and b/dist/locale/en_BORK.js differ diff --git a/dist/locale/en_BORK.min.js b/dist/locale/en_BORK.min.js index c87c1a60bfd43e939891dee1a45e32a2ccf59508..890f886fcc890912e970c3466a0a59c9b7f801fa 100644 Binary files a/dist/locale/en_BORK.min.js and b/dist/locale/en_BORK.min.js differ diff --git a/dist/locale/en_CA.js b/dist/locale/en_CA.js index 76796e44821cb509ad3f72b036c84f252d9cb97f..61a62de6eb7492273c3d7c0b1f5da35eca861f2c 100644 Binary files a/dist/locale/en_CA.js and b/dist/locale/en_CA.js differ diff --git a/dist/locale/en_CA.min.js b/dist/locale/en_CA.min.js index 9b7abfc62be886e45b99239557c433ade14accf0..f36a83e47e146309aca0bd82e059eb94d3a9fc9e 100644 Binary files a/dist/locale/en_CA.min.js and b/dist/locale/en_CA.min.js differ diff --git a/dist/locale/en_GB.js b/dist/locale/en_GB.js index 1fb94564878e58c1fddbcafe464e6cdb57aa0710..eca0888b8c236a93fd6f25203a09ab0b76bb2d9f 100644 Binary files a/dist/locale/en_GB.js and b/dist/locale/en_GB.js differ diff --git a/dist/locale/en_GB.min.js b/dist/locale/en_GB.min.js index 5bba82bd3193addc91c1524efe12de5278c0c32c..5fb41be67cc61bb2c42e5752776086f50ab674c9 100644 Binary files a/dist/locale/en_GB.min.js and b/dist/locale/en_GB.min.js differ diff --git a/dist/locale/en_IE.js b/dist/locale/en_IE.js index 104f471ef4685016603f673671c801834f5f304c..38ac4ff51db850752da82c7133ba00fbffd6e594 100644 Binary files a/dist/locale/en_IE.js and b/dist/locale/en_IE.js differ diff --git a/dist/locale/en_IE.min.js b/dist/locale/en_IE.min.js index 00a1173df0fdf058379ff17f545bb427a4819ca1..0ae6bb442d18d09f7d848a007e9c40c9d0eae9b5 100644 Binary files a/dist/locale/en_IE.min.js and b/dist/locale/en_IE.min.js differ diff --git a/dist/locale/en_IND.js b/dist/locale/en_IND.js index 5bb331c7fc427d12c98d0dc98e2c2d239b32c445..212221bff637ecf8152339dbb6d612c41c11b240 100644 Binary files a/dist/locale/en_IND.js and b/dist/locale/en_IND.js differ diff --git a/dist/locale/en_IND.min.js b/dist/locale/en_IND.min.js index 4bbebc04421f611ec00239e80277cd285854d1eb..f726865f62b327786dac19dfd628a1f631797cbf 100644 Binary files a/dist/locale/en_IND.min.js and b/dist/locale/en_IND.min.js differ diff --git a/dist/locale/en_US.js b/dist/locale/en_US.js index aca4453ffa2a0c41f79fe6d57e1dfc62ff85a696..78c1b2f30977e64370ec097b8e08c5f0bee70bb4 100644 Binary files a/dist/locale/en_US.js and b/dist/locale/en_US.js differ diff --git a/dist/locale/en_US.min.js b/dist/locale/en_US.min.js index 58aaa2bc928559d6291dbd0efa7e72d9eada52ca..1bde2848f2874a6230664bccc6ad9bab6d63dd37 100644 Binary files a/dist/locale/en_US.min.js and b/dist/locale/en_US.min.js differ diff --git a/dist/locale/en_au_ocker.js b/dist/locale/en_au_ocker.js index f91aedf09ead9d44943952687219f5778d301196..e0318446f83ef455feacb9b5ba342ac7611257ad 100644 Binary files a/dist/locale/en_au_ocker.js and b/dist/locale/en_au_ocker.js differ diff --git a/dist/locale/en_au_ocker.min.js b/dist/locale/en_au_ocker.min.js index 741594562b2f35549c9f09d52389b335fda018fb..60317acb77dc8f5604e91a6d14b15ac51d5b754e 100644 Binary files a/dist/locale/en_au_ocker.min.js and b/dist/locale/en_au_ocker.min.js differ diff --git a/dist/locale/es.js b/dist/locale/es.js index 5c1ffde2a9e9c264447e6afc1fb6c572144ea804..531470e707e24899459c01fd419353ce83130680 100644 Binary files a/dist/locale/es.js and b/dist/locale/es.js differ diff --git a/dist/locale/es.min.js b/dist/locale/es.min.js index 683831202a806153d927af041ca16cfb60d9287b..7de1ea8bb30710451a6938c56edc46b6a3d75dae 100644 Binary files a/dist/locale/es.min.js and b/dist/locale/es.min.js differ diff --git a/dist/locale/es_MX.js b/dist/locale/es_MX.js index 008a319afd74db1eef1c09c5da20d208ff136ea0..278a1deadb9b680eabacf16418b798368d22f8dd 100644 Binary files a/dist/locale/es_MX.js and b/dist/locale/es_MX.js differ diff --git a/dist/locale/es_MX.min.js b/dist/locale/es_MX.min.js index ad696c6c8e312fdba55b3ed2aa9f68bdfb23c14c..6d1fe3a04f73f2443d9f84b525eb416b92c64a3f 100644 Binary files a/dist/locale/es_MX.min.js and b/dist/locale/es_MX.min.js differ diff --git a/dist/locale/fa.js b/dist/locale/fa.js index d0ab24db6e196a1eee9ff76fa76e5e88d16b871f..fd9c07295a7c3ecbfb8b9445a7fedf1bc10e8f62 100644 Binary files a/dist/locale/fa.js and b/dist/locale/fa.js differ diff --git a/dist/locale/fa.min.js b/dist/locale/fa.min.js index b7f264aca91958ded9465f0bb6d2774e8a8d865d..45f623c66812acf87a7ae148060c8f622a8fec40 100644 Binary files a/dist/locale/fa.min.js and b/dist/locale/fa.min.js differ diff --git a/dist/locale/fr.js b/dist/locale/fr.js index 33c679a7a3fd772b7e5b77cf1234ff45025e9571..d179ad5ba8e603501c50b2d5ee1648534b96737d 100644 Binary files a/dist/locale/fr.js and b/dist/locale/fr.js differ diff --git a/dist/locale/fr.min.js b/dist/locale/fr.min.js index 59500083fd939d442a0a640b32b69614527a2a1e..2efd9d9f00fa151a8786b04946c5694181f7bba7 100644 Binary files a/dist/locale/fr.min.js and b/dist/locale/fr.min.js differ diff --git a/dist/locale/fr_CA.js b/dist/locale/fr_CA.js index 3eb2bad98e1adbb3418df63ffd539f52dfbcd8b8..2f992a581ad68e0f357cff0dae17533b1948e810 100644 Binary files a/dist/locale/fr_CA.js and b/dist/locale/fr_CA.js differ diff --git a/dist/locale/fr_CA.min.js b/dist/locale/fr_CA.min.js index 25c5c5a3483f596e8a1a619191e489331c6d9327..2b8643804309bddcc4b1adf21bc8cb501bd431d9 100644 Binary files a/dist/locale/fr_CA.min.js and b/dist/locale/fr_CA.min.js differ diff --git a/dist/locale/ge.js b/dist/locale/ge.js index 2ccb84e590e1d0914f8ec61410a458b4401f0ea5..b5aee7b9dc652f8334a97664a160666fbb381bad 100644 Binary files a/dist/locale/ge.js and b/dist/locale/ge.js differ diff --git a/dist/locale/ge.min.js b/dist/locale/ge.min.js index 4caa5b56d7872a88b25d6d0b49dbc87e9ff9240f..c588704d58a125a39529aa0a19c86604b01f3cf1 100644 Binary files a/dist/locale/ge.min.js and b/dist/locale/ge.min.js differ diff --git a/dist/locale/it.js b/dist/locale/it.js index aedd82fda6788bb11f929341c8ae595369e6e60d..cfb7d60f0ea4c37b4fdb9560160401859b7ec1f3 100644 Binary files a/dist/locale/it.js and b/dist/locale/it.js differ diff --git a/dist/locale/it.min.js b/dist/locale/it.min.js index ad6c866c1f9e019da228cbc71929fd519c28cbf6..ddafa931f0c1cc541639c131c629d836c3407180 100644 Binary files a/dist/locale/it.min.js and b/dist/locale/it.min.js differ diff --git a/dist/locale/ja.js b/dist/locale/ja.js index 11d2d7528a3f0262df411e559d1bdbf44c47627b..e490e0728d2fe367f9d7bcce2fd41e994fd38413 100644 Binary files a/dist/locale/ja.js and b/dist/locale/ja.js differ diff --git a/dist/locale/ja.min.js b/dist/locale/ja.min.js index f7839bbb95519a9afb73a1ec9a14ca5e92128e59..2e2ab56812239a3927ae7529d52a79994e4a0eed 100644 Binary files a/dist/locale/ja.min.js and b/dist/locale/ja.min.js differ diff --git a/dist/locale/ko.js b/dist/locale/ko.js index bed8344fbc562aff4abea7c441631d88674999b3..a49da7ab7d96de8431465d289e13aed104637357 100644 Binary files a/dist/locale/ko.js and b/dist/locale/ko.js differ diff --git a/dist/locale/ko.min.js b/dist/locale/ko.min.js index 3262287e52b37a69fdef2c33b2c18405b2e46fb5..35281e9c2a29e788c90a4892b3911529560fa84f 100644 Binary files a/dist/locale/ko.min.js and b/dist/locale/ko.min.js differ diff --git a/dist/locale/nb_NO.js b/dist/locale/nb_NO.js index 630e2bd49b4574ecc04d1a5e373f137d57ce2b56..12d6bd389a59f526993ca3c6995c35f0dee1d9ac 100644 Binary files a/dist/locale/nb_NO.js and b/dist/locale/nb_NO.js differ diff --git a/dist/locale/nb_NO.min.js b/dist/locale/nb_NO.min.js index 014905b537435867ad36b17ef24f17418c66ed7b..5242259595a5c11597c619548070daf281fdd858 100644 Binary files a/dist/locale/nb_NO.min.js and b/dist/locale/nb_NO.min.js differ diff --git a/dist/locale/nep.js b/dist/locale/nep.js index cec7d592c06ab980b978aa5f8f1ac09cfe567723..4a6c14b76cd160a1bb1538c226e2b69dffa9c78f 100644 Binary files a/dist/locale/nep.js and b/dist/locale/nep.js differ diff --git a/dist/locale/nep.min.js b/dist/locale/nep.min.js index ab8393650cc51fd16c4ee5123edda13c0be69c42..4102f885f2dfcd222a20058c0a5fea146957e77b 100644 Binary files a/dist/locale/nep.min.js and b/dist/locale/nep.min.js differ diff --git a/dist/locale/nl.js b/dist/locale/nl.js index 610e658fa50fc438f8f502712c25f16c740476bc..a86132857c467f9fa3ae89079c82e9a0e93cbc41 100644 Binary files a/dist/locale/nl.js and b/dist/locale/nl.js differ diff --git a/dist/locale/nl.min.js b/dist/locale/nl.min.js index e56614598ca613f1951a502dd1ec025649ff86f8..aa7a74eb1c7c045bd1b6eae1dbab0040cfa39765 100644 Binary files a/dist/locale/nl.min.js and b/dist/locale/nl.min.js differ diff --git a/dist/locale/pl.js b/dist/locale/pl.js index 15adc17484669bcee76e47c31d7a041e50b66250..6bc73a8a97ac1e9092f60b7bd3e4721f5c300f10 100644 Binary files a/dist/locale/pl.js and b/dist/locale/pl.js differ diff --git a/dist/locale/pl.min.js b/dist/locale/pl.min.js index 3c2c0b540d5cc4e1763afe5182a6738edddd8d1a..427a990f47e74386d0d791318fce74a8582bdbc5 100644 Binary files a/dist/locale/pl.min.js and b/dist/locale/pl.min.js differ diff --git a/dist/locale/pt_BR.js b/dist/locale/pt_BR.js index b6a5b40658b785aeed2c8fe7e3728e85ba0b757a..b103d8eb3ae3d4ccf7d8063c4499a55a463c7b29 100644 Binary files a/dist/locale/pt_BR.js and b/dist/locale/pt_BR.js differ diff --git a/dist/locale/pt_BR.min.js b/dist/locale/pt_BR.min.js index 00a968f8686db945282b21d6fdd877b6b75b14d7..0e19fa24b5c40a1b4657de8fa62159b3db2827c7 100644 Binary files a/dist/locale/pt_BR.min.js and b/dist/locale/pt_BR.min.js differ diff --git a/dist/locale/ru.js b/dist/locale/ru.js index b204a7bf4b59c25321abc2a0f42da40c384b427a..9aa0ed948933fa4e9b633e2d09c830450bc370bc 100644 Binary files a/dist/locale/ru.js and b/dist/locale/ru.js differ diff --git a/dist/locale/ru.min.js b/dist/locale/ru.min.js index 702c8cc7fff1ed9af3281054d68e51e507afdfca..a44ff6ff6e9f673dee970d361d261a2b549c38a6 100644 Binary files a/dist/locale/ru.min.js and b/dist/locale/ru.min.js differ diff --git a/dist/locale/sk.js b/dist/locale/sk.js index 39fb302b8705f137add6b3a1bfb4b9722fe23b04..4013721f75d1544d411c28a11dee69bd1e37a611 100644 Binary files a/dist/locale/sk.js and b/dist/locale/sk.js differ diff --git a/dist/locale/sk.min.js b/dist/locale/sk.min.js index c87bfef0c2469a8ac70e736908b10f2001ac087e..797d67603769bcdd5406b886c1acc79cca010517 100644 Binary files a/dist/locale/sk.min.js and b/dist/locale/sk.min.js differ diff --git a/dist/locale/sv.js b/dist/locale/sv.js index d9f2b6669a3caf768a70ccc33c2c315b42cacf6b..229e6fe47f09f11f36c3f0d8630dca95fdb58809 100644 Binary files a/dist/locale/sv.js and b/dist/locale/sv.js differ diff --git a/dist/locale/sv.min.js b/dist/locale/sv.min.js index 0cc2ee099bec01be43a7a9d42fa4382f0a967f33..50e4e486f65324e2d12eae1d8a356a675de8751e 100644 Binary files a/dist/locale/sv.min.js and b/dist/locale/sv.min.js differ diff --git a/dist/locale/tr.js b/dist/locale/tr.js index 21d87cd231ba1d1dd991c405e0c35fccb510fc91..ab4703485a8b8dd59454df177349a69eab02a072 100644 Binary files a/dist/locale/tr.js and b/dist/locale/tr.js differ diff --git a/dist/locale/tr.min.js b/dist/locale/tr.min.js index 0aa922627ff84b7efd408e7f1424bbd395c4e9ab..4906d66d31b573042ea3618360fff68ebc30489f 100644 Binary files a/dist/locale/tr.min.js and b/dist/locale/tr.min.js differ diff --git a/dist/locale/uk.js b/dist/locale/uk.js index 72da3638a779159d92b6bf1a38ba163c2452d831..0bd9af4c55d9dc1ea7f7fda9ef70939c2c69d272 100644 Binary files a/dist/locale/uk.js and b/dist/locale/uk.js differ diff --git a/dist/locale/uk.min.js b/dist/locale/uk.min.js index d3f0fe69e098eef33cc91780e1c4dda6e9800705..21821431d1e02adbd2d5ac96f0c24705f17b117c 100644 Binary files a/dist/locale/uk.min.js and b/dist/locale/uk.min.js differ diff --git a/dist/locale/vi.js b/dist/locale/vi.js index d4c0206103ae20bf7f3ec4de30840be050aa91ea..dd2ecd65ba80af3602f91e56ed327eafad1847bd 100644 Binary files a/dist/locale/vi.js and b/dist/locale/vi.js differ diff --git a/dist/locale/vi.min.js b/dist/locale/vi.min.js index 6cb5c98b2efb8c8c3506dc456a67914cccc28699..4e22df433bea2007394cac06a8bb68ad31def10b 100644 Binary files a/dist/locale/vi.min.js and b/dist/locale/vi.min.js differ diff --git a/dist/locale/zh_CN.js b/dist/locale/zh_CN.js index 43f1c942f57831271f57833ab4a3017bdf66cc79..bde152fa736a42113faedef7a8ad548eea5ddcb3 100644 Binary files a/dist/locale/zh_CN.js and b/dist/locale/zh_CN.js differ diff --git a/dist/locale/zh_CN.min.js b/dist/locale/zh_CN.min.js index 32352d975ae7e9f7b632217fe75bcac1bf734f37..adb6443f267cc4876c7c111c36252bbfd865c431 100644 Binary files a/dist/locale/zh_CN.min.js and b/dist/locale/zh_CN.min.js differ diff --git a/dist/locale/zh_TW.js b/dist/locale/zh_TW.js index 87b913ebf9bf6de175b1ba72920298eb4145f536..e02e20daaddc5702eadf6400a122b65e04761809 100644 Binary files a/dist/locale/zh_TW.js and b/dist/locale/zh_TW.js differ diff --git a/dist/locale/zh_TW.min.js b/dist/locale/zh_TW.min.js index 3227d1c24a8ea947e541f8d685884536b6901d78..645f3e5f172bc6686c09d9847c791fd8ee1516e0 100644 Binary files a/dist/locale/zh_TW.min.js and b/dist/locale/zh_TW.min.js differ diff --git a/lib/core/clean.js b/lib/core/clean.js index f2487c21893e89cdfcc9ac71f3384e70937df9bc..804d448bbde0d219372f511a1ca59c5cbcdb5b7a 100644 Binary files a/lib/core/clean.js and b/lib/core/clean.js differ diff --git a/lib/core/traverse.js b/lib/core/traverse.js index 379910ec781847cd02fc9f6f035c95bd558a5a3d..ee263e57516aca4dde6bc4ec78f65b79db6c021f 100644 Binary files a/lib/core/traverse.js and b/lib/core/traverse.js differ diff --git a/lib/types/object.js b/lib/types/object.js index 07726e069d5aad679c375a32a1566c59d691ee64..bb0fa593b770225dc31a0ac9165df699a574bc5d 100644 Binary files a/lib/types/object.js and b/lib/types/object.js differ diff --git a/package.json b/package.json index 6d369496bd1e0e920eff338a92e91c6127f155f1..e6b8d6954d119582c9aca3b116b054be8e06749c 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "json-schema-faker", - "version": "0.4.1", + "version": "0.4.2", "description": "JSON-Schema + fake data generators", "homepage": "http://json-schema-faker.js.org", "main": "index.js", diff --git a/spec/schema/core/issues/empty-props.json b/spec/schema/core/issues/empty-props.json index 991f0ee926b57a8432c7e8b1f7ad4815e74ae007..d6f1311766afcd9c2ad8bb6610cd1271b6b488df 100644 --- a/spec/schema/core/issues/empty-props.json +++ b/spec/schema/core/issues/empty-props.json @@ -4,6 +4,26 @@ "tests": [ { "description": "should remove empty objects, e.g. [] {}", + "schema": { + "type": "object", + "properties": { + "foo": { "$ref": "#/definitions/baz" } + }, + "definitions": { + "baz": { + "type": "array", + "items": { + "anyOf": [ + { "$ref": "#/definitions/baz" } + ] + } + } + } + }, + "equal": {} + }, + { + "description": "should leave props when required", "schema": { "type": "object", "properties": { @@ -21,7 +41,9 @@ }, "required": ["foo"] }, - "nonEmpty": true + "equal": { + "foo": [] + } } ] } diff --git a/spec/schema/helpers.coffee b/spec/schema/helpers.coffee index 5ca792b9ce549fe8e71489e88727c8bbfd4ccc92..bcbee43100c57a2a21c07aa9e63ba10d1687827b 100644 --- a/spec/schema/helpers.coffee +++ b/spec/schema/helpers.coffee @@ -74,36 +74,3 @@ global.customMatchers = pass: !fail.length message: fail.join('\n') if fail.length - - toHaveNonEmptyProps: -> - compare: (actual, expected) -> - fail = 0 - - test = (o) -> - if Array.isArray(o) - o = o.map(test).filter (x) -> - typeof x isnt 'undefined' - - unless o.length - fail += 1 - return - - else if typeof o is 'object' - for k, v of o - f = test(v) - - if typeof f is 'undefined' - delete o[k] - else - o[k] = f - - unless Object.keys(o).length - fail += 1 - return - - o - - safe = JSON.stringify actual - - pass: fail is 0 - message: "Object #{safe} has empty properties" if fail diff --git a/spec/schema/main-spec.coffee b/spec/schema/main-spec.coffee index a375d62625fa78b712ac80f2553c98a4ba66feeb..b6ed88ba5b2fea4e2f8c5faf7fc11289a79bdc12 100644 --- a/spec/schema/main-spec.coffee +++ b/spec/schema/main-spec.coffee @@ -39,10 +39,6 @@ tryTest = (test, refs, schema) -> expect(error).toMatch new RegExp(test.throws, 'im') - # strict checks - if test.nonEmpty - expect(sample).toHaveNonEmptyProps() - if test.valid try expect(sample).toHaveSchema [schema, refs] diff --git a/ts/core/clean.ts b/ts/core/clean.ts index 4e8e8acf620ffdf7dfae6c69e7f1d055ea4e10cb..b23f1726f269f4e88d485412f46d6dddfe9e297c 100644 --- a/ts/core/clean.ts +++ b/ts/core/clean.ts @@ -20,7 +20,7 @@ function hasNothing(obj) { return typeof obj === 'undefined' || obj === null; } -function removeProps(obj, key?, parent?) { +function removeProps(obj, key?, parent?, required?) { var i, value, isFullyEmpty = true; @@ -43,6 +43,12 @@ function removeProps(obj, key?, parent?) { for (i in obj) { value = obj[i]; + if (required && required.indexOf(i) > -1) { + isFullyEmpty = false; + removeProps(value); + continue; + } + if (isObject(value)) { removeProps(value, i, obj); } @@ -61,7 +67,7 @@ function removeProps(obj, key?, parent?) { } } -export = function(obj: any) { - removeProps(obj); +export = function(obj: any, required?: Array<string>) { + removeProps(obj, undefined, undefined, required); return obj; }; diff --git a/ts/core/traverse.ts b/ts/core/traverse.ts index 4883f0f9496a2b01e4a64c62ab8230664843edc5..8ceb630badb785f9b4851f391a6c1e3107449867 100644 --- a/ts/core/traverse.ts +++ b/ts/core/traverse.ts @@ -1,4 +1,3 @@ -import clean = require('./clean'); import random = require('./random'); import ParseError = require('./error'); import inferType = require('./infer'); @@ -92,7 +91,7 @@ function traverse(schema: JsonSchema, path: SchemaPath, resolve: Function) { } } - return clean(copy); + return copy; } export = traverse; diff --git a/ts/index.ts b/ts/index.ts index 7457460042393b033cf92f5a37c144f79268546a..f100735095761b6e4836a950016c5a102b2bf75e 100644 --- a/ts/index.ts +++ b/ts/index.ts @@ -17,6 +17,6 @@ jsf.extend = function(name: string, cb: Function) { return jsf; }; -jsf.version = '0.4.0'; +jsf.version = '0.4.2'; export = jsf; diff --git a/ts/types/object.ts b/ts/types/object.ts index ffac5507556599ca868f99dd269a8f5c23fc96a9..933b21d95f40afb0adf401197059c6d02dceba85 100644 --- a/ts/types/object.ts +++ b/ts/types/object.ts @@ -1,6 +1,7 @@ import container = require('../class/Container'); import random = require('../core/random'); import words = require('../generators/words'); +import clean = require('../core/clean'); import utils = require('../core/utils'); import option = require('../api/option'); import ParseError = require('../core/error'); @@ -41,8 +42,7 @@ var objectType: FTypeGenerator = function objectType(value: IObjectSchema, path, props[key] = properties[key]; } }); - - return traverseCallback(props, path.concat(['properties']), resolve); + return clean(traverseCallback(props, path.concat(['properties']), resolve), value.required); } var min = Math.max(value.minProperties || 0, requiredProperties.length); @@ -123,7 +123,7 @@ var objectType: FTypeGenerator = function objectType(value: IObjectSchema, path, ); } - return traverseCallback(props, path.concat(['properties']), resolve); + return clean(traverseCallback(props, path.concat(['properties']), resolve), value.required); }; export = objectType;