vest 5.0.0-dev-781e21 → 5.0.2-dev-d315d9

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.
Files changed (182) hide show
  1. package/LICENSE +2 -2
  2. package/README.md +2 -57
  3. package/dist/cjs/classnames.development.js +18 -16
  4. package/dist/cjs/classnames.production.js +1 -1
  5. package/dist/cjs/enforce/compose.development.js +5 -54
  6. package/dist/cjs/enforce/compose.production.js +1 -1
  7. package/dist/cjs/enforce/compounds.development.js +20 -83
  8. package/dist/cjs/enforce/compounds.production.js +1 -1
  9. package/dist/cjs/enforce/schema.development.js +19 -82
  10. package/dist/cjs/enforce/schema.production.js +1 -1
  11. package/dist/cjs/parser.development.js +12 -9
  12. package/dist/cjs/parser.production.js +1 -1
  13. package/dist/cjs/promisify.development.js +4 -8
  14. package/dist/cjs/promisify.production.js +1 -1
  15. package/dist/cjs/vest.development.js +1287 -1153
  16. package/dist/cjs/vest.production.js +1 -1
  17. package/dist/es/classnames.development.js +20 -18
  18. package/dist/es/classnames.production.js +1 -1
  19. package/dist/es/enforce/compose.development.js +1 -58
  20. package/dist/es/enforce/compose.production.js +1 -1
  21. package/dist/es/enforce/compounds.development.js +2 -90
  22. package/dist/es/enforce/compounds.production.js +1 -1
  23. package/dist/es/enforce/schema.development.js +2 -88
  24. package/dist/es/enforce/schema.production.js +1 -1
  25. package/dist/es/parser.development.js +12 -9
  26. package/dist/es/parser.production.js +1 -1
  27. package/dist/es/promisify.development.js +5 -9
  28. package/dist/es/promisify.production.js +1 -1
  29. package/dist/es/vest.development.js +1286 -1148
  30. package/dist/es/vest.production.js +1 -1
  31. package/dist/umd/classnames.development.js +21 -19
  32. package/dist/umd/classnames.production.js +1 -1
  33. package/dist/umd/enforce/compose.development.js +9 -57
  34. package/dist/umd/enforce/compose.production.js +1 -1
  35. package/dist/umd/enforce/compounds.development.js +32 -94
  36. package/dist/umd/enforce/compounds.production.js +1 -1
  37. package/dist/umd/enforce/schema.development.js +32 -94
  38. package/dist/umd/enforce/schema.production.js +1 -1
  39. package/dist/umd/parser.development.js +16 -13
  40. package/dist/umd/parser.production.js +1 -1
  41. package/dist/umd/promisify.development.js +7 -11
  42. package/dist/umd/promisify.production.js +1 -1
  43. package/dist/umd/vest.development.js +1289 -1155
  44. package/dist/umd/vest.production.js +1 -1
  45. package/package.json +12 -16
  46. package/src/__tests__/__snapshots__/integration.async-tests.test.ts.snap +71 -0
  47. package/src/__tests__/__snapshots__/integration.base.test.ts.snap +71 -0
  48. package/src/__tests__/__snapshots__/integration.stateful-async.test.ts.snap +243 -0
  49. package/src/__tests__/__snapshots__/integration.stateful-tests.test.ts.snap +376 -0
  50. package/src/__tests__/integration.async-tests.test.ts +90 -0
  51. package/src/__tests__/integration.base.test.ts +45 -0
  52. package/src/__tests__/integration.exclusive.test.ts +88 -0
  53. package/src/__tests__/integration.stateful-async.test.ts +137 -0
  54. package/src/__tests__/integration.stateful-tests.test.ts +155 -0
  55. package/src/__tests__/isolate.test.ts +288 -0
  56. package/src/__tests__/state_refill.test.ts +41 -0
  57. package/src/core/SuiteWalker/SuiteWalker.ts +64 -0
  58. package/src/core/SuiteWalker/__tests__/hasRemainingTests.test.ts +130 -0
  59. package/src/core/VestBus/VestBus.ts +78 -0
  60. package/src/core/context/PersistedContext.ts +243 -0
  61. package/src/core/context/SuiteContext.ts +74 -0
  62. package/src/core/isolate/IsolateTest/IsolateTest.ts +213 -0
  63. package/src/core/isolate/IsolateTest/IsolateTestReconciler.ts +156 -0
  64. package/src/core/isolate/IsolateTest/IsolateTestStateMachine.ts +69 -0
  65. package/src/core/isolate/IsolateTest/SimpleStateMachine.ts +43 -0
  66. package/src/core/isolate/IsolateTest/TestWalker.ts +77 -0
  67. package/src/core/isolate/IsolateTypes.ts +10 -0
  68. package/src/core/isolate/isIsolate.ts +6 -0
  69. package/src/core/isolate/isolate.ts +110 -0
  70. package/src/core/isolate/reconciler/Reconciler/Reconciler.ts +123 -0
  71. package/src/core/isolate/reconciler/cancelOverriddenPendingTest.ts +15 -0
  72. package/src/core/isolate/reconciler/isSameProfileTest.ts +12 -0
  73. package/src/core/isolate/walker.ts +127 -0
  74. package/src/core/test/TestTypes.ts +3 -0
  75. package/src/core/test/__tests__/IsolateTest.test.ts +152 -0
  76. package/src/core/test/__tests__/__snapshots__/IsolateTest.test.ts.snap +39 -0
  77. package/src/core/test/__tests__/__snapshots__/memo.test.ts.snap +101 -0
  78. package/src/core/test/__tests__/__snapshots__/test.test.ts.snap +231 -0
  79. package/src/core/test/__tests__/key.test.ts +195 -0
  80. package/src/core/test/__tests__/memo.test.ts +218 -0
  81. package/src/core/test/__tests__/merging_of_previous_test_runs.test.ts +341 -0
  82. package/src/core/test/__tests__/runAsyncTest.test.ts +175 -0
  83. package/src/core/test/__tests__/test.test.ts +226 -0
  84. package/src/core/test/helpers/__tests__/nonMatchingSeverityProfile.test.ts +52 -0
  85. package/src/core/test/helpers/asVestTest.ts +9 -0
  86. package/src/core/test/helpers/matchingFieldName.ts +16 -0
  87. package/src/core/test/helpers/matchingGroupName.ts +12 -0
  88. package/src/core/test/helpers/nonMatchingSeverityProfile.ts +14 -0
  89. package/src/core/test/helpers/shouldUseErrorMessage.ts +9 -0
  90. package/src/core/test/test.memo.ts +81 -0
  91. package/src/core/test/test.ts +64 -0
  92. package/src/core/test/testLevelFlowControl/runTest.ts +86 -0
  93. package/src/core/test/testLevelFlowControl/verifyTestRun.ts +32 -0
  94. package/src/core/test/testObjectIsolate.ts +11 -0
  95. package/src/errors/ErrorStrings.ts +4 -0
  96. package/src/exports/__tests__/classnames.test.ts +92 -0
  97. package/src/exports/__tests__/parser.test.ts +441 -0
  98. package/src/exports/__tests__/promisify.test.ts +77 -0
  99. package/src/exports/classnames.ts +35 -0
  100. package/src/exports/enforce@compose.ts +1 -0
  101. package/src/exports/enforce@compounds.ts +1 -0
  102. package/src/exports/enforce@schema.ts +1 -0
  103. package/src/exports/parser.ts +63 -0
  104. package/src/exports/promisify.ts +18 -0
  105. package/src/hooks/__tests__/__snapshots__/include.test.ts.snap +794 -0
  106. package/src/hooks/__tests__/eager.test.ts +130 -0
  107. package/src/hooks/__tests__/exclusive.test.ts +578 -0
  108. package/src/hooks/__tests__/include.test.ts +431 -0
  109. package/src/hooks/__tests__/optional.test.ts +83 -0
  110. package/src/hooks/__tests__/warn.test.ts +42 -0
  111. package/src/hooks/exclusive.ts +179 -0
  112. package/src/hooks/include.ts +54 -0
  113. package/src/hooks/mode.ts +47 -0
  114. package/src/hooks/optional/OptionalTypes.ts +31 -0
  115. package/src/hooks/optional/optional.ts +69 -0
  116. package/src/hooks/warn.ts +19 -0
  117. package/src/isolates/__tests__/__snapshots__/each.test.ts.snap +3 -0
  118. package/src/isolates/__tests__/__snapshots__/group.test.ts.snap +114 -0
  119. package/src/isolates/__tests__/__snapshots__/omitWhen.test.ts.snap +443 -0
  120. package/src/isolates/__tests__/__snapshots__/skipWhen.test.ts.snap +99 -0
  121. package/src/isolates/__tests__/each.test.ts +35 -0
  122. package/src/isolates/__tests__/group.test.ts +362 -0
  123. package/src/isolates/__tests__/omitWhen.test.ts +246 -0
  124. package/src/isolates/__tests__/skipWhen.test.ts +163 -0
  125. package/src/isolates/each.ts +30 -0
  126. package/src/isolates/group.ts +9 -0
  127. package/src/isolates/omitWhen.ts +41 -0
  128. package/src/isolates/skipWhen.ts +42 -0
  129. package/src/suite/__tests__/__snapshots__/create.test.ts.snap +67 -0
  130. package/src/suite/__tests__/create.test.ts +109 -0
  131. package/src/suite/__tests__/remove.test.ts +50 -0
  132. package/src/suite/__tests__/resetField.test.ts +74 -0
  133. package/src/suite/createSuite.ts +94 -0
  134. package/src/suite/runCallbacks.ts +28 -0
  135. package/src/suiteResult/Severity.ts +15 -0
  136. package/src/suiteResult/SuiteResultTypes.ts +42 -0
  137. package/src/suiteResult/__tests__/done.test.ts +334 -0
  138. package/src/suiteResult/__tests__/produce.test.ts +163 -0
  139. package/src/suiteResult/done/deferDoneCallback.ts +28 -0
  140. package/src/suiteResult/done/shouldSkipDoneRegistration.ts +20 -0
  141. package/src/suiteResult/selectors/__tests__/__snapshots__/collectFailureMessages.test.ts.snap +89 -0
  142. package/src/suiteResult/selectors/__tests__/collectFailureMessages.test.ts +124 -0
  143. package/src/suiteResult/selectors/__tests__/getFailures.test.ts +158 -0
  144. package/src/suiteResult/selectors/__tests__/getFailuresByGroup.test.ts +199 -0
  145. package/src/suiteResult/selectors/__tests__/hasFailures.test.ts +141 -0
  146. package/src/suiteResult/selectors/__tests__/hasFailuresByGroup.test.ts +185 -0
  147. package/src/suiteResult/selectors/__tests__/hasFailuresByTestObject.test.ts +88 -0
  148. package/src/suiteResult/selectors/__tests__/isValid.test.ts +359 -0
  149. package/src/suiteResult/selectors/__tests__/isValidByGroup.test.ts +480 -0
  150. package/src/suiteResult/selectors/collectFailures.ts +43 -0
  151. package/src/suiteResult/selectors/hasFailuresByTestObjects.ts +62 -0
  152. package/src/suiteResult/selectors/produceSuiteSummary.ts +135 -0
  153. package/src/suiteResult/selectors/shouldAddValidProperty.ts +148 -0
  154. package/src/suiteResult/selectors/suiteSelectors.ts +199 -0
  155. package/src/suiteResult/suiteResult.ts +15 -0
  156. package/src/suiteResult/suiteRunResult.ts +43 -0
  157. package/src/vest.ts +36 -0
  158. package/testUtils/TVestMock.ts +5 -0
  159. package/testUtils/__tests__/partition.test.ts +4 -4
  160. package/testUtils/mockThrowError.ts +4 -2
  161. package/testUtils/suiteDummy.ts +2 -1
  162. package/testUtils/testDummy.ts +12 -10
  163. package/testUtils/testPromise.ts +3 -0
  164. package/tsconfig.json +84 -2
  165. package/types/classnames.d.ts +39 -4
  166. package/types/classnames.d.ts.map +1 -0
  167. package/types/enforce/compose.d.ts +2 -126
  168. package/types/enforce/compose.d.ts.map +1 -0
  169. package/types/enforce/compounds.d.ts +2 -136
  170. package/types/enforce/compounds.d.ts.map +1 -0
  171. package/types/enforce/schema.d.ts +2 -144
  172. package/types/enforce/schema.d.ts.map +1 -0
  173. package/types/parser.d.ts +45 -10
  174. package/types/parser.d.ts.map +1 -0
  175. package/types/promisify.d.ts +36 -34
  176. package/types/promisify.d.ts.map +1 -0
  177. package/types/vest.d.ts +169 -224
  178. package/types/vest.d.ts.map +1 -0
  179. package/CHANGELOG.md +0 -87
  180. package/testUtils/expandStateRef.ts +0 -8
  181. package/testUtils/runCreateRef.ts +0 -10
  182. package/testUtils/testObjects.ts +0 -6
