n4s 3.0.0 → 4.0.0-dev-1aae50

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 (64) hide show
  1. package/CHANGELOG.md +129 -0
  2. package/LICENSE +1 -2
  3. package/README.md +2 -5
  4. package/compose/package.json +7 -0
  5. package/compounds/package.json +7 -0
  6. package/dist/cjs/compose.development.js +139 -0
  7. package/dist/cjs/compose.js +7 -0
  8. package/dist/cjs/compose.production.js +1 -0
  9. package/dist/cjs/compounds.development.js +132 -0
  10. package/dist/cjs/compounds.js +7 -0
  11. package/dist/cjs/compounds.production.js +1 -0
  12. package/dist/cjs/n4s.development.js +602 -0
  13. package/dist/cjs/n4s.js +7 -0
  14. package/dist/cjs/n4s.production.js +1 -0
  15. package/dist/cjs/package.json +1 -0
  16. package/dist/cjs/schema.development.js +144 -0
  17. package/dist/cjs/schema.js +7 -0
  18. package/dist/cjs/schema.production.js +1 -0
  19. package/dist/es/compose.development.js +137 -0
  20. package/dist/es/compose.production.js +1 -0
  21. package/dist/es/compounds.development.js +130 -0
  22. package/dist/es/compounds.production.js +1 -0
  23. package/dist/es/n4s.development.js +597 -0
  24. package/dist/es/n4s.production.js +1 -0
  25. package/dist/es/package.json +1 -0
  26. package/dist/es/schema.development.js +140 -0
  27. package/dist/es/schema.production.js +1 -0
  28. package/dist/umd/compose.development.js +143 -0
  29. package/dist/umd/compose.production.js +1 -0
  30. package/dist/umd/compounds.development.js +136 -0
  31. package/dist/umd/compounds.production.js +1 -0
  32. package/dist/umd/n4s.development.js +606 -0
  33. package/dist/umd/n4s.production.js +1 -0
  34. package/dist/umd/schema.development.js +148 -0
  35. package/dist/umd/schema.production.js +1 -0
  36. package/docs/README.md +2 -5
  37. package/docs/_sidebar.md +1 -2
  38. package/docs/external.md +1 -28
  39. package/docs/rules.md +28 -0
  40. package/package.json +129 -42
  41. package/schema/package.json +7 -0
  42. package/tsconfig.json +8 -0
  43. package/types/compose.d.ts +134 -0
  44. package/types/compounds.d.ts +146 -0
  45. package/types/n4s.d.ts +167 -0
  46. package/types/schema.d.ts +151 -0
  47. package/config/jest/jest.setup.js +0 -14
  48. package/config/rollup/enforce.js +0 -8
  49. package/config/rollup/rollup.config.js +0 -3
  50. package/docs/compound.md +0 -187
  51. package/docs/custom.md +0 -52
  52. package/docs/template.md +0 -53
  53. package/esm/n4s.mjs.development.js +0 -1101
  54. package/esm/n4s.mjs.production.js +0 -1101
  55. package/esm/n4s.mjs.production.min.js +0 -1
  56. package/esm/package.json +0 -1
  57. package/jest.config.js +0 -3
  58. package/n4s.cjs.development.js +0 -1103
  59. package/n4s.cjs.production.js +0 -1103
  60. package/n4s.cjs.production.min.js +0 -1
  61. package/n4s.js +0 -7
  62. package/n4s.umd.development.js +0 -1109
  63. package/n4s.umd.production.js +0 -1192
  64. package/n4s.umd.production.min.js +0 -1
