n4s 4.1.9 → 4.2.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.
@@ -1,7 +1,7 @@
1
1
  'use strict';
2
2
 
3
- var vestUtils = require('vest-utils');
4
3
  var n4s = require('n4s');
4
+ var vestUtils = require('vest-utils');
5
5
 
6
6
  function ruleReturn(pass, message) {
7
7
  var output = { pass: pass };
@@ -1 +1 @@
1
- "use strict";var n=require("vest-utils"),t=require("n4s");function r(n,t){return n={pass:n},t&&(n.message=t),n}function u(t){return n.defaultTo(t,r(!0))}function e(n,t){try{return n.run(t)}catch(n){return r(!1)}}module.exports=function(){function r(r){return t.ctx.run({value:r},(function(){return u(n.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 n.assign((function(t){t=r(t),n.invariant(t.pass,n.StringObject(t.message))}),{run:r,test:function(n){return r(n).pass}})};
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,7 +1,7 @@
1
1
  'use strict';
2
2
 
3
- var vestUtils = require('vest-utils');
4
3
  var n4s = require('n4s');
4
+ var vestUtils = require('vest-utils');
5
5
 
6
6
  function ruleReturn(pass, message) {
7
7
  var output = { pass: pass };
@@ -1 +1 @@
1
- "use strict";var n=require("vest-utils"),r=require("n4s");function t(n,r){return n={pass:n},r&&(n.message=r),n}function e(){return t(!1)}function u(r){return n.defaultTo(r,e())}function f(r){return n.defaultTo(r,t(!0))}function o(n,r){try{return n.run(r)}catch(n){return e()}}function i(n,r){return n===r}n.bindNot(i);r.enforce.extend({allOf:function(r){for(var t=[],e=1;e<arguments.length;e++)t[e-1]=arguments[e];return f(n.mapFirst(t,(function(n,t){t(!(n=o(n,r)).pass,n)})))},anyOf:function(r){for(var t=[],e=1;e<arguments.length;e++)t[e-1]=arguments[e];return u(n.mapFirst(t,(function(n,t){t((n=o(n,r)).pass,n)})))},noneOf:function(r){for(var t=[],u=1;u<arguments.length;u++)t[u-1]=arguments[u];return f(n.mapFirst(t,(function(n,t){t((n=o(n,r)).pass,e())})))},oneOf:function(r){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,r).pass&&f++,n.greaterThan(f,1))return!1})),t(i(f,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))}});
@@ -2,8 +2,8 @@
2
2
 
3
3
  Object.defineProperty(exports, '__esModule', { value: true });
4
4
 
5
- var vestUtils = require('vest-utils');
6
5
  var n4s = require('n4s');
6
+ var vestUtils = require('vest-utils');
7
7
 
8
8
  function ruleReturn(pass, message) {
9
9
  var output = { pass: pass };
@@ -1 +1 @@
1
- "use strict";Object.defineProperty(exports,"__esModule",{value:!0});var r=require("vest-utils"),n=require("n4s");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(r,e){var t,o=function(t){var u=r[t],o=e[t];if(!(t=n.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()}n.enforce.extend({isArrayOf:function(e,t){return function(n){return r.defaultTo(n,u())}(r.mapFirst(e,(function(r,e,u){e(!(u=n.ctx.run({value:r,set:!0,meta:{index:u}},(function(){return i(t,r)}))).pass,u)})))},loose:o,optional:function(n,e){return r.isNullish(n)?u():i(e,n)},shape:function(n,e){var i=o(n,e);if(!i.pass)return i;for(var a in n)if(!r.hasOwnProperty(e,a))return t();return u()}}),exports.partial=function(r){var e,t={};for(e in r)t[e]=n.enforce.optional(r[e]);return t};
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,5 +1,5 @@
1
- import { defaultTo, assign, mapFirst, invariant, StringObject } from 'vest-utils';
2
1
  import { ctx } from 'n4s';
2
+ import { defaultTo, assign, mapFirst, invariant, StringObject } from 'vest-utils';
3
3
 
4
4
  function ruleReturn(pass, message) {
5
5
  var output = { pass: pass };
@@ -1 +1 @@
1
- import{ctx as n}from"n4s";import{defaultTo as t,assign as r,mapFirst as u,invariant as s,StringObject as e}from"vest-utils";function o(n,t){return n={pass:n},t&&(n.message=t),n}export default function(){function a(r){return n.run({value:r},(function(){return t(u(f,(function(n,t){try{var u=n.run(r)}catch(n){u=o(!1)}t(!u.pass,u)})),o(!0))}))}for(var f=[],i=0;i<arguments.length;i++)f[i]=arguments[i];return r((function(n){n=a(n),s(n.pass,e(n.message))}),{run:a,test:function(n){return a(n).pass}})}
1
+ import{defaultTo as n,assign as t,mapFirst as r,invariant as u,StringObject as s}from"vest-utils";import{ctx as e}from"n4s";function o(n,t){return n={pass:n},t&&(n.message=t),n}export default function(){function a(t){return e.run({value:t},(function(){return n(r(f,(function(n,r){try{var u=n.run(t)}catch(n){u=o(!1)}r(!u.pass,u)})),o(!0))}))}for(var f=[],i=0;i<arguments.length;i++)f[i]=arguments[i];return t((function(n){n=a(n),u(n.pass,s(n.message))}),{run:a,test:function(n){return a(n).pass}})}
@@ -1,5 +1,5 @@
1
- import { defaultTo, mapFirst, bindNot, greaterThan } from 'vest-utils';
2
1
  import { enforce } from 'n4s';
2
+ import { defaultTo, mapFirst, bindNot, greaterThan } from 'vest-utils';
3
3
 
4
4
  function ruleReturn(pass, message) {
5
5
  var output = { pass: pass };
@@ -1 +1 @@
1
- import{enforce as n}from"n4s";import{defaultTo as r,mapFirst as t,bindNot as f,greaterThan as o}from"vest-utils";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)}}f((function(n,r){return n===r})),n.extend({allOf:function(n){for(var f=[],o=1;o<arguments.length;o++)f[o-1]=arguments[o];return r(t(f,(function(r,t){t(!(r=e(r,n)).pass,r)})),u(!0))},anyOf:function(n){for(var f=[],o=1;o<arguments.length;o++)f[o-1]=arguments[o];return r(t(f,(function(r,t){t((r=e(r,n)).pass,r)})),u(!1))},noneOf:function(n){for(var f=[],o=1;o<arguments.length;o++)f[o-1]=arguments[o];return r(t(f,(function(r,t){t((r=e(r,n)).pass,u(!1))})),u(!0))},oneOf:function(n){for(var r=[],t=1;t<arguments.length;t++)r[t-1]=arguments[t];var f=0;return r.some((function(r){if(e(r,n).pass&&f++,o(f,1))return!1})),u(1===f)}});
1
+ import{defaultTo as n,mapFirst as r,bindNot as t,greaterThan as f}from"vest-utils";import{enforce as o}from"n4s";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)}}t((function(n,r){return n===r})),o.extend({allOf:function(t){for(var f=[],o=1;o<arguments.length;o++)f[o-1]=arguments[o];return n(r(f,(function(n,r){r(!(n=e(n,t)).pass,n)})),u(!0))},anyOf:function(t){for(var f=[],o=1;o<arguments.length;o++)f[o-1]=arguments[o];return n(r(f,(function(n,r){r((n=e(n,t)).pass,n)})),u(!1))},noneOf:function(t){for(var f=[],o=1;o<arguments.length;o++)f[o-1]=arguments[o];return n(r(f,(function(n,r){r((n=e(n,t)).pass,u(!1))})),u(!0))},oneOf:function(n){for(var r=[],t=1;t<arguments.length;t++)r[t-1]=arguments[t];var o=0;return r.some((function(r){if(e(r,n).pass&&o++,f(o,1))return!1})),u(1===o)}});
@@ -1,5 +1,5 @@
1
- import { defaultTo, mapFirst, isNullish, hasOwnProperty } from 'vest-utils';
2
1
  import { ctx, enforce } from 'n4s';
2
+ import { defaultTo, mapFirst, isNullish, hasOwnProperty } from 'vest-utils';
3
3
 
4
4
  function ruleReturn(pass, message) {
5
5
  var output = { pass: pass };
@@ -1 +1 @@
1
- import{ctx as r,enforce as n}from"n4s";import{defaultTo as t,mapFirst as e,isNullish as u,hasOwnProperty as o}from"vest-utils";function i(r,n){return r={pass:r},n&&(r.message=n),r}function a(r,n){try{return r.run(n)}catch(r){return i(!1)}}function f(n,t){function e(e){var u=n[e],o=t[e];if(!(e=r.run({value:u,set:!0,meta:{key:e}},(function(){return a(o,u)}))).pass)return{value:e}}for(var u in t){var o=e(u);if("object"==typeof o)return o.value}return i(!0)}n.extend({isArrayOf:function(n,u){return t(e(n,(function(n,t,e){t(!(e=r.run({value:n,set:!0,meta:{index:e}},(function(){return a(u,n)}))).pass,e)})),i(!0))},loose:f,optional:function(r,n){return u(r)?i(!0):a(n,r)},shape:function(r,n){var t=f(r,n);if(!t.pass)return t;for(var e in r)if(!o(n,e))return i(!1);return i(!0)}});export function partial(r){var t,e={};for(t in r)e[t]=n.optional(r[t]);return e}
1
+ import{defaultTo as r,mapFirst as n,isNullish as t,hasOwnProperty as e}from"vest-utils";import{ctx as u,enforce as o}from"n4s";function i(r,n){return r={pass:r},n&&(r.message=n),r}function a(r,n){try{return r.run(n)}catch(r){return i(!1)}}function f(r,n){function t(t){var e=r[t],o=n[t];if(!(t=u.run({value:e,set:!0,meta:{key:t}},(function(){return a(o,e)}))).pass)return{value:t}}for(var e in n){var o=t(e);if("object"==typeof o)return o.value}return i(!0)}o.extend({isArrayOf:function(t,e){return r(n(t,(function(r,n,t){n(!(t=u.run({value:r,set:!0,meta:{index:t}},(function(){return a(e,r)}))).pass,t)})),i(!0))},loose:f,optional:function(r,n){return t(r)?i(!0):a(n,r)},shape:function(r,n){var t=f(r,n);if(!t.pass)return t;for(var u in r)if(!e(n,u))return i(!1);return i(!0)}});export function partial(r){var n,t={};for(n in r)t[n]=o.optional(r[n]);return t}
@@ -1,62 +1,8 @@
1
1
  (function (global, factory) {
2
- typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory(require('n4s')) :
3
- typeof define === 'function' && define.amd ? define(['n4s'], factory) :
4
- (global = typeof globalThis !== 'undefined' ? globalThis : global || self, global.compose = factory(global.n4s));
5
- }(this, (function (n4s) { 'use strict';
6
-
7
- function isFunction(value) {
8
- return typeof value === 'function';
9
- }
10
-
11
- function optionalFunctionValue(value) {
12
- var args = [];
13
- for (var _i = 1; _i < arguments.length; _i++) {
14
- args[_i - 1] = arguments[_i];
15
- }
16
- return isFunction(value) ? value.apply(void 0, args) : value;
17
- }
18
-
19
- function defaultTo(value, defaultValue) {
20
- var _a;
21
- return (_a = optionalFunctionValue(value)) !== null && _a !== void 0 ? _a : optionalFunctionValue(defaultValue);
22
- }
23
-
24
- var assign = Object.assign;
25
-
26
- function invariant(condition,
27
- // eslint-disable-next-line @typescript-eslint/ban-types
28
- message) {
29
- if (condition) {
30
- return;
31
- }
32
- // If message is a string object (rather than string literal)
33
- // Throw the value directly as a string
34
- // Alternatively, throw an error with the message
35
- throw message instanceof String
36
- ? message.valueOf()
37
- : new Error(message ? optionalFunctionValue(message) : message);
38
- }
39
- // eslint-disable-next-line @typescript-eslint/ban-types
40
- function StringObject(value) {
41
- return new String(optionalFunctionValue(value));
42
- }
43
-
44
- function mapFirst(array, callback) {
45
- var broke = false;
46
- var breakoutValue = null;
47
- for (var i = 0; i < array.length; i++) {
48
- callback(array[i], breakout, i);
49
- if (broke) {
50
- return breakoutValue;
51
- }
52
- }
53
- function breakout(conditional, value) {
54
- if (conditional) {
55
- broke = true;
56
- breakoutValue = value;
57
- }
58
- }
59
- }
2
+ typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory(require('n4s'), require('vest-utils')) :
3
+ typeof define === 'function' && define.amd ? define(['n4s', 'vest-utils'], factory) :
4
+ (global = typeof globalThis !== 'undefined' ? globalThis : global || self, global.compose = factory(global.n4s, global['vest-utils']));
5
+ }(this, (function (n4s, vestUtils) { 'use strict';
60
6
 
61
7
  function ruleReturn(pass, message) {
62
8
  var output = { pass: pass };
@@ -72,7 +18,7 @@
72
18
  return ruleReturn(true);
73
19
  }
74
20
  function defaultToPassing(callback) {
75
- return defaultTo(callback, passing());
21
+ return vestUtils.defaultTo(callback, passing());
76
22
  }
77
23
 
78
24
  function runLazyRule(lazyRule, currentValue) {
@@ -90,16 +36,16 @@
90
36
  for (var _i = 0; _i < arguments.length; _i++) {
91
37
  composites[_i] = arguments[_i];
92
38
  }
93
- return assign(function (value) {
39
+ return vestUtils.assign(function (value) {
94
40
  var res = run(value);
95
- invariant(res.pass, StringObject(res.message));
41
+ vestUtils.invariant(res.pass, vestUtils.StringObject(res.message));
96
42
  }, {
97
43
  run: run,
98
44
  test: function (value) { return run(value).pass; }
99
45
  });
100
46
  function run(value) {
101
47
  return n4s.ctx.run({ value: value }, function () {
102
- return defaultToPassing(mapFirst(composites, function (composite, breakout) {
48
+ return defaultToPassing(vestUtils.mapFirst(composites, function (composite, breakout) {
103
49
  /* HACK: Just a small white lie. ~~HELP WANTED~~.
104
50
  The ideal is that instead of `LazyRuleRunners` We would simply use `Lazy` to begin with.
105
51
  The problem is that lazy rules can't really be passed to this function due to some generic hell
@@ -1 +1 @@
1
- "use strict";!function(n,t){"object"==typeof exports&&"undefined"!=typeof module?module.exports=t(require("n4s")):"function"==typeof define&&define.amd?define(["n4s"],t):(n="undefined"!=typeof globalThis?globalThis:n||self).compose=t(n.n4s)}(this,(function(n){function t(n){for(var t=[],e=1;e<arguments.length;e++)t[e-1]=arguments[e];return"function"==typeof n?n.apply(void 0,t):n}function e(n,e){var r;return null!==(r=t(n))&&void 0!==r?r:t(e)}function r(n,t){function e(n,t){n&&(r=!0,o=t)}for(var r=!1,o=null,u=0;u<n.length;u++)if(t(n[u],e,u),r)return o}function o(n,t){return n={pass:n},t&&(n.message=t),n}var u=Object.assign;return function(){function f(t){return n.ctx.run({value:t},(function(){return e(r(i,(function(n,e){try{var r=n.run(t)}catch(n){r=o(!1)}e(!r.pass,r)})),o(!0))}))}for(var i=[],s=0;s<arguments.length;s++)i[s]=arguments[s];return u((function(n){n=f(n);var e=new String(t(n.message));if(!n.pass)throw e instanceof String?e.valueOf():Error(e?t(e):e)}),{run:f,test:function(n){return f(n).pass}})}}));
1
+ "use strict";!function(e,n){"object"==typeof exports&&"undefined"!=typeof module?module.exports=n(require("n4s"),require("vest-utils")):"function"==typeof define&&define.amd?define(["n4s","vest-utils"],n):(e="undefined"!=typeof globalThis?globalThis:e||self).compose=n(e.n4s,e["vest-utils"])}(this,(function(e,n){function t(e,n){return e={pass:e},n&&(e.message=n),e}return function(){function s(s){return e.ctx.run({value:s},(function(){return n.defaultTo(n.mapFirst(u,(function(e,n){try{var u=e.run(s)}catch(e){u=t(!1)}n(!u.pass,u)})),t(!0))}))}for(var u=[],i=0;i<arguments.length;i++)u[i]=arguments[i];return n.assign((function(e){e=s(e),n.invariant(e.pass,n.StringObject(e.message))}),{run:s,test:function(e){return s(e).pass}})}}));
@@ -1,53 +1,8 @@
1
1
  (function (global, factory) {
2
- typeof exports === 'object' && typeof module !== 'undefined' ? factory(require('n4s')) :
3
- typeof define === 'function' && define.amd ? define(['n4s'], factory) :
4
- (global = typeof globalThis !== 'undefined' ? globalThis : global || self, factory(global.n4s));
5
- }(this, (function (n4s) { 'use strict';
6
-
7
- function isNumeric(value) {
8
- var str = String(value);
9
- var num = Number(value);
10
- var result = !isNaN(parseFloat(str)) && !isNaN(Number(value)) && isFinite(num);
11
- return Boolean(result);
12
- }
13
-
14
- function greaterThan(value, gt) {
15
- return isNumeric(value) && isNumeric(gt) && Number(value) > Number(gt);
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(value, defaultValue) {
31
- var _a;
32
- return (_a = optionalFunctionValue(value)) !== null && _a !== void 0 ? _a : optionalFunctionValue(defaultValue);
33
- }
34
-
35
- function mapFirst(array, callback) {
36
- var broke = false;
37
- var breakoutValue = null;
38
- for (var i = 0; i < array.length; i++) {
39
- callback(array[i], breakout, i);
40
- if (broke) {
41
- return breakoutValue;
42
- }
43
- }
44
- function breakout(conditional, value) {
45
- if (conditional) {
46
- broke = true;
47
- breakoutValue = value;
48
- }
49
- }
50
- }
2
+ typeof exports === 'object' && typeof module !== 'undefined' ? factory(require('n4s'), require('vest-utils')) :
3
+ typeof define === 'function' && define.amd ? define(['n4s', 'vest-utils'], factory) :
4
+ (global = typeof globalThis !== 'undefined' ? globalThis : global || self, factory(global.n4s, global['vest-utils']));
5
+ }(this, (function (n4s, vestUtils) { 'use strict';
51
6
 
52
7
  function ruleReturn(pass, message) {
53
8
  var output = { pass: pass };
@@ -63,10 +18,10 @@
63
18
  return ruleReturn(true);
64
19
  }
65
20
  function defaultToFailing(callback) {
66
- return defaultTo(callback, failing());
21
+ return vestUtils.defaultTo(callback, failing());
67
22
  }
68
23
  function defaultToPassing(callback) {
69
- return defaultTo(callback, passing());
24
+ return vestUtils.defaultTo(callback, passing());
70
25
  }
71
26
 
72
27
  function runLazyRule(lazyRule, currentValue) {
@@ -83,7 +38,7 @@
83
38
  for (var _i = 1; _i < arguments.length; _i++) {
84
39
  rules[_i - 1] = arguments[_i];
85
40
  }
86
- return defaultToPassing(mapFirst(rules, function (rule, breakout) {
41
+ return defaultToPassing(vestUtils.mapFirst(rules, function (rule, breakout) {
87
42
  var res = runLazyRule(rule, value);
88
43
  breakout(!res.pass, res);
89
44
  }));
@@ -94,7 +49,7 @@
94
49
  for (var _i = 1; _i < arguments.length; _i++) {
95
50
  rules[_i - 1] = arguments[_i];
96
51
  }
97
- return defaultToFailing(mapFirst(rules, function (rule, breakout) {
52
+ return defaultToFailing(vestUtils.mapFirst(rules, function (rule, breakout) {
98
53
  var res = runLazyRule(rule, value);
99
54
  breakout(res.pass, res);
100
55
  }));
@@ -105,7 +60,7 @@
105
60
  for (var _i = 1; _i < arguments.length; _i++) {
106
61
  rules[_i - 1] = arguments[_i];
107
62
  }
108
- return defaultToPassing(mapFirst(rules, function (rule, breakout) {
63
+ return defaultToPassing(vestUtils.mapFirst(rules, function (rule, breakout) {
109
64
  var res = runLazyRule(rule, value);
110
65
  breakout(res.pass, failing());
111
66
  }));
@@ -114,6 +69,7 @@
114
69
  function equals(value, arg1) {
115
70
  return value === arg1;
116
71
  }
72
+ vestUtils.bindNot(equals);
117
73
 
118
74
  var REQUIRED_COUNT = 1;
119
75
  function oneOf(value) {
@@ -127,7 +83,7 @@
127
83
  if (res.pass) {
128
84
  passingCount++;
129
85
  }
130
- if (greaterThan(passingCount, REQUIRED_COUNT)) {
86
+ if (vestUtils.greaterThan(passingCount, REQUIRED_COUNT)) {
131
87
  return false;
132
88
  }
133
89
  });
@@ -1 +1 @@
1
- "use strict";!function(n,e){"object"==typeof exports&&"undefined"!=typeof module?e(require("n4s")):"function"==typeof define&&define.amd?define(["n4s"],e):e((n="undefined"!=typeof globalThis?globalThis:n||self).n4s)}(this,(function(n){function e(n){var e=Number(n);return!(isNaN(parseFloat(String(n)))||isNaN(Number(n))||!isFinite(e))}function t(n){for(var e=[],t=1;t<arguments.length;t++)e[t-1]=arguments[t];return"function"==typeof n?n.apply(void 0,e):n}function r(n,e){var r;return null!==(r=t(n))&&void 0!==r?r:t(e)}function f(n,e){function t(n,e){n&&(r=!0,f=e)}for(var r=!1,f=null,u=0;u<n.length;u++)if(e(n[u],t,u),r)return f}function u(n,e){return n={pass:n},e&&(n.message=e),n}function o(n,e){try{return n.run(e)}catch(n){return u(!1)}}n.enforce.extend({allOf:function(n){for(var e=[],t=1;t<arguments.length;t++)e[t-1]=arguments[t];return r(f(e,(function(e,t){t(!(e=o(e,n)).pass,e)})),u(!0))},anyOf:function(n){for(var e=[],t=1;t<arguments.length;t++)e[t-1]=arguments[t];return r(f(e,(function(e,t){t((e=o(e,n)).pass,e)})),u(!1))},noneOf:function(n){for(var e=[],t=1;t<arguments.length;t++)e[t-1]=arguments[t];return r(f(e,(function(e,t){t((e=o(e,n)).pass,u(!1))})),u(!0))},oneOf:function(n){for(var t=[],r=1;r<arguments.length;r++)t[r-1]=arguments[r];var f=0;return t.some((function(t){if(o(t,n).pass&&f++,e(t=f)&&e(1)&&Number(t)>Number(1))return!1})),u(1===f)}})}));
1
+ "use strict";!function(n,e){"object"==typeof exports&&"undefined"!=typeof module?e(require("n4s"),require("vest-utils")):"function"==typeof define&&define.amd?define(["n4s","vest-utils"],e):e((n="undefined"!=typeof globalThis?globalThis:n||self).n4s,n["vest-utils"])}(this,(function(n,e){function t(n,e){return n={pass:n},e&&(n.message=e),n}function r(n,e){try{return n.run(e)}catch(n){return t(!1)}}e.bindNot((function(n,e){return n===e})),n.enforce.extend({allOf:function(n){for(var f=[],u=1;u<arguments.length;u++)f[u-1]=arguments[u];return e.defaultTo(e.mapFirst(f,(function(e,t){t(!(e=r(e,n)).pass,e)})),t(!0))},anyOf:function(n){for(var f=[],u=1;u<arguments.length;u++)f[u-1]=arguments[u];return e.defaultTo(e.mapFirst(f,(function(e,t){t((e=r(e,n)).pass,e)})),t(!1))},noneOf:function(n){for(var f=[],u=1;u<arguments.length;u++)f[u-1]=arguments[u];return e.defaultTo(e.mapFirst(f,(function(e,f){f((e=r(e,n)).pass,t(!1))})),t(!0))},oneOf:function(n){for(var f=[],u=1;u<arguments.length;u++)f[u-1]=arguments[u];var o=0;return f.some((function(t){if(r(t,n).pass&&o++,e.greaterThan(o,1))return!1})),t(1===o)}})}));
@@ -1,206 +1,60 @@
1
1
  (function (global, factory) {
2
- typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports) :
3
- typeof define === 'function' && define.amd ? define(['exports'], factory) :
4
- (global = typeof globalThis !== 'undefined' ? globalThis : global || self, factory(global.n4s = {}));
5
- }(this, (function (exports) { 'use strict';
6
-
7
- function bindNot(fn) {
8
- return function () {
9
- var args = [];
10
- for (var _i = 0; _i < arguments.length; _i++) {
11
- args[_i] = arguments[_i];
12
- }
13
- return !fn.apply(void 0, args);
14
- };
15
- }
16
-
17
- function isNumeric(value) {
18
- var str = String(value);
19
- var num = Number(value);
20
- var result = !isNaN(parseFloat(str)) && !isNaN(Number(value)) && isFinite(num);
21
- return Boolean(result);
22
- }
23
- var isNotNumeric = bindNot(isNumeric);
24
-
25
- function numberEquals(value, eq) {
26
- return isNumeric(value) && isNumeric(eq) && Number(value) === Number(eq);
27
- }
28
- var numberNotEquals = bindNot(numberEquals);
29
-
30
- function lengthEquals(value, arg1) {
31
- return numberEquals(value.length, arg1);
32
- }
33
- var lengthNotEquals = bindNot(lengthEquals);
34
-
35
- function greaterThan(value, gt) {
36
- return isNumeric(value) && isNumeric(gt) && Number(value) > Number(gt);
37
- }
38
-
39
- function longerThan(value, arg1) {
40
- return greaterThan(value.length, arg1);
41
- }
42
-
43
- function isNull(value) {
44
- return value === null;
45
- }
46
- var isNotNull = bindNot(isNull);
47
-
48
- function isUndefined(value) {
49
- return value === undefined;
50
- }
51
- var isNotUndefined = bindNot(isUndefined);
52
-
53
- function isNullish(value) {
54
- return isNull(value) || isUndefined(value);
55
- }
56
- var isNotNullish = bindNot(isNullish);
57
-
58
- function isFunction(value) {
59
- return typeof value === 'function';
60
- }
61
-
62
- function optionalFunctionValue(value) {
63
- var args = [];
64
- for (var _i = 1; _i < arguments.length; _i++) {
65
- args[_i - 1] = arguments[_i];
66
- }
67
- return isFunction(value) ? value.apply(void 0, args) : value;
68
- }
69
-
70
- function defaultTo(value, defaultValue) {
71
- var _a;
72
- return (_a = optionalFunctionValue(value)) !== null && _a !== void 0 ? _a : optionalFunctionValue(defaultValue);
73
- }
74
-
75
- // The module is named "isArrayValue" since it
76
- // is conflicting with a nested npm dependency.
77
- // We may need to revisit this in the future.
78
- function isArray(value) {
79
- return Boolean(Array.isArray(value));
80
- }
81
- var isNotArray = bindNot(isArray);
82
-
83
- /**
84
- * A safe hasOwnProperty access
85
- */
86
- function hasOwnProperty(obj, key) {
87
- return Object.prototype.hasOwnProperty.call(obj, key);
88
- }
89
-
90
- var assign = Object.assign;
91
-
92
- function invariant(condition,
93
- // eslint-disable-next-line @typescript-eslint/ban-types
94
- message) {
95
- if (condition) {
96
- return;
97
- }
98
- // If message is a string object (rather than string literal)
99
- // Throw the value directly as a string
100
- // Alternatively, throw an error with the message
101
- throw message instanceof String
102
- ? message.valueOf()
103
- : new Error(message ? optionalFunctionValue(message) : message);
104
- }
105
- // eslint-disable-next-line @typescript-eslint/ban-types
106
- function StringObject(value) {
107
- return new String(optionalFunctionValue(value));
108
- }
109
-
110
- function isStringValue(v) {
111
- return String(v) === v;
112
- }
113
-
114
- function isBoolean(value) {
115
- return !!value === value;
116
- }
117
-
118
- function mapFirst(array, callback) {
119
- var broke = false;
120
- var breakoutValue = null;
121
- for (var i = 0; i < array.length; i++) {
122
- callback(array[i], breakout, i);
123
- if (broke) {
124
- return breakoutValue;
125
- }
126
- }
127
- function breakout(conditional, value) {
128
- if (conditional) {
129
- broke = true;
130
- breakoutValue = value;
131
- }
132
- }
133
- }
134
-
135
- function isEmpty(value) {
136
- if (!value) {
137
- return true;
138
- }
139
- else if (hasOwnProperty(value, 'length')) {
140
- return lengthEquals(value, 0);
141
- }
142
- else if (typeof value === 'object') {
143
- return lengthEquals(Object.keys(value), 0);
144
- }
145
- return false;
146
- }
147
- var isNotEmpty = bindNot(isEmpty);
148
-
149
- function isPositive(value) {
150
- return greaterThan(value, 0);
151
- }
2
+ typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports, require('vest-utils'), require('context')) :
3
+ typeof define === 'function' && define.amd ? define(['exports', 'vest-utils', 'context'], factory) :
4
+ (global = typeof globalThis !== 'undefined' ? globalThis : global || self, factory(global.n4s = {}, global['vest-utils'], global.context));
5
+ }(this, (function (exports, vestUtils, context) { 'use strict';
152
6
 
153
7
  function endsWith(value, arg1) {
154
- return isStringValue(value) && isStringValue(arg1) && value.endsWith(arg1);
8
+ return vestUtils.isStringValue(value) && vestUtils.isStringValue(arg1) && value.endsWith(arg1);
155
9
  }
156
- var doesNotEndWith = bindNot(endsWith);
10
+ var doesNotEndWith = vestUtils.bindNot(endsWith);
157
11
 
158
12
  function equals(value, arg1) {
159
13
  return value === arg1;
160
14
  }
161
- var notEquals = bindNot(equals);
15
+ var notEquals = vestUtils.bindNot(equals);
162
16
 
163
17
  function greaterThanOrEquals(value, gte) {
164
- return numberEquals(value, gte) || greaterThan(value, gte);
18
+ return vestUtils.numberEquals(value, gte) || vestUtils.greaterThan(value, gte);
165
19
  }
166
20
 
167
21
  function inside(value, arg1) {
168
- if (isArray(arg1)) {
22
+ if (vestUtils.isArray(arg1)) {
169
23
  return arg1.indexOf(value) !== -1;
170
24
  }
171
25
  // both value and arg1 are strings
172
- if (isStringValue(arg1) && isStringValue(value)) {
26
+ if (vestUtils.isStringValue(arg1) && vestUtils.isStringValue(value)) {
173
27
  return arg1.indexOf(value) !== -1;
174
28
  }
175
29
  return false;
176
30
  }
177
- var notInside = bindNot(inside);
31
+ var notInside = vestUtils.bindNot(inside);
178
32
 
179
33
  function lessThan(value, lt) {
180
- return isNumeric(value) && isNumeric(lt) && Number(value) < Number(lt);
34
+ return vestUtils.isNumeric(value) && vestUtils.isNumeric(lt) && Number(value) < Number(lt);
181
35
  }
182
36
 
183
37
  function lessThanOrEquals(value, lte) {
184
- return numberEquals(value, lte) || lessThan(value, lte);
38
+ return vestUtils.numberEquals(value, lte) || lessThan(value, lte);
185
39
  }
186
40
 
187
41
  function isBetween(value, min, max) {
188
42
  return greaterThanOrEquals(value, min) && lessThanOrEquals(value, max);
189
43
  }
190
- var isNotBetween = bindNot(isBetween);
44
+ var isNotBetween = vestUtils.bindNot(isBetween);
191
45
 
192
46
  function isBlank(value) {
193
- return isNullish(value) || (isStringValue(value) && !value.trim());
47
+ return vestUtils.isNullish(value) || (vestUtils.isStringValue(value) && !value.trim());
194
48
  }
195
- var isNotBlank = bindNot(isBlank);
49
+ var isNotBlank = vestUtils.bindNot(isBlank);
196
50
 
197
- var isNotBoolean = bindNot(isBoolean);
51
+ var isNotBoolean = vestUtils.bindNot(vestUtils.isBoolean);
198
52
 
199
53
  /**
200
54
  * Validates that a given value is an even number
201
55
  */
202
56
  var isEven = function (value) {
203
- if (isNumeric(value)) {
57
+ if (vestUtils.isNumeric(value)) {
204
58
  return value % 2 === 0;
205
59
  }
206
60
  return false;
@@ -209,12 +63,12 @@
209
63
  function isKeyOf(key, obj) {
210
64
  return key in obj;
211
65
  }
212
- var isNotKeyOf = bindNot(isKeyOf);
66
+ var isNotKeyOf = vestUtils.bindNot(isKeyOf);
213
67
 
214
- function isNaN$1(value) {
68
+ function isNaN(value) {
215
69
  return Number.isNaN(value);
216
70
  }
217
- var isNotNaN = bindNot(isNaN$1);
71
+ var isNotNaN = vestUtils.bindNot(isNaN);
218
72
 
219
73
  function isNegative(value) {
220
74
  return lessThan(value, 0);
@@ -223,27 +77,27 @@
223
77
  function isNumber(value) {
224
78
  return Boolean(typeof value === 'number');
225
79
  }
226
- var isNotNumber = bindNot(isNumber);
80
+ var isNotNumber = vestUtils.bindNot(isNumber);
227
81
 
228
82
  /**
229
83
  * Validates that a given value is an odd number
230
84
  */
231
85
  var isOdd = function (value) {
232
- if (isNumeric(value)) {
86
+ if (vestUtils.isNumeric(value)) {
233
87
  return value % 2 !== 0;
234
88
  }
235
89
  return false;
236
90
  };
237
91
 
238
- var isNotString = bindNot(isStringValue);
92
+ var isNotString = vestUtils.bindNot(vestUtils.isStringValue);
239
93
 
240
94
  function isTruthy(value) {
241
95
  return !!value;
242
96
  }
243
- var isFalsy = bindNot(isTruthy);
97
+ var isFalsy = vestUtils.bindNot(isTruthy);
244
98
 
245
99
  function isValueOf(value, objectToCheck) {
246
- if (isNullish(objectToCheck)) {
100
+ if (vestUtils.isNullish(objectToCheck)) {
247
101
  return false;
248
102
  }
249
103
  for (var key in objectToCheck) {
@@ -253,7 +107,7 @@
253
107
  }
254
108
  return false;
255
109
  }
256
- var isNotValueOf = bindNot(isValueOf);
110
+ var isNotValueOf = vestUtils.bindNot(isValueOf);
257
111
 
258
112
  function longerThanOrEquals(value, arg1) {
259
113
  return greaterThanOrEquals(value.length, arg1);
@@ -263,14 +117,14 @@
263
117
  if (regex instanceof RegExp) {
264
118
  return regex.test(value);
265
119
  }
266
- else if (isStringValue(regex)) {
120
+ else if (vestUtils.isStringValue(regex)) {
267
121
  return new RegExp(regex).test(value);
268
122
  }
269
123
  else {
270
124
  return false;
271
125
  }
272
126
  }
273
- var notMatches = bindNot(matches);
127
+ var notMatches = vestUtils.bindNot(matches);
274
128
 
275
129
  function condition(value, callback) {
276
130
  try {
@@ -290,9 +144,9 @@
290
144
  }
291
145
 
292
146
  function startsWith(value, arg1) {
293
- return isStringValue(value) && isStringValue(arg1) && value.startsWith(arg1);
147
+ return vestUtils.isStringValue(value) && vestUtils.isStringValue(arg1) && value.startsWith(arg1);
294
148
  }
295
- var doesNotStartWith = bindNot(startsWith);
149
+ var doesNotStartWith = vestUtils.bindNot(startsWith);
296
150
 
297
151
  // eslint-disable-next-line @typescript-eslint/explicit-module-boundary-types, max-lines-per-function
298
152
  function rules() {
@@ -302,50 +156,50 @@
302
156
  doesNotStartWith: doesNotStartWith,
303
157
  endsWith: endsWith,
304
158
  equals: equals,
305
- greaterThan: greaterThan,
159
+ greaterThan: vestUtils.greaterThan,
306
160
  greaterThanOrEquals: greaterThanOrEquals,
307
- gt: greaterThan,
161
+ gt: vestUtils.greaterThan,
308
162
  gte: greaterThanOrEquals,
309
163
  inside: inside,
310
- isArray: isArray,
164
+ isArray: vestUtils.isArray,
311
165
  isBetween: isBetween,
312
166
  isBlank: isBlank,
313
- isBoolean: isBoolean,
314
- isEmpty: isEmpty,
167
+ isBoolean: vestUtils.isBoolean,
168
+ isEmpty: vestUtils.isEmpty,
315
169
  isEven: isEven,
316
170
  isFalsy: isFalsy,
317
171
  isKeyOf: isKeyOf,
318
- isNaN: isNaN$1,
172
+ isNaN: isNaN,
319
173
  isNegative: isNegative,
320
- isNotArray: isNotArray,
174
+ isNotArray: vestUtils.isNotArray,
321
175
  isNotBetween: isNotBetween,
322
176
  isNotBlank: isNotBlank,
323
177
  isNotBoolean: isNotBoolean,
324
- isNotEmpty: isNotEmpty,
178
+ isNotEmpty: vestUtils.isNotEmpty,
325
179
  isNotKeyOf: isNotKeyOf,
326
180
  isNotNaN: isNotNaN,
327
- isNotNull: isNotNull,
328
- isNotNullish: isNotNullish,
181
+ isNotNull: vestUtils.isNotNull,
182
+ isNotNullish: vestUtils.isNotNullish,
329
183
  isNotNumber: isNotNumber,
330
- isNotNumeric: isNotNumeric,
184
+ isNotNumeric: vestUtils.isNotNumeric,
331
185
  isNotString: isNotString,
332
- isNotUndefined: isNotUndefined,
186
+ isNotUndefined: vestUtils.isNotUndefined,
333
187
  isNotValueOf: isNotValueOf,
334
- isNull: isNull,
335
- isNullish: isNullish,
188
+ isNull: vestUtils.isNull,
189
+ isNullish: vestUtils.isNullish,
336
190
  isNumber: isNumber,
337
- isNumeric: isNumeric,
191
+ isNumeric: vestUtils.isNumeric,
338
192
  isOdd: isOdd,
339
- isPositive: isPositive,
340
- isString: isStringValue,
193
+ isPositive: vestUtils.isPositive,
194
+ isString: vestUtils.isStringValue,
341
195
  isTruthy: isTruthy,
342
- isUndefined: isUndefined,
196
+ isUndefined: vestUtils.isUndefined,
343
197
  isValueOf: isValueOf,
344
- lengthEquals: lengthEquals,
345
- lengthNotEquals: lengthNotEquals,
198
+ lengthEquals: vestUtils.lengthEquals,
199
+ lengthNotEquals: vestUtils.lengthNotEquals,
346
200
  lessThan: lessThan,
347
201
  lessThanOrEquals: lessThanOrEquals,
348
- longerThan: longerThan,
202
+ longerThan: vestUtils.longerThan,
349
203
  longerThanOrEquals: longerThanOrEquals,
350
204
  lt: lessThan,
351
205
  lte: lessThanOrEquals,
@@ -353,8 +207,8 @@
353
207
  notEquals: notEquals,
354
208
  notInside: notInside,
355
209
  notMatches: notMatches,
356
- numberEquals: numberEquals,
357
- numberNotEquals: numberNotEquals,
210
+ numberEquals: vestUtils.numberEquals,
211
+ numberNotEquals: vestUtils.numberNotEquals,
358
212
  shorterThan: shorterThan,
359
213
  shorterThanOrEquals: shorterThanOrEquals,
360
214
  startsWith: startsWith
@@ -369,75 +223,24 @@
369
223
  function eachEnforceRule(action) {
370
224
  for (var ruleName in baseRules) {
371
225
  var ruleFn = getRule(ruleName);
372
- if (isFunction(ruleFn)) {
226
+ if (vestUtils.isFunction(ruleFn)) {
373
227
  action(ruleName, ruleFn);
374
228
  }
375
229
  }
376
230
  }
377
231
 
378
- // eslint-disable-next-line max-lines-per-function
379
- function createContext(init) {
380
- var storage = { ancestry: [] };
381
- return {
382
- bind: bind,
383
- run: run,
384
- use: use,
385
- useX: useX
386
- };
387
- function useX(errorMessage) {
388
- var ctx = use();
389
- invariant(ctx, defaultTo(errorMessage, 'Context was used after it was closed'));
390
- return ctx;
391
- }
392
- function run(ctxRef, fn) {
393
- var _a;
394
- var parentContext = use();
395
- var out = assign({}, parentContext ? parentContext : {}, (_a = optionalFunctionValue(init, ctxRef, parentContext)) !== null && _a !== void 0 ? _a : ctxRef);
396
- var ctx = set(Object.freeze(out));
397
- storage.ancestry.unshift(ctx);
398
- var res = fn(ctx);
399
- clear();
400
- return res;
401
- }
402
- function bind(ctxRef, fn) {
403
- // eslint-disable-next-line @typescript-eslint/ban-ts-comment
404
- // @ts-ignore - this one's pretty hard to get right
405
- var returnedFn = function () {
406
- var runTimeArgs = [];
407
- for (var _i = 0; _i < arguments.length; _i++) {
408
- runTimeArgs[_i] = arguments[_i];
409
- }
410
- return run(ctxRef, function () {
411
- return fn.apply(void 0, runTimeArgs);
412
- });
413
- };
414
- return returnedFn;
415
- }
416
- function use() {
417
- return storage.ctx;
418
- }
419
- function set(value) {
420
- return (storage.ctx = value);
421
- }
422
- function clear() {
423
- var _a;
424
- storage.ancestry.shift();
425
- set((_a = storage.ancestry[0]) !== null && _a !== void 0 ? _a : null);
426
- }
427
- }
428
-
429
- var ctx = createContext(function (ctxRef, parentContext) {
232
+ var ctx = context.createContext(function (ctxRef, parentContext) {
430
233
  var base = {
431
234
  value: ctxRef.value,
432
235
  meta: ctxRef.meta || {}
433
236
  };
434
237
  if (!parentContext) {
435
- return assign(base, {
238
+ return vestUtils.assign(base, {
436
239
  parent: emptyParent
437
240
  });
438
241
  }
439
242
  else if (ctxRef.set) {
440
- return assign(base, {
243
+ return vestUtils.assign(base, {
441
244
  parent: function () { return stripContext(parentContext); }
442
245
  });
443
246
  }
@@ -484,7 +287,7 @@
484
287
 
485
288
  function isProxySupported() {
486
289
  try {
487
- return isFunction(Proxy);
290
+ return vestUtils.isFunction(Proxy);
488
291
  }
489
292
  catch (_a) {
490
293
  return false;
@@ -502,7 +305,7 @@
502
305
  return ruleReturn(true);
503
306
  }
504
307
  function defaultToPassing(callback) {
505
- return defaultTo(callback, passing());
308
+ return vestUtils.defaultTo(callback, passing());
506
309
  }
507
310
 
508
311
  /**
@@ -515,16 +318,16 @@
515
318
  }
516
319
  validateResult(result);
517
320
  // if result is boolean
518
- if (isBoolean(result)) {
321
+ if (vestUtils.isBoolean(result)) {
519
322
  return ruleReturn(result);
520
323
  }
521
324
  else {
522
- return ruleReturn(result.pass, optionalFunctionValue.apply(void 0, __spreadArray([result.message, ruleName, value], args, false)));
325
+ return ruleReturn(result.pass, vestUtils.optionalFunctionValue.apply(void 0, __spreadArray([result.message, ruleName, value], args, false)));
523
326
  }
524
327
  }
525
328
  function validateResult(result) {
526
329
  // if result is boolean, or if result.pass is boolean
527
- invariant(isBoolean(result) || (result && isBoolean(result.pass)), 'Incorrect return value for rule: ' + JSON.stringify(result));
330
+ vestUtils.invariant(vestUtils.isBoolean(result) || (result && vestUtils.isBoolean(result.pass)), 'Incorrect return value for rule: ' + JSON.stringify(result));
528
331
  }
529
332
 
530
333
  function enforceEager(value) {
@@ -570,9 +373,9 @@
570
373
  });
571
374
  // On rule failure (the result is false), we either throw an error
572
375
  // or throw a string value if the rule has a message defined in it.
573
- invariant(transformedResult.pass, isNullish(transformedResult.message)
376
+ vestUtils.invariant(transformedResult.pass, vestUtils.isNullish(transformedResult.message)
574
377
  ? "enforce/".concat(ruleName, " failed with ").concat(JSON.stringify(value))
575
- : StringObject(transformedResult.message));
378
+ : vestUtils.StringObject(transformedResult.message));
576
379
  return target;
577
380
  };
578
381
  }
@@ -597,10 +400,10 @@
597
400
  });
598
401
  var proxy = {
599
402
  run: function (value) {
600
- return defaultToPassing(mapFirst(registeredRules, function (rule, breakout) {
403
+ return defaultToPassing(vestUtils.mapFirst(registeredRules, function (rule, breakout) {
601
404
  var _a;
602
405
  var res = ctx.run({ value: value }, function () { return rule(value); });
603
- breakout(!res.pass, ruleReturn(!!res.pass, (_a = optionalFunctionValue(lazyMessage, value, res.message)) !== null && _a !== void 0 ? _a : res.message));
406
+ breakout(!res.pass, ruleReturn(!!res.pass, (_a = vestUtils.optionalFunctionValue(lazyMessage, value, res.message)) !== null && _a !== void 0 ? _a : res.message));
604
407
  }));
605
408
  },
606
409
  test: function (value) { return proxy.run(value).pass; },
@@ -662,12 +465,12 @@
662
465
  var target = {
663
466
  context: function () { return ctx.useX(); },
664
467
  extend: function (customRules) {
665
- assign(baseRules, customRules);
468
+ vestUtils.assign(baseRules, customRules);
666
469
  handleNoProxy(); // TODO: REMOVE when we stop supporting ES5
667
470
  }
668
471
  };
669
472
  handleNoProxy();
670
- return new Proxy(assign(enforceEager, target), {
473
+ return new Proxy(vestUtils.assign(enforceEager, target), {
671
474
  get: function (target, key) {
672
475
  if (key in target) {
673
476
  return target[key];
@@ -685,7 +488,7 @@
685
488
  // Only on the first rule access - start the chain of calls
686
489
  target[ruleName] = genEnforceLazy(ruleName);
687
490
  });
688
- return assign(enforceEager, target);
491
+ return vestUtils.assign(enforceEager, target);
689
492
  }
690
493
  }
691
494
  }
@@ -1 +1 @@
1
- "use strict";!function(n,t){"object"==typeof exports&&"undefined"!=typeof module?t(exports):"function"==typeof define&&define.amd?define(["exports"],t):t((n="undefined"!=typeof globalThis?globalThis:n||self).n4s={})}(this,(function(n){function t(n){return function(){for(var t=[],r=0;r<arguments.length;r++)t[r]=arguments[r];return!n.apply(void 0,t)}}function r(n){var t=Number(n);return!(isNaN(parseFloat(String(n)))||isNaN(Number(n))||!isFinite(t))}function e(n,t){return r(n)&&r(t)&&Number(n)===Number(t)}function u(n,t){return e(n.length,t)}function i(n,t){return r(n)&&r(t)&&Number(n)>Number(t)}function o(n){return null===n}function s(n){return void 0===n}function f(n){return null===n||s(n)}function a(n){return"function"==typeof n}function c(n){for(var t=[],r=1;r<arguments.length;r++)t[r-1]=arguments[r];return a(n)?n.apply(void 0,t):n}function l(n,t){var r;return null!==(r=c(n))&&void 0!==r?r:c(t)}function p(n){return!!Array.isArray(n)}function v(n,t){if(!n)throw t instanceof String?t.valueOf():Error(t?c(t):t)}function h(n){return String(n)===n}function N(n){return!!n===n}function g(n,t){function r(n,t){n&&(e=!0,u=t)}for(var e=!1,u=null,i=0;i<n.length;i++)if(t(n[i],r,i),e)return u}function d(n){return!n||(Object.prototype.hasOwnProperty.call(n,"length")?u(n,0):"object"==typeof n&&u(Object.keys(n),0))}function y(n,t){return h(n)&&h(t)&&n.endsWith(t)}function m(n,t){return n===t}function b(n,t){return e(n,t)||i(n,t)}function O(n,t){return!!(p(t)||h(t)&&h(n))&&-1!==t.indexOf(n)}function x(n,t){return r(n)&&r(t)&&Number(n)<Number(t)}function E(n,t){return e(n,t)||x(n,t)}function w(n,t,r){return b(n,t)&&E(n,r)}function T(n){return f(n)||h(n)&&!n.trim()}function q(n,t){return n in t}function S(n){return Number.isNaN(n)}function j(n){return"number"==typeof n}function P(n){return!!n}function A(n,t){if(f(t))return!1;for(var r in t)if(t[r]===n)return!0;return!1}function B(n,t){return t instanceof RegExp?t.test(n):!!h(t)&&new RegExp(t).test(n)}function W(n,t){return h(n)&&h(t)&&n.startsWith(t)}function k(n){for(var t in cn){var r=cn[t];a(r)&&n(t,r)}}function F(){return null}function I(n,t,r){if(r||2===arguments.length)for(var e,u=0,i=t.length;u<i;u++)!e&&u in t||(e||(e=Array.prototype.slice.call(t,0,u)),e[u]=t[u]);return n.concat(e||Array.prototype.slice.call(t))}function J(){try{return a(Proxy)}catch(n){return!1}}function K(n,t){return n={pass:n},t&&(n.message=t),n}function M(n,t,r){for(var e=[],u=3;u<arguments.length;u++)e[u-3]=arguments[u];return v(N(n)||n&&N(n.pass),"Incorrect return value for rule: "+JSON.stringify(n)),N(n)?K(n):K(n.pass,c.apply(void 0,I([n.message,t,r],e,!1)))}function R(n){function t(t,r,e){return function(){for(var u=[],i=0;i<arguments.length;i++)u[i]=arguments[i];return v((i=ln.run({value:n},(function(){return M.apply(void 0,I([r.apply(void 0,I([n],u,!1)),e,n],u,!1))}))).pass,f(i.message)?"enforce/".concat(e," failed with ").concat(JSON.stringify(n)):new String(c(i.message))),t}}var r={};if(!J())return k((function(n,e){r[n]=t(r,e,n)})),r;var e=new Proxy(r,{get:function(n,r){if(n=cn[r])return t(e,n,r)}});return e}function U(n){var t,r=[];return function n(e){return function(){for(var u=[],i=0;i<arguments.length;i++)u[i]=arguments[i];var o=cn[e];r.push((function(n){return M.apply(void 0,I([o.apply(void 0,I([n],u,!1)),e,n],u,!1))}));var s={run:function(n){return l(g(r,(function(r,e){var u,i=ln.run({value:n},(function(){return r(n)}));e(!i.pass,K(!!i.pass,null!==(u=c(t,n,i.message))&&void 0!==u?u:i.message))})),K(!0))},test:function(n){return s.run(n).pass},message:function(n){return n&&(t=n),s}};return J()?s=new Proxy(s,{get:function(t,r){return cn[r]?n(r):t[r]}}):(k((function(t){s[t]=n(t)})),s)}}(n)}var V=t(r),X=t(e),_=t(u),z=t(o),C=t(s),D=t(f),G=t(p),H=Object.assign,L=t(d),Q=t(y),Y=t(m),Z=t(O),$=t(w),nn=t(T),tn=t(N),rn=t(q),en=t(S),un=t(j),on=t(h),sn=t(P),fn=t(A),an=t(B),cn={condition:function(n,t){try{return t(n)}catch(n){return!1}},doesNotEndWith:Q,doesNotStartWith:t(W),endsWith:y,equals:m,greaterThan:i,greaterThanOrEquals:b,gt:i,gte:b,inside:O,isArray:p,isBetween:w,isBlank:T,isBoolean:N,isEmpty:d,isEven:function(n){return!!r(n)&&0==n%2},isFalsy:sn,isKeyOf:q,isNaN:S,isNegative:function(n){return x(n,0)},isNotArray:G,isNotBetween:$,isNotBlank:nn,isNotBoolean:tn,isNotEmpty:L,isNotKeyOf:rn,isNotNaN:en,isNotNull:z,isNotNullish:D,isNotNumber:un,isNotNumeric:V,isNotString:on,isNotUndefined:C,isNotValueOf:fn,isNull:o,isNullish:f,isNumber:j,isNumeric:r,isOdd:function(n){return!!r(n)&&0!=n%2},isPositive:function(n){return i(n,0)},isString:h,isTruthy:P,isUndefined:s,isValueOf:A,lengthEquals:u,lengthNotEquals:_,lessThan:x,lessThanOrEquals:E,longerThan:function(n,t){return i(n.length,t)},longerThanOrEquals:function(n,t){return b(n.length,t)},lt:x,lte:E,matches:B,notEquals:Y,notInside:Z,notMatches:an,numberEquals:e,numberNotEquals:X,shorterThan:function(n,t){return x(n.length,t)},shorterThanOrEquals:function(n,t){return E(n.length,t)},startsWith:W},ln=function(n){function t(t,u){var i,o,s=r();return t=H({},s||{},null!==(i=c(n,t,s))&&void 0!==i?i:t),i=e.ctx=Object.freeze(t),e.ancestry.unshift(i),u=u(i),e.ancestry.shift(),e.ctx=null!==(o=e.ancestry[0])&&void 0!==o?o:null,u}function r(){return e.ctx}var e={ancestry:[]};return{bind:function(n,r){return function(){for(var e=[],u=0;u<arguments.length;u++)e[u]=arguments[u];return t(n,(function(){return r.apply(void 0,e)}))}},run:t,use:r,useX:function(n){var t=r();return v(t,l(n,"Context was used after it was closed")),t}}}((function(n,t){var r={value:n.value,meta:n.meta||{}};return t?n.set?H(r,{parent:function(){return t?{value:t.value,meta:t.meta,parent:t.parent}:t}}):t:H(r,{parent:F})}));V=function(){function n(){if(!J())return k((function(n){t[n]=U(n)})),H(R,t)}var t={context:function(){return ln.useX()},extend:function(t){H(cn,t),n()}};return n(),new Proxy(H(R,t),{get:function(n,t){return t in n?n[t]:cn[t]?U(t):void 0}})}(),n.ctx=ln,n.enforce=V,Object.defineProperty(n,"__esModule",{value:!0})}));
1
+ "use strict";!function(n,t){"object"==typeof exports&&"undefined"!=typeof module?t(exports,require("vest-utils"),require("context")):"function"==typeof define&&define.amd?define(["exports","vest-utils","context"],t):t((n="undefined"!=typeof globalThis?globalThis:n||self).n4s={},n["vest-utils"],n.context)}(this,(function(n,t,e){function i(n,e){return t.isStringValue(n)&&t.isStringValue(e)&&n.endsWith(e)}function r(n,t){return n===t}function u(n,e){return t.numberEquals(n,e)||t.greaterThan(n,e)}function s(n,e){return!!(t.isArray(e)||t.isStringValue(e)&&t.isStringValue(n))&&-1!==e.indexOf(n)}function o(n,e){return t.isNumeric(n)&&t.isNumeric(e)&&Number(n)<Number(e)}function a(n,e){return t.numberEquals(n,e)||o(n,e)}function l(n,t,e){return u(n,t)&&a(n,e)}function c(n){return t.isNullish(n)||t.isStringValue(n)&&!n.trim()}function f(n,t){return n in t}function N(n){return Number.isNaN(n)}function g(n){return"number"==typeof n}function d(n){return!!n}function h(n,e){if(t.isNullish(e))return!1;for(var i in e)if(e[i]===n)return!0;return!1}function p(n,e){return e instanceof RegExp?e.test(n):!!t.isStringValue(e)&&new RegExp(e).test(n)}function m(n,e){return t.isStringValue(n)&&t.isStringValue(e)&&n.startsWith(e)}function v(n){for(var e in K){var i=K[e];t.isFunction(i)&&n(e,i)}}function y(){return null}function b(n,t,e){if(e||2===arguments.length)for(var i,r=0,u=t.length;r<u;r++)!i&&r in t||(i||(i=Array.prototype.slice.call(t,0,r)),i[r]=t[r]);return n.concat(i||Array.prototype.slice.call(t))}function E(){try{return t.isFunction(Proxy)}catch(n){return!1}}function q(n,t){return n={pass:n},t&&(n.message=t),n}function x(n,e,i){for(var r=[],u=3;u<arguments.length;u++)r[u-3]=arguments[u];return t.invariant(t.isBoolean(n)||n&&t.isBoolean(n.pass),"Incorrect return value for rule: "+JSON.stringify(n)),t.isBoolean(n)?q(n):q(n.pass,t.optionalFunctionValue.apply(void 0,b([n.message,e,i],r,!1)))}function S(n){function e(e,i,r){return function(){for(var u=[],s=0;s<arguments.length;s++)u[s]=arguments[s];return s=M.run({value:n},(function(){return x.apply(void 0,b([i.apply(void 0,b([n],u,!1)),r,n],u,!1))})),t.invariant(s.pass,t.isNullish(s.message)?"enforce/".concat(r," failed with ").concat(JSON.stringify(n)):t.StringObject(s.message)),e}}var i={};if(!E())return v((function(n,t){i[n]=e(i,t,n)})),i;var r=new Proxy(i,{get:function(n,t){if(n=K[t])return e(r,n,t)}});return r}function T(n){var e,i=[];return function n(r){return function(){for(var u=[],s=0;s<arguments.length;s++)u[s]=arguments[s];var o=K[r];i.push((function(n){return x.apply(void 0,b([o.apply(void 0,b([n],u,!1)),r,n],u,!1))}));var a={run:function(n){return t.defaultTo(t.mapFirst(i,(function(i,r){var u,s=M.run({value:n},(function(){return i(n)}));r(!s.pass,q(!!s.pass,null!==(u=t.optionalFunctionValue(e,n,s.message))&&void 0!==u?u:s.message))})),q(!0))},test:function(n){return a.run(n).pass},message:function(n){return n&&(e=n),a}};return E()?a=new Proxy(a,{get:function(t,e){return K[e]?n(e):t[e]}}):(v((function(t){a[t]=n(t)})),a)}}(n)}var O=t.bindNot(i),V=t.bindNot(r),B=t.bindNot(s),w=t.bindNot(l),A=t.bindNot(c),P=t.bindNot(t.isBoolean),F=t.bindNot(f),W=t.bindNot(N),U=t.bindNot(g),j=t.bindNot(t.isStringValue),k=t.bindNot(d),I=t.bindNot(h),J=t.bindNot(p),K={condition:function(n,t){try{return t(n)}catch(n){return!1}},doesNotEndWith:O,doesNotStartWith:t.bindNot(m),endsWith:i,equals:r,greaterThan:t.greaterThan,greaterThanOrEquals:u,gt:t.greaterThan,gte:u,inside:s,isArray:t.isArray,isBetween:l,isBlank:c,isBoolean:t.isBoolean,isEmpty:t.isEmpty,isEven:function(n){return!!t.isNumeric(n)&&0==n%2},isFalsy:k,isKeyOf:f,isNaN:N,isNegative:function(n){return o(n,0)},isNotArray:t.isNotArray,isNotBetween:w,isNotBlank:A,isNotBoolean:P,isNotEmpty:t.isNotEmpty,isNotKeyOf:F,isNotNaN:W,isNotNull:t.isNotNull,isNotNullish:t.isNotNullish,isNotNumber:U,isNotNumeric:t.isNotNumeric,isNotString:j,isNotUndefined:t.isNotUndefined,isNotValueOf:I,isNull:t.isNull,isNullish:t.isNullish,isNumber:g,isNumeric:t.isNumeric,isOdd:function(n){return!!t.isNumeric(n)&&0!=n%2},isPositive:t.isPositive,isString:t.isStringValue,isTruthy:d,isUndefined:t.isUndefined,isValueOf:h,lengthEquals:t.lengthEquals,lengthNotEquals:t.lengthNotEquals,lessThan:o,lessThanOrEquals:a,longerThan:t.longerThan,longerThanOrEquals:function(n,t){return u(n.length,t)},lt:o,lte:a,matches:p,notEquals:V,notInside:B,notMatches:J,numberEquals:t.numberEquals,numberNotEquals:t.numberNotEquals,shorterThan:function(n,t){return o(n.length,t)},shorterThanOrEquals:function(n,t){return a(n.length,t)},startsWith:m},M=e.createContext((function(n,e){var i={value:n.value,meta:n.meta||{}};return e?n.set?t.assign(i,{parent:function(){return e?{value:e.value,meta:e.meta,parent:e.parent}:e}}):e:t.assign(i,{parent:y})}));e=function(){function n(){if(!E())return v((function(n){e[n]=T(n)})),t.assign(S,e)}var e={context:function(){return M.useX()},extend:function(e){t.assign(K,e),n()}};return n(),new Proxy(t.assign(S,e),{get:function(n,t){return t in n?n[t]:K[t]?T(t):void 0}})}(),n.ctx=M,n.enforce=e,Object.defineProperty(n,"__esModule",{value:!0})}));
@@ -1,61 +1,8 @@
1
1
  (function (global, factory) {
2
- typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports, require('n4s')) :
3
- typeof define === 'function' && define.amd ? define(['exports', 'n4s'], factory) :
4
- (global = typeof globalThis !== 'undefined' ? globalThis : global || self, factory(global.schema = {}, global.n4s));
5
- }(this, (function (exports, n4s) { 'use strict';
6
-
7
- function isNull(value) {
8
- return value === null;
9
- }
10
-
11
- function isUndefined(value) {
12
- return value === undefined;
13
- }
14
-
15
- function isNullish(value) {
16
- return isNull(value) || isUndefined(value);
17
- }
18
-
19
- function isFunction(value) {
20
- return typeof value === 'function';
21
- }
22
-
23
- function optionalFunctionValue(value) {
24
- var args = [];
25
- for (var _i = 1; _i < arguments.length; _i++) {
26
- args[_i - 1] = arguments[_i];
27
- }
28
- return isFunction(value) ? value.apply(void 0, args) : value;
29
- }
30
-
31
- function defaultTo(value, defaultValue) {
32
- var _a;
33
- return (_a = optionalFunctionValue(value)) !== null && _a !== void 0 ? _a : optionalFunctionValue(defaultValue);
34
- }
35
-
36
- /**
37
- * A safe hasOwnProperty access
38
- */
39
- function hasOwnProperty(obj, key) {
40
- return Object.prototype.hasOwnProperty.call(obj, key);
41
- }
42
-
43
- function mapFirst(array, callback) {
44
- var broke = false;
45
- var breakoutValue = null;
46
- for (var i = 0; i < array.length; i++) {
47
- callback(array[i], breakout, i);
48
- if (broke) {
49
- return breakoutValue;
50
- }
51
- }
52
- function breakout(conditional, value) {
53
- if (conditional) {
54
- broke = true;
55
- breakoutValue = value;
56
- }
57
- }
58
- }
2
+ typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports, require('n4s'), require('vest-utils')) :
3
+ typeof define === 'function' && define.amd ? define(['exports', 'n4s', 'vest-utils'], factory) :
4
+ (global = typeof globalThis !== 'undefined' ? globalThis : global || self, factory(global.schema = {}, global.n4s, global['vest-utils']));
5
+ }(this, (function (exports, n4s, vestUtils) { 'use strict';
59
6
 
60
7
  function ruleReturn(pass, message) {
61
8
  var output = { pass: pass };
@@ -71,7 +18,7 @@
71
18
  return ruleReturn(true);
72
19
  }
73
20
  function defaultToPassing(callback) {
74
- return defaultTo(callback, passing());
21
+ return vestUtils.defaultTo(callback, passing());
75
22
  }
76
23
 
77
24
  function runLazyRule(lazyRule, currentValue) {
@@ -84,7 +31,7 @@
84
31
  }
85
32
 
86
33
  function isArrayOf(inputArray, currentRule) {
87
- return defaultToPassing(mapFirst(inputArray, function (currentValue, breakout, index) {
34
+ return defaultToPassing(vestUtils.mapFirst(inputArray, function (currentValue, breakout, index) {
88
35
  var res = n4s.ctx.run({ value: currentValue, set: true, meta: { index: index } }, function () { return runLazyRule(currentRule, currentValue); });
89
36
  breakout(!res.pass, res);
90
37
  }));
@@ -110,7 +57,7 @@
110
57
  }
111
58
 
112
59
  function optional(value, ruleChain) {
113
- if (isNullish(value)) {
60
+ if (vestUtils.isNullish(value)) {
114
61
  return passing();
115
62
  }
116
63
  return runLazyRule(ruleChain, value);
@@ -122,7 +69,7 @@
122
69
  return baseRes;
123
70
  }
124
71
  for (var key in inputObject) {
125
- if (!hasOwnProperty(shapeObject, key)) {
72
+ if (!vestUtils.hasOwnProperty(shapeObject, key)) {
126
73
  return failing();
127
74
  }
128
75
  }
@@ -1 +1 @@
1
- "use strict";!function(n,e){"object"==typeof exports&&"undefined"!=typeof module?e(exports,require("n4s")):"function"==typeof define&&define.amd?define(["exports","n4s"],e):e((n="undefined"!=typeof globalThis?globalThis:n||self).schema={},n.n4s)}(this,(function(n,e){function t(n){for(var e=[],t=1;t<arguments.length;t++)e[t-1]=arguments[t];return"function"==typeof n?n.apply(void 0,e):n}function r(n,e){return n={pass:n},e&&(n.message=e),n}function o(n,e){try{return n.run(e)}catch(n){return r(!1)}}function u(n,t){var u,f=function(r){var u=n[r],f=t[r];if(!(r=e.ctx.run({value:u,set:!0,meta:{key:r}},(function(){return o(f,u)}))).pass)return{value:r}};for(u in t){var i=f(u);if("object"==typeof i)return i.value}return r(!0)}e.enforce.extend({isArrayOf:function(n,u){return function(n,e){var r;return null!==(r=t(n))&&void 0!==r?r:t(e)}(function(n,e){function t(n,e){n&&(r=!0,o=e)}for(var r=!1,o=null,u=0;u<n.length;u++)if(e(n[u],t,u),r)return o}(n,(function(n,t,r){t(!(r=e.ctx.run({value:n,set:!0,meta:{index:r}},(function(){return o(u,n)}))).pass,r)})),r(!0))},loose:u,optional:function(n,e){return null==n?r(!0):o(e,n)},shape:function(n,e){var t=u(n,e);if(!t.pass)return t;for(var o in n)if(!Object.prototype.hasOwnProperty.call(e,o))return r(!1);return r(!0)}}),n.partial=function(n){var t,r={};for(t in n)r[t]=e.enforce.optional(n[t]);return r},Object.defineProperty(n,"__esModule",{value:!0})}));
1
+ "use strict";!function(e,n){"object"==typeof exports&&"undefined"!=typeof module?n(exports,require("n4s"),require("vest-utils")):"function"==typeof define&&define.amd?define(["exports","n4s","vest-utils"],n):n((e="undefined"!=typeof globalThis?globalThis:e||self).schema={},e.n4s,e["vest-utils"])}(this,(function(e,n,t){function r(e,n){return e={pass:e},n&&(e.message=n),e}function u(e,n){try{return e.run(n)}catch(e){return r(!1)}}function i(e,t){var i,o=function(r){var i=e[r],o=t[r];if(!(r=n.ctx.run({value:i,set:!0,meta:{key:r}},(function(){return u(o,i)}))).pass)return{value:r}};for(i in t){var s=o(i);if("object"==typeof s)return s.value}return r(!0)}n.enforce.extend({isArrayOf:function(e,i){return t.defaultTo(t.mapFirst(e,(function(e,t,r){t(!(r=n.ctx.run({value:e,set:!0,meta:{index:r}},(function(){return u(i,e)}))).pass,r)})),r(!0))},loose:i,optional:function(e,n){return t.isNullish(e)?r(!0):u(n,e)},shape:function(e,n){var u=i(e,n);if(!u.pass)return u;for(var o in e)if(!t.hasOwnProperty(n,o))return r(!1);return r(!0)}}),e.partial=function(e){var t,r={};for(t in e)r[t]=n.enforce.optional(e[t]);return r},Object.defineProperty(e,"__esModule",{value:!0})}));
package/package.json CHANGED
@@ -1,5 +1,5 @@
1
1
  {
2
- "version": "4.1.9",
2
+ "version": "4.2.0",
3
3
  "license": "MIT",
4
4
  "main": "./dist/cjs/n4s.js",
5
5
  "types": "./types/n4s.d.ts",
@@ -10,7 +10,7 @@
10
10
  "release": "vx release"
11
11
  },
12
12
  "dependencies": {
13
- "context": "^2.0.8",
13
+ "context": "^2.0.9",
14
14
  "vest-utils": "^0.0.2"
15
15
  },
16
16
  "module": "./dist/es/n4s.production.js",
@@ -4,6 +4,7 @@ type DropFirst<T extends unknown[]> = T extends [
4
4
  ] ? U : never;
5
5
  type Stringable = string | ((...args: any[]) => string);
6
6
  type CB = (...args: any[]) => any;
7
+ type EnforceCustomMatcher<F extends CB, R> = (...args: DropFirst<Parameters<F>>) => R;
7
8
  type RuleReturn = boolean | {
8
9
  pass: boolean;
9
10
  message?: Stringable;
@@ -121,17 +122,14 @@ type LazyRuleRunners = {
121
122
  run: (value: unknown) => RuleDetailedResult;
122
123
  };
123
124
  type LazyMessage = string | ((value: unknown, originalMessage?: Stringable) => string);
124
- declare function allOf(value: unknown, ...rules: Lazy[]): RuleDetailedResult;
125
- declare function anyOf(value: unknown, ...rules: Lazy[]): RuleDetailedResult;
126
- declare function noneOf(value: unknown, ...rules: Lazy[]): RuleDetailedResult;
127
- declare function oneOf(value: unknown, ...rules: Lazy[]): RuleDetailedResult;
125
+ type EnforceCompoundRule = (value: unknown, ...rules: Lazy[]) => RuleDetailedResult;
128
126
  declare global {
129
127
  namespace n4s {
130
128
  interface EnforceCustomMatchers<R> {
131
- allOf: (...args: DropFirst<Parameters<typeof allOf>>) => R;
132
- anyOf: (...args: DropFirst<Parameters<typeof anyOf>>) => R;
133
- noneOf: (...args: DropFirst<Parameters<typeof noneOf>>) => R;
134
- oneOf: (...args: DropFirst<Parameters<typeof oneOf>>) => R;
129
+ allOf: EnforceCustomMatcher<EnforceCompoundRule, R>;
130
+ anyOf: EnforceCustomMatcher<EnforceCompoundRule, R>;
131
+ noneOf: EnforceCustomMatcher<EnforceCompoundRule, R>;
132
+ oneOf: EnforceCustomMatcher<EnforceCompoundRule, R>;
135
133
  }
136
134
  }
137
135
  }
package/types/n4s.d.ts CHANGED
@@ -129,8 +129,7 @@ declare global {
129
129
  }
130
130
  }
131
131
  type IRules = n4s.IRules<Record<string, any>>;
132
- declare function enforceEager(value: RuleValue): IRules;
133
- type EnforceEager = typeof enforceEager;
132
+ type EnforceEager = (value: RuleValue) => IRules;
134
133
  type LazyRules = n4s.IRules<LazyRuleMethods>;
135
134
  type Lazy = LazyRules & LazyRuleMethods &
136
135
  // This is a "catch all" hack to make TS happy while not
package/types/schema.d.ts CHANGED
@@ -4,6 +4,7 @@ type DropFirst<T extends unknown[]> = T extends [
4
4
  ] ? U : never;
5
5
  type Stringable = string | ((...args: any[]) => string);
6
6
  type CB = (...args: any[]) => any;
7
+ type EnforceCustomMatcher<F extends CB, R> = (...args: DropFirst<Parameters<F>>) => R;
7
8
  type RuleReturn = boolean | {
8
9
  pass: boolean;
9
10
  message?: Stringable;
@@ -133,10 +134,10 @@ declare function partial<T extends Record<any, any>>(shapeObject: T): T;
133
134
  declare global {
134
135
  namespace n4s {
135
136
  interface EnforceCustomMatchers<R> {
136
- isArrayOf: (...args: DropFirst<Parameters<typeof isArrayOf>>) => R;
137
- loose: (...args: DropFirst<Parameters<typeof loose>>) => R;
138
- shape: (...args: DropFirst<Parameters<typeof shape>>) => R;
139
- optional: (...args: DropFirst<Parameters<typeof optional>>) => R;
137
+ isArrayOf: EnforceCustomMatcher<typeof isArrayOf, R>;
138
+ loose: EnforceCustomMatcher<typeof loose, R>;
139
+ shape: EnforceCustomMatcher<typeof shape, R>;
140
+ optional: EnforceCustomMatcher<typeof optional, R>;
140
141
  }
141
142
  }
142
143
  }