n4s 4.1.3 → 4.1.4
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/cjs/compose.development.js +1 -1
- package/dist/cjs/compounds.development.js +17 -2
- package/dist/cjs/compounds.production.js +1 -1
- package/dist/cjs/n4s.development.js +5 -5
- package/dist/cjs/n4s.production.js +1 -1
- package/dist/cjs/schema.development.js +1 -1
- package/dist/es/compose.development.js +1 -1
- package/dist/es/compounds.development.js +17 -2
- package/dist/es/compounds.production.js +1 -1
- package/dist/es/n4s.development.js +5 -5
- package/dist/es/n4s.production.js +1 -1
- package/dist/es/schema.development.js +1 -1
- package/dist/umd/compose.development.js +1 -1
- package/dist/umd/compounds.development.js +17 -2
- package/dist/umd/compounds.production.js +1 -1
- package/dist/umd/n4s.development.js +5 -5
- package/dist/umd/n4s.production.js +1 -1
- package/dist/umd/schema.development.js +1 -1
- package/package.json +2 -2
- package/types/compose.d.ts +20 -20
- package/types/compounds.d.ts +22 -22
- package/types/n4s.d.ts +30 -30
- package/types/schema.d.ts +24 -24
|
@@ -91,7 +91,7 @@ function compose() {
|
|
|
91
91
|
return n4s.ctx.run({ value: value }, function () {
|
|
92
92
|
return defaultToPassing(mapFirst(composites, function (composite, breakout) {
|
|
93
93
|
/* HACK: Just a small white lie. ~~HELP WANTED~~.
|
|
94
|
-
The ideal is that instead of `
|
|
94
|
+
The ideal is that instead of `LazyRuleRunners` We would simply use `Lazy` to begin with.
|
|
95
95
|
The problem is that lazy rules can't really be passed to this function due to some generic hell
|
|
96
96
|
so we're limiting it to a small set of functions.
|
|
97
97
|
*/
|
|
@@ -102,12 +102,27 @@ function noneOf(value) {
|
|
|
102
102
|
}));
|
|
103
103
|
}
|
|
104
104
|
|
|
105
|
+
function isNumeric(value) {
|
|
106
|
+
var str = String(value);
|
|
107
|
+
var num = Number(value);
|
|
108
|
+
var result = !isNaN(parseFloat(str)) && !isNaN(Number(value)) && isFinite(num);
|
|
109
|
+
return Boolean(result);
|
|
110
|
+
}
|
|
111
|
+
|
|
112
|
+
function numberEquals(value, eq) {
|
|
113
|
+
return isNumeric(value) && isNumeric(eq) && Number(value) === Number(eq);
|
|
114
|
+
}
|
|
115
|
+
|
|
105
116
|
function lengthEquals(value, arg1) {
|
|
106
|
-
return value.length
|
|
117
|
+
return numberEquals(value.length, arg1);
|
|
118
|
+
}
|
|
119
|
+
|
|
120
|
+
function greaterThan(value, gt) {
|
|
121
|
+
return isNumeric(value) && isNumeric(gt) && Number(value) > Number(gt);
|
|
107
122
|
}
|
|
108
123
|
|
|
109
124
|
function longerThan(value, arg1) {
|
|
110
|
-
return value.length
|
|
125
|
+
return greaterThan(value.length, arg1);
|
|
111
126
|
}
|
|
112
127
|
|
|
113
128
|
var REQUIRED_COUNT = 1;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
"use strict";var n=require("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){return"function"==typeof n}function u(n,r){var u;return null!==(u=function(n){for(var r=[],u=1;u<arguments.length;u++)r[u-1]=arguments[u];return t(n)?n.apply(void 0,r):n}(n))&&void 0!==u?u:r}function e(n,r){return n={pass:n},r&&(n.message=r),n}function f(){return e(!1)}function o(n){return u(n,f())}function i(n){return u(n,e(!0))}function c(n,r){try{return n.run(r)}catch(n){return f()}}function a(n,r){return n
|
|
1
|
+
"use strict";var n=require("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){return"function"==typeof n}function u(n,r){var u;return null!==(u=function(n){for(var r=[],u=1;u<arguments.length;u++)r[u-1]=arguments[u];return t(n)?n.apply(void 0,r):n}(n))&&void 0!==u?u:r}function e(n,r){return n={pass:n},r&&(n.message=r),n}function f(){return e(!1)}function o(n){return u(n,f())}function i(n){return u(n,e(!0))}function c(n,r){try{return n.run(r)}catch(n){return f()}}function a(n){var r=Number(n);return!(isNaN(parseFloat(String(n)))||isNaN(Number(n))||!isFinite(r))}function s(n,r){return function(n,r){return a(n)&&a(r)&&Number(n)===Number(r)}(n.length,r)}function l(n,r){return function(n,r){return a(n)&&a(r)&&Number(n)>Number(r)}(n.length,r)}n.enforce.extend({allOf:function(n){for(var t=[],u=1;u<arguments.length;u++)t[u-1]=arguments[u];return i(r(t,(function(r,t){(r=c(r,n)).pass||t(r)})))},anyOf:function(n){for(var t=[],u=1;u<arguments.length;u++)t[u-1]=arguments[u];return o(r(t,(function(r,t){(r=c(r,n)).pass&&t(r)})))},noneOf:function(n){for(var t=[],u=1;u<arguments.length;u++)t[u-1]=arguments[u];return i(r(t,(function(r,t){c(r,n).pass&&t(f())})))},oneOf:function(n){for(var r=[],t=1;t<arguments.length;t++)r[t-1]=arguments[t];var u=[];return r.some((function(r){if(l(u,1))return!1;(r=c(r,n)).pass&&u.push(r)})),e(s(u,1))}});
|
|
@@ -127,7 +127,7 @@ function isNumber(value) {
|
|
|
127
127
|
var isNotNumber = bindNot(isNumber);
|
|
128
128
|
|
|
129
129
|
function lengthEquals(value, arg1) {
|
|
130
|
-
return value.length
|
|
130
|
+
return numberEquals(value.length, arg1);
|
|
131
131
|
}
|
|
132
132
|
var lengthNotEquals = bindNot(lengthEquals);
|
|
133
133
|
|
|
@@ -207,11 +207,11 @@ function isValueOf(value, objectToCheck) {
|
|
|
207
207
|
var isNotValueOf = bindNot(isValueOf);
|
|
208
208
|
|
|
209
209
|
function longerThan(value, arg1) {
|
|
210
|
-
return value.length
|
|
210
|
+
return greaterThan(value.length, arg1);
|
|
211
211
|
}
|
|
212
212
|
|
|
213
213
|
function longerThanOrEquals(value, arg1) {
|
|
214
|
-
return value.length
|
|
214
|
+
return greaterThanOrEquals(value.length, arg1);
|
|
215
215
|
}
|
|
216
216
|
|
|
217
217
|
function matches(value, regex) {
|
|
@@ -237,11 +237,11 @@ function condition(value, callback) {
|
|
|
237
237
|
}
|
|
238
238
|
|
|
239
239
|
function shorterThan(value, arg1) {
|
|
240
|
-
return value.length
|
|
240
|
+
return lessThan(value.length, arg1);
|
|
241
241
|
}
|
|
242
242
|
|
|
243
243
|
function shorterThanOrEquals(value, arg1) {
|
|
244
|
-
return value.length
|
|
244
|
+
return lessThanOrEquals(value.length, arg1);
|
|
245
245
|
}
|
|
246
246
|
|
|
247
247
|
function startsWith(value, arg1) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
"use strict";Object.defineProperty(exports,"__esModule",{value:!0});var n=require("context"),r=Object.assign;function t(n){return"function"==typeof n}function e(n){return function(){for(var r=[],t=0;t<arguments.length;t++)r[t]=arguments[t];return!n.apply(void 0,r)}}function u(n){return null===n}var i=e(u);function o(n){return void 0===n}var a=e(o);function s(n){return u(n)||o(n)}var f=e(s);function c(n){return String(n)===n}function l(n,r){return c(n)&&c(r)&&n.endsWith(r)}var v=e(l);function N(n,r){return n===r}var p=e(N);function g(n){var r=Number(n);return!(isNaN(parseFloat(String(n)))||isNaN(Number(n))||!isFinite(r))}var h=e(g);function
|
|
1
|
+
"use strict";Object.defineProperty(exports,"__esModule",{value:!0});var n=require("context"),r=Object.assign;function t(n){return"function"==typeof n}function e(n){return function(){for(var r=[],t=0;t<arguments.length;t++)r[t]=arguments[t];return!n.apply(void 0,r)}}function u(n){return null===n}var i=e(u);function o(n){return void 0===n}var a=e(o);function s(n){return u(n)||o(n)}var f=e(s);function c(n){return String(n)===n}function l(n,r){return c(n)&&c(r)&&n.endsWith(r)}var v=e(l);function N(n,r){return n===r}var p=e(N);function g(n){var r=Number(n);return!(isNaN(parseFloat(String(n)))||isNaN(Number(n))||!isFinite(r))}var h=e(g);function y(n,r){return g(n)&&g(r)&&Number(n)>Number(r)}function m(n,r){return g(n)&&g(r)&&Number(n)===Number(r)}var d=e(m);function b(n,r){return m(n,r)||y(n,r)}function O(n){return!!Array.isArray(n)}var E=e(O);function x(n,r){return!!(O(r)||c(r)&&c(n))&&-1!==r.indexOf(n)}var q=e(x);function w(n,r){return g(n)&&g(r)&&Number(n)<Number(r)}function S(n,r){return m(n,r)||w(n,r)}function T(n,r,t){return b(n,r)&&S(n,t)}var P=e(T);function A(n){return s(n)||c(n)&&!n.trim()}var B=e(A);function W(n){return!!n===n}var j=e(W);function k(n){return"number"==typeof n}var F=e(k);function I(n,r){return m(n.length,r)}var J=e(I);function K(n){if(n){if(k(n))return 0===n;if(function(n,r){return Object.prototype.hasOwnProperty.call(n,r)}(n,"length"))return I(n,0);if("object"==typeof n)return I(Object.keys(n),0)}return!0}var M=e(K),R=function(n){return!!g(n)&&0==n%2};function U(n,r){return n in r}var V=e(U);function _(n){return Number.isNaN(n)}var C=e(_);function X(n){return w(n,0)}var z=function(n){return!!g(n)&&0!=n%2};function D(n){return y(n,0)}var G=e(c);function H(n){return!!n}var L=e(H);function Q(n,r){if(s(r))return!1;for(var t in r)if(r[t]===n)return!0;return!1}var Y=e(Q);function Z(n,r){return y(n.length,r)}function $(n,r){return b(n.length,r)}function nn(n,r){return r instanceof RegExp?r.test(n):!!c(r)&&new RegExp(r).test(n)}var rn=e(nn);function tn(n,r){try{return r(n)}catch(n){return!1}}function en(n,r){return w(n.length,r)}function un(n,r){return S(n.length,r)}function on(n,r){return c(n)&&c(r)&&n.startsWith(r)}var an=e(on);var sn={condition:tn,doesNotEndWith:v,doesNotStartWith:an,endsWith:l,equals:N,greaterThan:y,greaterThanOrEquals:b,gt:y,gte:b,inside:x,isArray:O,isBetween:T,isBlank:A,isBoolean:W,isEmpty:K,isEven:R,isFalsy:L,isKeyOf:U,isNaN:_,isNegative:X,isNotArray:E,isNotBetween:P,isNotBlank:B,isNotBoolean:j,isNotEmpty:M,isNotKeyOf:V,isNotNaN:C,isNotNull:i,isNotNullish:f,isNotNumber:F,isNotNumeric:h,isNotString:G,isNotUndefined:a,isNotValueOf:Y,isNull:u,isNullish:s,isNumber:k,isNumeric:g,isOdd:z,isPositive:D,isString:c,isTruthy:H,isUndefined:o,isValueOf:Q,lengthEquals:I,lengthNotEquals:J,lessThan:w,lessThanOrEquals:S,longerThan:Z,longerThanOrEquals:$,lt:w,lte:S,matches:nn,notEquals:p,notInside:q,notMatches:rn,numberEquals:m,numberNotEquals:d,shorterThan:en,shorterThanOrEquals:un,startsWith:on};function fn(n){return sn[n]}function cn(n){for(var r in sn){var e=fn(r);t(e)&&n(r,e)}}var ln=n.createContext((function(n,t){var e={value:n.value,meta:n.meta||{}};return t?n.set?r(e,{parent:function(){return function(n){return n?{value:n.value,meta:n.meta,parent:n.parent}:n}(t)}}):t:r(e,{parent:vn})}));function vn(){return null}function Nn(n,r,t){if(t||2===arguments.length)for(var e,u=0,i=r.length;u<i;u++)!e&&u in r||(e||(e=Array.prototype.slice.call(r,0,u)),e[u]=r[u]);return n.concat(e||Array.prototype.slice.call(r))}function pn(n){for(var r=[],e=1;e<arguments.length;e++)r[e-1]=arguments[e];return t(n)?n.apply(void 0,r):n}function gn(n,r){if(!n)throw r instanceof String?r.valueOf():Error(r?pn(r):r)}function hn(){try{return t(Proxy)}catch(n){return!1}}function yn(n,r){return n={pass:n},r&&(n.message=r),n}function mn(n){return function(n,r){var t;return null!==(t=pn(n))&&void 0!==t?t:r}(n,yn(!0))}function dn(n,r,t){for(var e=[],u=3;u<arguments.length;u++)e[u-3]=arguments[u];return bn(n),W(n)?yn(n):yn(n.pass,pn.apply(void 0,Nn([n.message,r,t],e,!1)))}function bn(n){gn(W(n)||n&&W(n.pass),"Incorrect return value for rule: "+JSON.stringify(n))}function On(n){function r(r,t,e){return function(){for(var u=[],i=0;i<arguments.length;i++)u[i]=arguments[i];return gn((i=dn.apply(void 0,Nn([ln.run({value:n},(function(){return t.apply(void 0,Nn([n],u,!1))})),e,n],u,!1))).pass,K(i.message)?"enforce/".concat(e," failed with ").concat(JSON.stringify(n)):new String(i.message)),r}}var t={};if(!hn())return cn((function(n,e){t[n]=r(t,e,n)})),t;var e=new Proxy(t,{get:function(n,t){if(n=fn(t))return r(e,n,t)}});return e}function En(n,r){function t(n){e=!0,u=n}for(var e=!1,u=null,i=0;i<n.length;i++)if(r(n[i],t,i),e)return u}function xn(n){var r,t=[];return function n(e){return function(){for(var u=[],i=0;i<arguments.length;i++)u[i]=arguments[i];var o=fn(e);t.push((function(n){return dn.apply(void 0,Nn([o.apply(void 0,Nn([n],u,!1)),e,n],u,!1))}));var a={run:function(n){return mn(En(t,(function(t,e){var u,i=ln.run({value:n},(function(){return t(n)}));i.pass||e(yn(!!i.pass,null!==(u=pn(r,n,i.message))&&void 0!==u?u:i.message))})))},test:function(n){return a.run(n).pass},message:function(n){return n&&(r=n),a}};return hn()?a=new Proxy(a,{get:function(r,t){return fn(t)?n(t):r[t]}}):(cn((function(r){a[r]=n(r)})),a)}}(n)}var qn,wn=(qn={context:function(){return ln.useX()},extend:function(n){r(sn,n)}},hn()?new Proxy(r(On,qn),{get:function(n,r){return r in n?n[r]:fn(r)?xn(r):void 0}}):(cn((function(n){qn[n]=xn(n)})),r(On,qn)));exports.ctx=ln,exports.enforce=wn;
|
|
@@ -130,7 +130,7 @@ function shape(inputObject, shapeObject) {
|
|
|
130
130
|
}
|
|
131
131
|
|
|
132
132
|
// Help needed improving the typings of this file.
|
|
133
|
-
// Ideally, we'd be able to extend
|
|
133
|
+
// Ideally, we'd be able to extend ShapeObject, but that's not possible.
|
|
134
134
|
function partial(shapeObject) {
|
|
135
135
|
var output = {};
|
|
136
136
|
for (var key in shapeObject) {
|
|
@@ -89,7 +89,7 @@ function compose() {
|
|
|
89
89
|
return ctx.run({ value: value }, function () {
|
|
90
90
|
return defaultToPassing(mapFirst(composites, function (composite, breakout) {
|
|
91
91
|
/* HACK: Just a small white lie. ~~HELP WANTED~~.
|
|
92
|
-
The ideal is that instead of `
|
|
92
|
+
The ideal is that instead of `LazyRuleRunners` We would simply use `Lazy` to begin with.
|
|
93
93
|
The problem is that lazy rules can't really be passed to this function due to some generic hell
|
|
94
94
|
so we're limiting it to a small set of functions.
|
|
95
95
|
*/
|
|
@@ -100,12 +100,27 @@ function noneOf(value) {
|
|
|
100
100
|
}));
|
|
101
101
|
}
|
|
102
102
|
|
|
103
|
+
function isNumeric(value) {
|
|
104
|
+
var str = String(value);
|
|
105
|
+
var num = Number(value);
|
|
106
|
+
var result = !isNaN(parseFloat(str)) && !isNaN(Number(value)) && isFinite(num);
|
|
107
|
+
return Boolean(result);
|
|
108
|
+
}
|
|
109
|
+
|
|
110
|
+
function numberEquals(value, eq) {
|
|
111
|
+
return isNumeric(value) && isNumeric(eq) && Number(value) === Number(eq);
|
|
112
|
+
}
|
|
113
|
+
|
|
103
114
|
function lengthEquals(value, arg1) {
|
|
104
|
-
return value.length
|
|
115
|
+
return numberEquals(value.length, arg1);
|
|
116
|
+
}
|
|
117
|
+
|
|
118
|
+
function greaterThan(value, gt) {
|
|
119
|
+
return isNumeric(value) && isNumeric(gt) && Number(value) > Number(gt);
|
|
105
120
|
}
|
|
106
121
|
|
|
107
122
|
function longerThan(value, arg1) {
|
|
108
|
-
return value.length
|
|
123
|
+
return greaterThan(value.length, arg1);
|
|
109
124
|
}
|
|
110
125
|
|
|
111
126
|
var REQUIRED_COUNT = 1;
|
|
@@ -1 +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,
|
|
1
|
+
import{enforce as n}from"n4s";function r(n,r){function t(n){u=!0,e=n}for(var u=!1,e=null,o=0;o<n.length;o++)if(r(n[o],t,o),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)}}function o(n){var r=Number(n);return!(isNaN(parseFloat(String(n)))||isNaN(Number(n))||!isFinite(r))}function f(n,r){return o(n)&&o(r)&&Number(n)===Number(r)}n.extend({allOf:function(n){for(var o=[],f=1;f<arguments.length;f++)o[f-1]=arguments[f];return t(r(o,(function(r,t){(r=e(r,n)).pass||t(r)})),u(!0))},anyOf:function(n){for(var o=[],f=1;f<arguments.length;f++)o[f-1]=arguments[f];return t(r(o,(function(r,t){(r=e(r,n)).pass&&t(r)})),u(!1))},noneOf:function(n){for(var o=[],f=1;f<arguments.length;f++)o[f-1]=arguments[f];return t(r(o,(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 i=[];return r.some((function(r){var t=i.length;if(o(t)&&o(1)&&Number(t)>Number(1))return!1;(r=e(r,n)).pass&&i.push(r)})),u(f(i.length,1))}});
|
|
@@ -123,7 +123,7 @@ function isNumber(value) {
|
|
|
123
123
|
var isNotNumber = bindNot(isNumber);
|
|
124
124
|
|
|
125
125
|
function lengthEquals(value, arg1) {
|
|
126
|
-
return value.length
|
|
126
|
+
return numberEquals(value.length, arg1);
|
|
127
127
|
}
|
|
128
128
|
var lengthNotEquals = bindNot(lengthEquals);
|
|
129
129
|
|
|
@@ -203,11 +203,11 @@ function isValueOf(value, objectToCheck) {
|
|
|
203
203
|
var isNotValueOf = bindNot(isValueOf);
|
|
204
204
|
|
|
205
205
|
function longerThan(value, arg1) {
|
|
206
|
-
return value.length
|
|
206
|
+
return greaterThan(value.length, arg1);
|
|
207
207
|
}
|
|
208
208
|
|
|
209
209
|
function longerThanOrEquals(value, arg1) {
|
|
210
|
-
return value.length
|
|
210
|
+
return greaterThanOrEquals(value.length, arg1);
|
|
211
211
|
}
|
|
212
212
|
|
|
213
213
|
function matches(value, regex) {
|
|
@@ -233,11 +233,11 @@ function condition(value, callback) {
|
|
|
233
233
|
}
|
|
234
234
|
|
|
235
235
|
function shorterThan(value, arg1) {
|
|
236
|
-
return value.length
|
|
236
|
+
return lessThan(value.length, arg1);
|
|
237
237
|
}
|
|
238
238
|
|
|
239
239
|
function shorterThanOrEquals(value, arg1) {
|
|
240
|
-
return value.length
|
|
240
|
+
return lessThanOrEquals(value.length, arg1);
|
|
241
241
|
}
|
|
242
242
|
|
|
243
243
|
function startsWith(value, arg1) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{createContext as n}from"context";var r=Object.assign;function t(n){return"function"==typeof n}function e(n){return function(){for(var r=[],t=0;t<arguments.length;t++)r[t]=arguments[t];return!n.apply(void 0,r)}}function u(n){return null===n}var i=e(u);function o(n){return void 0===n}var a=e(o);function s(n){return null===n||o(n)}var f=e(s);function c(n){return String(n)===n}function l(n,r){return c(n)&&c(r)&&n.endsWith(r)}var v=e(l);function N(n,r){return n===r}var g=e(N);function h(n){var r=Number(n);return!(isNaN(parseFloat(String(n)))||isNaN(Number(n))||!isFinite(r))}var p=e(h);function
|
|
1
|
+
import{createContext as n}from"context";var r=Object.assign;function t(n){return"function"==typeof n}function e(n){return function(){for(var r=[],t=0;t<arguments.length;t++)r[t]=arguments[t];return!n.apply(void 0,r)}}function u(n){return null===n}var i=e(u);function o(n){return void 0===n}var a=e(o);function s(n){return null===n||o(n)}var f=e(s);function c(n){return String(n)===n}function l(n,r){return c(n)&&c(r)&&n.endsWith(r)}var v=e(l);function N(n,r){return n===r}var g=e(N);function h(n){var r=Number(n);return!(isNaN(parseFloat(String(n)))||isNaN(Number(n))||!isFinite(r))}var p=e(h);function y(n,r){return h(n)&&h(r)&&Number(n)>Number(r)}function m(n,r){return h(n)&&h(r)&&Number(n)===Number(r)}var d=e(m);function b(n,r){return m(n,r)||y(n,r)}function O(n){return!!Array.isArray(n)}var E=e(O);function x(n,r){return!!(O(r)||c(r)&&c(n))&&-1!==r.indexOf(n)}var q=e(x);function w(n,r){return h(n)&&h(r)&&Number(n)<Number(r)}function S(n,r){return m(n,r)||w(n,r)}function T(n,r,t){return b(n,r)&&S(n,t)}var A=e(T);function B(n){return s(n)||c(n)&&!n.trim()}var P=e(B);function W(n){return!!n===n}var j=e(W);function k(n){return"number"==typeof n}var F=e(k);function I(n,r){return m(n.length,r)}var J=e(I);function K(n){if(n){if(k(n))return 0===n;if(Object.prototype.hasOwnProperty.call(n,"length"))return I(n,0);if("object"==typeof n)return I(Object.keys(n),0)}return!0}var R=e(K);function U(n,r){return n in r}var V=e(U);function M(n){return Number.isNaN(n)}var X=e(M),z=e(c);function C(n){return!!n}var D=e(C);function G(n,r){if(s(r))return!1;for(var t in r)if(r[t]===n)return!0;return!1}var H=e(G);function L(n,r){return r instanceof RegExp?r.test(n):!!c(r)&&new RegExp(r).test(n)}var Q=e(L);function Y(n,r){return c(n)&&c(r)&&n.startsWith(r)}var Z={condition:function(n,r){try{return r(n)}catch(n){return!1}},doesNotEndWith:v,doesNotStartWith:e(Y),endsWith:l,equals:N,greaterThan:y,greaterThanOrEquals:b,gt:y,gte:b,inside:x,isArray:O,isBetween:T,isBlank:B,isBoolean:W,isEmpty:K,isEven:function(n){return!!h(n)&&0==n%2},isFalsy:D,isKeyOf:U,isNaN:M,isNegative:function(n){return w(n,0)},isNotArray:E,isNotBetween:A,isNotBlank:P,isNotBoolean:j,isNotEmpty:R,isNotKeyOf:V,isNotNaN:X,isNotNull:i,isNotNullish:f,isNotNumber:F,isNotNumeric:p,isNotString:z,isNotUndefined:a,isNotValueOf:H,isNull:u,isNullish:s,isNumber:k,isNumeric:h,isOdd:function(n){return!!h(n)&&0!=n%2},isPositive:function(n){return y(n,0)},isString:c,isTruthy:C,isUndefined:o,isValueOf:G,lengthEquals:I,lengthNotEquals:J,lessThan:w,lessThanOrEquals:S,longerThan:function(n,r){return y(n.length,r)},longerThanOrEquals:function(n,r){return b(n.length,r)},lt:w,lte:S,matches:L,notEquals:g,notInside:q,notMatches:Q,numberEquals:m,numberNotEquals:d,shorterThan:function(n,r){return w(n.length,r)},shorterThanOrEquals:function(n,r){return S(n.length,r)},startsWith:Y};function $(n){for(var r in Z){var e=Z[r];t(e)&&n(r,e)}}var _=n((function(n,t){var e={value:n.value,meta:n.meta||{}};return t?n.set?r(e,{parent:function(){return t?{value:t.value,meta:t.meta,parent:t.parent}:t}}):t:r(e,{parent:nn})}));function nn(){return null}function rn(n,r,t){if(t||2===arguments.length)for(var e,u=0,i=r.length;u<i;u++)!e&&u in r||(e||(e=Array.prototype.slice.call(r,0,u)),e[u]=r[u]);return n.concat(e||Array.prototype.slice.call(r))}function tn(n){for(var r=[],e=1;e<arguments.length;e++)r[e-1]=arguments[e];return t(n)?n.apply(void 0,r):n}function en(n,r){if(!n)throw r instanceof String?r.valueOf():Error(r?tn(r):r)}function un(){try{return t(Proxy)}catch(n){return!1}}function on(n,r){var t;return null!==(t=tn(n))&&void 0!==t?t:r}function an(n,r){return n={pass:n},r&&(n.message=r),n}function sn(n,r,t){for(var e=[],u=3;u<arguments.length;u++)e[u-3]=arguments[u];return en(W(n)||n&&W(n.pass),"Incorrect return value for rule: "+JSON.stringify(n)),W(n)?an(n):an(n.pass,tn.apply(void 0,rn([n.message,r,t],e,!1)))}function fn(n){function r(r,t,e){return function(){for(var u=[],i=0;i<arguments.length;i++)u[i]=arguments[i];return en((i=sn.apply(void 0,rn([_.run({value:n},(function(){return t.apply(void 0,rn([n],u,!1))})),e,n],u,!1))).pass,K(i.message)?"enforce/".concat(e," failed with ").concat(JSON.stringify(n)):new String(i.message)),r}}var t={};if(!un())return $((function(n,e){t[n]=r(t,e,n)})),t;var e=new Proxy(t,{get:function(n,t){if(n=Z[t])return r(e,n,t)}});return e}function cn(n,r){function t(n){e=!0,u=n}for(var e=!1,u=null,i=0;i<n.length;i++)if(r(n[i],t,i),e)return u}function ln(n){var r,t=[];return function n(e){return function(){for(var u=[],i=0;i<arguments.length;i++)u[i]=arguments[i];var o=Z[e];t.push((function(n){return sn.apply(void 0,rn([o.apply(void 0,rn([n],u,!1)),e,n],u,!1))}));var a={run:function(n){return on(cn(t,(function(t,e){var u,i=_.run({value:n},(function(){return t(n)}));i.pass||e(an(!!i.pass,null!==(u=tn(r,n,i.message))&&void 0!==u?u:i.message))})),an(!0))},test:function(n){return a.run(n).pass},message:function(n){return n&&(r=n),a}};return un()?a=new Proxy(a,{get:function(r,t){return Z[t]?n(t):r[t]}}):($((function(r){a[r]=n(r)})),a)}}(n)}var vn,Nn=(vn={context:function(){return _.useX()},extend:function(n){r(Z,n)}},un()?new Proxy(r(fn,vn),{get:function(n,r){return r in n?n[r]:Z[r]?ln(r):void 0}}):($((function(n){vn[n]=ln(n)})),r(fn,vn)));export{_ as ctx,Nn as enforce};
|
|
@@ -126,7 +126,7 @@ function shape(inputObject, shapeObject) {
|
|
|
126
126
|
}
|
|
127
127
|
|
|
128
128
|
// Help needed improving the typings of this file.
|
|
129
|
-
// Ideally, we'd be able to extend
|
|
129
|
+
// Ideally, we'd be able to extend ShapeObject, but that's not possible.
|
|
130
130
|
function partial(shapeObject) {
|
|
131
131
|
var output = {};
|
|
132
132
|
for (var key in shapeObject) {
|
|
@@ -93,7 +93,7 @@
|
|
|
93
93
|
return n4s.ctx.run({ value: value }, function () {
|
|
94
94
|
return defaultToPassing(mapFirst(composites, function (composite, breakout) {
|
|
95
95
|
/* HACK: Just a small white lie. ~~HELP WANTED~~.
|
|
96
|
-
The ideal is that instead of `
|
|
96
|
+
The ideal is that instead of `LazyRuleRunners` We would simply use `Lazy` to begin with.
|
|
97
97
|
The problem is that lazy rules can't really be passed to this function due to some generic hell
|
|
98
98
|
so we're limiting it to a small set of functions.
|
|
99
99
|
*/
|
|
@@ -104,12 +104,27 @@
|
|
|
104
104
|
}));
|
|
105
105
|
}
|
|
106
106
|
|
|
107
|
+
function isNumeric(value) {
|
|
108
|
+
var str = String(value);
|
|
109
|
+
var num = Number(value);
|
|
110
|
+
var result = !isNaN(parseFloat(str)) && !isNaN(Number(value)) && isFinite(num);
|
|
111
|
+
return Boolean(result);
|
|
112
|
+
}
|
|
113
|
+
|
|
114
|
+
function numberEquals(value, eq) {
|
|
115
|
+
return isNumeric(value) && isNumeric(eq) && Number(value) === Number(eq);
|
|
116
|
+
}
|
|
117
|
+
|
|
107
118
|
function lengthEquals(value, arg1) {
|
|
108
|
-
return value.length
|
|
119
|
+
return numberEquals(value.length, arg1);
|
|
120
|
+
}
|
|
121
|
+
|
|
122
|
+
function greaterThan(value, gt) {
|
|
123
|
+
return isNumeric(value) && isNumeric(gt) && Number(value) > Number(gt);
|
|
109
124
|
}
|
|
110
125
|
|
|
111
126
|
function longerThan(value, arg1) {
|
|
112
|
-
return value.length
|
|
127
|
+
return greaterThan(value.length, arg1);
|
|
113
128
|
}
|
|
114
129
|
|
|
115
130
|
var REQUIRED_COUNT = 1;
|
|
@@ -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,e){function
|
|
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,e){function r(n){t=!0,u=n}for(var t=!1,u=null,f=0;f<n.length;f++)if(e(n[f],r,f),t)return u}function r(n,e){var r;return null!==(r=function(n){for(var e=[],r=1;r<arguments.length;r++)e[r-1]=arguments[r];return"function"==typeof n?n.apply(void 0,e):n}(n))&&void 0!==r?r:e}function t(n,e){return n={pass:n},e&&(n.message=e),n}function u(n,e){try{return n.run(e)}catch(n){return t(!1)}}function f(n){var e=Number(n);return!(isNaN(parseFloat(String(n)))||isNaN(Number(n))||!isFinite(e))}function o(n,e){return f(n)&&f(e)&&Number(n)===Number(e)}n.enforce.extend({allOf:function(n){for(var f=[],o=1;o<arguments.length;o++)f[o-1]=arguments[o];return r(e(f,(function(e,r){(e=u(e,n)).pass||r(e)})),t(!0))},anyOf:function(n){for(var f=[],o=1;o<arguments.length;o++)f[o-1]=arguments[o];return r(e(f,(function(e,r){(e=u(e,n)).pass&&r(e)})),t(!1))},noneOf:function(n){for(var f=[],o=1;o<arguments.length;o++)f[o-1]=arguments[o];return r(e(f,(function(e,r){u(e,n).pass&&r(t(!1))})),t(!0))},oneOf:function(n){for(var e=[],r=1;r<arguments.length;r++)e[r-1]=arguments[r];var i=[];return e.some((function(e){var r=i.length;if(f(r)&&f(1)&&Number(r)>Number(1))return!1;(e=u(e,n)).pass&&i.push(e)})),t(o(i.length,1))}})}));
|
|
@@ -127,7 +127,7 @@
|
|
|
127
127
|
var isNotNumber = bindNot(isNumber);
|
|
128
128
|
|
|
129
129
|
function lengthEquals(value, arg1) {
|
|
130
|
-
return value.length
|
|
130
|
+
return numberEquals(value.length, arg1);
|
|
131
131
|
}
|
|
132
132
|
var lengthNotEquals = bindNot(lengthEquals);
|
|
133
133
|
|
|
@@ -207,11 +207,11 @@
|
|
|
207
207
|
var isNotValueOf = bindNot(isValueOf);
|
|
208
208
|
|
|
209
209
|
function longerThan(value, arg1) {
|
|
210
|
-
return value.length
|
|
210
|
+
return greaterThan(value.length, arg1);
|
|
211
211
|
}
|
|
212
212
|
|
|
213
213
|
function longerThanOrEquals(value, arg1) {
|
|
214
|
-
return value.length
|
|
214
|
+
return greaterThanOrEquals(value.length, arg1);
|
|
215
215
|
}
|
|
216
216
|
|
|
217
217
|
function matches(value, regex) {
|
|
@@ -237,11 +237,11 @@
|
|
|
237
237
|
}
|
|
238
238
|
|
|
239
239
|
function shorterThan(value, arg1) {
|
|
240
|
-
return value.length
|
|
240
|
+
return lessThan(value.length, arg1);
|
|
241
241
|
}
|
|
242
242
|
|
|
243
243
|
function shorterThanOrEquals(value, arg1) {
|
|
244
|
-
return value.length
|
|
244
|
+
return lessThanOrEquals(value.length, arg1);
|
|
245
245
|
}
|
|
246
246
|
|
|
247
247
|
function startsWith(value, arg1) {
|
|
@@ -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"==typeof n}function r(n){return function(){for(var t=[],r=0;r<arguments.length;r++)t[r]=arguments[r];return!n.apply(void 0,t)}}function e(n){return null===n}function u(n){return void 0===n}function i(n){return null===n||u(n)}function o(n){return String(n)===n}function s(n,t){return o(n)&&o(t)&&n.endsWith(t)}function f(n,t){return n===t}function a(n){var t=Number(n);return!(isNaN(parseFloat(String(n)))||isNaN(Number(n))||!isFinite(t))}function c(n,t){return a(n)&&a(t)&&Number(n)>Number(t)}function l(n,t){return a(n)&&a(t)&&Number(n)===Number(t)}function
|
|
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"==typeof n}function r(n){return function(){for(var t=[],r=0;r<arguments.length;r++)t[r]=arguments[r];return!n.apply(void 0,t)}}function e(n){return null===n}function u(n){return void 0===n}function i(n){return null===n||u(n)}function o(n){return String(n)===n}function s(n,t){return o(n)&&o(t)&&n.endsWith(t)}function f(n,t){return n===t}function a(n){var t=Number(n);return!(isNaN(parseFloat(String(n)))||isNaN(Number(n))||!isFinite(t))}function c(n,t){return a(n)&&a(t)&&Number(n)>Number(t)}function l(n,t){return a(n)&&a(t)&&Number(n)===Number(t)}function p(n,t){return l(n,t)||c(n,t)}function h(n){return!!Array.isArray(n)}function v(n,t){return!!(h(t)||o(t)&&o(n))&&-1!==t.indexOf(n)}function N(n,t){return a(n)&&a(t)&&Number(n)<Number(t)}function g(n,t){return l(n,t)||N(n,t)}function d(n,t,r){return p(n,t)&&g(n,r)}function y(n){return i(n)||o(n)&&!n.trim()}function m(n){return!!n===n}function b(n){return"number"==typeof n}function x(n,t){return l(n.length,t)}function O(n){if(n){if(b(n))return 0===n;if(Object.prototype.hasOwnProperty.call(n,"length"))return x(n,0);if("object"==typeof n)return x(Object.keys(n),0)}return!0}function E(n,t){return n in t}function w(n){return Number.isNaN(n)}function T(n){return!!n}function q(n,t){if(i(t))return!1;for(var r in t)if(t[r]===n)return!0;return!1}function S(n,t){return t instanceof RegExp?t.test(n):!!o(t)&&new RegExp(t).test(n)}function j(n,t){return o(n)&&o(t)&&n.startsWith(t)}function P(n){for(var r in ln){var e=ln[r];t(e)&&n(r,e)}}function A(n){for(var r=[],e=1;e<arguments.length;e++)r[e-1]=arguments[e];return t(n)?n.apply(void 0,r):n}function B(n,t){var r;return null!==(r=A(n))&&void 0!==r?r:t}function W(n,t){if(!n)throw t instanceof String?t.valueOf():Error(t?A(t):t)}function k(){return null}function F(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 I(){try{return t(Proxy)}catch(n){return!1}}function J(n,t){return n={pass:n},t&&(n.message=t),n}function K(n,t,r){for(var e=[],u=3;u<arguments.length;u++)e[u-3]=arguments[u];return W(m(n)||n&&m(n.pass),"Incorrect return value for rule: "+JSON.stringify(n)),m(n)?J(n):J(n.pass,A.apply(void 0,F([n.message,t,r],e,!1)))}function M(n){function t(t,r,e){return function(){for(var u=[],i=0;i<arguments.length;i++)u[i]=arguments[i];return W((i=K.apply(void 0,F([pn.run({value:n},(function(){return r.apply(void 0,F([n],u,!1))})),e,n],u,!1))).pass,O(i.message)?"enforce/".concat(e," failed with ").concat(JSON.stringify(n)):new String(i.message)),t}}var r={};if(!I())return P((function(n,e){r[n]=t(r,e,n)})),r;var e=new Proxy(r,{get:function(n,r){if(n=ln[r])return t(e,n,r)}});return e}function R(n,t){function r(n){e=!0,u=n}for(var e=!1,u=null,i=0;i<n.length;i++)if(t(n[i],r,i),e)return u}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=ln[e];r.push((function(n){return K.apply(void 0,F([o.apply(void 0,F([n],u,!1)),e,n],u,!1))}));var s={run:function(n){return B(R(r,(function(r,e){var u,i=pn.run({value:n},(function(){return r(n)}));i.pass||e(J(!!i.pass,null!==(u=A(t,n,i.message))&&void 0!==u?u:i.message))})),J(!0))},test:function(n){return s.run(n).pass},message:function(n){return n&&(t=n),s}};return I()?s=new Proxy(s,{get:function(t,r){return ln[r]?n(r):t[r]}}):(P((function(t){s[t]=n(t)})),s)}}(n)}var V,X=Object.assign,_=r(e),z=r(u),C=r(i),D=r(s),G=r(f),H=r(a),L=r(l),Q=r(h),Y=r(v),Z=r(d),$=r(y),nn=r(m),tn=r(b),rn=r(x),en=r(O),un=r(E),on=r(w),sn=r(o),fn=r(T),an=r(q),cn=r(S),ln={condition:function(n,t){try{return t(n)}catch(n){return!1}},doesNotEndWith:D,doesNotStartWith:r(j),endsWith:s,equals:f,greaterThan:c,greaterThanOrEquals:p,gt:c,gte:p,inside:v,isArray:h,isBetween:d,isBlank:y,isBoolean:m,isEmpty:O,isEven:function(n){return!!a(n)&&0==n%2},isFalsy:fn,isKeyOf:E,isNaN:w,isNegative:function(n){return N(n,0)},isNotArray:Q,isNotBetween:Z,isNotBlank:$,isNotBoolean:nn,isNotEmpty:en,isNotKeyOf:un,isNotNaN:on,isNotNull:_,isNotNullish:C,isNotNumber:tn,isNotNumeric:H,isNotString:sn,isNotUndefined:z,isNotValueOf:an,isNull:e,isNullish:i,isNumber:b,isNumeric:a,isOdd:function(n){return!!a(n)&&0!=n%2},isPositive:function(n){return c(n,0)},isString:o,isTruthy:T,isUndefined:u,isValueOf:q,lengthEquals:x,lengthNotEquals:rn,lessThan:N,lessThanOrEquals:g,longerThan:function(n,t){return c(n.length,t)},longerThanOrEquals:function(n,t){return p(n.length,t)},lt:N,lte:g,matches:S,notEquals:G,notInside:Y,notMatches:cn,numberEquals:l,numberNotEquals:L,shorterThan:function(n,t){return N(n.length,t)},shorterThanOrEquals:function(n,t){return g(n.length,t)},startsWith:j},pn=function(n){function t(t,u){var i,o,s=r();return t=X({},s||{},null!==(i=A(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){return W(e.ctx,B(n,"Context was used after it was closed")),e.ctx}}}((function(n,t){var r={value:n.value,meta:n.meta||{}};return t?n.set?X(r,{parent:function(){return t?{value:t.value,meta:t.meta,parent:t.parent}:t}}):t:X(r,{parent:k})}));V={context:function(){return pn.useX()},extend:function(n){X(ln,n)}},_=I()?new Proxy(X(M,V),{get:function(n,t){return t in n?n[t]:ln[t]?U(t):void 0}}):(P((function(n){V[n]=U(n)})),X(M,V)),n.ctx=pn,n.enforce=_,Object.defineProperty(n,"__esModule",{value:!0})}));
|
|
@@ -130,7 +130,7 @@
|
|
|
130
130
|
}
|
|
131
131
|
|
|
132
132
|
// Help needed improving the typings of this file.
|
|
133
|
-
// Ideally, we'd be able to extend
|
|
133
|
+
// Ideally, we'd be able to extend ShapeObject, but that's not possible.
|
|
134
134
|
function partial(shapeObject) {
|
|
135
135
|
var output = {};
|
|
136
136
|
for (var key in shapeObject) {
|
package/package.json
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
{
|
|
2
|
-
"version": "4.1.
|
|
2
|
+
"version": "4.1.4",
|
|
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.
|
|
13
|
+
"context": "^2.0.3"
|
|
14
14
|
},
|
|
15
15
|
"module": "./dist/es/n4s.production.js",
|
|
16
16
|
"exports": {
|
package/types/compose.d.ts
CHANGED
|
@@ -2,19 +2,19 @@ type DropFirst<T extends unknown[]> = T extends [
|
|
|
2
2
|
unknown,
|
|
3
3
|
...infer U
|
|
4
4
|
] ? U : never;
|
|
5
|
-
type
|
|
6
|
-
type
|
|
5
|
+
type Stringable = string | ((...args: any[]) => string);
|
|
6
|
+
type RuleReturn = boolean | {
|
|
7
7
|
pass: boolean;
|
|
8
|
-
message?:
|
|
8
|
+
message?: Stringable;
|
|
9
9
|
};
|
|
10
|
-
type
|
|
10
|
+
type RuleDetailedResult = {
|
|
11
11
|
pass: boolean;
|
|
12
12
|
message?: string;
|
|
13
13
|
};
|
|
14
|
-
type
|
|
15
|
-
type
|
|
16
|
-
type KBaseRules = keyof
|
|
17
|
-
declare function condition(value: any, callback: (value: any) =>
|
|
14
|
+
type Args = any[];
|
|
15
|
+
type BaseRules = typeof baseRules;
|
|
16
|
+
type KBaseRules = keyof BaseRules;
|
|
17
|
+
declare function condition(value: any, callback: (value: any) => RuleReturn): RuleReturn;
|
|
18
18
|
declare function endsWith(value: string, arg1: string): boolean;
|
|
19
19
|
declare function equals(value: unknown, arg1: unknown): boolean;
|
|
20
20
|
declare function greaterThan(value: number | string, gt: number | string): boolean;
|
|
@@ -113,29 +113,29 @@ declare const baseRules: {
|
|
|
113
113
|
shorterThanOrEquals: typeof shorterThanOrEquals;
|
|
114
114
|
startsWith: typeof startsWith;
|
|
115
115
|
};
|
|
116
|
-
type
|
|
117
|
-
[P in KBaseRules]: (...args: DropFirst<Parameters<
|
|
116
|
+
type Rules<E = Record<string, unknown>> = n4s.EnforceCustomMatchers<Rules<E> & E> & Record<string, (...args: Args) => Rules<E> & E> & {
|
|
117
|
+
[P in KBaseRules]: (...args: DropFirst<Parameters<BaseRules[P]>> | Args) => Rules<E> & E;
|
|
118
118
|
};
|
|
119
119
|
/* eslint-disable @typescript-eslint/no-namespace, @typescript-eslint/no-empty-interface */
|
|
120
120
|
declare global {
|
|
121
121
|
namespace n4s {
|
|
122
|
-
interface IRules<E> extends
|
|
122
|
+
interface IRules<E> extends Rules<E> {
|
|
123
123
|
}
|
|
124
124
|
}
|
|
125
125
|
}
|
|
126
|
-
type
|
|
127
|
-
type
|
|
126
|
+
type LazyRules = n4s.IRules<LazyRuleMethods>;
|
|
127
|
+
type Lazy = LazyRules & LazyRuleMethods &
|
|
128
128
|
// This is a "catch all" hack to make TS happy while not
|
|
129
129
|
// losing type hints
|
|
130
130
|
Record<string, (...args: any[]) => any>;
|
|
131
|
-
type
|
|
132
|
-
message: (message:
|
|
131
|
+
type LazyRuleMethods = LazyRuleRunners & {
|
|
132
|
+
message: (message: LazyMessage) => Lazy;
|
|
133
133
|
};
|
|
134
|
-
type
|
|
134
|
+
type LazyRuleRunners = {
|
|
135
135
|
test: (value: unknown) => boolean;
|
|
136
|
-
run: (value: unknown) =>
|
|
136
|
+
run: (value: unknown) => RuleDetailedResult;
|
|
137
137
|
};
|
|
138
|
-
type
|
|
139
|
-
type
|
|
140
|
-
declare function compose(...composites:
|
|
138
|
+
type ComposeResult = LazyRuleRunners & ((value: any) => void);
|
|
139
|
+
type LazyMessage = string | ((value: unknown, originalMessage?: Stringable) => string);
|
|
140
|
+
declare function compose(...composites: LazyRuleRunners[]): ComposeResult;
|
|
141
141
|
export { compose as default };
|
package/types/compounds.d.ts
CHANGED
|
@@ -2,19 +2,19 @@ type DropFirst<T extends unknown[]> = T extends [
|
|
|
2
2
|
unknown,
|
|
3
3
|
...infer U
|
|
4
4
|
] ? U : never;
|
|
5
|
-
type
|
|
6
|
-
type
|
|
5
|
+
type Stringable = string | ((...args: any[]) => string);
|
|
6
|
+
type RuleReturn = boolean | {
|
|
7
7
|
pass: boolean;
|
|
8
|
-
message?:
|
|
8
|
+
message?: Stringable;
|
|
9
9
|
};
|
|
10
|
-
type
|
|
10
|
+
type RuleDetailedResult = {
|
|
11
11
|
pass: boolean;
|
|
12
12
|
message?: string;
|
|
13
13
|
};
|
|
14
|
-
type
|
|
15
|
-
type
|
|
16
|
-
type KBaseRules = keyof
|
|
17
|
-
declare function condition(value: any, callback: (value: any) =>
|
|
14
|
+
type Args = any[];
|
|
15
|
+
type BaseRules = typeof baseRules;
|
|
16
|
+
type KBaseRules = keyof BaseRules;
|
|
17
|
+
declare function condition(value: any, callback: (value: any) => RuleReturn): RuleReturn;
|
|
18
18
|
declare function endsWith(value: string, arg1: string): boolean;
|
|
19
19
|
declare function equals(value: unknown, arg1: unknown): boolean;
|
|
20
20
|
declare function greaterThan(value: number | string, gt: number | string): boolean;
|
|
@@ -113,33 +113,33 @@ declare const baseRules: {
|
|
|
113
113
|
shorterThanOrEquals: typeof shorterThanOrEquals;
|
|
114
114
|
startsWith: typeof startsWith;
|
|
115
115
|
};
|
|
116
|
-
type
|
|
117
|
-
[P in KBaseRules]: (...args: DropFirst<Parameters<
|
|
116
|
+
type Rules<E = Record<string, unknown>> = n4s.EnforceCustomMatchers<Rules<E> & E> & Record<string, (...args: Args) => Rules<E> & E> & {
|
|
117
|
+
[P in KBaseRules]: (...args: DropFirst<Parameters<BaseRules[P]>> | Args) => Rules<E> & E;
|
|
118
118
|
};
|
|
119
119
|
/* eslint-disable @typescript-eslint/no-namespace, @typescript-eslint/no-empty-interface */
|
|
120
120
|
declare global {
|
|
121
121
|
namespace n4s {
|
|
122
|
-
interface IRules<E> extends
|
|
122
|
+
interface IRules<E> extends Rules<E> {
|
|
123
123
|
}
|
|
124
124
|
}
|
|
125
125
|
}
|
|
126
|
-
type
|
|
127
|
-
type
|
|
126
|
+
type LazyRules = n4s.IRules<LazyRuleMethods>;
|
|
127
|
+
type Lazy = LazyRules & LazyRuleMethods &
|
|
128
128
|
// This is a "catch all" hack to make TS happy while not
|
|
129
129
|
// losing type hints
|
|
130
130
|
Record<string, (...args: any[]) => any>;
|
|
131
|
-
type
|
|
132
|
-
message: (message:
|
|
131
|
+
type LazyRuleMethods = LazyRuleRunners & {
|
|
132
|
+
message: (message: LazyMessage) => Lazy;
|
|
133
133
|
};
|
|
134
|
-
type
|
|
134
|
+
type LazyRuleRunners = {
|
|
135
135
|
test: (value: unknown) => boolean;
|
|
136
|
-
run: (value: unknown) =>
|
|
136
|
+
run: (value: unknown) => RuleDetailedResult;
|
|
137
137
|
};
|
|
138
|
-
type
|
|
139
|
-
declare function allOf(value: unknown, ...rules:
|
|
140
|
-
declare function anyOf(value: unknown, ...rules:
|
|
141
|
-
declare function noneOf(value: unknown, ...rules:
|
|
142
|
-
declare function oneOf(value: unknown, ...rules:
|
|
138
|
+
type LazyMessage = string | ((value: unknown, originalMessage?: Stringable) => string);
|
|
139
|
+
declare function allOf(value: unknown, ...rules: Lazy[]): RuleDetailedResult;
|
|
140
|
+
declare function anyOf(value: unknown, ...rules: Lazy[]): RuleDetailedResult;
|
|
141
|
+
declare function noneOf(value: unknown, ...rules: Lazy[]): RuleDetailedResult;
|
|
142
|
+
declare function oneOf(value: unknown, ...rules: Lazy[]): RuleDetailedResult;
|
|
143
143
|
declare global {
|
|
144
144
|
namespace n4s {
|
|
145
145
|
interface EnforceCustomMatchers<R> {
|
package/types/n4s.d.ts
CHANGED
|
@@ -10,31 +10,31 @@ type CTXType = {
|
|
|
10
10
|
set?: boolean;
|
|
11
11
|
parent: () => CTXType | null;
|
|
12
12
|
};
|
|
13
|
-
type
|
|
13
|
+
type EnforceContext = null | {
|
|
14
14
|
meta: Record<string, any>;
|
|
15
15
|
value: any;
|
|
16
|
-
parent: () =>
|
|
16
|
+
parent: () => EnforceContext;
|
|
17
17
|
};
|
|
18
18
|
type DropFirst<T extends unknown[]> = T extends [
|
|
19
19
|
unknown,
|
|
20
20
|
...infer U
|
|
21
21
|
] ? U : never;
|
|
22
|
-
type
|
|
23
|
-
type
|
|
22
|
+
type Stringable = string | ((...args: any[]) => string);
|
|
23
|
+
type RuleReturn = boolean | {
|
|
24
24
|
pass: boolean;
|
|
25
|
-
message?:
|
|
25
|
+
message?: Stringable;
|
|
26
26
|
};
|
|
27
|
-
type
|
|
27
|
+
type RuleDetailedResult = {
|
|
28
28
|
pass: boolean;
|
|
29
29
|
message?: string;
|
|
30
30
|
};
|
|
31
|
-
type
|
|
32
|
-
type
|
|
33
|
-
type
|
|
34
|
-
type
|
|
35
|
-
type
|
|
36
|
-
type KBaseRules = keyof
|
|
37
|
-
declare function condition(value: any, callback: (value: any) =>
|
|
31
|
+
type Args = any[];
|
|
32
|
+
type RuleValue = any;
|
|
33
|
+
type RuleBase = (value: RuleValue, ...args: Args) => RuleReturn;
|
|
34
|
+
type Rule = Record<string, RuleBase>;
|
|
35
|
+
type BaseRules = typeof baseRules;
|
|
36
|
+
type KBaseRules = keyof BaseRules;
|
|
37
|
+
declare function condition(value: any, callback: (value: any) => RuleReturn): RuleReturn;
|
|
38
38
|
declare function endsWith(value: string, arg1: string): boolean;
|
|
39
39
|
declare function equals(value: unknown, arg1: unknown): boolean;
|
|
40
40
|
declare function greaterThan(value: number | string, gt: number | string): boolean;
|
|
@@ -133,37 +133,37 @@ declare const baseRules: {
|
|
|
133
133
|
shorterThanOrEquals: typeof shorterThanOrEquals;
|
|
134
134
|
startsWith: typeof startsWith;
|
|
135
135
|
};
|
|
136
|
-
type
|
|
137
|
-
[P in KBaseRules]: (...args: DropFirst<Parameters<
|
|
136
|
+
type Rules<E = Record<string, unknown>> = n4s.EnforceCustomMatchers<Rules<E> & E> & Record<string, (...args: Args) => Rules<E> & E> & {
|
|
137
|
+
[P in KBaseRules]: (...args: DropFirst<Parameters<BaseRules[P]>> | Args) => Rules<E> & E;
|
|
138
138
|
};
|
|
139
139
|
/* eslint-disable @typescript-eslint/no-namespace, @typescript-eslint/no-empty-interface */
|
|
140
140
|
declare global {
|
|
141
141
|
namespace n4s {
|
|
142
|
-
interface IRules<E> extends
|
|
142
|
+
interface IRules<E> extends Rules<E> {
|
|
143
143
|
}
|
|
144
144
|
}
|
|
145
145
|
}
|
|
146
146
|
type IRules = n4s.IRules<Record<string, any>>;
|
|
147
|
-
declare function enforceEager(value:
|
|
148
|
-
type
|
|
149
|
-
type
|
|
150
|
-
type
|
|
147
|
+
declare function enforceEager(value: RuleValue): IRules;
|
|
148
|
+
type EnforceEager = typeof enforceEager;
|
|
149
|
+
type LazyRules = n4s.IRules<LazyRuleMethods>;
|
|
150
|
+
type Lazy = LazyRules & LazyRuleMethods &
|
|
151
151
|
// This is a "catch all" hack to make TS happy while not
|
|
152
152
|
// losing type hints
|
|
153
153
|
Record<string, (...args: any[]) => any>;
|
|
154
|
-
type
|
|
155
|
-
message: (message:
|
|
154
|
+
type LazyRuleMethods = LazyRuleRunners & {
|
|
155
|
+
message: (message: LazyMessage) => Lazy;
|
|
156
156
|
};
|
|
157
|
-
type
|
|
157
|
+
type LazyRuleRunners = {
|
|
158
158
|
test: (value: unknown) => boolean;
|
|
159
|
-
run: (value: unknown) =>
|
|
159
|
+
run: (value: unknown) => RuleDetailedResult;
|
|
160
160
|
};
|
|
161
|
-
type
|
|
162
|
-
declare const enforce:
|
|
163
|
-
type
|
|
164
|
-
type
|
|
165
|
-
context: () =>
|
|
166
|
-
extend: (customRules:
|
|
161
|
+
type LazyMessage = string | ((value: unknown, originalMessage?: Stringable) => string);
|
|
162
|
+
declare const enforce: Enforce;
|
|
163
|
+
type Enforce = EnforceMethods & LazyRules & EnforceEager;
|
|
164
|
+
type EnforceMethods = {
|
|
165
|
+
context: () => EnforceContext;
|
|
166
|
+
extend: (customRules: Rule) => void;
|
|
167
167
|
};
|
|
168
168
|
declare global {
|
|
169
169
|
namespace n4s {
|
package/types/schema.d.ts
CHANGED
|
@@ -2,19 +2,19 @@ type DropFirst<T extends unknown[]> = T extends [
|
|
|
2
2
|
unknown,
|
|
3
3
|
...infer U
|
|
4
4
|
] ? U : never;
|
|
5
|
-
type
|
|
6
|
-
type
|
|
5
|
+
type Stringable = string | ((...args: any[]) => string);
|
|
6
|
+
type RuleReturn = boolean | {
|
|
7
7
|
pass: boolean;
|
|
8
|
-
message?:
|
|
8
|
+
message?: Stringable;
|
|
9
9
|
};
|
|
10
|
-
type
|
|
10
|
+
type RuleDetailedResult = {
|
|
11
11
|
pass: boolean;
|
|
12
12
|
message?: string;
|
|
13
13
|
};
|
|
14
|
-
type
|
|
15
|
-
type
|
|
16
|
-
type KBaseRules = keyof
|
|
17
|
-
declare function condition(value: any, callback: (value: any) =>
|
|
14
|
+
type Args = any[];
|
|
15
|
+
type BaseRules = typeof baseRules;
|
|
16
|
+
type KBaseRules = keyof BaseRules;
|
|
17
|
+
declare function condition(value: any, callback: (value: any) => RuleReturn): RuleReturn;
|
|
18
18
|
declare function endsWith(value: string, arg1: string): boolean;
|
|
19
19
|
declare function equals(value: unknown, arg1: unknown): boolean;
|
|
20
20
|
declare function greaterThan(value: number | string, gt: number | string): boolean;
|
|
@@ -113,37 +113,37 @@ declare const baseRules: {
|
|
|
113
113
|
shorterThanOrEquals: typeof shorterThanOrEquals;
|
|
114
114
|
startsWith: typeof startsWith;
|
|
115
115
|
};
|
|
116
|
-
type
|
|
117
|
-
[P in KBaseRules]: (...args: DropFirst<Parameters<
|
|
116
|
+
type Rules<E = Record<string, unknown>> = n4s.EnforceCustomMatchers<Rules<E> & E> & Record<string, (...args: Args) => Rules<E> & E> & {
|
|
117
|
+
[P in KBaseRules]: (...args: DropFirst<Parameters<BaseRules[P]>> | Args) => Rules<E> & E;
|
|
118
118
|
};
|
|
119
119
|
/* eslint-disable @typescript-eslint/no-namespace, @typescript-eslint/no-empty-interface */
|
|
120
120
|
declare global {
|
|
121
121
|
namespace n4s {
|
|
122
|
-
interface IRules<E> extends
|
|
122
|
+
interface IRules<E> extends Rules<E> {
|
|
123
123
|
}
|
|
124
124
|
}
|
|
125
125
|
}
|
|
126
|
-
type
|
|
127
|
-
type
|
|
126
|
+
type LazyRules = n4s.IRules<LazyRuleMethods>;
|
|
127
|
+
type Lazy = LazyRules & LazyRuleMethods &
|
|
128
128
|
// This is a "catch all" hack to make TS happy while not
|
|
129
129
|
// losing type hints
|
|
130
130
|
Record<string, (...args: any[]) => any>;
|
|
131
|
-
type
|
|
132
|
-
message: (message:
|
|
131
|
+
type LazyRuleMethods = LazyRuleRunners & {
|
|
132
|
+
message: (message: LazyMessage) => Lazy;
|
|
133
133
|
};
|
|
134
|
-
type
|
|
134
|
+
type LazyRuleRunners = {
|
|
135
135
|
test: (value: unknown) => boolean;
|
|
136
|
-
run: (value: unknown) =>
|
|
136
|
+
run: (value: unknown) => RuleDetailedResult;
|
|
137
137
|
};
|
|
138
|
-
type
|
|
139
|
-
declare function isArrayOf(inputArray: any[], currentRule:
|
|
140
|
-
interface
|
|
138
|
+
type LazyMessage = string | ((value: unknown, originalMessage?: Stringable) => string);
|
|
139
|
+
declare function isArrayOf(inputArray: any[], currentRule: LazyRuleRunners): RuleDetailedResult;
|
|
140
|
+
interface ShapeObject extends Record<string, any>, Record<string, LazyRuleRunners> {
|
|
141
141
|
}
|
|
142
|
-
declare function loose(inputObject: Record<string, any>, shapeObject:
|
|
143
|
-
declare function optional(value: any, ruleChain:
|
|
144
|
-
declare function shape(inputObject: Record<string, any>, shapeObject:
|
|
142
|
+
declare function loose(inputObject: Record<string, any>, shapeObject: ShapeObject): RuleDetailedResult;
|
|
143
|
+
declare function optional(value: any, ruleChain: Lazy): RuleDetailedResult;
|
|
144
|
+
declare function shape(inputObject: Record<string, any>, shapeObject: ShapeObject): RuleDetailedResult;
|
|
145
145
|
// Help needed improving the typings of this file.
|
|
146
|
-
// Ideally, we'd be able to extend
|
|
146
|
+
// Ideally, we'd be able to extend ShapeObject, but that's not possible.
|
|
147
147
|
declare function partial<T extends Record<any, any>>(shapeObject: T): T;
|
|
148
148
|
declare global {
|
|
149
149
|
namespace n4s {
|