@@ -0,0 +1,144 @@
1
+ 'use strict';
2
+
3
+ Object.defineProperty(exports, '__esModule', { value: true });
4
+
5
+ var n4s = require('n4s');
6
+
7
+ function mapFirst(array, callback) {
8
+ var broke = false;
9
+ var breakoutValue = null;
10
+ for (var i = 0; i < array.length; i++) {
11
+ callback(array[i], breakout, i);
12
+ if (broke) {
13
+ return breakoutValue;
14
+ }
15
+ }
16
+ function breakout(value) {
17
+ broke = true;
18
+ breakoutValue = value;
19
+ }
20
+ }
21
+
22
+ function isFunction(value) {
23
+ return typeof value === 'function';
24
+ }
25
+
26
+ function optionalFunctionValue(value) {
27
+ var args = [];
28
+ for (var _i = 1; _i < arguments.length; _i++) {
29
+ args[_i - 1] = arguments[_i];
30
+ }
31
+ return isFunction(value) ? value.apply(void 0, args) : value;
32
+ }
33
+
34
+ function defaultTo(callback, defaultValue) {
35
+ var _a;
36
+ return (_a = optionalFunctionValue(callback)) !== null && _a !== void 0 ? _a : defaultValue;
37
+ }
38
+
39
+ function ruleReturn(pass, message) {
40
+ var output = { pass: pass };
41
+ if (message) {
42
+ output.message = message;
43
+ }
44
+ return output;
45
+ }
46
+ function failing() {
47
+ return ruleReturn(false);
48
+ }
49
+ function passing() {
50
+ return ruleReturn(true);
51
+ }
52
+ function defaultToPassing(callback) {
53
+ return defaultTo(callback, passing());
54
+ }
55
+
56
+ function runLazyRule(lazyRule, currentValue) {
57
+ try {
58
+ return lazyRule.run(currentValue);
59
+ }
60
+ catch (_a) {
61
+ return failing();
62
+ }
63
+ }
64
+
65
+ function isArrayOf(inputArray, currentRule) {
66
+ return defaultToPassing(mapFirst(inputArray, function (currentValue, breakout, index) {
67
+ var res = n4s.ctx.run({ value: currentValue, set: true, meta: { index: index } }, function () { return runLazyRule(currentRule, currentValue); });
68
+ if (!res.pass) {
69
+ breakout(res);
70
+ }
71
+ }));
72
+ }
73
+
74
+ function loose(inputObject, shapeObject) {
75
+ var _loop_1 = function (key) {
76
+ var currentValue = inputObject[key];
77
+ var currentRule = shapeObject[key];
78
+ var res = n4s.ctx.run({ value: currentValue, set: true, meta: { key: key } }, function () {
79
+ return runLazyRule(currentRule, currentValue);
80
+ });
81
+ if (!res.pass) {
82
+ return { value: res };
83
+ }
84
+ };
85
+ for (var key in shapeObject) {
86
+ var state_1 = _loop_1(key);
87
+ if (typeof state_1 === "object")
88
+ return state_1.value;
89
+ }
90
+ return passing();
91
+ }
92
+
93
+ function isNull(value) {
94
+ return value === null;
95
+ }
96
+
97
+ function isUndefined(value) {
98
+ return value === undefined;
99
+ }
100
+
101
+ function isNullish(value) {
102
+ return isNull(value) || isUndefined(value);
103
+ }
104
+
105
+ function optional(value, ruleChain) {
106
+ if (isNullish(value)) {
107
+ return passing();
108
+ }
109
+ return runLazyRule(ruleChain, value);
110
+ }
111
+
112
+ /**
113
+ * A safe hasOwnProperty access
114
+ */
115
+ function hasOwnProperty(obj, key) {
116
+ return Object.prototype.hasOwnProperty.call(obj, key);
117
+ }
118
+
119
+ function shape(inputObject, shapeObject) {
120
+ var baseRes = loose(inputObject, shapeObject);
121
+ if (!baseRes.pass) {
122
+ return baseRes;
123
+ }
124
+ for (var key in inputObject) {
125
+ if (!hasOwnProperty(shapeObject, key)) {
126
+ return failing();
127
+ }
128
+ }
129
+ return passing();
130
+ }
131
+
132
+ // Help needed improving the typings of this file.
133
+ // Ideally, we'd be able to extend IShapeObject, but that's not possible.
134
+ function partial(shapeObject) {
135
+ var output = {};
136
+ for (var key in shapeObject) {
137
+ output[key] = n4s.enforce.optional(shapeObject[key]);
138
+ }
139
+ return output;
140
+ }
141
+
142
+ n4s.enforce.extend({ isArrayOf: isArrayOf, loose: loose, optional: optional, shape: shape });
143
+
144
+ exports.partial = partial;
@@ -0,0 +1,7 @@
1
+ 'use strict'
2
+
3
+ if (process.env.NODE_ENV === 'production') {
4
+ module.exports = require('./schema.production.js');
5
+ } else {
6
+ module.exports = require('./schema.development.js');
7
+ }
@@ -0,0 +1 @@
1
+ "use strict";Object.defineProperty(exports,"__esModule",{value:!0});var n=require("n4s");function r(n){return"function"==typeof n}function t(n,t){var e;return null!==(e=function(n){for(var t=[],e=1;e<arguments.length;e++)t[e-1]=arguments[e];return r(n)?n.apply(void 0,t):n}(n))&&void 0!==e?e:t}function e(n,r){return n={pass:n},r&&(n.message=r),n}function u(){return e(!1)}function o(){return e(!0)}function i(n,r){try{return n.run(r)}catch(n){return u()}}function f(r,t){var e,u=function(e){var u=r[e],o=t[e];if(!(e=n.ctx.run({value:u,set:!0,meta:{key:e}},(function(){return i(o,u)}))).pass)return{value:e}};for(e in t){var f=u(e);if("object"==typeof f)return f.value}return o()}function c(n,r){return Object.prototype.hasOwnProperty.call(n,r)}n.enforce.extend({isArrayOf:function(r,e){return function(n){return t(n,o())}(function(n,r){function t(n){e=!0,u=n}for(var e=!1,u=null,o=0;o<n.length;o++)if(r(n[o],t,o),e)return u}(r,(function(r,t,u){(u=n.ctx.run({value:r,set:!0,meta:{index:u}},(function(){return i(e,r)}))).pass||t(u)})))},loose:f,optional:function(n,r){return function(n){return function(n){return null===n}(n)||function(n){return void 0===n}(n)}(n)?o():i(r,n)},shape:function(n,r){var t=f(n,r);if(!t.pass)return t;for(var e in n)if(!c(r,e))return u();return o()}}),exports.partial=function(r){var t,e={};for(t in r)e[t]=n.enforce.optional(r[t]);return e};
@@ -0,0 +1,137 @@
1
+ import { ctx } from 'n4s';
2
+
3
+ function mapFirst(array, callback) {
4
+ var broke = false;
5
+ var breakoutValue = null;
6
+ for (var i = 0; i < array.length; i++) {
7
+ callback(array[i], breakout, i);
8
+ if (broke) {
9
+ return breakoutValue;
10
+ }
11
+ }
12
+ function breakout(value) {
13
+ broke = true;
14
+ breakoutValue = value;
15
+ }
16
+ }
17
+
18
+ function isFunction(value) {
19
+ return typeof value === 'function';
20
+ }
21
+
22
+ function optionalFunctionValue(value) {
23
+ var args = [];
24
+ for (var _i = 1; _i < arguments.length; _i++) {
25
+ args[_i - 1] = arguments[_i];
26
+ }
27
+ return isFunction(value) ? value.apply(void 0, args) : value;
28
+ }
29
+
30
+ function defaultTo(callback, defaultValue) {
31
+ var _a;
32
+ return (_a = optionalFunctionValue(callback)) !== null && _a !== void 0 ? _a : defaultValue;
33
+ }
34
+
35
+ /**
36
+ * Throws a timed out error.
37
+ */
38
+ function throwError(devMessage, productionMessage) {
39
+ throw new Error(devMessage );
40
+ }
41
+
42
+ /**
43
+ * A safe hasOwnProperty access
44
+ */
45
+ function hasOwnProperty(obj, key) {
46
+ return Object.prototype.hasOwnProperty.call(obj, key);
47
+ }
48
+
49
+ function isNumber(value) {
50
+ return Boolean(typeof value === 'number');
51
+ }
52
+
53
+ function lengthEquals(value, arg1) {
54
+ return value.length === Number(arg1);
55
+ }
56
+
57
+ function isEmpty(value) {
58
+ if (!value) {
59
+ return true;
60
+ }
61
+ else if (isNumber(value)) {
62
+ return value === 0;
63
+ }
64
+ else if (hasOwnProperty(value, 'length')) {
65
+ return lengthEquals(value, 0);
66
+ }
67
+ else if (typeof value === 'object') {
68
+ return lengthEquals(Object.keys(value), 0);
69
+ }
70
+ return true;
71
+ }
72
+
73
+ function ruleReturn(pass, message) {
74
+ var output = { pass: pass };
75
+ if (message) {
76
+ output.message = message;
77
+ }
78
+ return output;
79
+ }
80
+ function failing() {
81
+ return ruleReturn(false);
82
+ }
83
+ function passing() {
84
+ return ruleReturn(true);
85
+ }
86
+ function defaultToPassing(callback) {
87
+ return defaultTo(callback, passing());
88
+ }
89
+
90
+ function runLazyRule(lazyRule, currentValue) {
91
+ try {
92
+ return lazyRule.run(currentValue);
93
+ }
94
+ catch (_a) {
95
+ return failing();
96
+ }
97
+ }
98
+
99
+ /* eslint-disable max-lines-per-function */
100
+ function compose() {
101
+ var composites = [];
102
+ for (var _i = 0; _i < arguments.length; _i++) {
103
+ composites[_i] = arguments[_i];
104
+ }
105
+ return Object.assign(function (value) {
106
+ var res = run(value);
107
+ if (!res.pass) {
108
+ if (isEmpty(res.message)) {
109
+ throwError();
110
+ }
111
+ else {
112
+ // Explicitly throw a string so that vest.test can pick it up as the validation error message
113
+ throw res.message;
114
+ }
115
+ }
116
+ }, {
117
+ run: run,
118
+ test: function (value) { return run(value).pass; }
119
+ });
120
+ function run(value) {
121
+ return ctx.run({ value: value }, function () {
122
+ return defaultToPassing(mapFirst(composites, function (composite, breakout) {
123
+ /* HACK: Just a small white lie. ~~HELP WANTED~~.
124
+ The ideal is that instead of `TLazyRuleRunners` We would simply use `TLazy` to begin with.
125
+ The problem is that lazy rules can't really be passed to this function due to some generic hell
126
+ so we're limiting it to a small set of functions.
127
+ */
128
+ var res = runLazyRule(composite, value);
129
+ if (!res.pass) {
130
+ breakout(res);
131
+ }
132
+ }));
133
+ });
134
+ }
135
+ }
136
+
137
+ export default compose;
@@ -0,0 +1 @@
1
+ import{ctx as n}from"n4s";function r(n,r){function t(n){e=!0,u=n}for(var e=!1,u=null,o=0;o<n.length;o++)if(r(n[o],t,o),e)return u}function t(n,r){var t;return null!==(t=function(n){for(var r=[],t=1;t<arguments.length;t++)r[t-1]=arguments[t];return"function"==typeof n?n.apply(void 0,r):n}(n))&&void 0!==t?t:r}function e(n){if(n){if("number"==typeof n)return 0===n;if(Object.prototype.hasOwnProperty.call(n,"length"))return n.length===Number(0);if("object"==typeof n)return Object.keys(n).length===Number(0)}return!0}function u(n,r){return n={pass:n},r&&(n.message=r),n}export default function(){function o(e){return n.run({value:e},(function(){return t(r(f,(function(n,r){try{var t=n.run(e)}catch(n){t=u(!1)}t.pass||r(t)})),u(!0))}))}for(var f=[],i=0;i<arguments.length;i++)f[i]=arguments[i];return Object.assign((function(n){if(!(n=o(n)).pass){if(e(n.message))throw Error(t(void 0,void 0));throw n.message}}),{run:o,test:function(n){return o(n).pass}})}
@@ -0,0 +1,130 @@
1
+ import { enforce } from 'n4s';
2
+
3
+ function mapFirst(array, callback) {
4
+ var broke = false;
5
+ var breakoutValue = null;
6
+ for (var i = 0; i < array.length; i++) {
7
+ callback(array[i], breakout, i);
8
+ if (broke) {
9
+ return breakoutValue;
10
+ }
11
+ }
12
+ function breakout(value) {
13
+ broke = true;
14
+ breakoutValue = value;
15
+ }
16
+ }
17
+
18
+ function isFunction(value) {
19
+ return typeof value === 'function';
20
+ }
21
+
22
+ function optionalFunctionValue(value) {
23
+ var args = [];
24
+ for (var _i = 1; _i < arguments.length; _i++) {
25
+ args[_i - 1] = arguments[_i];
26
+ }
27
+ return isFunction(value) ? value.apply(void 0, args) : value;
28
+ }
29
+
30
+ function defaultTo(callback, defaultValue) {
31
+ var _a;
32
+ return (_a = optionalFunctionValue(callback)) !== null && _a !== void 0 ? _a : defaultValue;
33
+ }
34
+
35
+ function ruleReturn(pass, message) {
36
+ var output = { pass: pass };
37
+ if (message) {
38
+ output.message = message;
39
+ }
40
+ return output;
41
+ }
42
+ function failing() {
43
+ return ruleReturn(false);
44
+ }
45
+ function passing() {
46
+ return ruleReturn(true);
47
+ }
48
+ function defaultToFailing(callback) {
49
+ return defaultTo(callback, failing());
50
+ }
51
+ function defaultToPassing(callback) {
52
+ return defaultTo(callback, passing());
53
+ }
54
+
55
+ function runLazyRule(lazyRule, currentValue) {
56
+ try {
57
+ return lazyRule.run(currentValue);
58
+ }
59
+ catch (_a) {
60
+ return failing();
61
+ }
62
+ }
63
+
64
+ function allOf(value) {
65
+ var rules = [];
66
+ for (var _i = 1; _i < arguments.length; _i++) {
67
+ rules[_i - 1] = arguments[_i];
68
+ }
69
+ return defaultToPassing(mapFirst(rules, function (rule, breakout) {
70
+ var res = runLazyRule(rule, value);
71
+ if (!res.pass) {
72
+ breakout(res);
73
+ }
74
+ }));
75
+ }
76
+
77
+ function anyOf(value) {
78
+ var rules = [];
79
+ for (var _i = 1; _i < arguments.length; _i++) {
80
+ rules[_i - 1] = arguments[_i];
81
+ }
82
+ return defaultToFailing(mapFirst(rules, function (rule, breakout) {
83
+ var res = runLazyRule(rule, value);
84
+ if (res.pass) {
85
+ breakout(res);
86
+ }
87
+ }));
88
+ }
89
+
90
+ function noneOf(value) {
91
+ var rules = [];
92
+ for (var _i = 1; _i < arguments.length; _i++) {
93
+ rules[_i - 1] = arguments[_i];
94
+ }
95
+ return defaultToPassing(mapFirst(rules, function (rule, breakout) {
96
+ var res = runLazyRule(rule, value);
97
+ if (res.pass) {
98
+ breakout(failing());
99
+ }
100
+ }));
101
+ }
102
+
103
+ function lengthEquals(value, arg1) {
104
+ return value.length === Number(arg1);
105
+ }
106
+
107
+ function longerThan(value, arg1) {
108
+ return value.length > Number(arg1);
109
+ }
110
+
111
+ var REQUIRED_COUNT = 1;
112
+ function oneOf(value) {
113
+ var rules = [];
114
+ for (var _i = 1; _i < arguments.length; _i++) {
115
+ rules[_i - 1] = arguments[_i];
116
+ }
117
+ var passing = [];
118
+ rules.some(function (rule) {
119
+ if (longerThan(passing, REQUIRED_COUNT)) {
120
+ return false;
121
+ }
122
+ var res = runLazyRule(rule, value);
123
+ if (res.pass) {
124
+ passing.push(res);
125
+ }
126
+ });
127
+ return ruleReturn(lengthEquals(passing, REQUIRED_COUNT));
128
+ }
129
+
130
+ enforce.extend({ allOf: allOf, anyOf: anyOf, noneOf: noneOf, oneOf: oneOf });
@@ -0,0 +1 @@
1
+ import{enforce as n}from"n4s";function r(n,r){function t(n){u=!0,e=n}for(var u=!1,e=null,f=0;f<n.length;f++)if(r(n[f],t,f),u)return e}function t(n,r){var t;return null!==(t=function(n){for(var r=[],t=1;t<arguments.length;t++)r[t-1]=arguments[t];return"function"==typeof n?n.apply(void 0,r):n}(n))&&void 0!==t?t:r}function u(n,r){return n={pass:n},r&&(n.message=r),n}function e(n,r){try{return n.run(r)}catch(n){return u(!1)}}n.extend({allOf:function(n){for(var f=[],o=1;o<arguments.length;o++)f[o-1]=arguments[o];return t(r(f,(function(r,t){(r=e(r,n)).pass||t(r)})),u(!0))},anyOf:function(n){for(var f=[],o=1;o<arguments.length;o++)f[o-1]=arguments[o];return t(r(f,(function(r,t){(r=e(r,n)).pass&&t(r)})),u(!1))},noneOf:function(n){for(var f=[],o=1;o<arguments.length;o++)f[o-1]=arguments[o];return t(r(f,(function(r,t){e(r,n).pass&&t(u(!1))})),u(!0))},oneOf:function(n){for(var r=[],t=1;t<arguments.length;t++)r[t-1]=arguments[t];var f=[];return r.some((function(r){if(f.length>Number(1))return!1;(r=e(r,n)).pass&&f.push(r)})),u(f.length===Number(1))}});