package/LICENSE CHANGED
@@ -1,6 +1,6 @@
1
1
  MIT License
2
2
 
3
- Copyright (c) 2021 ealush
3
+ Copyright (c) 2022 ealush
4
4
 
5
5
  Permission is hereby granted, free of charge, to any person obtaining a copy
6
6
  of this software and associated documentation files (the "Software"), to deal
@@ -18,4 +18,4 @@ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
18
  AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
19
  LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
20
  OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
- SOFTWARE.
21
+ SOFTWARE.
package/README.md CHANGED
@@ -1,58 +1,3 @@
1
- # Vest - Declarative validations framework
1
+ # vest-5
2
2
 
3
- [Vest Documentation](https://vestjs.dev)
4
-
5
- [![Join Discord](https://badgen.net/discord/online-members/WmADZpJnSe?icon=discord&label=Discord)](https://discord.gg/WmADZpJnSe) [![Github Stars](https://badgen.net/github/stars/ealush/vest?color=yellow&label=Github%20🌟)](https://github.com/ealush/vest) [![Version](https://badgen.net/npm/v/vest?&icon=npm)](https://www.npmjs.com/package/vest) [![Downloads](https://badgen.net/npm/dt/vest?label=Downloads)](https://www.npmjs.com/package/vest) [![bundlephobia](https://badgen.net/bundlephobia/minzip/vest)](https://bundlephobia.com/package/vest) [![Status](https://badgen.net/github/status/ealush/vest)](https://github.com/ealush/vest/actions)
6
-
7
- ![Vest](https://cdn.jsdelivr.net/gh/ealush/vest@assets/logo_250.png 'Vest')
8
-
9
- Vest is a form-validation framework inspired by unit testing libraries like Mocha or Jest; It is designed to be easy to use and easy to learn by introducing their declarative syntax.
10
-
11
- The idea behind Vest is that your validations can be described as a suite - a contract that reflects your form or feature structure. Vest is framework agnostic, meaning it can be used with any UI framework, or without any framework at all.
12
-
13
- Using Vest for form validation can reduce bloat, improve feature readability and maintainability.
14
-
15
- ```js
16
- test('username', 'Username is required', () => {
17
- enforce(data.username).isNotBlank();
18
- });
19
-
20
- test('username', 'Username must be at least 3 chars', () => {
21
- enforce(data.username).longerThanOrEquals(3);
22
- });
23
- ```
24
-
25
- ## Installation
26
-
27
- ```
28
- npm i vest
29
- ```
30
-
31
- ## Motivation
32
-
33
- Writing forms is an integral part of building web apps, and even though it may seem trivial at first - as your feature grows over time, so does your validation logic grows in complexity.
34
-
35
- Vest tries to remediate this by separating validation logic from feature logic, so it's easier to maintain over time and refactor when needed.
36
-
37
- # Why Vest?
38
-
39
- 💡 Vest is easy to Learn. Vest adopts the syntax and style of unit testing frameworks, so you can leverage the knowledge you already have to write your form validations.
40
-
41
- 🎨 Vest is framework agnostic. You can use Vest with any UI framework out there.
42
-
43
- 🧠 Vest takes care of all the annoying parts for you. It manages its validation state, handles async validations, and much more.
44
-
45
- 🧩 Vest is extendable. You can easily add new kinds of validations to Vest according to your needs.
46
-
47
- ♻️ Validation logic in Vest can be shared across multiple features in your app.
48
-
49
- # Getting Started
50
-
51
- [Vest Documentation](https://vestjs.dev)
52
-
53
- Here are some code sandboxes to get you started:
54
-
55
- - [React](https://codesandbox.io/s/react-28jwx)
56
- - [Vue](https://codesandbox.io/s/vue-hsyt8)
57
- - [Svelte](https://codesandbox.io/s/svelte-tsfhx)
58
- - [Vanilla](https://codesandbox.io/s/vest-vanilla-js-35u8e)
3
+ Declarative Form Validations Framework
@@ -3,30 +3,33 @@
3
3
  var vestUtils = require('vest-utils');
4
4
  var vest = require('vest');
5
5
 
6
- // eslint-disable-next-line max-statements
7
6
  function parse(summary) {
8
7
  vestUtils.invariant(summary && vestUtils.hasOwnProperty(summary, 'valid'), "Vest parser: expected argument at position 0 to be Vest's result object.");
9
- var sel = vest.suiteSelectors(summary);
10
- var testedStorage = {};
11
- var selectors = {
8
+ const sel = vest.suiteSelectors(summary);
9
+ const testedStorage = {};
10
+ const selectors = {
12
11
  invalid: sel.hasErrors,
13
12
  tested: isTested,
14
13
  untested: isUntested,
15
14
  valid: sel.isValid,
16
- warning: sel.hasWarnings
15
+ warning: sel.hasWarnings,
17
16
  };
18
17
  return selectors;
19
18
  // Booleans
20
19
  function isTested(fieldName) {
21
- if (!fieldName) {
20
+ if (vestUtils.isNullish(fieldName)) {
22
21
  return vestUtils.isPositive(summary.testCount);
23
22
  }
24
- if (vestUtils.hasOwnProperty(testedStorage, fieldName))
23
+ if (vestUtils.hasOwnProperty(testedStorage, fieldName)) {
25
24
  return testedStorage[fieldName];
25
+ }
26
+ addFieldToTestedStorage(fieldName);
27
+ return selectors.tested(fieldName);
28
+ }
29
+ function addFieldToTestedStorage(fieldName) {
26
30
  testedStorage[fieldName] =
27
31
  vestUtils.hasOwnProperty(summary.tests, fieldName) &&
28
32
  vestUtils.isPositive(summary.tests[fieldName].testCount);
29
- return selectors.tested(fieldName);
30
33
  }
31
34
  function isUntested(fieldName) {
32
35
  return !(vestUtils.isPositive(summary.testCount) && selectors.tested(fieldName));
@@ -36,14 +39,13 @@ function parse(summary) {
36
39
  /**
37
40
  * Creates a function that returns class names that match the validation result
38
41
  */
39
- function classnames(res, classes) {
40
- if (classes === void 0) { classes = {}; }
41
- var selectors = parse(res);
42
- return function (key) {
43
- var classesArray = [];
44
- for (var selector in classes) {
45
- var sel = selector;
46
- if (vestUtils.isFunction(selectors[sel]) && selectors[sel](key)) {
42
+ function classnames(res, classes = {}) {
43
+ const selectors = parse(res);
44
+ return function cn(fieldName) {
45
+ const classesArray = [];
46
+ for (const selector in classes) {
47
+ const sel = selector;
48
+ if (vestUtils.isFunction(selectors[sel]) && selectors[sel](fieldName)) {
47
49
  classesArray.push(classes[sel]);
48
50
  }
49
51
  }
@@ -1 +1 @@
1
- "use strict";var t=require("vest-utils"),e=require("vest");module.exports=function(s,r){void 0===r&&(r={});var i=function(s){t.invariant(s&&t.hasOwnProperty(s,"valid"),"Vest parser: expected argument at position 0 to be Vest's result object.");var r=e.suiteSelectors(s),i={},n={invalid:r.hasErrors,tested:function(e){return e?t.hasOwnProperty(i,e)?i[e]:(i[e]=t.hasOwnProperty(s.tests,e)&&t.isPositive(s.tests[e].testCount),n.tested(e)):t.isPositive(s.testCount)},untested:function(e){return!(t.isPositive(s.testCount)&&n.tested(e))},valid:r.isValid,warning:r.hasWarnings};return n}(s);return function(e){var s,n=[];for(s in r){var o=s;t.isFunction(i[o])&&i[o](e)&&n.push(r[o])}return n.join(" ")}};
1
+ "use strict";var t=require("vest-utils"),s=require("vest");module.exports=function(e,n={}){const i=function(e){t.invariant(e&&t.hasOwnProperty(e,"valid"),"Vest parser: expected argument at position 0 to be Vest's result object.");const n=s.suiteSelectors(e),i={},r={invalid:n.hasErrors,tested:function(s){return t.isNullish(s)?t.isPositive(e.testCount):t.hasOwnProperty(i,s)?i[s]:(o(s),r.tested(s))},untested:function(s){return!(t.isPositive(e.testCount)&&r.tested(s))},valid:n.isValid,warning:n.hasWarnings};return r;function o(s){i[s]=t.hasOwnProperty(e.tests,s)&&t.isPositive(e.tests[s].testCount)}}(e);return function(s){const e=[];for(const r in n){const o=r;t.isFunction(i[o])&&i[o](s)&&e.push(n[o])}return e.join(" ")}};
@@ -1,60 +1,11 @@
1
1
  'use strict';
2
2
 
3
- var n4s = require('n4s');
4
- var vestUtils = require('vest-utils');
3
+ var compose = require('n4s/compose');
5
4
 
6
- function ruleReturn(pass, message) {
7
- var output = { pass: pass };
8
- if (message) {
9
- output.message = message;
10
- }
11
- return output;
12
- }
13
- function failing() {
14
- return ruleReturn(false);
15
- }
16
- function passing() {
17
- return ruleReturn(true);
18
- }
19
- function defaultToPassing(callback) {
20
- return vestUtils.defaultTo(callback, passing());
21
- }
5
+ function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; }
22
6
 
23
- function runLazyRule(lazyRule, currentValue) {
24
- try {
25
- return lazyRule.run(currentValue);
26
- }
27
- catch (_a) {
28
- return failing();
29
- }
30
- }
7
+ var compose__default = /*#__PURE__*/_interopDefaultLegacy(compose);
31
8
 
32
- /* eslint-disable max-lines-per-function */
33
- function compose() {
34
- var composites = [];
35
- for (var _i = 0; _i < arguments.length; _i++) {
36
- composites[_i] = arguments[_i];
37
- }
38
- return vestUtils.assign(function (value) {
39
- var res = run(value);
40
- vestUtils.invariant(res.pass, vestUtils.StringObject(res.message));
41
- }, {
42
- run: run,
43
- test: function (value) { return run(value).pass; }
44
- });
45
- function run(value) {
46
- return n4s.ctx.run({ value: value }, function () {
47
- return defaultToPassing(vestUtils.mapFirst(composites, function (composite, breakout) {
48
- /* HACK: Just a small white lie. ~~HELP WANTED~~.
49
- The ideal is that instead of `LazyRuleRunners` We would simply use `Lazy` to begin with.
50
- The problem is that lazy rules can't really be passed to this function due to some generic hell
51
- so we're limiting it to a small set of functions.
52
- */
53
- var res = runLazyRule(composite, value);
54
- breakout(!res.pass, res);
55
- }));
56
- });
57
- }
58
- }
59
9
 
60
- module.exports = compose;
10
+
11
+ module.exports = compose__default["default"];
@@ -1 +1 @@
1
- "use strict";var n=require("n4s"),t=require("vest-utils");function r(n,t){return n={pass:n},t&&(n.message=t),n}function u(n){return t.defaultTo(n,r(!0))}function e(n,t){try{return n.run(t)}catch(n){return r(!1)}}module.exports=function(){function r(r){return n.ctx.run({value:r},(function(){return u(t.mapFirst(s,(function(n,t){t(!(n=e(n,r)).pass,n)})))}))}for(var s=[],i=0;i<arguments.length;i++)s[i]=arguments[i];return t.assign((function(n){n=r(n),t.invariant(n.pass,t.StringObject(n.message))}),{run:r,test:function(n){return r(n).pass}})};
1
+ "use strict";function e(e){return e&&"object"==typeof e&&"default"in e?e:{default:e}}var t=e(require("n4s/compose"));module.exports=t.default;
@@ -1,92 +1,29 @@
1
1
  'use strict';
2
2
 
3
- var n4s = require('n4s');
4
- var vestUtils = require('vest-utils');
3
+ Object.defineProperty(exports, '__esModule', { value: true });
5
4
 
6
- function ruleReturn(pass, message) {
7
- var output = { pass: pass };
8
- if (message) {
9
- output.message = message;
10
- }
11
- return output;
12
- }
13
- function failing() {
14
- return ruleReturn(false);
15
- }
16
- function passing() {
17
- return ruleReturn(true);
18
- }
19
- function defaultToFailing(callback) {
20
- return vestUtils.defaultTo(callback, failing());
21
- }
22
- function defaultToPassing(callback) {
23
- return vestUtils.defaultTo(callback, passing());
24
- }
25
-
26
- function runLazyRule(lazyRule, currentValue) {
27
- try {
28
- return lazyRule.run(currentValue);
29
- }
30
- catch (_a) {
31
- return failing();
32
- }
33
- }
34
-
35
- function allOf(value) {
36
- var rules = [];
37
- for (var _i = 1; _i < arguments.length; _i++) {
38
- rules[_i - 1] = arguments[_i];
39
- }
40
- return defaultToPassing(vestUtils.mapFirst(rules, function (rule, breakout) {
41
- var res = runLazyRule(rule, value);
42
- breakout(!res.pass, res);
43
- }));
44
- }
5
+ var compounds = require('n4s/compounds');
45
6
 
46
- function anyOf(value) {
47
- var rules = [];
48
- for (var _i = 1; _i < arguments.length; _i++) {
49
- rules[_i - 1] = arguments[_i];
50
- }
51
- return defaultToFailing(vestUtils.mapFirst(rules, function (rule, breakout) {
52
- var res = runLazyRule(rule, value);
53
- breakout(res.pass, res);
54
- }));
7
+ function _interopNamespace(e) {
8
+ if (e && e.__esModule) return e;
9
+ var n = Object.create(null);
10
+ if (e) {
11
+ Object.keys(e).forEach(function (k) {
12
+ if (k !== 'default') {
13
+ var d = Object.getOwnPropertyDescriptor(e, k);
14
+ Object.defineProperty(n, k, d.get ? d : {
15
+ enumerable: true,
16
+ get: function () { return e[k]; }
17
+ });
18
+ }
19
+ });
20
+ }
21
+ n["default"] = e;
22
+ return Object.freeze(n);
55
23
  }
56
24
 
57
- function noneOf(value) {
58
- var rules = [];
59
- for (var _i = 1; _i < arguments.length; _i++) {
60
- rules[_i - 1] = arguments[_i];
61
- }
62
- return defaultToPassing(vestUtils.mapFirst(rules, function (rule, breakout) {
63
- var res = runLazyRule(rule, value);
64
- breakout(res.pass, failing());
65
- }));
66
- }
25
+ var compounds__namespace = /*#__PURE__*/_interopNamespace(compounds);
67
26
 
68
- function equals(value, arg1) {
69
- return value === arg1;
70
- }
71
- vestUtils.bindNot(equals);
72
27
 
73
- var REQUIRED_COUNT = 1;
74
- function oneOf(value) {
75
- var rules = [];
76
- for (var _i = 1; _i < arguments.length; _i++) {
77
- rules[_i - 1] = arguments[_i];
78
- }
79
- var passingCount = 0;
80
- rules.some(function (rule) {
81
- var res = runLazyRule(rule, value);
82
- if (res.pass) {
83
- passingCount++;
84
- }
85
- if (vestUtils.greaterThan(passingCount, REQUIRED_COUNT)) {
86
- return false;
87
- }
88
- });
89
- return ruleReturn(equals(passingCount, REQUIRED_COUNT));
90
- }
91
28
 
92
- n4s.enforce.extend({ allOf: allOf, anyOf: anyOf, noneOf: noneOf, oneOf: oneOf });
29
+ exports.compounds = compounds__namespace;
@@ -1 +1 @@
1
- "use strict";var n=require("n4s"),r=require("vest-utils");function t(n,r){return n={pass:n},r&&(n.message=r),n}function e(){return t(!1)}function u(n){return r.defaultTo(n,e())}function f(n){return r.defaultTo(n,t(!0))}function o(n,r){try{return n.run(r)}catch(n){return e()}}function i(n,r){return n===r}r.bindNot(i);n.enforce.extend({allOf:function(n){for(var t=[],e=1;e<arguments.length;e++)t[e-1]=arguments[e];return f(r.mapFirst(t,(function(r,t){t(!(r=o(r,n)).pass,r)})))},anyOf:function(n){for(var t=[],e=1;e<arguments.length;e++)t[e-1]=arguments[e];return u(r.mapFirst(t,(function(r,t){t((r=o(r,n)).pass,r)})))},noneOf:function(n){for(var t=[],u=1;u<arguments.length;u++)t[u-1]=arguments[u];return f(r.mapFirst(t,(function(r,t){t((r=o(r,n)).pass,e())})))},oneOf:function(n){for(var e=[],u=1;u<arguments.length;u++)e[u-1]=arguments[u];var f=0;return e.some((function(t){if(o(t,n).pass&&f++,r.greaterThan(f,1))return!1})),t(i(f,1))}});
1
+ "use strict";function e(e){if(e&&e.__esModule)return e;var r=Object.create(null);return e&&Object.keys(e).forEach((function(t){if("default"!==t){var n=Object.getOwnPropertyDescriptor(e,t);Object.defineProperty(r,t,n.get?n:{enumerable:!0,get:function(){return e[t]}})}})),r.default=e,Object.freeze(r)}Object.defineProperty(exports,"__esModule",{value:!0});var r=e(require("n4s/compounds"));exports.compounds=r;
@@ -2,91 +2,28 @@
2
2
 
3
3
  Object.defineProperty(exports, '__esModule', { value: true });
4
4
 
5
- var n4s = require('n4s');
6
- var vestUtils = require('vest-utils');
5
+ var schema = require('n4s/schema');
7
6
 
8
- function ruleReturn(pass, message) {
9
- var output = { pass: pass };
10
- if (message) {
11
- output.message = message;
12
- }
13
- return output;
14
- }
15
- function failing() {
16
- return ruleReturn(false);
17
- }
18
- function passing() {
19
- return ruleReturn(true);
20
- }
21
- function defaultToPassing(callback) {
22
- return vestUtils.defaultTo(callback, passing());
7
+ function _interopNamespace(e) {
8
+ if (e && e.__esModule) return e;
9
+ var n = Object.create(null);
10
+ if (e) {
11
+ Object.keys(e).forEach(function (k) {
12
+ if (k !== 'default') {
13
+ var d = Object.getOwnPropertyDescriptor(e, k);
14
+ Object.defineProperty(n, k, d.get ? d : {
15
+ enumerable: true,
16
+ get: function () { return e[k]; }
17
+ });
18
+ }
19
+ });
20
+ }
21
+ n["default"] = e;
22
+ return Object.freeze(n);
23
23
  }
24
24
 
25
- function runLazyRule(lazyRule, currentValue) {
26
- try {
27
- return lazyRule.run(currentValue);
28
- }
29
- catch (_a) {
30
- return failing();
31
- }
32
- }
25
+ var schema__namespace = /*#__PURE__*/_interopNamespace(schema);
33
26
 
34
- function isArrayOf(inputArray, currentRule) {
35
- return defaultToPassing(vestUtils.mapFirst(inputArray, function (currentValue, breakout, index) {
36
- var res = n4s.ctx.run({ value: currentValue, set: true, meta: { index: index } }, function () { return runLazyRule(currentRule, currentValue); });
37
- breakout(!res.pass, res);
38
- }));
39
- }
40
-
41
- function loose(inputObject, shapeObject) {
42
- var _loop_1 = function (key) {
43
- var currentValue = inputObject[key];
44
- var currentRule = shapeObject[key];
45
- var res = n4s.ctx.run({ value: currentValue, set: true, meta: { key: key } }, function () {
46
- return runLazyRule(currentRule, currentValue);
47
- });
48
- if (!res.pass) {
49
- return { value: res };
50
- }
51
- };
52
- for (var key in shapeObject) {
53
- var state_1 = _loop_1(key);
54
- if (typeof state_1 === "object")
55
- return state_1.value;
56
- }
57
- return passing();
58
- }
59
-
60
- function optional(value, ruleChain) {
61
- if (vestUtils.isNullish(value)) {
62
- return passing();
63
- }
64
- return runLazyRule(ruleChain, value);
65
- }
66
-
67
- function shape(inputObject, shapeObject) {
68
- var baseRes = loose(inputObject, shapeObject);
69
- if (!baseRes.pass) {
70
- return baseRes;
71
- }
72
- for (var key in inputObject) {
73
- if (!vestUtils.hasOwnProperty(shapeObject, key)) {
74
- return failing();
75
- }
76
- }
77
- return passing();
78
- }
79
-
80
- // Help needed improving the typings of this file.
81
- // Ideally, we'd be able to extend ShapeObject, but that's not possible.
82
- function partial(shapeObject) {
83
- var output = {};
84
- for (var key in shapeObject) {
85
- output[key] = n4s.enforce.optional(shapeObject[key]);
86
- }
87
- return output;
88
- }
89
27
 
90
- n4s.enforce.extend({ isArrayOf: isArrayOf, loose: loose, optional: optional, shape: shape });
91
28
 
92
- exports.partial = partial;
29
+ exports.schema = schema__namespace;
@@ -1 +1 @@
1
- "use strict";Object.defineProperty(exports,"__esModule",{value:!0});var r=require("n4s"),n=require("vest-utils");function e(r,n){return r={pass:r},n&&(r.message=n),r}function t(){return e(!1)}function u(){return e(!0)}function i(r,n){try{return r.run(n)}catch(r){return t()}}function o(n,e){var t,o=function(t){var u=n[t],o=e[t];if(!(t=r.ctx.run({value:u,set:!0,meta:{key:t}},(function(){return i(o,u)}))).pass)return{value:t}};for(t in e){var a=o(t);if("object"==typeof a)return a.value}return u()}r.enforce.extend({isArrayOf:function(e,t){return function(r){return n.defaultTo(r,u())}(n.mapFirst(e,(function(n,e,u){e(!(u=r.ctx.run({value:n,set:!0,meta:{index:u}},(function(){return i(t,n)}))).pass,u)})))},loose:o,optional:function(r,e){return n.isNullish(r)?u():i(e,r)},shape:function(r,e){var i=o(r,e);if(!i.pass)return i;for(var a in r)if(!n.hasOwnProperty(e,a))return t();return u()}}),exports.partial=function(n){var e,t={};for(e in n)t[e]=r.enforce.optional(n[e]);return t};
1
+ "use strict";function e(e){if(e&&e.__esModule)return e;var r=Object.create(null);return e&&Object.keys(e).forEach((function(t){if("default"!==t){var c=Object.getOwnPropertyDescriptor(e,t);Object.defineProperty(r,t,c.get?c:{enumerable:!0,get:function(){return e[t]}})}})),r.default=e,Object.freeze(r)}Object.defineProperty(exports,"__esModule",{value:!0});var r=e(require("n4s/schema"));exports.schema=r;
@@ -2,33 +2,36 @@
2
2
 
3
3
  Object.defineProperty(exports, '__esModule', { value: true });
4
4
 
5
- var vest = require('vest');
6
5
  var vestUtils = require('vest-utils');
6
+ var vest = require('vest');
7
7
 
8
- // eslint-disable-next-line max-statements
9
8
  function parse(summary) {
10
9
  vestUtils.invariant(summary && vestUtils.hasOwnProperty(summary, 'valid'), "Vest parser: expected argument at position 0 to be Vest's result object.");
11
- var sel = vest.suiteSelectors(summary);
12
- var testedStorage = {};
13
- var selectors = {
10
+ const sel = vest.suiteSelectors(summary);
11
+ const testedStorage = {};
12
+ const selectors = {
14
13
  invalid: sel.hasErrors,
15
14
  tested: isTested,
16
15
  untested: isUntested,
17
16
  valid: sel.isValid,
18
- warning: sel.hasWarnings
17
+ warning: sel.hasWarnings,
19
18
  };
20
19
  return selectors;
21
20
  // Booleans
22
21
  function isTested(fieldName) {
23
- if (!fieldName) {
22
+ if (vestUtils.isNullish(fieldName)) {
24
23
  return vestUtils.isPositive(summary.testCount);
25
24
  }
26
- if (vestUtils.hasOwnProperty(testedStorage, fieldName))
25
+ if (vestUtils.hasOwnProperty(testedStorage, fieldName)) {
27
26
  return testedStorage[fieldName];
27
+ }
28
+ addFieldToTestedStorage(fieldName);
29
+ return selectors.tested(fieldName);
30
+ }
31
+ function addFieldToTestedStorage(fieldName) {
28
32
  testedStorage[fieldName] =
29
33
  vestUtils.hasOwnProperty(summary.tests, fieldName) &&
30
34
  vestUtils.isPositive(summary.tests[fieldName].testCount);
31
- return selectors.tested(fieldName);
32
35
  }
33
36
  function isUntested(fieldName) {
34
37
  return !(vestUtils.isPositive(summary.testCount) && selectors.tested(fieldName));
@@ -1 +1 @@
1
- "use strict";Object.defineProperty(exports,"__esModule",{value:!0});var t=require("vest"),e=require("vest-utils");exports.parse=function(s){e.invariant(s&&e.hasOwnProperty(s,"valid"),"Vest parser: expected argument at position 0 to be Vest's result object.");var r=t.suiteSelectors(s),i={},n={invalid:r.hasErrors,tested:function(t){return t?e.hasOwnProperty(i,t)?i[t]:(i[t]=e.hasOwnProperty(s.tests,t)&&e.isPositive(s.tests[t].testCount),n.tested(t)):e.isPositive(s.testCount)},untested:function(t){return!(e.isPositive(s.testCount)&&n.tested(t))},valid:r.isValid,warning:r.hasWarnings};return n};
1
+ "use strict";Object.defineProperty(exports,"__esModule",{value:!0});var t=require("vest-utils"),e=require("vest");exports.parse=function(s){t.invariant(s&&t.hasOwnProperty(s,"valid"),"Vest parser: expected argument at position 0 to be Vest's result object.");const r=e.suiteSelectors(s),i={},n={invalid:r.hasErrors,tested:function(e){if(t.isNullish(e))return t.isPositive(s.testCount);if(t.hasOwnProperty(i,e))return i[e];return o(e),n.tested(e)},untested:function(e){return!(t.isPositive(s.testCount)&&n.tested(e))},valid:r.isValid,warning:r.hasWarnings};return n;function o(e){i[e]=t.hasOwnProperty(s.tests,e)&&t.isPositive(s.tests[e].testCount)}};
@@ -2,15 +2,11 @@
2
2
 
3
3
  var vestUtils = require('vest-utils');
4
4
 
5
- var promisify = function (validatorFn) {
6
- return function () {
7
- var args = [];
8
- for (var _i = 0; _i < arguments.length; _i++) {
9
- args[_i] = arguments[_i];
10
- }
5
+ function promisify(validatorFn) {
6
+ return (...args) => {
11
7
  vestUtils.invariant(vestUtils.isFunction(validatorFn), 'promisify: Expected validatorFn to be a function.');
12
- return new Promise(function (resolve) { return validatorFn.apply(void 0, args).done(resolve); });
8
+ return new Promise(resolve => validatorFn(...args).done(resolve));
13
9
  };
14
- };
10
+ }
15
11
 
16
12
  module.exports = promisify;
@@ -1 +1 @@
1
- "use strict";var n=require("vest-utils");module.exports=function(t){return function(){for(var r=[],e=0;e<arguments.length;e++)r[e]=arguments[e];return n.invariant(n.isFunction(t),"promisify: Expected validatorFn to be a function."),new Promise((function(n){return t.apply(void 0,r).done(n)}))}};
1
+ "use strict";var e=require("vest-utils");module.exports=function(i){return(...t)=>(e.invariant(e.isFunction(i),"promisify: Expected validatorFn to be a function."),new Promise((e=>i(...t).done(e))))};