joi 4.6.2 → 4.9.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.c9/.nakignore +17 -0
- package/.c9/metadata/tab0 +1 -0
- package/.c9/metadata/workspace/.c9/project.settings +1 -0
- package/.c9/metadata/workspace/.travis.yml +1 -0
- package/.c9/metadata/workspace/Makefile +1 -0
- package/.c9/metadata/workspace/README.md +1 -0
- package/.c9/metadata/workspace/lib/any.js +1 -0
- package/.c9/metadata/workspace/lib/array.js +1 -0
- package/.c9/metadata/workspace/lib/binary.js +1 -0
- package/.c9/metadata/workspace/lib/boolean.js +1 -0
- package/.c9/metadata/workspace/lib/cast.js +1 -0
- package/.c9/metadata/workspace/lib/date.js +1 -0
- package/.c9/metadata/workspace/lib/errors.js +1 -0
- package/.c9/metadata/workspace/lib/function.js +1 -0
- package/.c9/metadata/workspace/lib/index.js +1 -0
- package/.c9/metadata/workspace/lib/language.js +1 -0
- package/.c9/metadata/workspace/lib/number.js +1 -0
- package/.c9/metadata/workspace/lib/object.js +1 -0
- package/.c9/metadata/workspace/lib/string.js +1 -0
- package/.c9/metadata/workspace/package.json +1 -0
- package/.c9/metadata/workspace/test/alternatives.js +1 -0
- package/.c9/metadata/workspace/test/any.js +1 -0
- package/.c9/metadata/workspace/test/array.js +1 -0
- package/.c9/metadata/workspace/test/binary.js +1 -0
- package/.c9/metadata/workspace/test/boolean.js +1 -0
- package/.c9/metadata/workspace/test/date.js +1 -0
- package/.c9/metadata/workspace/test/errors.js +1 -0
- package/.c9/metadata/workspace/test/function.js +1 -0
- package/.c9/metadata/workspace/test/helper.js +1 -0
- package/.c9/metadata/workspace/test/index.js +1 -0
- package/.c9/metadata/workspace/test/number.js +1 -0
- package/.c9/metadata/workspace/test/object.js +1 -0
- package/.c9/metadata/workspace/test/ref.js +1 -0
- package/.c9/metadata/workspace/test/string.js +1 -0
- package/.c9/project.settings +34 -0
- package/.travis.yml +1 -0
- package/Makefile +3 -3
- package/README.md +162 -31
- package/examples/conditionalRequire.js +43 -0
- package/examples/customMessage.js +22 -0
- package/examples/multipleWhen.js +17 -0
- package/lib/any.js +35 -24
- package/lib/array.js +25 -0
- package/lib/date.js +64 -9
- package/lib/errors.js +18 -2
- package/lib/index.js +3 -2
- package/lib/language.js +17 -6
- package/lib/number.js +50 -0
- package/lib/object.js +69 -5
- package/lib/string.js +27 -6
- package/package.json +5 -3
- package/test/alternatives.js +12 -10
- package/test/any.js +64 -15
- package/test/array.js +55 -16
- package/test/binary.js +13 -11
- package/test/boolean.js +9 -7
- package/test/date.js +143 -20
- package/test/errors.js +26 -15
- package/test/function.js +7 -5
- package/test/helper.js +7 -5
- package/test/index.js +116 -73
- package/test/number.js +125 -12
- package/test/object.js +192 -43
- package/test/ref.js +22 -20
- package/test/string.js +255 -106
- package/AUTHORS +0 -3
package/.c9/.nakignore
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"filter":false,"title":"bash - \"marsup-joi-1072366\"","tooltip":"bash - \"marsup-joi-1072366\"","undoManager":{"mark":0,"position":-1,"stack":[]},"terminal":{"id":"marsup@joi_498","cwd":"","width":1861,"height":386,"scrollTop":19842.22318649292},"timestamp":1415008774854,"hash":"da39a3ee5e6b4b0d3255bfef95601890afd80709"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"changed":false,"filter":false,"title":"project.settings","tooltip":"/.c9/project.settings","value":"{\n \"run\": {\n \"@path\": \"/.c9/runners\",\n \"configs\": {\n \"json()\": {},\n \"@inited\": true\n }\n },\n \"share\": {\n \"@preview\": false,\n \"@app\": false,\n \"@useOwnerSettings\": false\n },\n \"ace\": {\n \"@newLineMode\": \"unix\",\n \"@tabSize\": \"4\",\n \"@useSoftTabs\": true,\n \"@guessTabSize\": true\n },\n \"find.nak\": {\n \"@searchLimit\": 100\n },\n \"language\": {\n \"@warnLevel\": \"info\",\n \"@instanceHighlight\": true,\n \"@undeclaredVars\": true,\n \"@unusedFunctionArgs\": false\n },\n \"build\": {\n \"@path\": \"/.c9/builders\",\n \"@saveall\": true,\n \"@builder\": \"auto\"\n }\n}","undoManager":{"mark":0,"position":-1,"stack":[]},"ace":{"folds":[],"customSyntax":"javascript","scrolltop":0,"scrollleft":0,"selection":{"start":{"row":0,"column":0},"end":{"row":0,"column":0},"isBackwards":false},"options":{"guessTabSize":true,"useWrapMode":false,"wrapToView":true},"firstLineState":0},"timestamp":1415392221976}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"filter":false,"title":".travis.yml","tooltip":"/.travis.yml","undoManager":{"mark":0,"position":-1,"stack":[]},"ace":{"folds":[],"scrolltop":0,"scrollleft":0,"selection":{"start":{"row":4,"column":8},"end":{"row":4,"column":8},"isBackwards":false},"options":{"guessTabSize":true,"useWrapMode":false,"wrapToView":true},"firstLineState":0},"hash":"b26c436ff30d2ac8013ba767826e7adb0ab17e59","timestamp":1415572979000}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"filter":false,"title":"Makefile","tooltip":"/Makefile","undoManager":{"mark":18,"position":18,"stack":[[{"group":"doc","deltas":[{"start":{"row":1,"column":31},"end":{"row":1,"column":32},"action":"insert","lines":[" "]}]}],[{"group":"doc","deltas":[{"start":{"row":1,"column":32},"end":{"row":1,"column":33},"action":"insert","lines":["-"]}]}],[{"group":"doc","deltas":[{"start":{"row":1,"column":33},"end":{"row":1,"column":34},"action":"insert","lines":["a"]}]}],[{"group":"doc","deltas":[{"start":{"row":1,"column":34},"end":{"row":1,"column":35},"action":"insert","lines":[" "]}]}],[{"group":"doc","deltas":[{"start":{"row":1,"column":35},"end":{"row":1,"column":36},"action":"insert","lines":["c"]}]}],[{"group":"doc","deltas":[{"start":{"row":1,"column":36},"end":{"row":1,"column":37},"action":"insert","lines":["p"]}]}],[{"group":"doc","deltas":[{"start":{"row":1,"column":37},"end":{"row":1,"column":38},"action":"insert","lines":["d"]}]}],[{"group":"doc","deltas":[{"start":{"row":1,"column":38},"end":{"row":1,"column":39},"action":"insert","lines":["e"]}]}],[{"group":"doc","deltas":[{"start":{"row":1,"column":38},"end":{"row":1,"column":39},"action":"remove","lines":["e"]}]}],[{"group":"doc","deltas":[{"start":{"row":1,"column":37},"end":{"row":1,"column":38},"action":"remove","lines":["d"]}]}],[{"group":"doc","deltas":[{"start":{"row":1,"column":36},"end":{"row":1,"column":37},"action":"remove","lines":["p"]}]}],[{"group":"doc","deltas":[{"start":{"row":1,"column":36},"end":{"row":1,"column":37},"action":"insert","lines":["o"]}]}],[{"group":"doc","deltas":[{"start":{"row":1,"column":37},"end":{"row":1,"column":38},"action":"insert","lines":["d"]}]}],[{"group":"doc","deltas":[{"start":{"row":1,"column":38},"end":{"row":1,"column":39},"action":"insert","lines":["e"]}]}],[{"group":"doc","deltas":[{"start":{"row":3,"column":38},"end":{"row":3,"column":46},"action":"insert","lines":[" -a code"]}]}],[{"group":"doc","deltas":[{"start":{"row":5,"column":56},"end":{"row":5,"column":64},"action":"insert","lines":[" -a code"]}]}],[{"group":"doc","deltas":[{"start":{"row":1,"column":31},"end":{"row":1,"column":39},"action":"remove","lines":[" -a code"]},{"start":{"row":1,"column":31},"end":{"row":1,"column":31},"action":"insert","lines":[""]},{"start":{"row":3,"column":38},"end":{"row":3,"column":46},"action":"remove","lines":[" -a code"]},{"start":{"row":5,"column":56},"end":{"row":5,"column":64},"action":"remove","lines":[" -a code"]}]}],[{"group":"doc","deltas":[{"start":{"row":1,"column":31},"end":{"row":1,"column":39},"action":"insert","lines":[" -a code"]},{"start":{"row":3,"column":38},"end":{"row":3,"column":46},"action":"insert","lines":[" -a code"]},{"start":{"row":5,"column":56},"end":{"row":5,"column":64},"action":"insert","lines":[" -a code"]}]}],[{"group":"doc","deltas":[{"start":{"row":1,"column":31},"end":{"row":1,"column":39},"action":"remove","lines":[" -a code"]},{"start":{"row":1,"column":31},"end":{"row":1,"column":31},"action":"insert","lines":[""]},{"start":{"row":3,"column":38},"end":{"row":3,"column":46},"action":"remove","lines":[" -a code"]},{"start":{"row":5,"column":56},"end":{"row":5,"column":64},"action":"remove","lines":[" -a code"]}]}]]},"ace":{"folds":[],"scrolltop":0,"scrollleft":0,"selection":{"start":{"row":5,"column":56},"end":{"row":5,"column":56},"isBackwards":false},"options":{"guessTabSize":true,"useWrapMode":false,"wrapToView":true},"firstLineState":{"row":342,"mode":"ace/mode/makefile"}},"timestamp":1416252468283,"hash":"a1f05e327b1db20a6e562e635f20dc7aa4a1bbc5"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"filter":false,"title":"README.md","tooltip":"/README.md","undoManager":{"mark":22,"position":22,"stack":[[{"group":"doc","deltas":[{"start":{"row":38,"column":25},"end":{"row":38,"column":30},"action":"remove","lines":["value"]},{"start":{"row":38,"column":25},"end":{"row":38,"column":26},"action":"insert","lines":["e"]}]}],[{"group":"doc","deltas":[{"start":{"row":38,"column":26},"end":{"row":38,"column":27},"action":"insert","lines":["n"]}]}],[{"group":"doc","deltas":[{"start":{"row":38,"column":27},"end":{"row":38,"column":28},"action":"insert","lines":["a"]}]}],[{"group":"doc","deltas":[{"start":{"row":38,"column":28},"end":{"row":38,"column":29},"action":"insert","lines":["b"]}]}],[{"group":"doc","deltas":[{"start":{"row":38,"column":29},"end":{"row":38,"column":30},"action":"insert","lines":["l"]}]}],[{"group":"doc","deltas":[{"start":{"row":38,"column":30},"end":{"row":38,"column":31},"action":"insert","lines":["e"]}]}],[{"group":"doc","deltas":[{"start":{"row":38,"column":31},"end":{"row":38,"column":32},"action":"insert","lines":["d"]}]}],[{"group":"doc","deltas":[{"start":{"row":38,"column":48},"end":{"row":38,"column":53},"action":"remove","lines":["value"]}]}],[{"group":"doc","deltas":[{"start":{"row":38,"column":48},"end":{"row":38,"column":49},"action":"insert","lines":["e"]}]}],[{"group":"doc","deltas":[{"start":{"row":38,"column":49},"end":{"row":38,"column":50},"action":"insert","lines":["n"]}]}],[{"group":"doc","deltas":[{"start":{"row":38,"column":50},"end":{"row":38,"column":51},"action":"insert","lines":["a"]}]}],[{"group":"doc","deltas":[{"start":{"row":38,"column":51},"end":{"row":38,"column":52},"action":"insert","lines":["b"]}]}],[{"group":"doc","deltas":[{"start":{"row":38,"column":52},"end":{"row":38,"column":53},"action":"insert","lines":["l"]}]}],[{"group":"doc","deltas":[{"start":{"row":38,"column":53},"end":{"row":38,"column":54},"action":"insert","lines":["e"]}]}],[{"group":"doc","deltas":[{"start":{"row":38,"column":54},"end":{"row":38,"column":55},"action":"insert","lines":["d"]}]}],[{"group":"doc","deltas":[{"start":{"row":477,"column":32},"end":{"row":477,"column":37},"action":"remove","lines":["value"]},{"start":{"row":477,"column":32},"end":{"row":477,"column":33},"action":"insert","lines":["e"]},{"start":{"row":475,"column":19},"end":{"row":475,"column":24},"action":"remove","lines":["value"]},{"start":{"row":475,"column":19},"end":{"row":475,"column":20},"action":"insert","lines":["e"]}]}],[{"group":"doc","deltas":[{"start":{"row":477,"column":33},"end":{"row":477,"column":34},"action":"insert","lines":["n"]},{"start":{"row":475,"column":20},"end":{"row":475,"column":21},"action":"insert","lines":["n"]}]}],[{"group":"doc","deltas":[{"start":{"row":477,"column":34},"end":{"row":477,"column":35},"action":"insert","lines":["a"]},{"start":{"row":475,"column":21},"end":{"row":475,"column":22},"action":"insert","lines":["a"]}]}],[{"group":"doc","deltas":[{"start":{"row":477,"column":35},"end":{"row":477,"column":36},"action":"insert","lines":["b"]},{"start":{"row":475,"column":22},"end":{"row":475,"column":23},"action":"insert","lines":["b"]}]}],[{"group":"doc","deltas":[{"start":{"row":477,"column":36},"end":{"row":477,"column":37},"action":"insert","lines":["l"]},{"start":{"row":475,"column":23},"end":{"row":475,"column":24},"action":"insert","lines":["l"]}]}],[{"group":"doc","deltas":[{"start":{"row":477,"column":37},"end":{"row":477,"column":38},"action":"insert","lines":["e"]},{"start":{"row":475,"column":24},"end":{"row":475,"column":25},"action":"insert","lines":["e"]}]}],[{"group":"doc","deltas":[{"start":{"row":477,"column":38},"end":{"row":477,"column":39},"action":"insert","lines":["d"]},{"start":{"row":475,"column":25},"end":{"row":475,"column":26},"action":"insert","lines":["d"]}]}],[{"group":"doc","deltas":[{"start":{"row":38,"column":0},"end":{"row":39,"column":0},"action":"remove","lines":[" - [`array.sparse(enabled)`](#arraysparseenabled)",""]},{"start":{"row":465,"column":58},"end":{"row":465,"column":158},"action":"remove","lines":[" Note that undefined values inside arrays are not allowed by default but can be by using `sparse()`."]},{"start":{"row":474,"column":0},"end":{"row":483,"column":0},"action":"remove","lines":["#### `array.sparse(enabled)`","","Allow this array to be sparse. `enabled` can be used with a falsy value to go back to the default behavior.","","```javascript","var schema = Joi.array().sparse(); // undefined values are now allowed","schema = schema.sparse(false); // undefined values are now denied","```","",""]}]}]]},"ace":{"folds":[],"scrolltop":7634.833927154541,"scrollleft":0,"selection":{"start":{"row":475,"column":0},"end":{"row":475,"column":0},"isBackwards":false},"options":{"guessTabSize":true,"useWrapMode":false,"wrapToView":true},"firstLineState":{"row":457,"state":"jscode-start","mode":"ace/mode/markdown"}},"timestamp":1416252877680,"hash":"076bd672386ca6ec7222cfa8e4ba11891bc8b126"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"filter":false,"title":"any.js","tooltip":"/lib/any.js","undoManager":{"mark":0,"position":-1,"stack":[]},"ace":{"folds":[],"scrolltop":2741,"scrollleft":0,"selection":{"start":{"row":166,"column":23},"end":{"row":166,"column":29},"isBackwards":false},"options":{"guessTabSize":true,"useWrapMode":false,"wrapToView":true},"firstLineState":{"row":342,"state":"no_regex","mode":"ace/mode/javascript"}},"timestamp":1415180399000,"hash":"d449170dc0ccedd5fb7ea7e7d29c106d7ef2e0aa"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"filter":false,"title":"array.js","tooltip":"/lib/array.js","undoManager":{"mark":0,"position":-1,"stack":[]},"ace":{"folds":[],"scrolltop":0,"scrollleft":0,"selection":{"start":{"row":20,"column":0},"end":{"row":20,"column":0},"isBackwards":false},"options":{"guessTabSize":true,"useWrapMode":false,"wrapToView":true},"firstLineState":0},"hash":"176896676455afc62f6b48334611800d8237ac1d","timestamp":1415020417000}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"filter":false,"title":"binary.js","tooltip":"/lib/binary.js","undoManager":{"mark":-1,"position":-1,"stack":[]},"ace":{"folds":[],"scrolltop":0,"scrollleft":0,"selection":{"start":{"row":0,"column":0},"end":{"row":0,"column":0},"isBackwards":false},"options":{"guessTabSize":true,"useWrapMode":false,"wrapToView":true},"firstLineState":0},"timestamp":1416236566829,"hash":"9b6f08844af759e97c3dc73e09a8a4a4803dca81"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"filter":false,"title":"boolean.js","tooltip":"/lib/boolean.js","undoManager":{"mark":-1,"position":-1,"stack":[]},"ace":{"folds":[],"scrolltop":0,"scrollleft":0,"selection":{"start":{"row":0,"column":0},"end":{"row":0,"column":0},"isBackwards":false},"options":{"guessTabSize":true,"useWrapMode":false,"wrapToView":true},"firstLineState":0},"timestamp":1416236563023,"hash":"b849990b16d670ccebd0b62734526e3e96da529d"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"filter":false,"title":"cast.js","tooltip":"/lib/cast.js","undoManager":{"mark":-1,"position":-1,"stack":[]},"ace":{"folds":[],"scrolltop":360,"scrollleft":0,"selection":{"start":{"row":0,"column":0},"end":{"row":0,"column":0},"isBackwards":false},"options":{"guessTabSize":true,"useWrapMode":false,"wrapToView":true},"firstLineState":{"row":19,"state":"start","mode":"ace/mode/javascript"}},"timestamp":1416236557657,"hash":"82dad8939f72d5509c7b793cfbb9b00d323feb97"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"filter":false,"title":"date.js","tooltip":"/lib/date.js","undoManager":{"mark":-1,"position":-1,"stack":[]},"ace":{"folds":[],"scrolltop":0,"scrollleft":0,"selection":{"start":{"row":0,"column":0},"end":{"row":0,"column":0},"isBackwards":true},"options":{"guessTabSize":true,"useWrapMode":false,"wrapToView":true},"firstLineState":0},"timestamp":1415531927767,"hash":"d81dae2c22a8b314858ca762f8396c170fc5ef5f"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"filter":false,"title":"errors.js","tooltip":"/lib/errors.js","ace":{"folds":[],"scrolltop":0,"scrollleft":0,"selection":{"start":{"row":3,"column":12},"end":{"row":3,"column":15},"isBackwards":false},"options":{"guessTabSize":true,"useWrapMode":false,"wrapToView":true},"firstLineState":{"row":64,"state":"no_regex","mode":"ace/mode/javascript"}},"hash":"8ec3b723af76103ad758b0c1768a644c726078f2","undoManager":{"mark":0,"position":-1,"stack":[]},"timestamp":1415008722000}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"filter":false,"title":"function.js","tooltip":"/lib/function.js","undoManager":{"mark":-1,"position":-1,"stack":[]},"ace":{"folds":[],"scrolltop":0,"scrollleft":0,"selection":{"start":{"row":0,"column":0},"end":{"row":0,"column":0},"isBackwards":false},"options":{"guessTabSize":true,"useWrapMode":false,"wrapToView":true},"firstLineState":0},"timestamp":1416236549420,"hash":"5843085394e4320bf0f313b4c036753a5a83aaef"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"filter":false,"title":"index.js","tooltip":"/lib/index.js","ace":{"folds":[],"scrolltop":1182,"scrollleft":0,"selection":{"start":{"row":90,"column":12},"end":{"row":90,"column":12},"isBackwards":false},"options":{"guessTabSize":true,"useWrapMode":false,"wrapToView":true},"firstLineState":{"row":64,"state":"start","mode":"ace/mode/javascript"}},"hash":"00bb491ce725f98a9dacc5f5b6d5e43e6cca1de2","undoManager":{"mark":0,"position":-1,"stack":[]},"timestamp":1415027201704}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"filter":false,"title":"language.js","tooltip":"/lib/language.js","ace":{"folds":[],"scrolltop":1041.5,"scrollleft":0,"selection":{"start":{"row":85,"column":8},"end":{"row":85,"column":13},"isBackwards":true},"options":{"guessTabSize":true,"useWrapMode":false,"wrapToView":true},"firstLineState":{"row":56,"state":"start","mode":"ace/mode/javascript"},"cleansed":true},"hash":"81def83792799ed9455989cbffda57ce89855dea","undoManager":{"mark":0,"position":-1,"stack":[]},"timestamp":1415026883404}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"filter":false,"title":"number.js","tooltip":"/lib/number.js","undoManager":{"mark":0,"position":-1,"stack":[]},"ace":{"folds":[],"scrolltop":720,"scrollleft":0,"selection":{"start":{"row":29,"column":26},"end":{"row":29,"column":26},"isBackwards":false},"options":{"guessTabSize":true,"useWrapMode":false,"wrapToView":true},"firstLineState":{"row":39,"state":"start","mode":"ace/mode/javascript"}},"hash":"14221f57f58b982df19c7c5440af9b1ca2917a1d","timestamp":1415025086901}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"filter":false,"title":"object.js","tooltip":"/lib/object.js","ace":{"folds":[],"scrolltop":840,"scrollleft":0,"selection":{"start":{"row":0,"column":0},"end":{"row":0,"column":0},"isBackwards":true},"options":{"guessTabSize":true,"useWrapMode":false,"wrapToView":true},"firstLineState":{"row":45,"state":"no_regex","mode":"ace/mode/javascript"}},"hash":"f734ae6b59414c86058f9b6677193fe129e45f57","undoManager":{"mark":0,"position":-1,"stack":[]},"timestamp":1415707992000}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"filter":false,"title":"string.js","tooltip":"/lib/string.js","ace":{"folds":[],"scrolltop":1860,"scrollleft":0,"selection":{"start":{"row":128,"column":20},"end":{"row":128,"column":28},"isBackwards":false},"options":{"guessTabSize":true,"useWrapMode":false,"wrapToView":true},"firstLineState":{"row":52,"state":"start","mode":"ace/mode/javascript"},"cleansed":true},"hash":"d060ff9793fc40243c1f3107316eeecf8a246158","undoManager":{"mark":0,"position":-1,"stack":[]},"timestamp":1415026562330}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"filter":false,"title":"package.json","tooltip":"/package.json","undoManager":{"mark":7,"position":7,"stack":[[{"group":"doc","deltas":[{"action":"insertText","range":{"start":{"row":20,"column":0},"end":{"row":20,"column":21}},"text":" \"code\": \"^1.2.1\","},{"action":"insertText","range":{"start":{"row":20,"column":21},"end":{"row":21,"column":0}},"text":"\n"}]}],[{"group":"doc","deltas":[{"action":"removeText","range":{"start":{"row":20,"column":13},"end":{"row":20,"column":14}},"text":"^"}]}],[{"group":"doc","deltas":[{"action":"removeText","range":{"start":{"row":20,"column":15},"end":{"row":20,"column":16}},"text":"2"}]}],[{"group":"doc","deltas":[{"action":"insertText","range":{"start":{"row":20,"column":15},"end":{"row":20,"column":16}},"text":"x"}]}],[{"group":"doc","deltas":[{"action":"removeText","range":{"start":{"row":20,"column":17},"end":{"row":20,"column":18}},"text":"1"}]}],[{"group":"doc","deltas":[{"action":"insertText","range":{"start":{"row":20,"column":17},"end":{"row":20,"column":18}},"text":"x"}]}],[{"group":"doc","deltas":[{"action":"removeText","range":{"start":{"row":21,"column":12},"end":{"row":21,"column":13}},"text":"4"}]}],[{"group":"doc","deltas":[{"action":"insertText","range":{"start":{"row":21,"column":12},"end":{"row":21,"column":13}},"text":"5"}]}]]},"ace":{"folds":[],"scrolltop":0,"scrollleft":0,"selection":{"start":{"row":21,"column":13},"end":{"row":21,"column":13},"isBackwards":false},"options":{"guessTabSize":true,"useWrapMode":false,"wrapToView":true},"firstLineState":0},"timestamp":1415365338150,"hash":"c470323e0beca2fbe4a637b0c204cb4b9205c53e"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"filter":false,"title":"alternatives.js","tooltip":"/test/alternatives.js","undoManager":{"mark":0,"position":-1,"stack":[]},"ace":{"folds":[],"scrolltop":0,"scrollleft":0,"selection":{"start":{"row":20,"column":25},"end":{"row":20,"column":25},"isBackwards":false},"options":{"guessTabSize":true,"useWrapMode":false,"wrapToView":true},"firstLineState":0},"timestamp":1416218382000,"hash":"133eeb46c87f4ed9015e0509e19c91816114f6fa"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"filter":false,"title":"any.js","tooltip":"/test/any.js","undoManager":{"mark":2,"position":2,"stack":[[{"group":"doc","deltas":[{"action":"insertText","range":{"start":{"row":3,"column":0},"end":{"row":3,"column":27}},"text":"var Code = require('code');"},{"action":"insertText","range":{"start":{"row":3,"column":27},"end":{"row":4,"column":0}},"text":"\n"}]}],[{"group":"doc","deltas":[{"action":"removeLines","range":{"start":{"row":3,"column":0},"end":{"row":4,"column":0}},"nl":"\n","lines":["var Code = require('code');"]},{"action":"removeText","range":{"start":{"row":19,"column":13},"end":{"row":19,"column":16}},"text":"Lab"},{"action":"insertText","range":{"start":{"row":19,"column":13},"end":{"row":19,"column":17}},"text":"Code"}]}],[{"group":"doc","deltas":[{"action":"insertText","range":{"start":{"row":3,"column":0},"end":{"row":3,"column":27}},"text":"var Code = require('code');"},{"action":"insertText","range":{"start":{"row":3,"column":27},"end":{"row":4,"column":0}},"text":"\n"}]}]]},"ace":{"folds":[],"scrolltop":0,"scrollleft":0,"selection":{"start":{"row":4,"column":21},"end":{"row":4,"column":21},"isBackwards":false},"options":{"guessTabSize":true,"useWrapMode":false,"wrapToView":true},"firstLineState":0},"timestamp":1415365464947,"hash":"0362f0c6f4552d5b32636a598ab65f82552b279b"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"filter":false,"title":"array.js","tooltip":"/test/array.js","undoManager":{"mark":0,"position":-1,"stack":[]},"ace":{"folds":[],"scrolltop":60,"scrollleft":0,"selection":{"start":{"row":16,"column":4},"end":{"row":16,"column":10},"isBackwards":true},"options":{"guessTabSize":true,"useWrapMode":false,"wrapToView":true},"firstLineState":{"row":2,"state":"start","mode":"ace/mode/javascript"}},"timestamp":1415365471618,"hash":"2a0d28e1d987c72c625911280278a4224e6cd1c7"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"filter":false,"title":"binary.js","tooltip":"/test/binary.js","undoManager":{"mark":1,"position":1,"stack":[[{"group":"doc","deltas":[{"action":"insertText","range":{"start":{"row":3,"column":0},"end":{"row":3,"column":27}},"text":"var Code = require('code');"},{"action":"insertText","range":{"start":{"row":3,"column":27},"end":{"row":4,"column":0}},"text":"\n"}]}],[{"group":"doc","deltas":[{"action":"removeText","range":{"start":{"row":93,"column":0},"end":{"row":93,"column":8}},"text":" "},{"action":"removeText","range":{"start":{"row":97,"column":0},"end":{"row":97,"column":16}},"text":" "}]}]]},"ace":{"folds":[],"scrolltop":0,"scrollleft":0,"selection":{"start":{"row":4,"column":0},"end":{"row":4,"column":0},"isBackwards":true},"options":{"guessTabSize":true,"useWrapMode":false,"wrapToView":true},"firstLineState":0},"timestamp":1415365485882,"hash":"827a2ceee11041e1aca3503df80a33cbc9593167"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"filter":false,"title":"boolean.js","tooltip":"/test/boolean.js","undoManager":{"mark":0,"position":0,"stack":[[{"group":"doc","deltas":[{"action":"insertText","range":{"start":{"row":3,"column":0},"end":{"row":3,"column":27}},"text":"var Code = require('code');"},{"action":"insertText","range":{"start":{"row":3,"column":27},"end":{"row":4,"column":0}},"text":"\n"}]}]]},"ace":{"folds":[],"scrolltop":0,"scrollleft":0,"selection":{"start":{"row":4,"column":0},"end":{"row":4,"column":0},"isBackwards":true},"options":{"guessTabSize":true,"useWrapMode":false,"wrapToView":true},"firstLineState":0},"timestamp":1415365548431,"hash":"a7fb14e44c2f95f2d36b397f9f592e2a3f544330"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"filter":false,"title":"date.js","tooltip":"/test/date.js","undoManager":{"mark":10,"position":10,"stack":[[{"group":"doc","deltas":[{"action":"insertText","range":{"start":{"row":3,"column":0},"end":{"row":3,"column":27}},"text":"var Code = require('code');"},{"action":"insertText","range":{"start":{"row":3,"column":27},"end":{"row":4,"column":0}},"text":"\n"}]}],[{"group":"doc","deltas":[{"action":"removeText","range":{"start":{"row":106,"column":25},"end":{"row":106,"column":26}},"text":"b"},{"action":"removeText","range":{"start":{"row":83,"column":25},"end":{"row":83,"column":26}},"text":"b"},{"action":"removeText","range":{"start":{"row":71,"column":29},"end":{"row":71,"column":30}},"text":"b"}]}],[{"group":"doc","deltas":[{"action":"removeText","range":{"start":{"row":106,"column":25},"end":{"row":106,"column":26}},"text":"e"},{"action":"removeText","range":{"start":{"row":83,"column":25},"end":{"row":83,"column":26}},"text":"e"},{"action":"removeText","range":{"start":{"row":71,"column":29},"end":{"row":71,"column":30}},"text":"e"}]}],[{"group":"doc","deltas":[{"action":"insertText","range":{"start":{"row":106,"column":25},"end":{"row":106,"column":26}},"text":"d"},{"action":"insertText","range":{"start":{"row":83,"column":25},"end":{"row":83,"column":26}},"text":"d"},{"action":"insertText","range":{"start":{"row":71,"column":29},"end":{"row":71,"column":30}},"text":"d"}]}],[{"group":"doc","deltas":[{"action":"insertText","range":{"start":{"row":106,"column":26},"end":{"row":106,"column":27}},"text":"e"},{"action":"insertText","range":{"start":{"row":83,"column":26},"end":{"row":83,"column":27}},"text":"e"},{"action":"insertText","range":{"start":{"row":71,"column":30},"end":{"row":71,"column":31}},"text":"e"}]}],[{"group":"doc","deltas":[{"action":"insertText","range":{"start":{"row":106,"column":27},"end":{"row":106,"column":28}},"text":"e"},{"action":"insertText","range":{"start":{"row":83,"column":27},"end":{"row":83,"column":28}},"text":"e"},{"action":"insertText","range":{"start":{"row":71,"column":31},"end":{"row":71,"column":32}},"text":"e"}]}],[{"group":"doc","deltas":[{"action":"insertText","range":{"start":{"row":106,"column":28},"end":{"row":106,"column":29}},"text":"p"},{"action":"insertText","range":{"start":{"row":83,"column":28},"end":{"row":83,"column":29}},"text":"p"},{"action":"insertText","range":{"start":{"row":71,"column":32},"end":{"row":71,"column":33}},"text":"p"}]}],[{"group":"doc","deltas":[{"action":"insertText","range":{"start":{"row":106,"column":32},"end":{"row":106,"column":33}},"text":"u"},{"action":"insertText","range":{"start":{"row":83,"column":32},"end":{"row":83,"column":33}},"text":"u"},{"action":"insertText","range":{"start":{"row":71,"column":36},"end":{"row":71,"column":37}},"text":"u"}]}],[{"group":"doc","deltas":[{"action":"insertText","range":{"start":{"row":106,"column":33},"end":{"row":106,"column":34}},"text":"a"},{"action":"insertText","range":{"start":{"row":83,"column":33},"end":{"row":83,"column":34}},"text":"a"},{"action":"insertText","range":{"start":{"row":71,"column":37},"end":{"row":71,"column":38}},"text":"a"}]}],[{"group":"doc","deltas":[{"action":"insertText","range":{"start":{"row":213,"column":43},"end":{"row":213,"column":44}},"text":"."}]}],[{"group":"doc","deltas":[{"action":"insertText","range":{"start":{"row":218,"column":43},"end":{"row":218,"column":44}},"text":"."}]}]]},"ace":{"folds":[],"scrolltop":3309.5,"scrollleft":0,"selection":{"start":{"row":218,"column":44},"end":{"row":218,"column":44},"isBackwards":false},"options":{"guessTabSize":true,"useWrapMode":false,"wrapToView":true},"firstLineState":{"row":182,"state":"start","mode":"ace/mode/javascript"}},"timestamp":1415365908261,"hash":"3c27814a5dce2d63f072d6a96a9238f32aa3b4bf"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"filter":false,"title":"errors.js","tooltip":"/test/errors.js","undoManager":{"mark":0,"position":0,"stack":[[{"group":"doc","deltas":[{"action":"insertText","range":{"start":{"row":3,"column":0},"end":{"row":3,"column":27}},"text":"var Code = require('code');"},{"action":"insertText","range":{"start":{"row":3,"column":27},"end":{"row":4,"column":0}},"text":"\n"}]}]]},"ace":{"folds":[],"scrolltop":0,"scrollleft":0,"selection":{"start":{"row":4,"column":0},"end":{"row":4,"column":0},"isBackwards":false},"options":{"guessTabSize":true,"useWrapMode":false,"wrapToView":true},"firstLineState":0},"timestamp":1415365550196,"hash":"88bb55a14ca905983a57df59f589201567b45e92"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"filter":false,"title":"function.js","tooltip":"/test/function.js","undoManager":{"mark":0,"position":0,"stack":[[{"group":"doc","deltas":[{"action":"insertText","range":{"start":{"row":3,"column":0},"end":{"row":3,"column":27}},"text":"var Code = require('code');"},{"action":"insertText","range":{"start":{"row":3,"column":27},"end":{"row":4,"column":0}},"text":"\n"}]}]]},"ace":{"folds":[],"scrolltop":0,"scrollleft":0,"selection":{"start":{"row":4,"column":0},"end":{"row":4,"column":0},"isBackwards":true},"options":{"guessTabSize":true,"useWrapMode":false,"wrapToView":true},"firstLineState":0},"timestamp":1415365550902,"hash":"f2e9d088641e291868d10970f0182d5df19a15ab"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"filter":false,"title":"helper.js","tooltip":"/test/helper.js","undoManager":{"mark":0,"position":0,"stack":[[{"group":"doc","deltas":[{"action":"insertText","range":{"start":{"row":3,"column":0},"end":{"row":3,"column":27}},"text":"var Code = require('code');"},{"action":"insertText","range":{"start":{"row":3,"column":27},"end":{"row":4,"column":0}},"text":"\n"}]}]]},"ace":{"folds":[],"scrolltop":0,"scrollleft":0,"selection":{"start":{"row":4,"column":0},"end":{"row":4,"column":0},"isBackwards":true},"options":{"guessTabSize":true,"useWrapMode":false,"wrapToView":true},"firstLineState":0},"timestamp":1415365551639,"hash":"63dd3f704c76bf668e4b1f2e1e6aad24e3eb6336"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"filter":false,"title":"index.js","tooltip":"/test/index.js","undoManager":{"mark":7,"position":7,"stack":[[{"group":"doc","deltas":[{"start":{"row":579,"column":34},"end":{"row":579,"column":36},"action":"insert","lines":["()"]},{"start":{"row":582,"column":38},"end":{"row":582,"column":40},"action":"insert","lines":["()"]},{"start":{"row":594,"column":50},"end":{"row":594,"column":52},"action":"insert","lines":["()"]},{"start":{"row":597,"column":54},"end":{"row":597,"column":56},"action":"insert","lines":["()"]},{"start":{"row":616,"column":34},"end":{"row":616,"column":36},"action":"insert","lines":["()"]},{"start":{"row":665,"column":38},"end":{"row":665,"column":40},"action":"insert","lines":["()"]},{"start":{"row":670,"column":42},"end":{"row":670,"column":44},"action":"insert","lines":["()"]},{"start":{"row":697,"column":38},"end":{"row":697,"column":40},"action":"insert","lines":["()"]},{"start":{"row":701,"column":46},"end":{"row":701,"column":48},"action":"insert","lines":["()"]},{"start":{"row":707,"column":46},"end":{"row":707,"column":48},"action":"insert","lines":["()"]},{"start":{"row":763,"column":34},"end":{"row":763,"column":36},"action":"insert","lines":["()"]},{"start":{"row":767,"column":38},"end":{"row":767,"column":40},"action":"insert","lines":["()"]},{"start":{"row":782,"column":34},"end":{"row":782,"column":36},"action":"insert","lines":["()"]},{"start":{"row":786,"column":38},"end":{"row":786,"column":40},"action":"insert","lines":["()"]},{"start":{"row":967,"column":34},"end":{"row":967,"column":36},"action":"insert","lines":["()"]},{"start":{"row":1070,"column":34},"end":{"row":1070,"column":36},"action":"insert","lines":["()"]},{"start":{"row":1113,"column":34},"end":{"row":1113,"column":36},"action":"insert","lines":["()"]},{"start":{"row":1134,"column":34},"end":{"row":1134,"column":36},"action":"insert","lines":["()"]},{"start":{"row":1139,"column":38},"end":{"row":1139,"column":40},"action":"insert","lines":["()"]},{"start":{"row":1162,"column":34},"end":{"row":1162,"column":36},"action":"insert","lines":["()"]},{"start":{"row":1167,"column":38},"end":{"row":1167,"column":40},"action":"insert","lines":["()"]}]}],[{"group":"doc","deltas":[{"start":{"row":1225,"column":39},"end":{"row":1225,"column":41},"action":"insert","lines":["()"]}]}],[{"group":"doc","deltas":[{"start":{"row":1225,"column":40},"end":{"row":1225,"column":40},"action":"insert","lines":[""]}]}],[{"group":"doc","deltas":[{"start":{"row":1225,"column":41},"end":{"row":1225,"column":42},"action":"insert","lines":[";"]}]}],[{"group":"doc","deltas":[{"start":{"row":1226,"column":40},"end":{"row":1226,"column":42},"action":"insert","lines":["()"]}]}],[{"group":"doc","deltas":[{"start":{"row":1226,"column":41},"end":{"row":1226,"column":41},"action":"insert","lines":[""]}]}],[{"group":"doc","deltas":[{"start":{"row":1226,"column":42},"end":{"row":1226,"column":43},"action":"insert","lines":[";"]}]}],[{"group":"doc","deltas":[{"start":{"row":579,"column":34},"end":{"row":579,"column":36},"action":"remove","lines":["()"]},{"start":{"row":580,"column":0},"end":{"row":580,"column":0},"action":"insert","lines":[""]},{"start":{"row":582,"column":38},"end":{"row":582,"column":40},"action":"remove","lines":["()"]},{"start":{"row":594,"column":50},"end":{"row":594,"column":52},"action":"remove","lines":["()"]},{"start":{"row":597,"column":54},"end":{"row":597,"column":56},"action":"remove","lines":["()"]},{"start":{"row":616,"column":34},"end":{"row":616,"column":36},"action":"remove","lines":["()"]},{"start":{"row":665,"column":38},"end":{"row":665,"column":40},"action":"remove","lines":["()"]},{"start":{"row":670,"column":42},"end":{"row":670,"column":44},"action":"remove","lines":["()"]},{"start":{"row":697,"column":38},"end":{"row":697,"column":40},"action":"remove","lines":["()"]},{"start":{"row":701,"column":46},"end":{"row":701,"column":48},"action":"remove","lines":["()"]},{"start":{"row":707,"column":46},"end":{"row":707,"column":48},"action":"remove","lines":["()"]},{"start":{"row":763,"column":34},"end":{"row":763,"column":36},"action":"remove","lines":["()"]},{"start":{"row":767,"column":38},"end":{"row":767,"column":40},"action":"remove","lines":["()"]},{"start":{"row":782,"column":34},"end":{"row":782,"column":36},"action":"remove","lines":["()"]},{"start":{"row":786,"column":38},"end":{"row":786,"column":40},"action":"remove","lines":["()"]},{"start":{"row":967,"column":34},"end":{"row":967,"column":36},"action":"remove","lines":["()"]},{"start":{"row":1070,"column":34},"end":{"row":1070,"column":36},"action":"remove","lines":["()"]},{"start":{"row":1113,"column":34},"end":{"row":1113,"column":36},"action":"remove","lines":["()"]},{"start":{"row":1134,"column":34},"end":{"row":1134,"column":36},"action":"remove","lines":["()"]},{"start":{"row":1139,"column":38},"end":{"row":1139,"column":40},"action":"remove","lines":["()"]},{"start":{"row":1162,"column":34},"end":{"row":1162,"column":36},"action":"remove","lines":["()"]},{"start":{"row":1167,"column":38},"end":{"row":1167,"column":40},"action":"remove","lines":["()"]},{"start":{"row":1225,"column":39},"end":{"row":1225,"column":42},"action":"remove","lines":["();"]},{"start":{"row":1226,"column":40},"end":{"row":1226,"column":43},"action":"remove","lines":["();"]}]}]]},"ace":{"folds":[],"scrolltop":20239.668224334717,"scrollleft":0,"selection":{"start":{"row":1226,"column":40},"end":{"row":1226,"column":40},"isBackwards":false},"options":{"guessTabSize":true,"useWrapMode":false,"wrapToView":true},"firstLineState":{"row":342,"state":"start","mode":"ace/mode/javascript"}},"timestamp":1416252619504,"hash":"3d0e779687e0a732014ca99bdb18192738d5ae38"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"filter":false,"title":"number.js","tooltip":"/test/number.js","undoManager":{"mark":0,"position":0,"stack":[[{"group":"doc","deltas":[{"action":"insertText","range":{"start":{"row":3,"column":0},"end":{"row":3,"column":27}},"text":"var Code = require('code');"},{"action":"insertText","range":{"start":{"row":3,"column":27},"end":{"row":4,"column":0}},"text":"\n"}]}]]},"ace":{"folds":[],"scrolltop":0,"scrollleft":0,"selection":{"start":{"row":4,"column":0},"end":{"row":4,"column":0},"isBackwards":true},"options":{"guessTabSize":true,"useWrapMode":false,"wrapToView":true},"firstLineState":0},"timestamp":1415365553045,"hash":"fb307b8890979629fcf9436f28e0d707eb9753e5"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"filter":false,"title":"object.js","tooltip":"/test/object.js","undoManager":{"mark":69,"position":69,"stack":[[{"group":"doc","deltas":[{"action":"insertText","range":{"start":{"row":3,"column":0},"end":{"row":3,"column":27}},"text":"var Code = require('code');"},{"action":"insertText","range":{"start":{"row":3,"column":27},"end":{"row":4,"column":0}},"text":"\n"}]}],[{"group":"doc","deltas":[{"action":"insertText","range":{"start":{"row":569,"column":23},"end":{"row":569,"column":24}},"text":"O"}]}],[{"group":"doc","deltas":[{"action":"insertText","range":{"start":{"row":569,"column":24},"end":{"row":569,"column":25}},"text":"b"}]}],[{"group":"doc","deltas":[{"action":"insertText","range":{"start":{"row":569,"column":25},"end":{"row":569,"column":26}},"text":"j"}]}],[{"group":"doc","deltas":[{"action":"insertText","range":{"start":{"row":569,"column":26},"end":{"row":569,"column":27}},"text":"e"}]}],[{"group":"doc","deltas":[{"action":"insertText","range":{"start":{"row":569,"column":27},"end":{"row":569,"column":28}},"text":"c"}]}],[{"group":"doc","deltas":[{"action":"insertText","range":{"start":{"row":569,"column":28},"end":{"row":569,"column":29}},"text":"t"}]}],[{"group":"doc","deltas":[{"action":"insertText","range":{"start":{"row":569,"column":29},"end":{"row":569,"column":30}},"text":"."}]}],[{"group":"doc","deltas":[{"action":"insertText","range":{"start":{"row":569,"column":30},"end":{"row":569,"column":31}},"text":"k"}]}],[{"group":"doc","deltas":[{"action":"insertText","range":{"start":{"row":569,"column":31},"end":{"row":569,"column":32}},"text":"e"}]}],[{"group":"doc","deltas":[{"action":"insertText","range":{"start":{"row":569,"column":32},"end":{"row":569,"column":33}},"text":"y"}]}],[{"group":"doc","deltas":[{"action":"insertText","range":{"start":{"row":569,"column":33},"end":{"row":569,"column":34}},"text":"s"}]}],[{"group":"doc","deltas":[{"action":"insertText","range":{"start":{"row":569,"column":34},"end":{"row":569,"column":35}},"text":"("}]}],[{"group":"doc","deltas":[{"action":"insertText","range":{"start":{"row":569,"column":40},"end":{"row":569,"column":41}},"text":")"}]}],[{"group":"doc","deltas":[{"action":"removeText","range":{"start":{"row":569,"column":46},"end":{"row":569,"column":50}},"text":"have"}]}],[{"group":"doc","deltas":[{"action":"removeText","range":{"start":{"row":569,"column":46},"end":{"row":569,"column":47}},"text":"."}]}],[{"group":"doc","deltas":[{"action":"removeText","range":{"start":{"row":569,"column":46},"end":{"row":569,"column":50}},"text":"keys"}]}],[{"group":"doc","deltas":[{"action":"insertText","range":{"start":{"row":569,"column":46},"end":{"row":569,"column":47}},"text":"i"}]}],[{"group":"doc","deltas":[{"action":"insertText","range":{"start":{"row":569,"column":47},"end":{"row":569,"column":48}},"text":"n"}]}],[{"group":"doc","deltas":[{"action":"insertText","range":{"start":{"row":569,"column":48},"end":{"row":569,"column":49}},"text":"c"}]}],[{"group":"doc","deltas":[{"action":"insertText","range":{"start":{"row":569,"column":49},"end":{"row":569,"column":50}},"text":"l"}]}],[{"group":"doc","deltas":[{"action":"insertText","range":{"start":{"row":569,"column":50},"end":{"row":569,"column":51}},"text":"u"}]}],[{"group":"doc","deltas":[{"action":"insertText","range":{"start":{"row":569,"column":51},"end":{"row":569,"column":52}},"text":"d"}]}],[{"group":"doc","deltas":[{"action":"insertText","range":{"start":{"row":569,"column":52},"end":{"row":569,"column":53}},"text":"e"}]}],[{"group":"doc","deltas":[{"action":"removeText","range":{"start":{"row":569,"column":54},"end":{"row":569,"column":55}},"text":"["}]}],[{"group":"doc","deltas":[{"action":"removeText","range":{"start":{"row":569,"column":57},"end":{"row":569,"column":58}},"text":"]"}]}],[{"group":"doc","deltas":[{"action":"insertText","range":{"start":{"row":597,"column":19},"end":{"row":597,"column":20}},"text":"O"}]}],[{"group":"doc","deltas":[{"action":"insertText","range":{"start":{"row":597,"column":20},"end":{"row":597,"column":21}},"text":"b"}]}],[{"group":"doc","deltas":[{"action":"insertText","range":{"start":{"row":597,"column":21},"end":{"row":597,"column":22}},"text":"j"}]}],[{"group":"doc","deltas":[{"action":"insertText","range":{"start":{"row":597,"column":22},"end":{"row":597,"column":23}},"text":"e"}]}],[{"group":"doc","deltas":[{"action":"insertText","range":{"start":{"row":597,"column":23},"end":{"row":597,"column":24}},"text":"c"}]}],[{"group":"doc","deltas":[{"action":"insertText","range":{"start":{"row":597,"column":24},"end":{"row":597,"column":25}},"text":"t"}]}],[{"group":"doc","deltas":[{"action":"insertText","range":{"start":{"row":597,"column":25},"end":{"row":597,"column":26}},"text":"."}]}],[{"group":"doc","deltas":[{"action":"insertText","range":{"start":{"row":597,"column":26},"end":{"row":597,"column":27}},"text":"k"}]}],[{"group":"doc","deltas":[{"action":"insertText","range":{"start":{"row":597,"column":27},"end":{"row":597,"column":28}},"text":"e"}]}],[{"group":"doc","deltas":[{"action":"insertText","range":{"start":{"row":597,"column":28},"end":{"row":597,"column":29}},"text":"y"}]}],[{"group":"doc","deltas":[{"action":"insertText","range":{"start":{"row":597,"column":29},"end":{"row":597,"column":30}},"text":"s"}]}],[{"group":"doc","deltas":[{"action":"insertText","range":{"start":{"row":597,"column":30},"end":{"row":597,"column":31}},"text":"("}]}],[{"group":"doc","deltas":[{"action":"insertText","range":{"start":{"row":597,"column":51},"end":{"row":597,"column":52}},"text":")"}]}],[{"group":"doc","deltas":[{"action":"removeText","range":{"start":{"row":597,"column":62},"end":{"row":597,"column":69}},"text":"contain"}]}],[{"group":"doc","deltas":[{"action":"removeText","range":{"start":{"row":597,"column":62},"end":{"row":597,"column":63}},"text":"."}]}],[{"group":"doc","deltas":[{"action":"removeText","range":{"start":{"row":597,"column":62},"end":{"row":597,"column":65}},"text":"key"}]}],[{"group":"doc","deltas":[{"action":"insertText","range":{"start":{"row":597,"column":62},"end":{"row":597,"column":63}},"text":"i"}]}],[{"group":"doc","deltas":[{"action":"insertText","range":{"start":{"row":597,"column":63},"end":{"row":597,"column":64}},"text":"n"}]}],[{"group":"doc","deltas":[{"action":"insertText","range":{"start":{"row":597,"column":64},"end":{"row":597,"column":65}},"text":"c"}]}],[{"group":"doc","deltas":[{"action":"insertText","range":{"start":{"row":597,"column":65},"end":{"row":597,"column":66}},"text":"l"},{"action":"insertText","range":{"start":{"row":597,"column":66},"end":{"row":597,"column":67}},"text":"u"}]}],[{"group":"doc","deltas":[{"action":"insertText","range":{"start":{"row":597,"column":67},"end":{"row":597,"column":68}},"text":"d"}]}],[{"group":"doc","deltas":[{"action":"insertText","range":{"start":{"row":597,"column":68},"end":{"row":597,"column":69}},"text":"e"}]}],[{"group":"doc","deltas":[{"action":"insertText","range":{"start":{"row":598,"column":19},"end":{"row":598,"column":20}},"text":"O"}]}],[{"group":"doc","deltas":[{"action":"insertText","range":{"start":{"row":598,"column":20},"end":{"row":598,"column":21}},"text":"b"}]}],[{"group":"doc","deltas":[{"action":"insertText","range":{"start":{"row":598,"column":21},"end":{"row":598,"column":22}},"text":"j"}]}],[{"group":"doc","deltas":[{"action":"insertText","range":{"start":{"row":598,"column":22},"end":{"row":598,"column":23}},"text":"e"}]}],[{"group":"doc","deltas":[{"action":"insertText","range":{"start":{"row":598,"column":23},"end":{"row":598,"column":24}},"text":"c"}]}],[{"group":"doc","deltas":[{"action":"insertText","range":{"start":{"row":598,"column":24},"end":{"row":598,"column":25}},"text":"t"}]}],[{"group":"doc","deltas":[{"action":"insertText","range":{"start":{"row":598,"column":25},"end":{"row":598,"column":26}},"text":"."}]}],[{"group":"doc","deltas":[{"action":"insertText","range":{"start":{"row":598,"column":26},"end":{"row":598,"column":27}},"text":"k"}]}],[{"group":"doc","deltas":[{"action":"insertText","range":{"start":{"row":598,"column":27},"end":{"row":598,"column":28}},"text":"e"}]}],[{"group":"doc","deltas":[{"action":"insertText","range":{"start":{"row":598,"column":28},"end":{"row":598,"column":29}},"text":"y"}]}],[{"group":"doc","deltas":[{"action":"insertText","range":{"start":{"row":598,"column":29},"end":{"row":598,"column":30}},"text":"s"}]}],[{"group":"doc","deltas":[{"action":"insertText","range":{"start":{"row":598,"column":30},"end":{"row":598,"column":31}},"text":"("}]}],[{"group":"doc","deltas":[{"action":"insertText","range":{"start":{"row":598,"column":49},"end":{"row":598,"column":50}},"text":")"}]}],[{"group":"doc","deltas":[{"action":"removeText","range":{"start":{"row":598,"column":54},"end":{"row":598,"column":61}},"text":"contain"}]}],[{"group":"doc","deltas":[{"action":"removeText","range":{"start":{"row":598,"column":54},"end":{"row":598,"column":55}},"text":"."}]}],[{"group":"doc","deltas":[{"action":"removeText","range":{"start":{"row":598,"column":54},"end":{"row":598,"column":57}},"text":"key"}]}],[{"group":"doc","deltas":[{"action":"insertText","range":{"start":{"row":598,"column":54},"end":{"row":598,"column":55}},"text":"i"}]}],[{"group":"doc","deltas":[{"action":"insertText","range":{"start":{"row":598,"column":55},"end":{"row":598,"column":56}},"text":"n"},{"action":"insertText","range":{"start":{"row":598,"column":56},"end":{"row":598,"column":57}},"text":"c"},{"action":"insertText","range":{"start":{"row":598,"column":57},"end":{"row":598,"column":58}},"text":"l"}]}],[{"group":"doc","deltas":[{"action":"insertText","range":{"start":{"row":598,"column":58},"end":{"row":598,"column":59}},"text":"u"}]}],[{"group":"doc","deltas":[{"action":"insertText","range":{"start":{"row":598,"column":59},"end":{"row":598,"column":60}},"text":"d"}]}],[{"group":"doc","deltas":[{"action":"insertText","range":{"start":{"row":598,"column":60},"end":{"row":598,"column":61}},"text":"e"}]}],[{"group":"doc","deltas":[{"action":"removeText","range":{"start":{"row":45,"column":8},"end":{"row":45,"column":15}},"text":"should "},{"action":"insertText","range":{"start":{"row":45,"column":16},"end":{"row":45,"column":17}},"text":"s"},{"action":"insertText","range":{"start":{"row":55,"column":0},"end":{"row":55,"column":75}},"text":" it('return object reference when no rules specified', function (done) {"},{"action":"insertText","range":{"start":{"row":55,"column":75},"end":{"row":56,"column":0}},"text":"\n"},{"action":"insertLines","range":{"start":{"row":56,"column":0},"end":{"row":69,"column":0}},"lines":[""," var schema = Joi.object({"," a: Joi.object()"," });",""," var item = { x: 5 };"," schema.validate({ a: item }, function (err, value) {",""," expect(value.a).to.equal(item);"," done();"," });"," });",""]}]}]]},"ace":{"folds":[],"scrolltop":10470,"scrollleft":0,"selection":{"start":{"row":590,"column":4},"end":{"row":590,"column":24},"isBackwards":false},"options":{"guessTabSize":true,"useWrapMode":false,"wrapToView":true},"firstLineState":{"row":182,"state":"start","mode":"ace/mode/javascript"}},"timestamp":1415365932943,"hash":"f2d969780fb6f9875439f049d433d3a2b9ab8971"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"filter":false,"title":"ref.js","tooltip":"/test/ref.js","undoManager":{"mark":2,"position":2,"stack":[[{"group":"doc","deltas":[{"start":{"row":355,"column":52},"end":{"row":355,"column":54},"action":"insert","lines":["()"]}]}],[{"group":"doc","deltas":[{"start":{"row":355,"column":53},"end":{"row":355,"column":53},"action":"insert","lines":[""]}]}],[{"group":"doc","deltas":[{"start":{"row":355,"column":52},"end":{"row":355,"column":54},"action":"remove","lines":["()"]}]}]]},"ace":{"folds":[],"scrolltop":5720.16711807251,"scrollleft":0,"selection":{"start":{"row":355,"column":52},"end":{"row":355,"column":52},"isBackwards":false},"options":{"guessTabSize":true,"useWrapMode":false,"wrapToView":true},"firstLineState":{"row":342,"state":"start","mode":"ace/mode/javascript"}},"timestamp":1416252630421,"hash":"c2e3bbcb46a736408d213db793eb4b6b3612cacf"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"changed":true,"filter":false,"title":"string.js","tooltip":"/test/string.js","value":"// Load modules\n\nvar Lab = require('lab');\nvar Code = require('code');\nvar Joi = require('../lib');\nvar Helper = require('./helper');\n\n\n// Declare internals\n\nvar internals = {};\n\n\n// Test shortcuts\n\nvar lab = exports.lab = Lab.script();\nvar before = lab.before;\nvar after = lab.after;\nvar describe = lab.describe;\nvar it = lab.it;\nvar expect = Code.expect;\n\n\ndescribe('string', function () {\n\n it('fails on boolean', function (done) {\n\n var schema = Joi.string();\n Helper.validate(schema, [\n [true, false],\n [false, false]\n ], done);\n });\n\n describe('#valid', function () {\n\n it('should throw error on input not matching type', function (done) {\n\n expect(function () {\n\n Joi.string().valid({});\n }).to.throw();\n done();\n });\n\n it('should not throw on input matching type', function (done) {\n\n expect(function () {\n\n Joi.string().valid('joi');\n }).to.not.throw();\n done();\n });\n\n it('validates case sensitive values', function (done) {\n\n Helper.validate(Joi.string().valid('a', 'b'), [\n ['a', true],\n ['b', true],\n ['A', false],\n ['B', false]\n ], done);\n });\n\n it('validates case insensitive values', function (done) {\n\n Helper.validate(Joi.string().valid('a', 'b').insensitive(), [\n ['a', true],\n ['b', true],\n ['A', true],\n ['B', true],\n [4, false]\n ], done);\n });\n\n it('validates case insensitive values with non-strings', function (done) {\n\n Helper.validate(Joi.string().valid('a', 'b', 5).insensitive(), [\n ['a', true],\n ['b', true],\n ['A', true],\n ['B', true],\n [4, false],\n [5, true]\n ], done);\n });\n });\n\n describe('#invalid', function () {\n\n it('should throw error on input not matching type', function (done) {\n\n expect(function () {\n\n Joi.string().invalid({});\n }).to.throw();\n done();\n });\n\n it('should not throw on input matching type', function (done) {\n\n expect(function () {\n\n Joi.string().invalid('joi');\n }).to.not.throw();\n done();\n });\n\n it('invalidates case sensitive values', function (done) {\n\n Helper.validate(Joi.string().invalid('a', 'b'), [\n ['a', false],\n ['b', false],\n ['A', true],\n ['B', true]\n ], done);\n });\n\n it('invalidates case insensitive values', function (done) {\n\n Helper.validate(Joi.string().invalid('a', 'b').insensitive(), [\n ['a', false],\n ['b', false],\n ['A', false],\n ['B', false]\n ], done);\n });\n });\n\n describe('#min', function () {\n\n it('throws when limit is not a number', function (done) {\n\n expect(function () {\n\n Joi.string().min('a');\n }).to.throw('limit must be a positive integer');\n done();\n });\n\n it('throws when limit is not an integer', function (done) {\n\n expect(function () {\n\n Joi.string().min(1.2);\n }).to.throw('limit must be a positive integer');\n done();\n });\n\n it('enforces a limit using byte count', function (done) {\n\n var schema = Joi.string().min(2, 'utf8');\n Helper.validate(schema, [\n ['\\u00bd', true],\n ['a', false]\n ], done);\n });\n });\n\n describe('#max', function () {\n\n it('throws when limit is not a number', function (done) {\n\n expect(function () {\n\n Joi.string().max('a');\n }).to.throw('limit must be a positive integer');\n done();\n });\n\n it('throws when limit is not an integer', function (done) {\n\n expect(function () {\n\n Joi.string().max(1.2);\n }).to.throw('limit must be a positive integer');\n done();\n });\n\n it('enforces a limit using byte count', function (done) {\n\n var schema = Joi.string().max(1, 'utf8');\n Helper.validate(schema, [\n ['\\u00bd', false],\n ['a', true]\n ], done);\n });\n });\n\n describe('#creditCard', function () {\n\n it('should validate credit card', function (done) {\n\n var t = Joi.string().creditCard();\n t.validate('4111111111111112', function (err, value) {\n\n expect(err.message).to.equal('value must be a credit card');\n\n Helper.validate(t, [\n ['378734493671000', true], // american express\n ['371449635398431', true], // american express\n ['378282246310005', true], // american express\n ['341111111111111', true], // american express\n ['5610591081018250', true], // australian bank\n ['5019717010103742', true], // dankort pbs\n ['38520000023237', true], // diners club\n ['30569309025904', true], // diners club\n ['6011000990139424', true], // discover\n ['6011111111111117', true], // discover\n ['6011601160116611', true], // discover\n ['3566002020360505', true], // jbc\n ['3530111333300000', true], // jbc\n ['5105105105105100', true], // mastercard\n ['5555555555554444', true], // mastercard\n ['5431111111111111', true], // mastercard\n ['6331101999990016', true], // switch/solo paymentech\n ['4222222222222', true], // visa\n ['4012888888881881', true], // visa\n ['4111111111111111', true], // visa\n ['4111111111111112', false],\n [null, false],\n ], done);\n });\n });\n });\n\n describe('#length', function () {\n\n it('throws when limit is not a number', function (done) {\n\n expect(function () {\n\n Joi.string().length('a');\n }).to.throw('limit must be a positive integer');\n done();\n });\n\n it('throws when limit is not an integer', function (done) {\n\n expect(function () {\n\n Joi.string().length(1.2);\n }).to.throw('limit must be a positive integer');\n done();\n });\n\n it('enforces a limit using byte count', function (done) {\n\n var schema = Joi.string().length(2, 'utf8');\n Helper.validate(schema, [\n ['\\u00bd', true],\n ['a', false]\n ], done);\n });\n });\n\n describe('#hostname', function () {\n\n it('validates hostnames', function (done) {\n\n var schema = Joi.string().hostname();\n Helper.validate(schema, [\n ['www.example.com', true],\n ['domain.local', true],\n ['3domain.local', true],\n ['hostname', true],\n ['host:name', false],\n ['-', false],\n ['2387628', true],\n ['01234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789', false],\n ['::1', true],\n ['0:0:0:0:0:0:0:1', true],\n ['0:?:0:0:0:0:0:1', false]\n ], done);\n });\n });\n\n describe('#lowercase', function () {\n\n it('only allows strings that are entirely lowercase', function (done) {\n\n var schema = Joi.string().lowercase();\n Helper.validateOptions(schema, [\n ['this is all lowercase', true],\n ['5', true],\n ['lower\\tcase', true],\n ['Uppercase', false],\n ['MixEd cAsE', false],\n [1, false]\n ], { convert: false }, done);\n });\n\n it('coerce string to lowercase before validation', function (done) {\n\n var schema = Joi.string().lowercase();\n schema.validate('UPPER TO LOWER', function (err, value) {\n\n expect(err).to.not.exist;\n expect(value).to.equal('upper to lower');\n done();\n });\n });\n\n it('should work in combination with a trim', function (done) {\n\n var schema = Joi.string().lowercase().trim();\n Helper.validate(schema, [\n [' abc', true],\n [' ABC', true],\n ['ABC', true],\n [1, false]\n ], done);\n });\n });\n\n describe('#uppercase', function () {\n\n it('only allow strings that are entirely uppercase', function (done) {\n\n var schema = Joi.string().uppercase();\n Helper.validateOptions(schema, [\n ['THIS IS ALL UPPERCASE', true],\n ['5', true],\n ['UPPER\\nCASE', true],\n ['lOWERCASE', false],\n ['MixEd cAsE', false],\n [1, false]\n ], { convert: false }, done);\n });\n\n it('coerce string to uppercase before validation', function (done) {\n\n var schema = Joi.string().uppercase();\n schema.validate('lower to upper', function (err, value) {\n\n expect(err).to.not.exist;\n expect(value).to.equal('LOWER TO UPPER');\n done();\n });\n });\n\n it('works in combination with a forced trim', function (done) {\n\n var schema = Joi.string().uppercase().trim();\n Helper.validate(schema, [\n [' abc', true],\n [' ABC', true],\n ['ABC', true],\n [1, false]\n ], done);\n });\n });\n\n describe('#trim', function () {\n\n it('only allow strings that have no leading or trailing whitespace', function (done) {\n\n var schema = Joi.string().trim();\n Helper.validateOptions(schema, [\n [' something', false],\n ['something ', false],\n ['something\\n', false],\n ['some thing', true],\n ['something', true]\n ], { convert: false }, done);\n });\n\n it('removes leading and trailing whitespace before validation', function (done) {\n\n var schema = Joi.string().trim();\n schema.validate(' trim this ', function (err, value) {\n\n expect(err).to.not.exist;\n expect(value).to.equal('trim this');\n done();\n });\n });\n\n it('removes leading and trailing whitespace before validation', function (done) {\n\n var schema = Joi.string().trim().allow('');\n schema.validate(' ', function (err, value) {\n\n expect(err).to.not.exist;\n expect(value).to.equal('');\n done();\n });\n });\n\n it('should work in combination with min', function (done) {\n\n var schema = Joi.string().min(4).trim();\n Helper.validate(schema, [\n [' a ', false],\n ['abc ', false],\n ['abcd ', true]\n ], done);\n });\n\n it('should work in combination with max', function (done) {\n\n var schema = Joi.string().max(4).trim();\n Helper.validate(schema, [\n [' abcde ', false],\n ['abc ', true],\n ['abcd ', true]\n ], done);\n });\n\n it('should work in combination with length', function (done) {\n\n var schema = Joi.string().length(4).trim();\n Helper.validate(schema, [\n [' ab ', false],\n ['abc ', false],\n ['abcd ', true]\n ], done);\n });\n\n it('should work in combination with a case change', function (done) {\n\n var schema = Joi.string().trim().lowercase();\n Helper.validate(schema, [\n [' abc', true],\n [' ABC', true],\n ['ABC', true]\n ], done);\n });\n });\n\n describe('#regex', function () {\n\n it('should not include a pattern name by default', function (done) {\n\n var schema = Joi.string().regex(/[a-z]+/).regex(/[0-9]+/);\n schema.validate('abcd', function (err, value) {\n\n expect(err.message).to.contain('required pattern');\n done();\n });\n });\n\n it('should include a pattern name if specified', function (done) {\n\n var schema = Joi.string().regex(/[a-z]+/, 'letters').regex(/[0-9]+/, 'numbers');\n schema.validate('abcd', function (err, value) {\n\n expect(err.message).to.contain('numbers pattern');\n done();\n });\n });\n });\n\n describe('#validate', function () {\n\n it('should, by default, allow undefined, deny empty string', function (done) {\n\n Helper.validate(Joi.string(), [\n [undefined, true],\n ['', false]\n ], done);\n });\n\n it('should, when .required(), deny undefined, deny empty string', function (done) {\n\n Helper.validate(Joi.string().required(), [\n [undefined, false],\n ['', false]\n ], done);\n });\n\n it('should, when .required(), print a friend error message for an empty string', function (done) {\n\n var schema = Joi.string().required();\n Joi.compile(schema).validate('', function (err, value) {\n\n expect(err.message).to.contain('be empty');\n done();\n });\n });\n\n it('should, when .required(), validate non-empty strings', function (done) {\n\n var schema = Joi.string().required();\n Helper.validate(schema, [\n ['test', true],\n ['0', true],\n [null, false]\n ], done);\n });\n\n it('validates invalid values', function (done) {\n\n var schema = Joi.string().invalid('a', 'b', 'c');\n Helper.validate(schema, [\n ['x', true],\n ['a', false],\n ['c', false]\n ], done);\n });\n\n it('should invalidate invalid values', function (done) {\n\n var schema = Joi.string().valid('a', 'b', 'c');\n Helper.validate(schema, [\n ['x', false],\n ['a', true],\n ['c', true]\n ], done);\n });\n\n it('validates array arguments correctly', function (done) {\n\n var schema = Joi.string().valid(['a', 'b', 'c']);\n Helper.validate(schema, [\n ['x', false],\n ['a', true],\n ['c', true]\n ], done);\n });\n\n it('validates minimum length when min is used', function (done) {\n\n var schema = Joi.string().min(3);\n Helper.validate(schema, [\n ['test', true],\n ['0', false],\n [null, false]\n ], done);\n });\n\n it('validates minimum length when min is 0', function (done) {\n\n var schema = Joi.string().min(0).required();\n Helper.validate(schema, [\n ['0', true],\n [null, false],\n [undefined, false]\n ], done);\n });\n\n it('should return false with minimum length and a null value passed in', function (done) {\n\n var schema = Joi.string().min(3);\n Helper.validate(schema, [\n [null, false]\n ], done);\n });\n\n it('null allowed overrides min length requirement', function (done) {\n\n var schema = Joi.string().min(3).allow(null);\n Helper.validate(schema, [\n [null, true]\n ], done);\n });\n\n it('validates maximum length when max is used', function (done) {\n\n var schema = Joi.string().max(3);\n Helper.validate(schema, [\n ['test', false],\n ['0', true],\n [null, false]\n ], done);\n });\n\n it('should return true with max and not required when value is undefined', function (done) {\n\n var schema = Joi.string().max(3);\n Helper.validate(schema, [\n [undefined, true]\n ], done);\n });\n\n it('validates length requirements', function (done) {\n\n var schema = Joi.string().length(3);\n Helper.validate(schema, [\n ['test', false],\n ['0', false],\n [null, false],\n ['abc', true]\n ], done);\n });\n\n it('validates regex', function (done) {\n\n var schema = Joi.string().regex(/^[0-9][-][a-z]+$/);\n Helper.validate(schema, [\n ['van', false],\n ['0-www', true]\n ], done);\n });\n\n it('validates regex (ignoring global flag)', function (done) {\n\n var schema = Joi.string().regex(/a/g);\n Helper.validate(schema, [\n ['ab', true],\n ['ac', true]\n ], done);\n });\n\n it('validates token', function (done) {\n\n var schema = Joi.string().token();\n Helper.validate(schema, [\n ['w0rld_of_w4lm4rtl4bs', true],\n ['w0rld of_w4lm4rtl4bs', false],\n ['abcd#f?h1j orly?', false]\n ], done);\n });\n\n it('validates alphanum', function (done) {\n\n var schema = Joi.string().alphanum();\n Helper.validate(schema, [\n ['w0rld of w4lm4rtl4bs', false],\n ['w0rldofw4lm4rtl4bs', true],\n ['abcd#f?h1j orly?', false]\n ], done);\n });\n\n it('validates email', function (done) {\n\n var schema = Joi.string().email();\n Helper.validate(schema, [\n ['joe@example.com', true],\n ['\"joe\"@example.com', true],\n ['@iaminvalid.com', false],\n ['joe@[IPv6:2a00:1450:4001:c02::1b]', true],\n ['12345678901234567890123456789012345678901234567890123456789012345@walmartlabs.com', false],\n ['123456789012345678901234567890123456789012345678901234567890@12345678901234567890123456789012345678901234567890123456789.12345678901234567890123456789012345678901234567890123456789.12345678901234567890123456789012345678901234567890123456789.12345.toolong.com', false]\n ], done);\n });\n\n it('validates email with a friendly error message', function (done) {\n\n var schema = { item: Joi.string().email() };\n Joi.compile(schema).validate({ item: 'something' }, function (err, value) {\n\n expect(err.message).to.contain('must be a valid email');\n done();\n });\n });\n\n it('should return false for denied value', function (done) {\n\n var text = Joi.string().invalid('joi');\n text.validate('joi', function (err, value) {\n\n expect(err).to.exist;\n done();\n });\n });\n\n it('should return true for allowed value', function (done) {\n\n var text = Joi.string().allow('hapi');\n text.validate('result', function (err, value) {\n\n expect(err).to.not.exist;\n done();\n });\n });\n\n it('validates with one validator (min)', function (done) {\n\n var text = Joi.string().min(3);\n text.validate('joi', function (err, value) {\n\n expect(err).to.not.exist;\n done();\n });\n });\n\n it('validates with two validators (min, required)', function (done) {\n\n var text = Joi.string().min(3).required();\n text.validate('joi', function (err, value) {\n\n expect(err).to.not.exist;\n\n text.validate('', function (err, value) {\n\n expect(err).to.exist;\n done();\n });\n });\n });\n\n it('validates null with allow(null)', function (done) {\n\n Helper.validate(Joi.string().allow(null), [\n [null, true]\n ], done);\n });\n\n it('validates \"\" (empty string) with allow(\\'\\')', function (done) {\n\n Helper.validate(Joi.string().allow(''), [\n ['', true],\n ['', true]\n ], done);\n });\n\n it('validates combination of required and min', function (done) {\n\n var rule = Joi.string().required().min(3);\n Helper.validate(rule, [\n ['x', false],\n ['123', true],\n ['', false],\n [null, false]\n ], done);\n });\n\n it('validates combination of required and max', function (done) {\n\n var rule = Joi.string().required().max(3);\n Helper.validate(rule, [\n ['x', true],\n ['123', true],\n ['1234', false],\n ['', false],\n [null, false]\n ], done);\n });\n\n it('validates combination of allow(\\'\\') and min', function (done) {\n\n var rule = Joi.string().allow('').min(3);\n Helper.validate(rule, [\n ['x', false],\n ['123', true],\n ['1234', true],\n ['', true],\n [null, false]\n ], done);\n });\n\n it('validates combination of allow(\\'\\') and max', function (done) {\n\n var rule = Joi.string().allow('').max(3);\n Helper.validate(rule, [\n ['x', true],\n ['123', true],\n ['1234', false],\n ['', true],\n [null, false]\n ], done);\n });\n\n it('validates combination of null allowed and max', function (done) {\n var rule = Joi.string().allow(null).max(3);\n Helper.validate(rule, [\n ['x', true],\n ['123', true],\n ['1234', false],\n ['', false],\n [null, true]\n ], done);\n });\n\n it('validates combination of min and max', function (done) {\n\n var rule = Joi.string().min(2).max(3);\n Helper.validate(rule, [\n ['x', false],\n ['123', true],\n ['1234', false],\n ['12', true],\n ['', false],\n [null, false]\n ], done);\n });\n\n it('validates combination of min, max, and allow(\\'\\')', function (done) {\n\n var rule = Joi.string().min(2).max(3).allow('');\n Helper.validate(rule, [\n ['x', false],\n ['123', true],\n ['1234', false],\n ['12', true],\n ['', true],\n [null, false]\n ], done);\n });\n\n it('validates combination of min, max, and required', function (done) {\n\n var rule = Joi.string().min(2).max(3).required();\n Helper.validate(rule, [\n ['x', false],\n ['123', true],\n ['1234', false],\n ['12', true],\n ['', false],\n [null, false]\n ], done);\n });\n\n it('validates combination of min, max, and regex', function (done) {\n\n var rule = Joi.string().min(2).max(3).regex(/^a/);\n Helper.validate(rule, [\n ['x', false],\n ['123', false],\n ['1234', false],\n ['12', false],\n ['ab', true],\n ['abc', true],\n ['abcd', false],\n ['', false],\n [null, false]\n ], done);\n });\n\n it('validates combination of min, max, regex, and allow(\\'\\')', function (done) {\n\n var rule = Joi.string().min(2).max(3).regex(/^a/).allow('');\n Helper.validate(rule, [\n ['x', false],\n ['123', false],\n ['1234', false],\n ['12', false],\n ['ab', true],\n ['abc', true],\n ['abcd', false],\n ['', true],\n [null, false]\n ], done);\n });\n\n it('validates combination of min, max, regex, and required', function (done) {\n\n var rule = Joi.string().min(2).max(3).regex(/^a/).required();\n Helper.validate(rule, [\n ['x', false],\n ['123', false],\n ['1234', false],\n ['12', false],\n ['ab', true],\n ['abc', true],\n ['abcd', false],\n ['', false],\n [null, false]\n ], done);\n });\n\n it('validates combination of min, max, and alphanum', function (done) {\n\n var rule = Joi.string().min(2).max(3).alphanum();\n Helper.validate(rule, [\n ['x', false],\n ['123', true],\n ['1234', false],\n ['12', true],\n ['ab', true],\n ['abc', true],\n ['abcd', false],\n ['*ab', false],\n ['', false],\n [null, false]\n ], done);\n });\n\n it('validates combination of min, max, alphanum, and allow(\\'\\')', function (done) {\n\n var rule = Joi.string().min(2).max(3).alphanum().allow('');\n Helper.validate(rule, [\n ['x', false],\n ['123', true],\n ['1234', false],\n ['12', true],\n ['ab', true],\n ['abc', true],\n ['abcd', false],\n ['*ab', false],\n ['', true],\n [null, false]\n ], done);\n });\n\n it('validates combination of min, max, alphanum, and required', function (done) {\n\n var rule = Joi.string().min(2).max(3).alphanum().required();\n Helper.validate(rule, [\n ['x', false],\n ['123', true],\n ['1234', false],\n ['12', true],\n ['ab', true],\n ['abc', true],\n ['abcd', false],\n ['*ab', false],\n ['', false],\n [null, false]\n ], done);\n });\n\n it('validates combination of min, max, alphanum, and regex', function (done) {\n\n var rule = Joi.string().min(2).max(3).alphanum().regex(/^a/);\n Helper.validate(rule, [\n ['x', false],\n ['123', false],\n ['1234', false],\n ['12', false],\n ['ab', true],\n ['abc', true],\n ['a2c', true],\n ['abcd', false],\n ['*ab', false],\n ['', false],\n [null, false]\n ], done);\n });\n\n it('validates combination of min, max, alphanum, required, and regex', function (done) {\n\n var rule = Joi.string().min(2).max(3).alphanum().required().regex(/^a/);\n Helper.validate(rule, [\n ['x', false],\n ['123', false],\n ['1234', false],\n ['12', false],\n ['ab', true],\n ['abc', true],\n ['a2c', true],\n ['abcd', false],\n ['*ab', false],\n ['', false],\n [null, false]\n ], done);\n });\n\n it('validates combination of min, max, alphanum, allow(\\'\\'), and regex', function (done) {\n\n var rule = Joi.string().min(2).max(3).alphanum().allow('').regex(/^a/);\n Helper.validate(rule, [\n ['x', false],\n ['123', false],\n ['1234', false],\n ['12', false],\n ['ab', true],\n ['abc', true],\n ['a2c', true],\n ['abcd', false],\n ['*ab', false],\n ['', true],\n [null, false]\n ], done);\n });\n\n it('validates combination of email and min', function (done) {\n\n var rule = Joi.string().email().min(8);\n Helper.validate(rule, [\n ['x@x.com', false],\n ['123@x.com', true],\n ['', false],\n [null, false]\n ], done);\n });\n\n it('validates combination of email, min, and max', function (done) {\n\n var rule = Joi.string().email().min(8).max(10);\n Helper.validate(rule, [\n ['x@x.com', false],\n ['123@x.com', true],\n ['1234@x.com', true],\n ['12345@x.com', false],\n ['', false],\n [null, false]\n ], done);\n });\n\n it('validates combination of email, min, max, and invalid', function (done) {\n\n var rule = Joi.string().email().min(8).max(10).invalid('123@x.com');\n Helper.validate(rule, [\n ['x@x.com', false],\n ['123@x.com', false],\n ['1234@x.com', true],\n ['12345@x.com', false],\n ['', false],\n [null, false]\n ], done);\n });\n\n it('validates combination of email, min, max, and allow', function (done) {\n\n var rule = Joi.string().email().min(8).max(10).allow('x@x.com');\n Helper.validate(rule, [\n ['x@x.com', true],\n ['123@x.com', true],\n ['1234@x.com', true],\n ['12345@x.com', false],\n ['', false],\n [null, false]\n ], done);\n });\n\n it('validates combination of email, min, max, allow, and invalid', function (done) {\n\n var rule = Joi.string().email().min(8).max(10).allow('x@x.com').invalid('123@x.com');\n Helper.validate(rule, [\n ['x@x.com', true],\n ['123@x.com', false],\n ['1234@x.com', true],\n ['12345@x.com', false],\n ['', false],\n [null, false]\n ], done);\n });\n\n it('validates combination of email, min, max, allow, invalid, and allow(\\'\\')', function (done) {\n\n var rule = Joi.string().email().min(8).max(10).allow('x@x.com').invalid('123@x.com').allow('');\n Helper.validate(rule, [\n ['x@x.com', true],\n ['123@x.com', false],\n ['1234@x.com', true],\n ['12345@x.com', false],\n ['', true],\n [null, false]\n ], done);\n });\n\n it('validates combination of email, min, max, allow, and allow(\\'\\')', function (done) {\n\n var rule = Joi.string().email().min(8).max(10).allow('x@x.com').allow('');\n Helper.validate(rule, [\n ['x@x.com', true],\n ['123@x.com', true],\n ['1234@x.com', true],\n ['12345@x.com', false],\n ['', true],\n [null, false]\n ], done);\n });\n\n it('validates combination of email, min, max, allow, invalid, and regex', function (done) {\n\n var rule = Joi.string().email().min(8).max(10).allow('x@x.com').invalid('123@x.com').regex(/^1/);\n Helper.validate(rule, [\n ['x@x.com', true],\n ['123@x.com', false],\n ['1234@x.com', true],\n ['12345@x.com', false],\n ['', false],\n [null, false]\n ], done);\n });\n\n it('validates combination of email, min, max, allow, invalid, regex, and allow(\\'\\')', function (done) {\n\n var rule = Joi.string().email().min(8).max(10).allow('x@x.com').invalid('123@x.com').regex(/^1/).allow('');\n Helper.validate(rule, [\n ['x@x.com', true],\n ['123@x.com', false],\n ['1234@x.com', true],\n ['12345@x.com', false],\n ['', true],\n [null, false]\n ], done);\n });\n\n it('validates combination of email, min, max, and allow(\\'\\')', function (done) {\n\n var rule = Joi.string().email().min(8).max(10).allow('');\n Helper.validate(rule, [\n ['x@x.com', false],\n ['123@x.com', true],\n ['1234@x.com', true],\n ['12345@x.com', false],\n ['', true],\n [null, false]\n ], done);\n });\n\n it('validates combination of email, min, max, and regex', function (done) {\n\n var rule = Joi.string().email().min(8).max(10).regex(/^1234/);\n Helper.validate(rule, [\n ['x@x.com', false],\n ['123@x.com', false],\n ['1234@x.com', true],\n ['12345@x.com', false],\n ['', false],\n [null, false]\n ], done);\n });\n\n it('validates combination of email, min, max, regex, and allow(\\'\\')', function (done) {\n\n var rule = Joi.string().email().min(8).max(10).regex(/^1234/).allow('');\n Helper.validate(rule, [\n ['x@x.com', false],\n ['123@x.com', false],\n ['1234@x.com', true],\n ['12345@x.com', false],\n ['', true],\n [null, false]\n ], done);\n });\n\n it('validates combination of email, min, max, regex, and required', function (done) {\n\n var rule = Joi.string().email().min(8).max(10).regex(/^1234/).required();\n Helper.validate(rule, [\n ['x@x.com', false],\n ['123@x.com', false],\n ['1234@x.com', true],\n ['12345@x.com', false],\n ['', false],\n [null, false]\n ], done);\n });\n\n it('validates isoDate', function (done) {\n\n Helper.validate(Joi.string().isoDate(), [\n ['2013-06-07T14:21:46.295Z', true],\n ['2013-06-07T14:21:46.295Z0', false],\n ['2013-06-07T14:21:46.295+07:00', true],\n ['2013-06-07T14:21:46.295+07:000', false],\n ['2013-06-07T14:21:46.295-07:00', true],\n ['2013-06-07T14:21:46Z', true],\n ['2013-06-07T14:21:46Z0', false],\n ['2013-06-07T14:21:46+07:00', true],\n ['2013-06-07T14:21:46-07:00', true],\n ['2013-06-07T14:21Z', true],\n ['2013-06-07T14:21+07:00', true],\n ['2013-06-07T14:21+07:000', false],\n ['2013-06-07T14:21-07:00', true],\n ['2013-06-07T14:21Z+7:00', false],\n ['2013-06-07', true],\n ['2013-06-07T', false],\n ['2013-06-07T14:21', false],\n ['1-1-2013', false]\n ], done);\n });\n\n it('validates isoDate with a friendly error message', function (done) {\n\n var schema = { item: Joi.string().isoDate() };\n Joi.compile(schema).validate({ item: 'something' }, function (err, value) {\n\n expect(err.message).to.contain('must be a valid ISO 8601 date');\n done();\n });\n });\n\n it('validates combination of isoDate and min', function (done) {\n\n var rule = Joi.string().isoDate().min(23);\n Helper.validate(rule, [\n ['2013-06-07T14:21:46.295Z', true],\n ['2013-06-07T14:21:46.295Z0', false],\n ['2013-06-07T14:21:46.295+07:00', true],\n ['2013-06-07T14:21:46.295+07:000', false],\n ['2013-06-07T14:21:46.295-07:00', true],\n ['2013-06-07T14:21:46Z', false],\n ['2013-06-07T14:21:46Z0', false],\n ['2013-06-07T14:21:46+07:00', true],\n ['2013-06-07T14:21:46-07:00', true],\n ['2013-06-07T14:21Z', false],\n ['2013-06-07T14:21+07:00', false],\n ['2013-06-07T14:21+07:000', false],\n ['2013-06-07T14:21-07:00', false],\n ['2013-06-07T14:21Z+7:00', false],\n ['2013-06-07', false],\n ['2013-06-07T', false],\n ['2013-06-07T14:21', false],\n ['1-1-2013', false],\n ['', false],\n [null, false]\n ], done);\n });\n\n it('validates combination of isoDate, min and max', function (done) {\n\n var rule = Joi.string().isoDate().min(17).max(23);\n Helper.validate(rule, [\n ['2013-06-07T14:21:46.295Z', false],\n ['2013-06-07T14:21:46.295Z0', false],\n ['2013-06-07T14:21:46.295+07:00', false],\n ['2013-06-07T14:21:46.295+07:000', false],\n ['2013-06-07T14:21:46.295-07:00', false],\n ['2013-06-07T14:21:46Z', true],\n ['2013-06-07T14:21:46Z0', false],\n ['2013-06-07T14:21:46+07:00', false],\n ['2013-06-07T14:21:46-07:00', false],\n ['2013-06-07T14:21Z', true],\n ['2013-06-07T14:21+07:00', true],\n ['2013-06-07T14:21+07:000', false],\n ['2013-06-07T14:21-07:00', true],\n ['2013-06-07T14:21Z+7:00', false],\n ['2013-06-07', false],\n ['2013-06-07T', false],\n ['2013-06-07T14:21', false],\n ['1-1-2013', false],\n ['', false],\n [null, false]\n ], done);\n });\n\n it('validates combination of isoDate, min, max and invalid', function (done) {\n\n var rule = Joi.string().isoDate().min(17).max(23).invalid('2013-06-07T14:21+07:00');\n Helper.validate(rule, [\n ['2013-06-07T14:21:46.295Z', false],\n ['2013-06-07T14:21:46.295Z0', false],\n ['2013-06-07T14:21:46.295+07:00', false],\n ['2013-06-07T14:21:46.295+07:000', false],\n ['2013-06-07T14:21:46.295-07:00', false],\n ['2013-06-07T14:21:46Z', true],\n ['2013-06-07T14:21:46Z0', false],\n ['2013-06-07T14:21:46+07:00', false],\n ['2013-06-07T14:21:46-07:00', false],\n ['2013-06-07T14:21Z', true],\n ['2013-06-07T14:21+07:00', false],\n ['2013-06-07T14:21+07:000', false],\n ['2013-06-07T14:21-07:00', true],\n ['2013-06-07T14:21Z+7:00', false],\n ['2013-06-07', false],\n ['2013-06-07T', false],\n ['2013-06-07T14:21', false],\n ['1-1-2013', false],\n ['', false],\n [null, false]\n ], done);\n });\n\n it('validates combination of isoDate, min, max and allow', function (done) {\n\n var rule = Joi.string().isoDate().min(17).max(23).allow('2013-06-07T14:21:46.295+07:00');\n Helper.validate(rule, [\n ['2013-06-07T14:21:46.295Z', false],\n ['2013-06-07T14:21:46.295Z0', false],\n ['2013-06-07T14:21:46.295+07:00', true],\n ['2013-06-07T14:21:46.295+07:000', false],\n ['2013-06-07T14:21:46.295-07:00', false],\n ['2013-06-07T14:21:46Z', true],\n ['2013-06-07T14:21:46Z0', false],\n ['2013-06-07T14:21:46+07:00', false],\n ['2013-06-07T14:21:46-07:00', false],\n ['2013-06-07T14:21Z', true],\n ['2013-06-07T14:21+07:00', true],\n ['2013-06-07T14:21+07:000', false],\n ['2013-06-07T14:21-07:00', true],\n ['2013-06-07T14:21Z+7:00', false],\n ['2013-06-07', false],\n ['2013-06-07T', false],\n ['2013-06-07T14:21', false],\n ['1-1-2013', false],\n ['', false],\n [null, false]\n ], done);\n });\n\n it('validates combination of isoDate, min, max, allow and invalid', function (done) {\n\n var rule = Joi.string().isoDate().min(17).max(23).allow('2013-06-07T14:21:46.295+07:00').invalid('2013-06-07T14:21+07:00');\n Helper.validate(rule, [\n ['2013-06-07T14:21:46.295Z', false],\n ['2013-06-07T14:21:46.295Z0', false],\n ['2013-06-07T14:21:46.295+07:00', true],\n ['2013-06-07T14:21:46.295+07:000', false],\n ['2013-06-07T14:21:46.295-07:00', false],\n ['2013-06-07T14:21:46Z', true],\n ['2013-06-07T14:21:46Z0', false],\n ['2013-06-07T14:21:46+07:00', false],\n ['2013-06-07T14:21:46-07:00', false],\n ['2013-06-07T14:21Z', true],\n ['2013-06-07T14:21+07:00', false],\n ['2013-06-07T14:21+07:000', false],\n ['2013-06-07T14:21-07:00', true],\n ['2013-06-07T14:21Z+7:00', false],\n ['2013-06-07', false],\n ['2013-06-07T', false],\n ['2013-06-07T14:21', false],\n ['1-1-2013', false],\n ['', false],\n [null, false]\n ], done);\n });\n\n it('validates combination of isoDate, min, max, allow, invalid and allow(\\'\\')', function (done) {\n\n var rule = Joi.string().isoDate().min(17).max(23).allow('2013-06-07T14:21:46.295+07:00').invalid('2013-06-07T14:21+07:00').allow('');\n Helper.validate(rule, [\n ['2013-06-07T14:21:46.295Z', false],\n ['2013-06-07T14:21:46.295Z0', false],\n ['2013-06-07T14:21:46.295+07:00', true],\n ['2013-06-07T14:21:46.295+07:000', false],\n ['2013-06-07T14:21:46.295-07:00', false],\n ['2013-06-07T14:21:46Z', true],\n ['2013-06-07T14:21:46Z0', false],\n ['2013-06-07T14:21:46+07:00', false],\n ['2013-06-07T14:21:46-07:00', false],\n ['2013-06-07T14:21Z', true],\n ['2013-06-07T14:21+07:00', false],\n ['2013-06-07T14:21+07:000', false],\n ['2013-06-07T14:21-07:00', true],\n ['2013-06-07T14:21Z+7:00', false],\n ['2013-06-07', false],\n ['2013-06-07T', false],\n ['2013-06-07T14:21', false],\n ['1-1-2013', false],\n ['', true],\n [null, false]\n ], done);\n });\n\n it('validates combination of isoDate, min, max, allow, invalid and allow(\\'\\')', function (done) {\n\n var rule = Joi.string().isoDate().min(17).max(23).allow('2013-06-07T14:21:46.295+07:00').allow('');\n Helper.validate(rule, [\n ['2013-06-07T14:21:46.295Z', false],\n ['2013-06-07T14:21:46.295Z0', false],\n ['2013-06-07T14:21:46.295+07:00', true],\n ['2013-06-07T14:21:46.295+07:000', false],\n ['2013-06-07T14:21:46.295-07:00', false],\n ['2013-06-07T14:21:46Z', true],\n ['2013-06-07T14:21:46Z0', false],\n ['2013-06-07T14:21:46+07:00', false],\n ['2013-06-07T14:21:46-07:00', false],\n ['2013-06-07T14:21Z', true],\n ['2013-06-07T14:21+07:00', true],\n ['2013-06-07T14:21+07:000', false],\n ['2013-06-07T14:21-07:00', true],\n ['2013-06-07T14:21Z+7:00', false],\n ['2013-06-07', false],\n ['2013-06-07T', false],\n ['2013-06-07T14:21', false],\n ['1-1-2013', false],\n ['', true],\n [null, false]\n ], done);\n });\n\n it('validates combination of isoDate, min, max, allow, invalid and regex', function (done) {\n\n var rule = Joi.string().isoDate().min(17).max(23).allow('2013-06-07T14:21:46.295+07:00').invalid('2013-06-07T14:21Z').regex(/Z$/);\n Helper.validate(rule, [\n ['2013-06-07T14:21:46.295Z', false],\n ['2013-06-07T14:21:46.295Z0', false],\n ['2013-06-07T14:21:46.295+07:00', true],\n ['2013-06-07T14:21:46.295+07:000', false],\n ['2013-06-07T14:21:46.295-07:00', false],\n ['2013-06-07T14:21:46Z', true],\n ['2013-06-07T14:21:46Z0', false],\n ['2013-06-07T14:21:46+07:00', false],\n ['2013-06-07T14:21:46-07:00', false],\n ['2013-06-07T14:21Z', false],\n ['2013-06-07T14:21+07:00', false],\n ['2013-06-07T14:21+07:000', false],\n ['2013-06-07T14:21-07:00', false],\n ['2013-06-07T14:21Z+7:00', false],\n ['2013-06-07', false],\n ['2013-06-07T', false],\n ['2013-06-07T14:21', false],\n ['1-1-2013', false],\n ['', false],\n [null, false]\n ], done);\n });\n\n it('validates combination of isoDate, min, max, allow, invalid, regex and allow(\\'\\')', function (done) {\n\n var rule = Joi.string().isoDate().min(17).max(23).allow('2013-06-07T14:21:46.295+07:00').invalid('2013-06-07T14:21Z').regex(/Z$/).allow('');\n Helper.validate(rule, [\n ['2013-06-07T14:21:46.295Z', false],\n ['2013-06-07T14:21:46.295Z0', false],\n ['2013-06-07T14:21:46.295+07:00', true],\n ['2013-06-07T14:21:46.295+07:000', false],\n ['2013-06-07T14:21:46.295-07:00', false],\n ['2013-06-07T14:21:46Z', true],\n ['2013-06-07T14:21:46Z0', false],\n ['2013-06-07T14:21:46+07:00', false],\n ['2013-06-07T14:21:46-07:00', false],\n ['2013-06-07T14:21Z', false],\n ['2013-06-07T14:21+07:00', false],\n ['2013-06-07T14:21+07:000', false],\n ['2013-06-07T14:21-07:00', false],\n ['2013-06-07T14:21Z+7:00', false],\n ['2013-06-07', false],\n ['2013-06-07T', false],\n ['2013-06-07T14:21', false],\n ['1-1-2013', false],\n ['', true],\n [null, false]\n ], done);\n });\n\n it('validates combination of isoDate, min, max and allow(\\'\\')', function (done) {\n\n var rule = Joi.string().isoDate().min(17).max(23).allow('');\n Helper.validate(rule, [\n ['2013-06-07T14:21:46.295Z', false],\n ['2013-06-07T14:21:46.295Z0', false],\n ['2013-06-07T14:21:46.295+07:00', false],\n ['2013-06-07T14:21:46.295+07:000', false],\n ['2013-06-07T14:21:46.295-07:00', false],\n ['2013-06-07T14:21:46Z', true],\n ['2013-06-07T14:21:46Z0', false],\n ['2013-06-07T14:21:46+07:00', false],\n ['2013-06-07T14:21:46-07:00', false],\n ['2013-06-07T14:21Z', true],\n ['2013-06-07T14:21+07:00', true],\n ['2013-06-07T14:21+07:000', false],\n ['2013-06-07T14:21-07:00', true],\n ['2013-06-07T14:21Z+7:00', false],\n ['2013-06-07', false],\n ['2013-06-07T', false],\n ['2013-06-07T14:21', false],\n ['1-1-2013', false],\n ['', true],\n [null, false]\n ], done);\n });\n\n it('validates combination of isoDate, min, max and regex', function (done) {\n\n var rule = Joi.string().isoDate().min(17).max(23).regex(/Z$/);\n Helper.validate(rule, [\n ['2013-06-07T14:21:46.295Z', false],\n ['2013-06-07T14:21:46.295Z0', false],\n ['2013-06-07T14:21:46.295+07:00', false],\n ['2013-06-07T14:21:46.295+07:000', false],\n ['2013-06-07T14:21:46.295-07:00', false],\n ['2013-06-07T14:21:46Z', true],\n ['2013-06-07T14:21:46Z0', false],\n ['2013-06-07T14:21:46+07:00', false],\n ['2013-06-07T14:21:46-07:00', false],\n ['2013-06-07T14:21Z', true],\n ['2013-06-07T14:21+07:00', false],\n ['2013-06-07T14:21+07:000', false],\n ['2013-06-07T14:21-07:00', false],\n ['2013-06-07T14:21Z+7:00', false],\n ['2013-06-07', false],\n ['2013-06-07T', false],\n ['2013-06-07T14:21', false],\n ['1-1-2013', false],\n ['', false],\n [null, false]\n ], done);\n });\n\n it('validates combination of isoDate, min, max, regex and allow(\\'\\')', function (done) {\n\n var rule = Joi.string().isoDate().min(17).max(23).regex(/Z$/).allow('');\n Helper.validate(rule, [\n ['2013-06-07T14:21:46.295Z', false],\n ['2013-06-07T14:21:46.295Z0', false],\n ['2013-06-07T14:21:46.295+07:00', false],\n ['2013-06-07T14:21:46.295+07:000', false],\n ['2013-06-07T14:21:46.295-07:00', false],\n ['2013-06-07T14:21:46Z', true],\n ['2013-06-07T14:21:46Z0', false],\n ['2013-06-07T14:21:46+07:00', false],\n ['2013-06-07T14:21:46-07:00', false],\n ['2013-06-07T14:21Z', true],\n ['2013-06-07T14:21+07:00', false],\n ['2013-06-07T14:21+07:000', false],\n ['2013-06-07T14:21-07:00', false],\n ['2013-06-07T14:21Z+7:00', false],\n ['2013-06-07', false],\n ['2013-06-07T', false],\n ['2013-06-07T14:21', false],\n ['1-1-2013', false],\n ['', true],\n [null, false]\n ], done);\n });\n\n it('validates combination of isoDate, min, max, regex and required', function (done) {\n\n var rule = Joi.string().isoDate().min(17).max(23).regex(/Z$/).required();\n Helper.validate(rule, [\n ['2013-06-07T14:21:46.295Z', false],\n ['2013-06-07T14:21:46.295Z0', false],\n ['2013-06-07T14:21:46.295+07:00', false],\n ['2013-06-07T14:21:46.295+07:000', false],\n ['2013-06-07T14:21:46.295-07:00', false],\n ['2013-06-07T14:21:46Z', true],\n ['2013-06-07T14:21:46Z0', false],\n ['2013-06-07T14:21:46+07:00', false],\n ['2013-06-07T14:21:46-07:00', false],\n ['2013-06-07T14:21Z', true],\n ['2013-06-07T14:21+07:00', false],\n ['2013-06-07T14:21+07:000', false],\n ['2013-06-07T14:21-07:00', false],\n ['2013-06-07T14:21Z+7:00', false],\n ['2013-06-07', false],\n ['2013-06-07T', false],\n ['2013-06-07T14:21', false],\n ['1-1-2013', false],\n ['', false],\n [null, false]\n ], done);\n });\n\n it('validates guid', function (done) {\n\n Helper.validate(Joi.string().guid(), [\n ['{D1A5279D-B27D-4CD4-A05E-EFDD53D08E8D}', true],\n ['{B59511BD6A5F4DF09ECF562A108D8A2E}', true],\n ['69593D62-71EA-4548-85E4-04FC71357423', true],\n ['677E2553DD4D43B09DA77414DB1EB8EA', true],\n ['{5ba3bba3-729a-4717-88c1-b7c4b7ba80db}', true],\n ['{7e9081b59a6d4cc1a8c347f69fb4198d}', true],\n ['0c74f13f-fa83-4c48-9b33-68921dd72463', true],\n ['b4b2fb69c6244e5eb0698e0c6ec66618', true],\n ['{283B67B2-430F-4E6F-97E6-19041992-C1B0}', false],\n ['{D1A5279D-B27D-4CD4-A05E-EFDD53D08E8D', false],\n ['D1A5279D-B27D-4CD4-A05E-EFDD53D08E8D}', false]\n ], done);\n });\n\n it('validates guid with a friendly error message', function (done) {\n\n var schema = { item: Joi.string().guid() };\n Joi.compile(schema).validate({ item: 'something' }, function (err, value) {\n\n expect(err.message).to.contain('must be a valid GUID');\n done();\n });\n });\n\n it('validates combination of guid and min', function (done) {\n\n var rule = Joi.string().guid().min(36);\n Helper.validate(rule, [\n ['{D1A5279D-B27D-4CD4-A05E-EFDD53D08E8D}', true],\n ['{B59511BD6A5F4DF09ECF562A108D8A2E}', false],\n ['69593D62-71EA-4548-85E4-04FC71357423', true],\n ['677E2553DD4D43B09DA77414DB1EB8EA', false],\n ['{5ba3bba3-729a-4717-88c1-b7c4b7ba80db}', true],\n ['{7e9081b59a6d4cc1a8c347f69fb4198d}', false],\n ['0c74f13f-fa83-4c48-9b33-68921dd72463', true],\n ['b4b2fb69c6244e5eb0698e0c6ec66618', false],\n ['{283B67B2-430F-4E6F-97E6-19041992-C1B0}', false],\n ['{D1A5279D-B27D-4CD4-A05E-EFDD53D08E8D', false],\n ['D1A5279D-B27D-4CD4-A05E-EFDD53D08E8D}', false],\n ['', false],\n [null, false]\n ], done);\n });\n\n it('validates combination of guid, min and max', function (done) {\n\n var rule = Joi.string().guid().min(32).max(34);\n Helper.validate(rule, [\n ['{D1A5279D-B27D-4CD4-A05E-EFDD53D08E8D}', false],\n ['{B59511BD6A5F4DF09ECF562A108D8A2E}', true],\n ['69593D62-71EA-4548-85E4-04FC71357423', false],\n ['677E2553DD4D43B09DA77414DB1EB8EA', true],\n ['{5ba3bba3-729a-4717-88c1-b7c4b7ba80db}', false],\n ['{7e9081b59a6d4cc1a8c347f69fb4198d}', true],\n ['0c74f13f-fa83-4c48-9b33-68921dd72463', false],\n ['b4b2fb69c6244e5eb0698e0c6ec66618', true],\n ['{283B67B2-430F-4E6F-97E6-19041992-C1B0}', false],\n ['{D1A5279D-B27D-4CD4-A05E-EFDD53D08E8D', false],\n ['D1A5279D-B27D-4CD4-A05E-EFDD53D08E8D}', false],\n ['', false],\n [null, false]\n ], done);\n });\n\n it('validates combination of guid, min, max and invalid', function (done) {\n\n var rule = Joi.string().guid().min(32).max(34).invalid('b4b2fb69c6244e5eb0698e0c6ec66618');\n Helper.validate(rule, [\n ['{D1A5279D-B27D-4CD4-A05E-EFDD53D08E8D}', false],\n ['{B59511BD6A5F4DF09ECF562A108D8A2E}', true],\n ['69593D62-71EA-4548-85E4-04FC71357423', false],\n ['677E2553DD4D43B09DA77414DB1EB8EA', true],\n ['{5ba3bba3-729a-4717-88c1-b7c4b7ba80db}', false],\n ['{7e9081b59a6d4cc1a8c347f69fb4198d}', true],\n ['0c74f13f-fa83-4c48-9b33-68921dd72463', false],\n ['b4b2fb69c6244e5eb0698e0c6ec66618', false],\n ['{283B67B2-430F-4E6F-97E6-19041992-C1B0}', false],\n ['{D1A5279D-B27D-4CD4-A05E-EFDD53D08E8D', false],\n ['D1A5279D-B27D-4CD4-A05E-EFDD53D08E8D}', false],\n ['', false],\n [null, false]\n ], done);\n });\n\n it('validates combination of guid, min, max and allow', function (done) {\n\n var rule = Joi.string().guid().min(32).max(34).allow('{D1A5279D-B27D-4CD4-A05E-EFDD53D08E8D');\n Helper.validate(rule, [\n ['{D1A5279D-B27D-4CD4-A05E-EFDD53D08E8D}', false],\n ['{B59511BD6A5F4DF09ECF562A108D8A2E}', true],\n ['69593D62-71EA-4548-85E4-04FC71357423', false],\n ['677E2553DD4D43B09DA77414DB1EB8EA', true],\n ['{5ba3bba3-729a-4717-88c1-b7c4b7ba80db}', false],\n ['{7e9081b59a6d4cc1a8c347f69fb4198d}', true],\n ['0c74f13f-fa83-4c48-9b33-68921dd72463', false],\n ['b4b2fb69c6244e5eb0698e0c6ec66618', true],\n ['{283B67B2-430F-4E6F-97E6-19041992-C1B0}', false],\n ['{D1A5279D-B27D-4CD4-A05E-EFDD53D08E8D', true],\n ['D1A5279D-B27D-4CD4-A05E-EFDD53D08E8D}', false],\n ['', false],\n [null, false]\n ], done);\n });\n\n it('validates combination of guid, min, max, allow and invalid', function (done) {\n\n var rule = Joi.string().guid().min(32).max(34).allow('{D1A5279D-B27D-4CD4-A05E-EFDD53D08E8D').invalid('b4b2fb69c6244e5eb0698e0c6ec66618');\n Helper.validate(rule, [\n ['{D1A5279D-B27D-4CD4-A05E-EFDD53D08E8D}', false],\n ['{B59511BD6A5F4DF09ECF562A108D8A2E}', true],\n ['69593D62-71EA-4548-85E4-04FC71357423', false],\n ['677E2553DD4D43B09DA77414DB1EB8EA', true],\n ['{5ba3bba3-729a-4717-88c1-b7c4b7ba80db}', false],\n ['{7e9081b59a6d4cc1a8c347f69fb4198d}', true],\n ['0c74f13f-fa83-4c48-9b33-68921dd72463', false],\n ['b4b2fb69c6244e5eb0698e0c6ec66618', false],\n ['{283B67B2-430F-4E6F-97E6-19041992-C1B0}', false],\n ['{D1A5279D-B27D-4CD4-A05E-EFDD53D08E8D', true],\n ['D1A5279D-B27D-4CD4-A05E-EFDD53D08E8D}', false],\n ['', false],\n [null, false]\n ], done);\n });\n\n it('validates combination of guid, min, max, allow, invalid and allow(\\'\\')', function (done) {\n\n var rule = Joi.string().guid().min(32).max(34).allow('{D1A5279D-B27D-4CD4-A05E-EFDD53D08E8D').invalid('b4b2fb69c6244e5eb0698e0c6ec66618').allow('');\n Helper.validate(rule, [\n ['{D1A5279D-B27D-4CD4-A05E-EFDD53D08E8D}', false],\n ['{B59511BD6A5F4DF09ECF562A108D8A2E}', true],\n ['69593D62-71EA-4548-85E4-04FC71357423', false],\n ['677E2553DD4D43B09DA77414DB1EB8EA', true],\n ['{5ba3bba3-729a-4717-88c1-b7c4b7ba80db}', false],\n ['{7e9081b59a6d4cc1a8c347f69fb4198d}', true],\n ['0c74f13f-fa83-4c48-9b33-68921dd72463', false],\n ['b4b2fb69c6244e5eb0698e0c6ec66618', false],\n ['{283B67B2-430F-4E6F-97E6-19041992-C1B0}', false],\n ['{D1A5279D-B27D-4CD4-A05E-EFDD53D08E8D', true],\n ['D1A5279D-B27D-4CD4-A05E-EFDD53D08E8D}', false],\n ['', true],\n [null, false]\n ], done);\n });\n\n it('validates combination of guid, min, max, allow and allow(\\'\\')', function (done) {\n\n var rule = Joi.string().guid().min(32).max(34).allow('{D1A5279D-B27D-4CD4-A05E-EFDD53D08E8D').allow('');\n Helper.validate(rule, [\n ['{D1A5279D-B27D-4CD4-A05E-EFDD53D08E8D}', false],\n ['{B59511BD6A5F4DF09ECF562A108D8A2E}', true],\n ['69593D62-71EA-4548-85E4-04FC71357423', false],\n ['677E2553DD4D43B09DA77414DB1EB8EA', true],\n ['{5ba3bba3-729a-4717-88c1-b7c4b7ba80db}', false],\n ['{7e9081b59a6d4cc1a8c347f69fb4198d}', true],\n ['0c74f13f-fa83-4c48-9b33-68921dd72463', false],\n ['b4b2fb69c6244e5eb0698e0c6ec66618', true],\n ['{283B67B2-430F-4E6F-97E6-19041992-C1B0}', false],\n ['{D1A5279D-B27D-4CD4-A05E-EFDD53D08E8D', true],\n ['D1A5279D-B27D-4CD4-A05E-EFDD53D08E8D}', false],\n ['', true],\n [null, false]\n ], done);\n });\n\n it('validates combination of guid, min, max, allow, invalid and regex', function (done) {\n\n var rule = Joi.string().guid().min(32).max(34).allow('{D1A5279D-B27D-4CD4-A05E-EFDD53D08').invalid('b4b2fb69c6244e5eb0698e0c6ec66618').regex(/^{7e908/);\n Helper.validate(rule, [\n ['{D1A5279D-B27D-4CD4-A05E-EFDD53D08E8D}', false],\n ['{B59511BD6A5F4DF09ECF562A108D8A2E}', false],\n ['69593D62-71EA-4548-85E4-04FC71357423', false],\n ['677E2553DD4D43B09DA77414DB1EB8EA', false],\n ['{5ba3bba3-729a-4717-88c1-b7c4b7ba80db}', false],\n ['{7e9081b59a6d4cc1a8c347f69fb4198d}', true],\n ['0c74f13f-fa83-4c48-9b33-68921dd72463', false],\n ['b4b2fb69c6244e5eb0698e0c6ec66618', false],\n ['{283B67B2-430F-4E6F-97E6-19041992-C1B0}', false],\n ['{D1A5279D-B27D-4CD4-A05E-EFDD53D08', true],\n ['D1A5279D-B27D-4CD4-A05E-EFDD53D08E8D}', false],\n ['', false],\n [null, false]\n ], done);\n });\n\n it('validates combination of guid, min, max, allow, invalid, regex and allow(\\'\\')', function (done) {\n\n var rule = Joi.string().guid().min(32).max(34).allow('{D1A5279D-B27D-4CD4-A05E-EFDD53D08').invalid('b4b2fb69c6244e5eb0698e0c6ec66618').regex(/^{7e908/).allow('');\n Helper.validate(rule, [\n ['{D1A5279D-B27D-4CD4-A05E-EFDD53D08E8D}', false],\n ['{B59511BD6A5F4DF09ECF562A108D8A2E}', false],\n ['69593D62-71EA-4548-85E4-04FC71357423', false],\n ['677E2553DD4D43B09DA77414DB1EB8EA', false],\n ['{5ba3bba3-729a-4717-88c1-b7c4b7ba80db}', false],\n ['{7e9081b59a6d4cc1a8c347f69fb4198d}', true],\n ['0c74f13f-fa83-4c48-9b33-68921dd72463', false],\n ['b4b2fb69c6244e5eb0698e0c6ec66618', false],\n ['{283B67B2-430F-4E6F-97E6-19041992-C1B0}', false],\n ['{D1A5279D-B27D-4CD4-A05E-EFDD53D08', true],\n ['D1A5279D-B27D-4CD4-A05E-EFDD53D08E8D}', false],\n ['', true],\n [null, false]\n ], done);\n });\n\n it('validates combination of guid, min, max and allow(\\'\\')', function (done) {\n\n var rule = Joi.string().guid().min(32).max(34).allow('');\n Helper.validate(rule, [\n ['{D1A5279D-B27D-4CD4-A05E-EFDD53D08E8D}', false],\n ['{B59511BD6A5F4DF09ECF562A108D8A2E}', true],\n ['69593D62-71EA-4548-85E4-04FC71357423', false],\n ['677E2553DD4D43B09DA77414DB1EB8EA', true],\n ['{5ba3bba3-729a-4717-88c1-b7c4b7ba80db}', false],\n ['{7e9081b59a6d4cc1a8c347f69fb4198d}', true],\n ['0c74f13f-fa83-4c48-9b33-68921dd72463', false],\n ['b4b2fb69c6244e5eb0698e0c6ec66618', true],\n ['{283B67B2-430F-4E6F-97E6-19041992-C1B0}', false],\n ['{D1A5279D-B27D-4CD4-A05E-EFDD53D08E8D', false],\n ['D1A5279D-B27D-4CD4-A05E-EFDD53D08E8D}', false],\n ['', true],\n [null, false]\n ], done);\n });\n\n it('validates combination of guid, min, max and regex', function (done) {\n\n var rule = Joi.string().guid().min(32).max(34).regex(/^{7e9081/i);\n Helper.validate(rule, [\n ['{D1A5279D-B27D-4CD4-A05E-EFDD53D08E8D}', false],\n ['{B59511BD6A5F4DF09ECF562A108D8A2E}', false],\n ['69593D62-71EA-4548-85E4-04FC71357423', false],\n ['677E2553DD4D43B09DA77414DB1EB8EA', false],\n ['{5ba3bba3-729a-4717-88c1-b7c4b7ba80db}', false],\n ['{7e9081b59a6d4cc1a8c347f69fb4198d}', true],\n ['0c74f13f-fa83-4c48-9b33-68921dd72463', false],\n ['b4b2fb69c6244e5eb0698e0c6ec66618', false],\n ['{283B67B2-430F-4E6F-97E6-19041992-C1B0}', false],\n ['{D1A5279D-B27D-4CD4-A05E-EFDD53D08E8D', false],\n ['D1A5279D-B27D-4CD4-A05E-EFDD53D08E8D}', false],\n ['', false],\n [null, false]\n ], done);\n });\n\n it('validates combination of guid, min, max, regex and allow(\\'\\')', function (done) {\n\n var rule = Joi.string().guid().min(32).max(34).regex(/^{7e9081/i).allow('');\n Helper.validate(rule, [\n ['{D1A5279D-B27D-4CD4-A05E-EFDD53D08E8D}', false],\n ['{B59511BD6A5F4DF09ECF562A108D8A2E}', false],\n ['69593D62-71EA-4548-85E4-04FC71357423', false],\n ['677E2553DD4D43B09DA77414DB1EB8EA', false],\n ['{5ba3bba3-729a-4717-88c1-b7c4b7ba80db}', false],\n ['{7e9081b59a6d4cc1a8c347f69fb4198d}', true],\n ['0c74f13f-fa83-4c48-9b33-68921dd72463', false],\n ['b4b2fb69c6244e5eb0698e0c6ec66618', false],\n ['{283B67B2-430F-4E6F-97E6-19041992-C1B0}', false],\n ['{D1A5279D-B27D-4CD4-A05E-EFDD53D08E8D', false],\n ['D1A5279D-B27D-4CD4-A05E-EFDD53D08E8D}', false],\n ['', true],\n [null, false]\n ], done);\n });\n\n it('validates combination of guid, min, max, regex and required', function (done) {\n\n var rule = Joi.string().guid().min(32).max(34).regex(/^{7e9081/i).required();\n Helper.validate(rule, [\n ['{D1A5279D-B27D-4CD4-A05E-EFDD53D08E8D}', false],\n ['{B59511BD6A5F4DF09ECF562A108D8A2E}', false],\n ['69593D62-71EA-4548-85E4-04FC71357423', false],\n ['677E2553DD4D43B09DA77414DB1EB8EA', false],\n ['{5ba3bba3-729a-4717-88c1-b7c4b7ba80db}', false],\n ['{7e9081b59a6d4cc1a8c347f69fb4198d}', true],\n ['0c74f13f-fa83-4c48-9b33-68921dd72463', false],\n ['b4b2fb69c6244e5eb0698e0c6ec66618', false],\n ['{283B67B2-430F-4E6F-97E6-19041992-C1B0}', false],\n ['{D1A5279D-B27D-4CD4-A05E-EFDD53D08E8D', false],\n ['D1A5279D-B27D-4CD4-A05E-EFDD53D08E8D}', false],\n ['', false],\n [null, false]\n ], done);\n });\n });\n});\n","undoManager":{"mark":-1,"position":0,"stack":[[{"group":"doc","deltas":[{"action":"insertText","range":{"start":{"row":3,"column":0},"end":{"row":3,"column":27}},"text":"var Code = require('code');"},{"action":"insertText","range":{"start":{"row":3,"column":27},"end":{"row":4,"column":0}},"text":"\n"}]}]]},"ace":{"folds":[],"scrolltop":0,"scrollleft":0,"selection":{"start":{"row":4,"column":0},"end":{"row":4,"column":0},"isBackwards":true},"options":{"guessTabSize":true,"useWrapMode":false,"wrapToView":true},"firstLineState":0},"timestamp":1415365529437}
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
{
|
|
2
|
+
"run": {
|
|
3
|
+
"@path": "/.c9/runners",
|
|
4
|
+
"configs": {
|
|
5
|
+
"json()": {},
|
|
6
|
+
"@inited": "true"
|
|
7
|
+
}
|
|
8
|
+
},
|
|
9
|
+
"share": {
|
|
10
|
+
"@preview": false,
|
|
11
|
+
"@app": false,
|
|
12
|
+
"@useOwnerSettings": false
|
|
13
|
+
},
|
|
14
|
+
"ace": {
|
|
15
|
+
"@newLineMode": "unix",
|
|
16
|
+
"@tabSize": "4",
|
|
17
|
+
"@useSoftTabs": "true",
|
|
18
|
+
"@guessTabSize": "true"
|
|
19
|
+
},
|
|
20
|
+
"find.nak": {
|
|
21
|
+
"@searchLimit": 100
|
|
22
|
+
},
|
|
23
|
+
"language": {
|
|
24
|
+
"@warnLevel": "info",
|
|
25
|
+
"@instanceHighlight": "true",
|
|
26
|
+
"@undeclaredVars": "true",
|
|
27
|
+
"@unusedFunctionArgs": "false"
|
|
28
|
+
},
|
|
29
|
+
"build": {
|
|
30
|
+
"@path": "/.c9/builders",
|
|
31
|
+
"@saveall": "true",
|
|
32
|
+
"@builder": "auto"
|
|
33
|
+
}
|
|
34
|
+
}
|
package/.travis.yml
CHANGED
package/Makefile
CHANGED
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
test:
|
|
2
|
-
@node node_modules/lab/bin/lab
|
|
2
|
+
@node node_modules/lab/bin/lab -a code
|
|
3
3
|
test-cov:
|
|
4
|
-
@node node_modules/lab/bin/lab -t 100
|
|
4
|
+
@node node_modules/lab/bin/lab -t 100 -a code
|
|
5
5
|
test-cov-html:
|
|
6
|
-
@node node_modules/lab/bin/lab -r html -o coverage.html
|
|
6
|
+
@node node_modules/lab/bin/lab -r html -o coverage.html -a code
|
|
7
7
|
|
|
8
8
|
.PHONY: test test-cov test-cov-html
|