n4s 4.1.3 → 4.1.6

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.
@@ -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 `TLazyRuleRunners` We would simply use `TLazy` to begin with.
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 === Number(arg1);
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 > Number(arg1);
125
+ return greaterThan(value.length, arg1);
111
126
  }
112
127
 
113
128
  var REQUIRED_COUNT = 1;
@@ -118,13 +133,13 @@ function oneOf(value) {
118
133
  }
119
134
  var passing = [];
120
135
  rules.some(function (rule) {
121
- if (longerThan(passing, REQUIRED_COUNT)) {
122
- return false;
123
- }
124
136
  var res = runLazyRule(rule, value);
125
137
  if (res.pass) {
126
138
  passing.push(res);
127
139
  }
140
+ if (longerThan(passing, REQUIRED_COUNT)) {
141
+ return false;
142
+ }
128
143
  });
129
144
  return ruleReturn(lengthEquals(passing, REQUIRED_COUNT));
130
145
  }
@@ -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.length===Number(r)}function s(n,r){return n.length>Number(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(s(u,1))return!1;(r=c(r,n)).pass&&u.push(r)})),e(a(u,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){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((r=c(r,n)).pass&&u.push(r),l(u,1))return!1})),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 === Number(arg1);
130
+ return numberEquals(value.length, arg1);
131
131
  }
132
132
  var lengthNotEquals = bindNot(lengthEquals);
133
133
 
@@ -144,7 +144,7 @@ function isEmpty(value) {
144
144
  else if (typeof value === 'object') {
145
145
  return lengthEquals(Object.keys(value), 0);
146
146
  }
147
- return true;
147
+ return false;
148
148
  }
149
149
  var isNotEmpty = bindNot(isEmpty);
150
150
 
@@ -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 > Number(arg1);
210
+ return greaterThan(value.length, arg1);
211
211
  }
212
212
 
213
213
  function longerThanOrEquals(value, arg1) {
214
- return value.length >= Number(arg1);
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 < Number(arg1);
240
+ return lessThan(value.length, arg1);
241
241
  }
242
242
 
243
243
  function shorterThanOrEquals(value, arg1) {
244
- return value.length <= Number(arg1);
244
+ return lessThanOrEquals(value.length, arg1);
245
245
  }
246
246
 
