vest 4.4.3-dev-c786f7 → 4.6.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (33) hide show
  1. package/dist/cjs/classnames.development.js +13 -36
  2. package/dist/cjs/classnames.production.js +1 -1
  3. package/dist/cjs/parser.development.js +13 -36
  4. package/dist/cjs/parser.production.js +1 -1
  5. package/dist/cjs/vest.development.js +232 -187
  6. package/dist/cjs/vest.production.js +1 -1
  7. package/dist/es/classnames.development.js +14 -37
  8. package/dist/es/classnames.production.js +1 -1
  9. package/dist/es/parser.development.js +14 -37
  10. package/dist/es/parser.production.js +1 -1
  11. package/dist/es/vest.development.js +233 -189
  12. package/dist/es/vest.production.js +1 -1
  13. package/dist/umd/classnames.development.js +19 -96
  14. package/dist/umd/classnames.production.js +1 -1
  15. package/dist/umd/enforce/compose.development.js +9 -665
  16. package/dist/umd/enforce/compose.production.js +1 -1
  17. package/dist/umd/enforce/compounds.development.js +17 -667
  18. package/dist/umd/enforce/compounds.production.js +1 -1
  19. package/dist/umd/enforce/schema.development.js +12 -668
  20. package/dist/umd/enforce/schema.production.js +1 -1
  21. package/dist/umd/parser.development.js +18 -95
  22. package/dist/umd/parser.production.js +1 -1
  23. package/dist/umd/promisify.development.js +5 -31
  24. package/dist/umd/promisify.production.js +1 -1
  25. package/dist/umd/vest.development.js +336 -1067
  26. package/dist/umd/vest.production.js +1 -1
  27. package/package.json +4 -4
  28. package/types/enforce/compose.d.ts +2 -1
  29. package/types/enforce/compounds.d.ts +8 -9
  30. package/types/enforce/schema.d.ts +7 -5
  31. package/types/parser.d.ts +8 -7
  32. package/types/promisify.d.ts +20 -35
  33. package/types/vest.d.ts +79 -81