247
247
  function startsWith(value, arg1) {
@@ -594,15 +594,10 @@ function genEnforce() {
594
594
  context: function () { return ctx.useX(); },
595
595
  extend: function (customRules) {
596
596
  assign(baseRules, customRules);
597
+ handleNoProxy(); // TODO: REMOVE when we stop supporting ES5
597
598
  }
598
599
  };
599
- if (!isProxySupported()) {
600
- eachEnforceRule(function (ruleName) {
601
- // Only on the first rule access - start the chain of calls
602
- target[ruleName] = genEnforceLazy(ruleName);
603
- });
604
- return assign(enforceEager, target);
605
- }
600
+ handleNoProxy();
606
601
  return new Proxy(assign(enforceEager, target), {
607
602
  get: function (target, key) {
608
603
  if (key in target) {
@@ -615,6 +610,15 @@ function genEnforce() {
615
610
  return genEnforceLazy(key);
616
611
  }
617
612
  });
613
+ function handleNoProxy() {
614
+ if (!isProxySupported()) {
615
+ eachEnforceRule(function (ruleName) {
616
+ // Only on the first rule access - start the chain of calls
617
+ target[ruleName] = genEnforceLazy(ruleName);
618
+ });
619
+ return assign(enforceEager, target);
620
+ }
621
+ }
618
622
  }
619
623
  var enforce = genEnforce();
620
624
 
@@ -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 m(n,r){return g(n)&&g(r)&&Number(n)>Number(r)}function y(n,r){return g(n)&&g(r)&&Number(n)===Number(r)}var d=e(y);function b(n,r){return y(n,r)||m(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 y(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 n.length===Number(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 m(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 n.length>Number(r)}function $(n,r){return n.length>=Number(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 n.length<Number(r)}function un(n,r){return n.length<=Number(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:m,greaterThanOrEquals:b,gt:m,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:y,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 mn(n,r){return n={pass:n},r&&(n.message=r),n}function yn(n){return function(n,r){var t;return null!==(t=pn(n))&&void 0!==t?t:r}(n,mn(!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)?mn(n):mn(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 yn(En(t,(function(t,e){var u,i=ln.run({value:n},(function(){return t(n)}));i.pass||e(mn(!!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;
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){return!n||(k(n)?0===n:function(n,r){return Object.prototype.hasOwnProperty.call(n,r)}(n,"length")?I(n,0):"object"==typeof n&&I(Object.keys(n),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=function(){function n(){if(!hn())return cn((function(n){t[n]=xn(n)})),r(On,t)}var t={context:function(){return ln.useX()},extend:function(t){r(sn,t),n()}};return n(),new Proxy(r(On,t),{get:function(n,r){return r in n?n[r]:fn(r)?xn(r):void 0}})}();exports.ctx=ln,exports.enforce=qn;
@@ -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 IShapeObject, but that's not possible.
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 `TLazyRuleRunners` We would simply use `TLazy` to begin with.
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 === Number(arg1);
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 > Number(arg1);
123
+ return greaterThan(value.length, arg1);
109
124
  }
110
125
 
111
126
  var REQUIRED_COUNT = 1;
@@ -116,13 +131,13 @@ function oneOf(value) {
116
131
  }
117
132
  var passing = [];
118
133
  rules.some(function (rule) {
119
- if (longerThan(passing, REQUIRED_COUNT)) {
120
- return false;
121
- }
122
134
  var res = runLazyRule(rule, value);
123
135
  if (res.pass) {
124
136
  passing.push(res);
125
137
  }
138
+ if (longerThan(passing, REQUIRED_COUNT)) {
139
+ return false;
140
+ }
126
141
  });
127
142
  return ruleReturn(lengthEquals(passing, REQUIRED_COUNT));
128
143
  }
@@ -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,f=0;f<n.length;f++)if(r(n[f],t,f),u)return e}function t(n,r){var t;return null!==(t=function(n){for(var r=[],t=1;t<arguments.length;t++)r[t-1]=arguments[t];return"function"==typeof n?n.apply(void 0,r):n}(n))&&void 0!==t?t:r}function u(n,r){return n={pass:n},r&&(n.message=r),n}function e(n,r){try{return n.run(r)}catch(n){return u(!1)}}n.extend({allOf:function(n){for(var f=[],o=1;o<arguments.length;o++)f[o-1]=arguments[o];return t(r(f,(function(r,t){(r=e(r,n)).pass||t(r)})),u(!0))},anyOf:function(n){for(var f=[],o=1;o<arguments.length;o++)f[o-1]=arguments[o];return t(r(f,(function(r,t){(r=e(r,n)).pass&&t(r)})),u(!1))},noneOf:function(n){for(var f=[],o=1;o<arguments.length;o++)f[o-1]=arguments[o];return t(r(f,(function(r,t){e(r,n).pass&&t(u(!1))})),u(!0))},oneOf:function(n){for(var r=[],t=1;t<arguments.length;t++)r[t-1]=arguments[t];var f=[];return r.some((function(r){if(f.length>Number(1))return!1;(r=e(r,n)).pass&&f.push(r)})),u(f.length===Number(1))}});
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){if((r=e(r,n)).pass&&i.push(r),o(r=i.length)&&o(1)&&Number(r)>Number(1))return!1})),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 === Number(arg1);
126
+ return numberEquals(value.length, arg1);
127
127
  }
128
128
  var lengthNotEquals = bindNot(lengthEquals);
129
129
 
@@ -140,7 +140,7 @@ function isEmpty(value) {
140
140
  else if (typeof value === 'object') {
141
141
  return lengthEquals(Object.keys(value), 0);
142
142
  }
143
- return true;
143
+ return false;
144
144
  }
145
145
  var isNotEmpty = bindNot(isEmpty);
146
146
 
@@ -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 > Number(arg1);
206
+ return greaterThan(value.length, arg1);
207
207
  }
208
208
 
209
209
  function longerThanOrEquals(value, arg1) {
210
- return value.length >= Number(arg1);
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 < Number(arg1);
236
+ return lessThan(value.length, arg1);
237
237
  }
238
238
 
239
239
  function shorterThanOrEquals(value, arg1) {
240
- return value.length <= Number(arg1);
240
+ return lessThanOrEquals(value.length, arg1);
241
241
  }
242
242
 
243
243
  function startsWith(value, arg1) {
@@ -590,15 +590,10 @@ function genEnforce() {
590
590
  context: function () { return ctx.useX(); },
591
591
  extend: function (customRules) {
592
592
  assign(baseRules, customRules);
593
+ handleNoProxy(); // TODO: REMOVE when we stop supporting ES5
593
594
  }
594
595
  };
595
- if (!isProxySupported()) {
596
- eachEnforceRule(function (ruleName) {
597
- // Only on the first rule access - start the chain of calls
598
- target[ruleName] = genEnforceLazy(ruleName);
599
- });
600
- return assign(enforceEager, target);
601
- }
596
+ handleNoProxy();
602
597
  return new Proxy(assign(enforceEager, target), {
603
598
  get: function (target, key) {
604
599
  if (key in target) {
@@ -611,6 +606,15 @@ function genEnforce() {
611
606
  return genEnforceLazy(key);
612
607
  }
613
608
  });
609
+ function handleNoProxy() {
610
+ if (!isProxySupported()) {
611
+ eachEnforceRule(function (ruleName) {
612
+ // Only on the first rule access - start the chain of calls
613
+ target[ruleName] = genEnforceLazy(ruleName);
614
+ });
615
+ return assign(enforceEager, target);
616
+ }
617
+ }
614
618
  }
615
619
  var enforce = genEnforce();
616
620
 
@@ -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 m(n,r){return h(n)&&h(r)&&Number(n)>Number(r)}function y(n,r){return h(n)&&h(r)&&Number(n)===Number(r)}var d=e(y);function b(n,r){return y(n,r)||m(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 y(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 n.length===Number(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:m,greaterThanOrEquals:b,gt:m,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 m(n,0)},isString:c,isTruthy:C,isUndefined:o,isValueOf:G,lengthEquals:I,lengthNotEquals:J,lessThan:w,lessThanOrEquals:S,longerThan:function(n,r){return n.length>Number(r)},longerThanOrEquals:function(n,r){return n.length>=Number(r)},lt:w,lte:S,matches:L,notEquals:g,notInside:q,notMatches:Q,numberEquals:y,numberNotEquals:d,shorterThan:function(n,r){return n.length<Number(r)},shorterThanOrEquals:function(n,r){return n.length<=Number(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};
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){return!n||(k(n)?0===n:Object.prototype.hasOwnProperty.call(n,"length")?I(n,0):"object"==typeof n&&I(Object.keys(n),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=function(){function n(){if(!un())return $((function(n){t[n]=ln(n)})),r(fn,t)}var t={context:function(){return _.useX()},extend:function(t){r(Z,t),n()}};return n(),new Proxy(r(fn,t),{get:function(n,r){return r in n?n[r]:Z[r]?ln(r):void 0}})}();export{_ as ctx,vn 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 IShapeObject, but that's not possible.
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 `TLazyRuleRunners` We would simply use `TLazy` to begin with.
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 === Number(arg1);
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 > Number(arg1);
127
+ return greaterThan(value.length, arg1);
113
128
  }
114
129
 
115
130
  var REQUIRED_COUNT = 1;
@@ -120,13 +135,13 @@
120
135
  }
121
136
  var passing = [];
122
137
  rules.some(function (rule) {
123
- if (longerThan(passing, REQUIRED_COUNT)) {
124
- return false;
125
- }
126
138
  var res = runLazyRule(rule, value);
127
139
  if (res.pass) {
128
140
  passing.push(res);
129
141
  }
142
+ if (longerThan(passing, REQUIRED_COUNT)) {
143
+ return false;
144
+ }
130
145
  });
131
146
  return ruleReturn(lengthEquals(passing, REQUIRED_COUNT));
132
147
  }
@@ -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 t(n){r=!0,f=n}for(var r=!1,f=null,o=0;o<n.length;o++)if(e(n[o],t,o),r)return f}function t(n,e){var t;return null!==(t=function(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}(n))&&void 0!==t?t:e}function r(n,e){return n={pass:n},e&&(n.message=e),n}function f(n,e){try{return n.run(e)}catch(n){return r(!1)}}n.enforce.extend({allOf:function(n){for(var o=[],u=1;u<arguments.length;u++)o[u-1]=arguments[u];return t(e(o,(function(e,t){(e=f(e,n)).pass||t(e)})),r(!0))},anyOf:function(n){for(var o=[],u=1;u<arguments.length;u++)o[u-1]=arguments[u];return t(e(o,(function(e,t){(e=f(e,n)).pass&&t(e)})),r(!1))},noneOf:function(n){for(var o=[],u=1;u<arguments.length;u++)o[u-1]=arguments[u];return t(e(o,(function(e,t){f(e,n).pass&&t(r(!1))})),r(!0))},oneOf:function(n){for(var e=[],t=1;t<arguments.length;t++)e[t-1]=arguments[t];var o=[];return e.some((function(e){if(o.length>Number(1))return!1;(e=f(e,n)).pass&&o.push(e)})),r(o.length===Number(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 t(n){r=!0,u=n}for(var r=!1,u=null,f=0;f<n.length;f++)if(e(n[f],t,f),r)return u}function t(n,e){var t;return null!==(t=function(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}(n))&&void 0!==t?t:e}function r(n,e){return n={pass:n},e&&(n.message=e),n}function u(n,e){try{return n.run(e)}catch(n){return r(!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 t(e(f,(function(e,t){(e=u(e,n)).pass||t(e)})),r(!0))},anyOf:function(n){for(var f=[],o=1;o<arguments.length;o++)f[o-1]=arguments[o];return t(e(f,(function(e,t){(e=u(e,n)).pass&&t(e)})),r(!1))},noneOf:function(n){for(var f=[],o=1;o<arguments.length;o++)f[o-1]=arguments[o];return t(e(f,(function(e,t){u(e,n).pass&&t(r(!1))})),r(!0))},oneOf:function(n){for(var e=[],t=1;t<arguments.length;t++)e[t-1]=arguments[t];var i=[];return e.some((function(e){if((e=u(e,n)).pass&&i.push(e),f(e=i.length)&&f(1)&&Number(e)>Number(1))return!1})),r(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 === Number(arg1);
130
+ return numberEquals(value.length, arg1);
131
131
  }
132
132
  var lengthNotEquals = bindNot(lengthEquals);
133
133
 
@@ -144,7 +144,7 @@
144
144
  else if (typeof value === 'object') {
145
145
  return lengthEquals(Object.keys(value), 0);
146
146
  }
147
- return true;
147
+ return false;
148
148
  }
149
149
  var isNotEmpty = bindNot(isEmpty);
150
150
 
@@ -207,11 +207,11 @@
207
207
  var isNotValueOf = bindNot(isValueOf);
208
208
 
209
209
  function longerThan(value, arg1) {
210
- return value.length > Number(arg1);
210
+ return greaterThan(value.length, arg1);
211
211
  }
212
212
 
213
213
  function longerThanOrEquals(value, arg1) {
214
- return value.length >= Number(arg1);
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 < Number(arg1);
240
+ return lessThan(value.length, arg1);
241
241
  }
242
242
 
243
243
  function shorterThanOrEquals(value, arg1) {
244
- return value.length <= Number(arg1);
244
+ return lessThanOrEquals(value.length, arg1);
245
245
  }
246
246
 
247
247
  function startsWith(value, arg1) {
@@ -644,15 +644,10 @@
644
644
  context: function () { return ctx.useX(); },
645
645
  extend: function (customRules) {
646
646
  assign(baseRules, customRules);
647
+ handleNoProxy(); // TODO: REMOVE when we stop supporting ES5
647
648
  }
648
649
  };
649
- if (!isProxySupported()) {
650
- eachEnforceRule(function (ruleName) {
651
- // Only on the first rule access - start the chain of calls
652
- target[ruleName] = genEnforceLazy(ruleName);
653
- });
654
- return assign(enforceEager, target);
655
- }
650
+ handleNoProxy();
656
651
  return new Proxy(assign(enforceEager, target), {
657
652
  get: function (target, key) {
658
653
  if (key in target) {
@@ -665,6 +660,15 @@
665
660
  return genEnforceLazy(key);
666
661
  }
667
662
  });
663
+ function handleNoProxy() {
664
+ if (!isProxySupported()) {
665
+ eachEnforceRule(function (ruleName) {
666
+ // Only on the first rule access - start the chain of calls
667
+ target[ruleName] = genEnforceLazy(ruleName);
668
+ });
669
+ return assign(enforceEager, target);
670
+ }
671
+ }
668
672
  }
669
673
  var enforce = genEnforce();
670
674
 
@@ -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 N(n,t){return l(n,t)||c(n,t)}function p(n){return!!Array.isArray(n)}function h(n,t){return!!(p(t)||o(t)&&o(n))&&-1!==t.indexOf(n)}function v(n,t){return a(n)&&a(t)&&Number(n)<Number(t)}function g(n,t){return l(n,t)||v(n,t)}function d(n,t,r){return N(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 n.length===Number(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([Nn.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=Nn.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(p),Y=r(h),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:N,gt:c,gte:N,inside:h,isArray:p,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 v(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:v,lessThanOrEquals:g,longerThan:function(n,t){return n.length>Number(t)},longerThanOrEquals:function(n,t){return n.length>=Number(t)},lt:v,lte:g,matches:S,notEquals:G,notInside:Y,notMatches:cn,numberEquals:l,numberNotEquals:L,shorterThan:function(n,t){return n.length<Number(t)},shorterThanOrEquals:function(n,t){return n.length<=Number(t)},startsWith:j},Nn=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 Nn.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=Nn,n.enforce=_,Object.defineProperty(n,"__esModule",{value:!0})}));
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 v(n){return!!Array.isArray(n)}function h(n,t){return!!(v(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){return!n||(b(n)?0===n:Object.prototype.hasOwnProperty.call(n,"length")?x(n,0):"object"==typeof n&&x(Object.keys(n),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 cn){var e=cn[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([ln.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=cn[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=cn[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=ln.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 cn[r]?n(r):t[r]}}):(P((function(t){s[t]=n(t)})),s)}}(n)}var V=Object.assign,X=r(e),_=r(u),z=r(i),C=r(s),D=r(f),G=r(a),H=r(l),L=r(v),Q=r(h),Y=r(d),Z=r(y),$=r(m),nn=r(b),tn=r(x),rn=r(O),en=r(E),un=r(w),on=r(o),sn=r(T),fn=r(q),an=r(S),cn={condition:function(n,t){try{return t(n)}catch(n){return!1}},doesNotEndWith:C,doesNotStartWith:r(j),endsWith:s,equals:f,greaterThan:c,greaterThanOrEquals:p,gt:c,gte:p,inside:h,isArray:v,isBetween:d,isBlank:y,isBoolean:m,isEmpty:O,isEven:function(n){return!!a(n)&&0==n%2},isFalsy:sn,isKeyOf:E,isNaN:w,isNegative:function(n){return N(n,0)},isNotArray:L,isNotBetween:Y,isNotBlank:Z,isNotBoolean:$,isNotEmpty:rn,isNotKeyOf:en,isNotNaN:un,isNotNull:X,isNotNullish:z,isNotNumber:nn,isNotNumeric:G,isNotString:on,isNotUndefined:_,isNotValueOf:fn,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:tn,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:D,notInside:Q,notMatches:an,numberEquals:l,numberNotEquals:H,shorterThan:function(n,t){return N(n.length,t)},shorterThanOrEquals:function(n,t){return g(n.length,t)},startsWith:j},ln=function(n){function t(t,u){var i,o,s=r();return t=V({},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?V(r,{parent:function(){return t?{value:t.value,meta:t.meta,parent:t.parent}:t}}):t:V(r,{parent:k})}));X=function(){function n(){if(!I())return P((function(n){t[n]=U(n)})),V(M,t)}var t={context:function(){return ln.useX()},extend:function(t){V(cn,t),n()}};return n(),new Proxy(V(M,t),{get:function(n,t){return t in n?n[t]:cn[t]?U(t):void 0}})}(),n.ctx=ln,n.enforce=X,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 IShapeObject, but that's not possible.
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.3",
2
+ "version": "4.1.6",
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.2"
13
+ "context": "^2.0.5"
14
14
  },
15
15
  "module": "./dist/es/n4s.production.js",
16
16
  "exports": {
@@ -2,19 +2,19 @@ type DropFirst<T extends unknown[]> = T extends [
2
2
  unknown,
3
3
  ...infer U
4
4
  ] ? U : never;
5
- type TStringable = string | ((...args: any[]) => string);
6
- type TRuleReturn = boolean | {
5
+ type Stringable = string | ((...args: any[]) => string);
6
+ type RuleReturn = boolean | {
7
7
  pass: boolean;
8
- message?: TStringable;
8
+ message?: Stringable;
9
9
  };
10
- type TRuleDetailedResult = {
10
+ type RuleDetailedResult = {
11
11
  pass: boolean;
12
12
  message?: string;
13
13
  };
14
- type TArgs = any[];
15
- type TBaseRules = typeof baseRules;
16
- type KBaseRules = keyof TBaseRules;
17
- declare function condition(value: any, callback: (value: any) => TRuleReturn): TRuleReturn;
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 TRules<E = Record<string, unknown>> = n4s.EnforceCustomMatchers<TRules<E> & E> & Record<string, (...args: TArgs) => TRules<E> & E> & {
117
- [P in KBaseRules]: (...args: DropFirst<Parameters<TBaseRules[P]>> | TArgs) => TRules<E> & E;
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 TRules<E> {
122
+ interface IRules<E> extends Rules<E> {
123
123
  }
124
124
  }
125
125
  }
126
- type TLazyRules = n4s.IRules<TLazyRuleMethods>;
127
- type TLazy = TLazyRules & TLazyRuleMethods &
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 TLazyRuleMethods = TLazyRuleRunners & {
132
- message: (message: TLazyMessage) => TLazy;
131
+ type LazyRuleMethods = LazyRuleRunners & {
132
+ message: (message: LazyMessage) => Lazy;
133
133
  };
134
- type TLazyRuleRunners = {
134
+ type LazyRuleRunners = {
135
135
  test: (value: unknown) => boolean;
136
- run: (value: unknown) => TRuleDetailedResult;
136
+ run: (value: unknown) => RuleDetailedResult;
137
137
  };
138
- type TComposeResult = TLazyRuleRunners & ((value: any) => void);
139
- type TLazyMessage = string | ((value: unknown, originalMessage?: TStringable) => string);
140
- declare function compose(...composites: TLazyRuleRunners[]): TComposeResult;
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 };
@@ -2,19 +2,19 @@ type DropFirst<T extends unknown[]> = T extends [
2
2
  unknown,
3
3
  ...infer U
4
4
  ] ? U : never;
5
- type TStringable = string | ((...args: any[]) => string);
6
- type TRuleReturn = boolean | {
5
+ type Stringable = string | ((...args: any[]) => string);
6
+ type RuleReturn = boolean | {
7
7
  pass: boolean;
8
- message?: TStringable;
8
+ message?: Stringable;
9
9
  };
10
- type TRuleDetailedResult = {
10
+ type RuleDetailedResult = {
11
11
  pass: boolean;
12
12
  message?: string;
13
13
  };
14
- type TArgs = any[];
15
- type TBaseRules = typeof baseRules;
16
- type KBaseRules = keyof TBaseRules;
17
- declare function condition(value: any, callback: (value: any) => TRuleReturn): TRuleReturn;
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 TRules<E = Record<string, unknown>> = n4s.EnforceCustomMatchers<TRules<E> & E> & Record<string, (...args: TArgs) => TRules<E> & E> & {
117
- [P in KBaseRules]: (...args: DropFirst<Parameters<TBaseRules[P]>> | TArgs) => TRules<E> & E;
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 TRules<E> {
122
+ interface IRules<E> extends Rules<E> {
123
123
  }
124
124
  }
125
125
  }
126
- type TLazyRules = n4s.IRules<TLazyRuleMethods>;
127
- type TLazy = TLazyRules & TLazyRuleMethods &
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 TLazyRuleMethods = TLazyRuleRunners & {
132
- message: (message: TLazyMessage) => TLazy;
131
+ type LazyRuleMethods = LazyRuleRunners & {
132
+ message: (message: LazyMessage) => Lazy;
133
133
  };
134
- type TLazyRuleRunners = {
134
+ type LazyRuleRunners = {
135
135
  test: (value: unknown) => boolean;
136
- run: (value: unknown) => TRuleDetailedResult;
136
+ run: (value: unknown) => RuleDetailedResult;
137
137
  };
138
- type TLazyMessage = string | ((value: unknown, originalMessage?: TStringable) => string);
139
- declare function allOf(value: unknown, ...rules: TLazy[]): TRuleDetailedResult;
140
- declare function anyOf(value: unknown, ...rules: TLazy[]): TRuleDetailedResult;
141
- declare function noneOf(value: unknown, ...rules: TLazy[]): TRuleDetailedResult;
142
- declare function oneOf(value: unknown, ...rules: TLazy[]): TRuleDetailedResult;
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 TEnforceContext = null | {
13
+ type EnforceContext = null | {
14
14
  meta: Record<string, any>;
15
15
  value: any;
16
- parent: () => TEnforceContext;
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 TStringable = string | ((...args: any[]) => string);
23
- type TRuleReturn = boolean | {
22
+ type Stringable = string | ((...args: any[]) => string);
23
+ type RuleReturn = boolean | {
24
24
  pass: boolean;
25
- message?: TStringable;
25
+ message?: Stringable;
26
26
  };
27
- type TRuleDetailedResult = {
27
+ type RuleDetailedResult = {
28
28
  pass: boolean;
29
29
  message?: string;
30
30
  };
31
- type TArgs = any[];
32
- type TRuleValue = any;
33
- type TRuleBase = (value: TRuleValue, ...args: TArgs) => TRuleReturn;
34
- type TRule = Record<string, TRuleBase>;
35
- type TBaseRules = typeof baseRules;
36
- type KBaseRules = keyof TBaseRules;
37
- declare function condition(value: any, callback: (value: any) => TRuleReturn): TRuleReturn;
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 TRules<E = Record<string, unknown>> = n4s.EnforceCustomMatchers<TRules<E> & E> & Record<string, (...args: TArgs) => TRules<E> & E> & {
137
- [P in KBaseRules]: (...args: DropFirst<Parameters<TBaseRules[P]>> | TArgs) => TRules<E> & E;
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 TRules<E> {
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: TRuleValue): IRules;
148
- type TEnforceEager = typeof enforceEager;
149
- type TLazyRules = n4s.IRules<TLazyRuleMethods>;
150
- type TLazy = TLazyRules & TLazyRuleMethods &
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 TLazyRuleMethods = TLazyRuleRunners & {
155
- message: (message: TLazyMessage) => TLazy;
154
+ type LazyRuleMethods = LazyRuleRunners & {
155
+ message: (message: LazyMessage) => Lazy;
156
156
  };
157
- type TLazyRuleRunners = {
157
+ type LazyRuleRunners = {
158
158
  test: (value: unknown) => boolean;
159
- run: (value: unknown) => TRuleDetailedResult;
159
+ run: (value: unknown) => RuleDetailedResult;
160
160
  };
161
- type TLazyMessage = string | ((value: unknown, originalMessage?: TStringable) => string);
162
- declare const enforce: TEnforce;
163
- type TEnforce = TEnforceMethods & TLazyRules & TEnforceEager;
164
- type TEnforceMethods = {
165
- context: () => TEnforceContext;
166
- extend: (customRules: TRule) => void;
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 TStringable = string | ((...args: any[]) => string);
6
- type TRuleReturn = boolean | {
5
+ type Stringable = string | ((...args: any[]) => string);
6
+ type RuleReturn = boolean | {
7
7
  pass: boolean;
8
- message?: TStringable;
8
+ message?: Stringable;
9
9
  };
10
- type TRuleDetailedResult = {
10
+ type RuleDetailedResult = {
11
11
  pass: boolean;
12
12
  message?: string;
13
13
  };
14
- type TArgs = any[];
15
- type TBaseRules = typeof baseRules;
16
- type KBaseRules = keyof TBaseRules;
17
- declare function condition(value: any, callback: (value: any) => TRuleReturn): TRuleReturn;
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 TRules<E = Record<string, unknown>> = n4s.EnforceCustomMatchers<TRules<E> & E> & Record<string, (...args: TArgs) => TRules<E> & E> & {
117
- [P in KBaseRules]: (...args: DropFirst<Parameters<TBaseRules[P]>> | TArgs) => TRules<E> & E;
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 TRules<E> {
122
+ interface IRules<E> extends Rules<E> {
123
123
  }
124
124
  }
125
125
  }
126
- type TLazyRules = n4s.IRules<TLazyRuleMethods>;
127
- type TLazy = TLazyRules & TLazyRuleMethods &
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 TLazyRuleMethods = TLazyRuleRunners & {
132
- message: (message: TLazyMessage) => TLazy;
131
+ type LazyRuleMethods = LazyRuleRunners & {
132
+ message: (message: LazyMessage) => Lazy;
133
133
  };
134
- type TLazyRuleRunners = {
134
+ type LazyRuleRunners = {
135
135
  test: (value: unknown) => boolean;
136
- run: (value: unknown) => TRuleDetailedResult;
136
+ run: (value: unknown) => RuleDetailedResult;
137
137
  };
138
- type TLazyMessage = string | ((value: unknown, originalMessage?: TStringable) => string);
139
- declare function isArrayOf(inputArray: any[], currentRule: TLazyRuleRunners): TRuleDetailedResult;
140
- interface IShapeObject extends Record<string, any>, Record<string, TLazyRuleRunners> {
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: IShapeObject): TRuleDetailedResult;
143
- declare function optional(value: any, ruleChain: TLazy): TRuleDetailedResult;
144
- declare function shape(inputObject: Record<string, any>, shapeObject: IShapeObject): TRuleDetailedResult;
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 IShapeObject, but that's not possible.
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 {