@@ -1,494 +1,8 @@
1
- (function (factory) {
2
- typeof define === 'function' && define.amd ? define(factory) :
3
- factory();
4
- }((function () { 'use strict';
5
-
6
- function bindNot(fn) {
7
- return function () {
8
- var args = [];
9
- for (var _i = 0; _i < arguments.length; _i++) {
10
- args[_i] = arguments[_i];
11
- }
12
- return !fn.apply(void 0, args);
13
- };
14
- }
15
-
16
- function isNumeric(value) {
17
- var str = String(value);
18
- var num = Number(value);
19
- var result = !isNaN(parseFloat(str)) && !isNaN(Number(value)) && isFinite(num);
20
- return Boolean(result);
21
- }
22
- var isNotNumeric = bindNot(isNumeric);
23
-
24
- function numberEquals(value, eq) {
25
- return isNumeric(value) && isNumeric(eq) && Number(value) === Number(eq);
26
- }
27
- var numberNotEquals = bindNot(numberEquals);
28
-
29
- function lengthEquals(value, arg1) {
30
- return numberEquals(value.length, arg1);
31
- }
32
- var lengthNotEquals = bindNot(lengthEquals);
33
-
34
- function greaterThan(value, gt) {
35
- return isNumeric(value) && isNumeric(gt) && Number(value) > Number(gt);
36
- }
37
-
38
- function longerThan(value, arg1) {
39
- return greaterThan(value.length, arg1);
40
- }
41
-
42
- function isNull(value) {
43
- return value === null;
44
- }
45
- var isNotNull = bindNot(isNull);
46
-
47
- function isUndefined(value) {
48
- return value === undefined;
49
- }
50
- var isNotUndefined = bindNot(isUndefined);
51
-
52
- function isNullish(value) {
53
- return isNull(value) || isUndefined(value);
54
- }
55
- var isNotNullish = bindNot(isNullish);
56
-
57
- function isFunction(value) {
58
- return typeof value === 'function';
59
- }
60
-
61
- function optionalFunctionValue(value) {
62
- var args = [];
63
- for (var _i = 1; _i < arguments.length; _i++) {
64
- args[_i - 1] = arguments[_i];
65
- }
66
- return isFunction(value) ? value.apply(void 0, args) : value;
67
- }
68
-
69
- function defaultTo(value, defaultValue) {
70
- var _a;
71
- return (_a = optionalFunctionValue(value)) !== null && _a !== void 0 ? _a : optionalFunctionValue(defaultValue);
72
- }
73
-
74
- // The module is named "isArrayValue" since it
75
- // is conflicting with a nested npm dependency.
76
- // We may need to revisit this in the future.
77
- function isArray(value) {
78
- return Boolean(Array.isArray(value));
79
- }
80
- var isNotArray = bindNot(isArray);
81
-
82
- /**
83
- * A safe hasOwnProperty access
84
- */
85
- function hasOwnProperty(obj, key) {
86
- return Object.prototype.hasOwnProperty.call(obj, key);
87
- }
88
-
89
- var assign = Object.assign;
90
-
91
- function invariant(condition,
92
- // eslint-disable-next-line @typescript-eslint/ban-types
93
- message) {
94
- if (condition) {
95
- return;
96
- }
97
- // If message is a string object (rather than string literal)
98
- // Throw the value directly as a string
99
- // Alternatively, throw an error with the message
100
- throw message instanceof String
101
- ? message.valueOf()
102
- : new Error(message ? optionalFunctionValue(message) : message);
103
- }
104
- // eslint-disable-next-line @typescript-eslint/ban-types
105
- function StringObject(value) {
106
- return new String(optionalFunctionValue(value));
107
- }
108
-
109
- function isStringValue(v) {
110
- return String(v) === v;
111
- }
112
-
113
- function isBoolean(value) {
114
- return !!value === value;
115
- }
116
-
117
- function mapFirst(array, callback) {
118
- var broke = false;
119
- var breakoutValue = null;
120
- for (var i = 0; i < array.length; i++) {
121
- callback(array[i], breakout, i);
122
- if (broke) {
123
- return breakoutValue;
124
- }
125
- }
126
- function breakout(conditional, value) {
127
- if (conditional) {
128
- broke = true;
129
- breakoutValue = value;
130
- }
131
- }
132
- }
133
-
134
- function isEmpty(value) {
135
- if (!value) {
136
- return true;
137
- }
138
- else if (hasOwnProperty(value, 'length')) {
139
- return lengthEquals(value, 0);
140
- }
141
- else if (typeof value === 'object') {
142
- return lengthEquals(Object.keys(value), 0);
143
- }
144
- return false;
145
- }
146
- var isNotEmpty = bindNot(isEmpty);
147
-
148
- function isPositive(value) {
149
- return greaterThan(value, 0);
150
- }
151
-
152
- function endsWith(value, arg1) {
153
- return isStringValue(value) && isStringValue(arg1) && value.endsWith(arg1);
154
- }
155
- var doesNotEndWith = bindNot(endsWith);
156
-
157
- function equals(value, arg1) {
158
- return value === arg1;
159
- }
160
- var notEquals = bindNot(equals);
161
-
162
- function greaterThanOrEquals(value, gte) {
163
- return numberEquals(value, gte) || greaterThan(value, gte);
164
- }
165
-
166
- function inside(value, arg1) {
167
- if (isArray(arg1)) {
168
- return arg1.indexOf(value) !== -1;
169
- }
170
- // both value and arg1 are strings
171
- if (isStringValue(arg1) && isStringValue(value)) {
172
- return arg1.indexOf(value) !== -1;
173
- }
174
- return false;
175
- }
176
- var notInside = bindNot(inside);
177
-
178
- function lessThan(value, lt) {
179
- return isNumeric(value) && isNumeric(lt) && Number(value) < Number(lt);
180
- }
181
-
182
- function lessThanOrEquals(value, lte) {
183
- return numberEquals(value, lte) || lessThan(value, lte);
184
- }
185
-
186
- function isBetween(value, min, max) {
187
- return greaterThanOrEquals(value, min) && lessThanOrEquals(value, max);
188
- }
189
- var isNotBetween = bindNot(isBetween);
190
-
191
- function isBlank(value) {
192
- return isNullish(value) || (isStringValue(value) && !value.trim());
193
- }
194
- var isNotBlank = bindNot(isBlank);
195
-
196
- var isNotBoolean = bindNot(isBoolean);
197
-
198
- /**
199
- * Validates that a given value is an even number
200
- */
201
- var isEven = function (value) {
202
- if (isNumeric(value)) {
203
- return value % 2 === 0;
204
- }
205
- return false;
206
- };
207
-
208
- function isKeyOf(key, obj) {
209
- return key in obj;
210
- }
211
- var isNotKeyOf = bindNot(isKeyOf);
212
-
213
- function isNaN$1(value) {
214
- return Number.isNaN(value);
215
- }
216
- var isNotNaN = bindNot(isNaN$1);
217
-
218
- function isNegative(value) {
219
- return lessThan(value, 0);
220
- }
221
-
222
- function isNumber(value) {
223
- return Boolean(typeof value === 'number');
224
- }
225
- var isNotNumber = bindNot(isNumber);
226
-
227
- /**
228
- * Validates that a given value is an odd number
229
- */
230
- var isOdd = function (value) {
231
- if (isNumeric(value)) {
232
- return value % 2 !== 0;
233
- }
234
- return false;
235
- };
236
-
237
- var isNotString = bindNot(isStringValue);
238
-
239
- function isTruthy(value) {
240
- return !!value;
241
- }
242
- var isFalsy = bindNot(isTruthy);
243
-
244
- function isValueOf(value, objectToCheck) {
245
- if (isNullish(objectToCheck)) {
246
- return false;
247
- }
248
- for (var key in objectToCheck) {
249
- if (objectToCheck[key] === value) {
250
- return true;
251
- }
252
- }
253
- return false;
254
- }
255
- var isNotValueOf = bindNot(isValueOf);
256
-
257
- function longerThanOrEquals(value, arg1) {
258
- return greaterThanOrEquals(value.length, arg1);
259
- }
260
-
261
- function matches(value, regex) {
262
- if (regex instanceof RegExp) {
263
- return regex.test(value);
264
- }
265
- else if (isStringValue(regex)) {
266
- return new RegExp(regex).test(value);
267
- }
268
- else {
269
- return false;
270
- }
271
- }
272
- var notMatches = bindNot(matches);
273
-
274
- function condition(value, callback) {
275
- try {
276
- return callback(value);
277
- }
278
- catch (_a) {
279
- return false;
280
- }
281
- }
282
-
283
- function shorterThan(value, arg1) {
284
- return lessThan(value.length, arg1);
285
- }
286
-
287
- function shorterThanOrEquals(value, arg1) {
288
- return lessThanOrEquals(value.length, arg1);
289
- }
290
-
291
- function startsWith(value, arg1) {
292
- return isStringValue(value) && isStringValue(arg1) && value.startsWith(arg1);
293
- }
294
- var doesNotStartWith = bindNot(startsWith);
295
-
296
- // eslint-disable-next-line @typescript-eslint/explicit-module-boundary-types, max-lines-per-function
297
- function rules() {
298
- return {
299
- condition: condition,
300
- doesNotEndWith: doesNotEndWith,
301
- doesNotStartWith: doesNotStartWith,
302
- endsWith: endsWith,
303
- equals: equals,
304
- greaterThan: greaterThan,
305
- greaterThanOrEquals: greaterThanOrEquals,
306
- gt: greaterThan,
307
- gte: greaterThanOrEquals,
308
- inside: inside,
309
- isArray: isArray,
310
- isBetween: isBetween,
311
- isBlank: isBlank,
312
- isBoolean: isBoolean,
313
- isEmpty: isEmpty,
314
- isEven: isEven,
315
- isFalsy: isFalsy,
316
- isKeyOf: isKeyOf,
317
- isNaN: isNaN$1,
318
- isNegative: isNegative,
319
- isNotArray: isNotArray,
320
- isNotBetween: isNotBetween,
321
- isNotBlank: isNotBlank,
322
- isNotBoolean: isNotBoolean,
323
- isNotEmpty: isNotEmpty,
324
- isNotKeyOf: isNotKeyOf,
325
- isNotNaN: isNotNaN,
326
- isNotNull: isNotNull,
327
- isNotNullish: isNotNullish,
328
- isNotNumber: isNotNumber,
329
- isNotNumeric: isNotNumeric,
330
- isNotString: isNotString,
331
- isNotUndefined: isNotUndefined,
332
- isNotValueOf: isNotValueOf,
333
- isNull: isNull,
334
- isNullish: isNullish,
335
- isNumber: isNumber,
336
- isNumeric: isNumeric,
337
- isOdd: isOdd,
338
- isPositive: isPositive,
339
- isString: isStringValue,
340
- isTruthy: isTruthy,
341
- isUndefined: isUndefined,
342
- isValueOf: isValueOf,
343
- lengthEquals: lengthEquals,
344
- lengthNotEquals: lengthNotEquals,
345
- lessThan: lessThan,
346
- lessThanOrEquals: lessThanOrEquals,
347
- longerThan: longerThan,
348
- longerThanOrEquals: longerThanOrEquals,
349
- lt: lessThan,
350
- lte: lessThanOrEquals,
351
- matches: matches,
352
- notEquals: notEquals,
353
- notInside: notInside,
354
- notMatches: notMatches,
355
- numberEquals: numberEquals,
356
- numberNotEquals: numberNotEquals,
357
- shorterThan: shorterThan,
358
- shorterThanOrEquals: shorterThanOrEquals,
359
- startsWith: startsWith
360
- };
361
- }
362
-
363
- var baseRules = rules();
364
- function getRule(ruleName) {
365
- return baseRules[ruleName];
366
- }
367
-
368
- function eachEnforceRule(action) {
369
- for (var ruleName in baseRules) {
370
- var ruleFn = getRule(ruleName);
371
- if (isFunction(ruleFn)) {
372
- action(ruleName, ruleFn);
373
- }
374
- }
375
- }
376
-
377
- // eslint-disable-next-line max-lines-per-function
378
- function createContext(init) {
379
- var storage = { ancestry: [] };
380
- return {
381
- bind: bind,
382
- run: run,
383
- use: use,
384
- useX: useX
385
- };
386
- function useX(errorMessage) {
387
- var ctx = use();
388
- invariant(ctx, defaultTo(errorMessage, 'Context was used after it was closed'));
389
- return ctx;
390
- }
391
- function run(ctxRef, fn) {
392
- var _a;
393
- var parentContext = use();
394
- var out = assign({}, parentContext ? parentContext : {}, (_a = optionalFunctionValue(init, ctxRef, parentContext)) !== null && _a !== void 0 ? _a : ctxRef);
395
- var ctx = set(Object.freeze(out));
396
- storage.ancestry.unshift(ctx);
397
- var res = fn(ctx);
398
- clear();
399
- return res;
400
- }
401
- function bind(ctxRef, fn) {
402
- // eslint-disable-next-line @typescript-eslint/ban-ts-comment
403
- // @ts-ignore - this one's pretty hard to get right
404
- var returnedFn = function () {
405
- var runTimeArgs = [];
406
- for (var _i = 0; _i < arguments.length; _i++) {
407
- runTimeArgs[_i] = arguments[_i];
408
- }
409
- return run(ctxRef, function () {
410
- return fn.apply(void 0, runTimeArgs);
411
- });
412
- };
413
- return returnedFn;
414
- }
415
- function use() {
416
- return storage.ctx;
417
- }
418
- function set(value) {
419
- return (storage.ctx = value);
420
- }
421
- function clear() {
422
- var _a;
423
- storage.ancestry.shift();
424
- set((_a = storage.ancestry[0]) !== null && _a !== void 0 ? _a : null);
425
- }
426
- }
427
-
428
- var ctx = createContext(function (ctxRef, parentContext) {
429
- var base = {
430
- value: ctxRef.value,
431
- meta: ctxRef.meta || {}
432
- };
433
- if (!parentContext) {
434
- return assign(base, {
435
- parent: emptyParent
436
- });
437
- }
438
- else if (ctxRef.set) {
439
- return assign(base, {
440
- parent: function () { return stripContext(parentContext); }
441
- });
442
- }
443
- return parentContext;
444
- });
445
- function stripContext(ctx) {
446
- if (!ctx) {
447
- return ctx;
448
- }
449
- return {
450
- value: ctx.value,
451
- meta: ctx.meta,
452
- parent: ctx.parent
453
- };
454
- }
455
- function emptyParent() {
456
- return null;
457
- }
458
-
459
- /******************************************************************************
460
- Copyright (c) Microsoft Corporation.
461
-
462
- Permission to use, copy, modify, and/or distribute this software for any
463
- purpose with or without fee is hereby granted.
464
-
465
- THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH
466
- REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY
467
- AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,
468
- INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM
469
- LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR
470
- OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
471
- PERFORMANCE OF THIS SOFTWARE.
472
- ***************************************************************************** */
473
-
474
- function __spreadArray(to, from, pack) {
475
- if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {
476
- if (ar || !(i in from)) {
477
- if (!ar) ar = Array.prototype.slice.call(from, 0, i);
478
- ar[i] = from[i];
479
- }
480
- }
481
- return to.concat(ar || Array.prototype.slice.call(from));
482
- }
483
-
484
- function isProxySupported() {
485
- try {
486
- return isFunction(Proxy);
487
- }
488
- catch (_a) {
489
- return false;
490
- }
491
- }
1
+ (function (global, factory) {
2
+ typeof exports === 'object' && typeof module !== 'undefined' ? factory(require('n4s'), require('vest-utils')) :
3
+ typeof define === 'function' && define.amd ? define(['n4s', 'vest-utils'], factory) :
4
+ (global = typeof globalThis !== 'undefined' ? globalThis : global || self, factory(global.n4s, global['vest-utils']));
5
+ }(this, (function (n4s, vestUtils) { 'use strict';
492
6
 
493
7
  function ruleReturn(pass, message) {
494
8
  var output = { pass: pass };
@@ -504,181 +18,12 @@
504
18
  return ruleReturn(true);
505
19
  }
506
20
  function defaultToFailing(callback) {
507
- return defaultTo(callback, failing());
21
+ return vestUtils.defaultTo(callback, failing());
508
22
  }
509
23
  function defaultToPassing(callback) {
510
- return defaultTo(callback, passing());
511
- }
512
-
513
- /**
514
- * Transform the result of a rule into a standard format
515
- */
516
- function transformResult(result, ruleName, value) {
517
- var args = [];
518
- for (var _i = 3; _i < arguments.length; _i++) {
519
- args[_i - 3] = arguments[_i];
520
- }
521
- validateResult(result);
522
- // if result is boolean
523
- if (isBoolean(result)) {
524
- return ruleReturn(result);
525
- }
526
- else {
527
- return ruleReturn(result.pass, optionalFunctionValue.apply(void 0, __spreadArray([result.message, ruleName, value], args, false)));
528
- }
529
- }
530
- function validateResult(result) {
531
- // if result is boolean, or if result.pass is boolean
532
- invariant(isBoolean(result) || (result && isBoolean(result.pass)), 'Incorrect return value for rule: ' + JSON.stringify(result));
24
+ return vestUtils.defaultTo(callback, passing());
533
25
  }
534
26
 
535
- function enforceEager(value) {
536
- var target = {};
537
- if (!isProxySupported()) {
538
- eachEnforceRule(function (ruleName, ruleFn) {
539
- target[ruleName] = genRuleCall(target, ruleFn, ruleName);
540
- });
541
- return target;
542
- }
543
- var proxy = new Proxy(target, {
544
- get: function (_, ruleName) {
545
- var rule = getRule(ruleName);
546
- if (rule) {
547
- return genRuleCall(proxy, rule, ruleName);
548
- }
549
- }
550
- });
551
- return proxy;
552
- function genRuleCall(target, rule, ruleName) {
553
- return function ruleCall() {
554
- var args = [];
555
- for (var _i = 0; _i < arguments.length; _i++) {
556
- args[_i] = arguments[_i];
557
- }
558
- var transformedResult = ctx.run({ value: value }, function () {
559
- return transformResult.apply(void 0, __spreadArray([rule.apply(void 0, __spreadArray([value], args, false)), ruleName, value], args, false));
560
- });
561
- invariant(transformedResult.pass, isNullish(transformedResult.message)
562
- ? "enforce/".concat(ruleName, " failed with ").concat(JSON.stringify(value))
563
- : StringObject(transformedResult.message));
564
- return target;
565
- };
566
- }
567
- }
568
-
569
- // eslint-disable-next-line max-lines-per-function
570
- function genEnforceLazy(key) {
571
- var registeredRules = [];
572
- var lazyMessage;
573
- return addLazyRule(key);
574
- // eslint-disable-next-line max-lines-per-function
575
- function addLazyRule(ruleName) {
576
- // eslint-disable-next-line max-lines-per-function
577
- return function () {
578
- var args = [];
579
- for (var _i = 0; _i < arguments.length; _i++) {
580
- args[_i] = arguments[_i];
581
- }
582
- var rule = getRule(ruleName);
583
- registeredRules.push(function (value) {
584
- return transformResult.apply(void 0, __spreadArray([rule.apply(void 0, __spreadArray([value], args, false)), ruleName, value], args, false));
585
- });
586
- var proxy = {
587
- run: function (value) {
588
- return defaultToPassing(mapFirst(registeredRules, function (rule, breakout) {
589
- var _a;
590
- var res = ctx.run({ value: value }, function () { return rule(value); });
591
- breakout(!res.pass, ruleReturn(!!res.pass, (_a = optionalFunctionValue(lazyMessage, value, res.message)) !== null && _a !== void 0 ? _a : res.message));
592
- }));
593
- },
594
- test: function (value) { return proxy.run(value).pass; },
595
- message: function (message) {
596
- if (message) {
597
- lazyMessage = message;
598
- }
599
- return proxy;
600
- }
601
- };
602
- if (!isProxySupported()) {
603
- eachEnforceRule(function (ruleName) {
604
- proxy[ruleName] = addLazyRule(ruleName);
605
- });
606
- return proxy;
607
- }
608
- // reassigning the proxy here is not pretty
609
- // but it's a cleaner way of getting `run` and `test` for free
610
- proxy = new Proxy(proxy, {
611
- get: function (target, key) {
612
- if (getRule(key)) {
613
- return addLazyRule(key);
614
- }
615
- return target[key]; // already has `run` and `test` on it
616
- }
617
- });
618
- return proxy;
619
- };
620
- }
621
- }
622
-
623
- /**
624
- * Enforce is quite complicated, I want to explain it in detail.
625
- * It is dynamic in nature, so a lot of proxy objects are involved.
626
- *
627
- * Enforce has two main interfaces
628
- * 1. eager
629
- * 2. lazy
630
- *
631
- * The eager interface is the most commonly used, and the easier to understand.
632
- * It throws an error when a rule is not satisfied.
633
- * The eager interface is declared in enforceEager.ts and it is quite simple to understand.
634
- * enforce is called with a value, and the return value is a proxy object that points back to all the rules.
635
- * When a rule is called, the value is mapped as its first argument, and if the rule passes, the same
636
- * proxy object is returned. Otherwise, an error is thrown.
637
- *
638
- * The lazy interface works quite differently. It is declared in genEnforceLazy.ts.
639
- * Rather than calling enforce directly, the lazy interface has all the rules as "methods" (only by proxy).
640
- * Calling the first function in the chain will initialize an array of calls. It stores the different rule calls
641
- * and the parameters passed to them. None of the rules are called yet.
642
- * The rules are only invoked in sequence once either of these chained functions are called:
643
- * 1. test(value)
644
- * 2. run(value)
645
- *
646
- * Calling run or test will call all the rules in sequence, with the difference that test will only return a boolean value,
647
- * while run will return an object with the validation result and an optional message created by the rule.
648
- */
649
- function genEnforce() {
650
- var target = {
651
- context: function () { return ctx.useX(); },
652
- extend: function (customRules) {
653
- assign(baseRules, customRules);
654
- handleNoProxy(); // TODO: REMOVE when we stop supporting ES5
655
- }
656
- };
657
- handleNoProxy();
658
- return new Proxy(assign(enforceEager, target), {
659
- get: function (target, key) {
660
- if (key in target) {
661
- return target[key];
662
- }
663
- if (!getRule(key)) {
664
- return;
665
- }
666
- // Only on the first rule access - start the chain of calls
667
- return genEnforceLazy(key);
668
- }
669
- });
670
- function handleNoProxy() {
671
- if (!isProxySupported()) {
672
- eachEnforceRule(function (ruleName) {
673
- // Only on the first rule access - start the chain of calls
674
- target[ruleName] = genEnforceLazy(ruleName);
675
- });
676
- return assign(enforceEager, target);
677
- }
678
- }
679
- }
680
- var enforce = genEnforce();
681
-
682
27
  function runLazyRule(lazyRule, currentValue) {
683
28
  try {
684
29
  return lazyRule.run(currentValue);
@@ -693,7 +38,7 @@
693
38
  for (var _i = 1; _i < arguments.length; _i++) {
694
39
  rules[_i - 1] = arguments[_i];
695
40
  }
696
- return defaultToPassing(mapFirst(rules, function (rule, breakout) {
41
+ return defaultToPassing(vestUtils.mapFirst(rules, function (rule, breakout) {
697
42
  var res = runLazyRule(rule, value);
698
43
  breakout(!res.pass, res);
699
44
  }));
@@ -704,7 +49,7 @@
704
49
  for (var _i = 1; _i < arguments.length; _i++) {
705
50
  rules[_i - 1] = arguments[_i];
706
51
  }
707
- return defaultToFailing(mapFirst(rules, function (rule, breakout) {
52
+ return defaultToFailing(vestUtils.mapFirst(rules, function (rule, breakout) {
708
53
  var res = runLazyRule(rule, value);
709
54
  breakout(res.pass, res);
710
55
  }));
@@ -715,12 +60,17 @@
715
60
  for (var _i = 1; _i < arguments.length; _i++) {
716
61
  rules[_i - 1] = arguments[_i];
717
62
  }
718
- return defaultToPassing(mapFirst(rules, function (rule, breakout) {
63
+ return defaultToPassing(vestUtils.mapFirst(rules, function (rule, breakout) {
719
64
  var res = runLazyRule(rule, value);
720
65
  breakout(res.pass, failing());
721
66
  }));
722
67
  }
723
68
 
69
+ function equals(value, arg1) {
70
+ return value === arg1;
71
+ }
72
+ vestUtils.bindNot(equals);
73
+
724
74
  var REQUIRED_COUNT = 1;
725
75
  function oneOf(value) {
726
76
  var rules = [];
@@ -733,13 +83,13 @@
733
83
  if (res.pass) {
734
84
  passingCount++;
735
85
  }
736
- if (greaterThan(passingCount, REQUIRED_COUNT)) {
86
+ if (vestUtils.greaterThan(passingCount, REQUIRED_COUNT)) {
737
87
  return false;
738
88
  }
739
89
  });
740
90
  return ruleReturn(equals(passingCount, REQUIRED_COUNT));
741
91
  }
742
92
 
743
- enforce.extend({ allOf: allOf, anyOf: anyOf, noneOf: noneOf, oneOf: oneOf });
93
+ n4s.enforce.extend({ allOf: allOf, anyOf: anyOf, noneOf: noneOf, oneOf: oneOf });
744
94
 
745
95
  })));