@based/schema 1.0.9 → 1.1.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.
package/dist/error.d.ts CHANGED
@@ -13,5 +13,6 @@ export declare enum ParseError {
13
13
  'languageNotSupported' = 11,
14
14
  'invalidJSON' = 12,
15
15
  'noLanguageFound' = 13,
16
- 'cannotDeleteNodeFromModify' = 14
16
+ 'cannotDeleteNodeFromModify' = 14,
17
+ 'nestedModifyObjectNotAllowed' = 15
17
18
  }
package/dist/error.js CHANGED
@@ -18,5 +18,6 @@ var ParseError;
18
18
  ParseError[ParseError["invalidJSON"] = 12] = "invalidJSON";
19
19
  ParseError[ParseError["noLanguageFound"] = 13] = "noLanguageFound";
20
20
  ParseError[ParseError["cannotDeleteNodeFromModify"] = 14] = "cannotDeleteNodeFromModify";
21
+ ParseError[ParseError["nestedModifyObjectNotAllowed"] = 15] = "nestedModifyObjectNotAllowed";
21
22
  })(ParseError = exports.ParseError || (exports.ParseError = {}));
22
23
  //# sourceMappingURL=error.js.map
package/dist/error.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"error.js","sourceRoot":"","sources":["../src/error.ts"],"names":[],"mappings":";;;AAAA,IAAY,UAgBX;AAhBD,WAAY,UAAU;IACpB,uEAAoB,CAAA;IACpB,qEAAmB,CAAA;IACnB,+DAAgB,CAAA;IAChB,iEAAiB,CAAA;IACjB,qEAAmB,CAAA;IACnB,iEAAiB,CAAA;IACjB,mFAA0B,CAAA;IAC1B,iEAAiB,CAAA;IACjB,yEAAqB,CAAA;IACrB,2FAA8B,CAAA;IAC9B,kFAAyB,CAAA;IACzB,4EAAsB,CAAA;IACtB,0DAAa,CAAA;IACb,kEAAiB,CAAA;IACjB,wFAA4B,CAAA;AAC9B,CAAC,EAhBW,UAAU,GAAV,kBAAU,KAAV,kBAAU,QAgBrB"}
1
+ {"version":3,"file":"error.js","sourceRoot":"","sources":["../src/error.ts"],"names":[],"mappings":";;;AAAA,IAAY,UAiBX;AAjBD,WAAY,UAAU;IACpB,uEAAoB,CAAA;IACpB,qEAAmB,CAAA;IACnB,+DAAgB,CAAA;IAChB,iEAAiB,CAAA;IACjB,qEAAmB,CAAA;IACnB,iEAAiB,CAAA;IACjB,mFAA0B,CAAA;IAC1B,iEAAiB,CAAA;IACjB,yEAAqB,CAAA;IACrB,2FAA8B,CAAA;IAC9B,kFAAyB,CAAA;IACzB,4EAAsB,CAAA;IACtB,0DAAa,CAAA;IACb,kEAAiB,CAAA;IACjB,wFAA4B,CAAA;IAC5B,4FAA8B,CAAA;AAChC,CAAC,EAjBW,UAAU,GAAV,kBAAU,KAAV,kBAAU,QAiBrB"}
@@ -8,6 +8,10 @@ const validateNumber = (args, value, ignoreMinMax) => {
8
8
  args.error(error_1.ParseError.incorrectFormat);
9
9
  return false;
10
10
  }
11
+ if (isNaN(value)) {
12
+ args.error(error_1.ParseError.incorrectFormat);
13
+ return false;
14
+ }
11
15
  if (fieldSchema.type === 'integer' && value - Math.floor(value) !== 0) {
12
16
  args.error(error_1.ParseError.incorrectFormat);
13
17
  return false;
@@ -20,7 +24,7 @@ const validateNumber = (args, value, ignoreMinMax) => {
20
24
  return false;
21
25
  }
22
26
  if (ignoreMinMax) {
23
- // TODO: maybe add async validator getting the actual value from the db OR checking the result of the $incr/$decr operation
27
+ // TODO: will be handled in the actual modify command
24
28
  return true;
25
29
  }
26
30
  if (fieldSchema.maximum) {
@@ -1 +1 @@
1
- {"version":3,"file":"number.js","sourceRoot":"","sources":["../../../src/set/fields/number.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"number.js","sourceRoot":"","sources":["../../../src/set/fields/number.ts"],"names":[],"mappings":"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"}
@@ -24,28 +24,20 @@ async function parseOperator(args, key) {
24
24
  await (0, exports.reference)(n);
25
25
  return [n.value];
26
26
  }
27
- const reference = async (args) => {
28
- // TODO: setting an object here , handling $alias (both async hooks)
29
- // block if path contains $remove
30
- if (!(0, isValidId_1.isValidId)(args.schema, args.value)) {
31
- args.error(error_1.ParseError.incorrectFormat);
32
- return;
33
- }
27
+ const typeIsAllowed = (args, type) => {
34
28
  if ('allowedTypes' in args.fieldSchema) {
35
- const prefix = args.value.slice(0, 2);
36
- const targetType = args.schema.prefixToTypeMapping[prefix];
37
29
  let typeMatches = false;
38
30
  for (const t of args.fieldSchema.allowedTypes) {
39
31
  if (typeof t === 'string') {
40
- if (t === targetType) {
41
- typeMatches = true;
42
- break;
32
+ if (t === type) {
33
+ return true;
43
34
  }
44
35
  }
45
36
  else {
46
- if (t.type && t.type === targetType) {
37
+ if (t.type && t.type === type) {
47
38
  typeMatches = true;
48
39
  if (t.$filter) {
40
+ // stage on requires validation in target
49
41
  // TODO: ASYNC HOOK
50
42
  // if(!(await args.target.referenceFilterCondition(value, t.$filter))){
51
43
  // error(args, ParseError.referenceIsIncorrectType)
@@ -61,11 +53,41 @@ const reference = async (args) => {
61
53
  }
62
54
  }
63
55
  if (typeMatches === false) {
64
- args.error(error_1.ParseError.referenceIsIncorrectType);
56
+ return false;
57
+ }
58
+ }
59
+ return true;
60
+ };
61
+ const reference = async (args) => {
62
+ // TODO: setting an object here , handling $alias (both async hooks)
63
+ // Block if path contains $remove (maybe not for $alias)
64
+ if (typeof args.value === 'object') {
65
+ if (args.root._opts.asyncOperationHandler) {
66
+ if (args.value.type && !typeIsAllowed(args, args.value.type)) {
67
+ args.error(error_1.ParseError.referenceIsIncorrectType);
68
+ return;
69
+ }
70
+ if (!args.target.errors.length) {
71
+ args.value = await args.root._opts.asyncOperationHandler(args, 'modifyObject');
72
+ }
73
+ }
74
+ else {
75
+ args.error(error_1.ParseError.nestedModifyObjectNotAllowed);
65
76
  return;
66
77
  }
67
78
  }
68
- args.collect();
79
+ if (!(0, isValidId_1.isValidId)(args.schema, args.value)) {
80
+ args.error(error_1.ParseError.incorrectFormat);
81
+ return;
82
+ }
83
+ const prefix = args.value.slice(0, 2);
84
+ const targetType = args.schema.prefixToTypeMapping[prefix];
85
+ if (typeIsAllowed(args, targetType)) {
86
+ args.collect();
87
+ }
88
+ else {
89
+ args.error(error_1.ParseError.referenceIsIncorrectType);
90
+ }
69
91
  };
70
92
  exports.reference = reference;
71
93
  const references = async (args) => {
@@ -1 +1 @@
1
- {"version":3,"file":"references.js","sourceRoot":"","sources":["../../../src/set/fields/references.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"references.js","sourceRoot":"","sources":["../../../src/set/fields/references.ts"],"names":[],"mappings":"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"}
@@ -1,2 +1,3 @@
1
1
  import { BasedSchema, BasedSetTarget } from '../types';
2
- export declare const setWalker: (schema: BasedSchema, value: any) => Promise<BasedSetTarget>;
2
+ import { AsyncOperation } from '../walker';
3
+ export declare const setWalker: (schema: BasedSchema, value: any, asyncOperationHandler?: AsyncOperation<BasedSetTarget>) => Promise<BasedSetTarget>;
package/dist/set/index.js CHANGED
@@ -136,6 +136,8 @@ const opts = {
136
136
  args.root.target.collected.push(args);
137
137
  },
138
138
  };
139
- const setWalker = (schema, value) => (0, walker_1.walk)(schema, opts, value);
139
+ const setWalker = (schema, value, asyncOperationHandler) => {
140
+ return (0, walker_1.walk)(schema, opts, value, asyncOperationHandler);
141
+ };
140
142
  exports.setWalker = setWalker;
141
143
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/set/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/set/index.ts"],"names":[],"mappings":"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"}
@@ -1,6 +1,6 @@
1
1
  import { BasedSchema } from '../types';
2
2
  import { ArgsClass } from './args';
3
- import { Opts } from './types';
4
- export declare const walk: <T>(schema: BasedSchema, opts: Opts<T>, value: any) => Promise<T>;
3
+ import { AsyncOperation, Opts } from './types';
4
+ export declare const walk: <T>(schema: BasedSchema, opts: Opts<T>, value: any, asyncOperationHandler?: AsyncOperation<T>) => Promise<T>;
5
5
  export { ArgsClass };
6
6
  export * from './types';
@@ -17,13 +17,16 @@ Object.defineProperty(exports, "__esModule", { value: true });
17
17
  exports.ArgsClass = exports.walk = void 0;
18
18
  const args_1 = require("./args");
19
19
  Object.defineProperty(exports, "ArgsClass", { enumerable: true, get: function () { return args_1.ArgsClass; } });
20
- const walk = async (schema, opts, value) => {
20
+ const walk = async (schema, opts, value, asyncOperationHandler) => {
21
21
  if (!('collect' in opts)) {
22
22
  opts.collect = () => { };
23
23
  }
24
24
  if (!('error' in opts)) {
25
25
  opts.error = () => { };
26
26
  }
27
+ if (asyncOperationHandler) {
28
+ opts.asyncOperationHandler = asyncOperationHandler;
29
+ }
27
30
  const argsOpts = await opts.init(value, schema, opts.error);
28
31
  if (!argsOpts.value) {
29
32
  argsOpts.value = value;
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/walker/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;AACA,iCAAkC;AA+BzB,0FA/BA,gBAAS,OA+BA;AA5BX,MAAM,IAAI,GAAG,KAAK,EACvB,MAAmB,EACnB,IAAa,EACb,KAAU,EACE,EAAE;IACd,IAAI,CAAC,CAAC,SAAS,IAAI,IAAI,CAAC,EAAE;QACxB,IAAI,CAAC,OAAO,GAAG,GAAG,EAAE,GAAE,CAAC,CAAA;KACxB;IAED,IAAI,CAAC,CAAC,OAAO,IAAI,IAAI,CAAC,EAAE;QACtB,IAAI,CAAC,KAAK,GAAG,GAAG,EAAE,GAAE,CAAC,CAAA;KACtB;IAED,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE,MAAM,EAAE,IAAI,CAAC,KAAK,CAAC,CAAA;IAE3D,IAAI,CAAC,QAAQ,CAAC,KAAK,EAAE;QACnB,QAAQ,CAAC,KAAK,GAAG,KAAK,CAAA;KACvB;IAED,MAAM,IAAI,GAAG,IAAI,gBAAS,CAAC,QAAQ,CAAC,CAAA;IACpC,IAAI,CAAC,IAAI,GAAG,IAAI,CAAA;IAChB,IAAI,CAAC,KAAK,GAAG,IAAI,CAAA;IACjB,IAAI,CAAC,OAAO,GAAG,MAAM,CAAA;IACrB,MAAM,IAAI,CAAC,KAAK,EAAE,CAAA;IAElB,OAAO,IAAI,CAAC,MAAM,CAAA;AACpB,CAAC,CAAA;AA1BY,QAAA,IAAI,QA0BhB;AAID,0CAAuB"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/walker/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;AACA,iCAAkC;AAqCzB,0FArCA,gBAAS,OAqCA;AAlCX,MAAM,IAAI,GAAG,KAAK,EACvB,MAAmB,EACnB,IAAa,EACb,KAAU,EACV,qBAAyC,EAC7B,EAAE;IACd,IAAI,CAAC,CAAC,SAAS,IAAI,IAAI,CAAC,EAAE;QACxB,IAAI,CAAC,OAAO,GAAG,GAAG,EAAE,GAAE,CAAC,CAAA;KACxB;IAED,IAAI,CAAC,CAAC,OAAO,IAAI,IAAI,CAAC,EAAE;QACtB,IAAI,CAAC,KAAK,GAAG,GAAG,EAAE,GAAE,CAAC,CAAA;KACtB;IAED,IAAI,qBAAqB,EAAE;QACzB,IAAI,CAAC,qBAAqB,GAAG,qBAAqB,CAAA;KACnD;IAED,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE,MAAM,EAAE,IAAI,CAAC,KAAK,CAAC,CAAA;IAE3D,IAAI,CAAC,QAAQ,CAAC,KAAK,EAAE;QACnB,QAAQ,CAAC,KAAK,GAAG,KAAK,CAAA;KACvB;IAED,MAAM,IAAI,GAAG,IAAI,gBAAS,CAAC,QAAQ,CAAC,CAAA;IACpC,IAAI,CAAC,IAAI,GAAG,IAAI,CAAA;IAChB,IAAI,CAAC,KAAK,GAAG,IAAI,CAAA;IACjB,IAAI,CAAC,OAAO,GAAG,MAAM,CAAA;IAErB,MAAM,IAAI,CAAC,KAAK,EAAE,CAAA;IAElB,OAAO,IAAI,CAAC,MAAM,CAAA;AACpB,CAAC,CAAA;AAhCY,QAAA,IAAI,QAgChB;AAID,0CAAuB"}
@@ -9,6 +9,7 @@ export type KeyParser<T = any> = (args: ArgsClass<T, keyof BasedSchemaFields>) =
9
9
  export type FieldParsers<T = any> = {
10
10
  [Key in keyof BasedSchemaFields]: FieldParser<Key, T>;
11
11
  };
12
+ export type AsyncOperation<T> = (args: ArgsClass<T>, type?: string) => Promise<any>;
12
13
  export type Opts<T> = {
13
14
  init: (value: any, schema: BasedSchema, error: ErrorHandler<T>) => Promise<ArgsOpts<T>>;
14
15
  parsers: {
@@ -24,7 +25,7 @@ export type Opts<T> = {
24
25
  collect?: (args: ArgsClass<T>) => any;
25
26
  error?: ErrorHandler<T>;
26
27
  backtrack?: (args: ArgsClass<T>, fromBackTrack: any[], collectedCommands: any[]) => any;
27
- requiresAsyncValidation?: (validationType: any) => Promise<boolean>;
28
+ asyncOperationHandler?: AsyncOperation<T>;
28
29
  };
29
30
  export declare enum Stopped {
30
31
  onlyStopFieldParser = 0,
@@ -6,4 +6,5 @@ var Stopped;
6
6
  Stopped[Stopped["onlyStopFieldParser"] = 0] = "onlyStopFieldParser";
7
7
  Stopped[Stopped["stopAll"] = 1] = "stopAll";
8
8
  })(Stopped = exports.Stopped || (exports.Stopped = {}));
9
+ // Add asyncOperations // requiresAsyncValidation -> asyncOperation: () => {}
9
10
  //# sourceMappingURL=types.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/walker/types.ts"],"names":[],"mappings":";;;AAuDA,IAAY,OAGX;AAHD,WAAY,OAAO;IACjB,mEAAmB,CAAA;IACnB,2CAAO,CAAA;AACT,CAAC,EAHW,OAAO,GAAP,eAAO,KAAP,eAAO,QAGlB"}
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/walker/types.ts"],"names":[],"mappings":";;;AA2DA,IAAY,OAGX;AAHD,WAAY,OAAO;IACjB,mEAAmB,CAAA;IACnB,2CAAO,CAAA;AACT,CAAC,EAHW,OAAO,GAAP,eAAO,KAAP,eAAO,QAGlB;AAkBD,6EAA6E"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@based/schema",
3
- "version": "1.0.9",
3
+ "version": "1.1.0",
4
4
  "license": "MIT",
5
5
  "main": "dist/index.js",
6
6
  "scripts": {
package/src/error.ts CHANGED
@@ -14,4 +14,5 @@ export enum ParseError {
14
14
  'invalidJSON',
15
15
  'noLanguageFound',
16
16
  'cannotDeleteNodeFromModify',
17
+ 'nestedModifyObjectNotAllowed',
17
18
  }
@@ -15,6 +15,11 @@ const validateNumber = (
15
15
  return false
16
16
  }
17
17
 
18
+ if (isNaN(value)) {
19
+ args.error(ParseError.incorrectFormat)
20
+ return false
21
+ }
22
+
18
23
  if (fieldSchema.type === 'integer' && value - Math.floor(value) !== 0) {
19
24
  args.error(ParseError.incorrectFormat)
20
25
  return false
@@ -31,7 +36,7 @@ const validateNumber = (
31
36
  }
32
37
 
33
38
  if (ignoreMinMax) {
34
- // TODO: maybe add async validator getting the actual value from the db OR checking the result of the $incr/$decr operation
39
+ // TODO: will be handled in the actual modify command
35
40
  return true
36
41
  }
37
42
 
@@ -1,5 +1,5 @@
1
1
  import { ParseError } from '../../error'
2
- import { BasedSetTarget } from '../../types'
2
+ import { AllowedTypes, BasedSetTarget } from '../../types'
3
3
  import { ArgsClass, FieldParser } from '../../walker'
4
4
  import { isValidId } from '../isValidId'
5
5
 
@@ -29,30 +29,22 @@ async function parseOperator<T>(
29
29
  return [n.value]
30
30
  }
31
31
 
32
- export const reference: FieldParser<'reference'> = async (args) => {
33
- // TODO: setting an object here , handling $alias (both async hooks)
34
-
35
- // block if path contains $remove
36
-
37
- if (!isValidId(args.schema, args.value)) {
38
- args.error(ParseError.incorrectFormat)
39
- return
40
- }
41
-
32
+ const typeIsAllowed = (
33
+ args: ArgsClass<BasedSetTarget, 'reference'>,
34
+ type: string
35
+ ): boolean => {
42
36
  if ('allowedTypes' in args.fieldSchema) {
43
- const prefix = args.value.slice(0, 2)
44
- const targetType = args.schema.prefixToTypeMapping[prefix]
45
37
  let typeMatches = false
46
38
  for (const t of args.fieldSchema.allowedTypes) {
47
39
  if (typeof t === 'string') {
48
- if (t === targetType) {
49
- typeMatches = true
50
- break
40
+ if (t === type) {
41
+ return true
51
42
  }
52
43
  } else {
53
- if (t.type && t.type === targetType) {
44
+ if (t.type && t.type === type) {
54
45
  typeMatches = true
55
46
  if (t.$filter) {
47
+ // stage on requires validation in target
56
48
  // TODO: ASYNC HOOK
57
49
  // if(!(await args.target.referenceFilterCondition(value, t.$filter))){
58
50
  // error(args, ParseError.referenceIsIncorrectType)
@@ -67,12 +59,46 @@ export const reference: FieldParser<'reference'> = async (args) => {
67
59
  }
68
60
  }
69
61
  if (typeMatches === false) {
70
- args.error(ParseError.referenceIsIncorrectType)
62
+ return false
63
+ }
64
+ }
65
+ return true
66
+ }
67
+
68
+ export const reference: FieldParser<'reference'> = async (args) => {
69
+ // TODO: setting an object here , handling $alias (both async hooks)
70
+ // Block if path contains $remove (maybe not for $alias)
71
+ if (typeof args.value === 'object') {
72
+ if (args.root._opts.asyncOperationHandler) {
73
+ if (args.value.type && !typeIsAllowed(args, args.value.type)) {
74
+ args.error(ParseError.referenceIsIncorrectType)
75
+ return
76
+ }
77
+ if (!args.target.errors.length) {
78
+ args.value = await args.root._opts.asyncOperationHandler(
79
+ args,
80
+ 'modifyObject'
81
+ )
82
+ }
83
+ } else {
84
+ args.error(ParseError.nestedModifyObjectNotAllowed)
71
85
  return
72
86
  }
73
87
  }
74
88
 
75
- args.collect()
89
+ if (!isValidId(args.schema, args.value)) {
90
+ args.error(ParseError.incorrectFormat)
91
+ return
92
+ }
93
+
94
+ const prefix = args.value.slice(0, 2)
95
+ const targetType = args.schema.prefixToTypeMapping[prefix]
96
+
97
+ if (typeIsAllowed(args, targetType)) {
98
+ args.collect()
99
+ } else {
100
+ args.error(ParseError.referenceIsIncorrectType)
101
+ }
76
102
  }
77
103
 
78
104
  export const references: FieldParser<'references'> = async (args) => {
package/src/set/index.ts CHANGED
@@ -1,6 +1,6 @@
1
1
  import { ParseError } from '../error'
2
2
  import { BasedSchema, BasedSchemaCollectProps, BasedSetTarget } from '../types'
3
- import { walk, Opts } from '../walker'
3
+ import { walk, Opts, AsyncOperation } from '../walker'
4
4
  import { fields } from './fields'
5
5
  import { isValidId } from './isValidId'
6
6
 
@@ -138,5 +138,8 @@ const opts: Opts<BasedSetTarget> = {
138
138
 
139
139
  export const setWalker = (
140
140
  schema: BasedSchema,
141
- value: any
142
- ): Promise<BasedSetTarget> => walk<BasedSetTarget>(schema, opts, value)
141
+ value: any,
142
+ asyncOperationHandler?: AsyncOperation<BasedSetTarget>
143
+ ): Promise<BasedSetTarget> => {
144
+ return walk<BasedSetTarget>(schema, opts, value, asyncOperationHandler)
145
+ }
@@ -1,11 +1,12 @@
1
1
  import { BasedSchema } from '../types'
2
2
  import { ArgsClass } from './args'
3
- import { Opts } from './types'
3
+ import { AsyncOperation, Opts } from './types'
4
4
 
5
5
  export const walk = async <T>(
6
6
  schema: BasedSchema,
7
7
  opts: Opts<T>,
8
- value: any
8
+ value: any,
9
+ asyncOperationHandler?: AsyncOperation<T>
9
10
  ): Promise<T> => {
10
11
  if (!('collect' in opts)) {
11
12
  opts.collect = () => {}
@@ -15,6 +16,10 @@ export const walk = async <T>(
15
16
  opts.error = () => {}
16
17
  }
17
18
 
19
+ if (asyncOperationHandler) {
20
+ opts.asyncOperationHandler = asyncOperationHandler
21
+ }
22
+
18
23
  const argsOpts = await opts.init(value, schema, opts.error)
19
24
 
20
25
  if (!argsOpts.value) {
@@ -25,6 +30,7 @@ export const walk = async <T>(
25
30
  args.root = args
26
31
  args._opts = opts
27
32
  args._schema = schema
33
+
28
34
  await args.parse()
29
35
 
30
36
  return args.target
@@ -28,6 +28,11 @@ export type FieldParsers<T = any> = {
28
28
  [Key in keyof BasedSchemaFields]: FieldParser<Key, T>
29
29
  }
30
30
 
31
+ export type AsyncOperation<T> = (
32
+ args: ArgsClass<T>,
33
+ type?: string
34
+ ) => Promise<any>
35
+
31
36
  export type Opts<T> = {
32
37
  init: (
33
38
  value: any,
@@ -49,8 +54,7 @@ export type Opts<T> = {
49
54
  fromBackTrack: any[],
50
55
  collectedCommands: any[]
51
56
  ) => any
52
- // fix this
53
- requiresAsyncValidation?: (validationType: any) => Promise<boolean>
57
+ asyncOperationHandler?: AsyncOperation<T>
54
58
  }
55
59
 
56
60
  export enum Stopped {
@@ -73,3 +77,5 @@ export type ArgsOpts<
73
77
  skipCollection?: boolean
74
78
  collect?: (args: ArgsClass<T, K>, value?: any) => any
75
79
  }
80
+
81
+ // Add asyncOperations // requiresAsyncValidation -> asyncOperation: () => {}
package/test/walker.ts CHANGED
@@ -7,6 +7,7 @@ const schema: BasedSchema = {
7
7
  thing: {
8
8
  prefix: 'ti',
9
9
  fields: {
10
+ priority: { type: 'number' },
10
11
  something: { type: 'string', format: 'strongPassword' },
11
12
  },
12
13
  },
@@ -21,6 +22,9 @@ const schema: BasedSchema = {
21
22
  type: 'reference',
22
23
  allowedTypes: ['thing'],
23
24
  },
25
+ enum: {
26
+ enum: ['tony', 'jim'],
27
+ },
24
28
  exclusiveminmax: {
25
29
  type: 'number',
26
30
  minimum: 3,
@@ -820,5 +824,101 @@ test('string', async (t) => {
820
824
  { depth: 10 }
821
825
  )
822
826
 
827
+ console.info('---- doink 34 ------')
828
+ r = await setWalker(schema, {
829
+ $id: 'bl120',
830
+ enum: 'tony',
831
+ })
832
+
833
+ console.dir(r.errors)
834
+ console.dir(
835
+ r.collected.map((v) => ({ path: v.path, value: v.value })),
836
+ { depth: 10 }
837
+ )
838
+
839
+ console.info('---- doink 35 ------')
840
+ r = await setWalker(schema, {
841
+ $id: 'bl120',
842
+ integer: NaN,
843
+ })
844
+
845
+ console.dir(r.errors)
846
+ console.dir(
847
+ r.collected.map((v) => ({ path: v.path, value: v.value })),
848
+ { depth: 10 }
849
+ )
850
+
851
+ console.info('---- doink 36 ------')
852
+ r = await setWalker(schema, {
853
+ $id: 'bl120',
854
+ integer: Infinity,
855
+ })
856
+
857
+ console.dir(r.errors)
858
+ console.dir(
859
+ r.collected.map((v) => ({ path: v.path, value: v.value })),
860
+ { depth: 10 }
861
+ )
862
+
863
+ console.info('---- doink 37 ------')
864
+ r = await setWalker(schema, {
865
+ $id: 'bl120',
866
+ integer: Infinity,
867
+ })
868
+
869
+ console.dir(r.errors)
870
+ console.dir(
871
+ r.collected.map((v) => ({ path: v.path, value: v.value })),
872
+ { depth: 10 }
873
+ )
874
+
875
+ console.info('---- doink 38 ------')
876
+ r = await setWalker(schema, {
877
+ $id: 'bl120',
878
+ integer: -Infinity,
879
+ })
880
+
881
+ console.dir(r.errors)
882
+ console.dir(
883
+ r.collected.map((v) => ({ path: v.path, value: v.value })),
884
+ { depth: 10 }
885
+ )
886
+
887
+ console.info('---- doink 39 ------')
888
+ r = await setWalker(
889
+ schema,
890
+ {
891
+ $id: 'bl120',
892
+ referencesToThings: [
893
+ {
894
+ type: 'thing',
895
+ priority: 9000,
896
+ },
897
+ {
898
+ type: 'thing',
899
+ priority: 10000,
900
+ },
901
+ {
902
+ type: 'flurp',
903
+ priority: 10000,
904
+ },
905
+ ],
906
+ },
907
+ async (args, type) => {
908
+ console.info('GO ASYNC', args.path, args.value, type)
909
+ if (args.value.type === 'thing') {
910
+ return 'ti' + Math.floor(Math.random() * 10000).toString(16)
911
+ } else {
912
+ return 'bl1221'
913
+ }
914
+ }
915
+ )
916
+
917
+ console.dir(r.errors)
918
+ console.dir(
919
+ r.collected.map((v) => ({ path: v.path, value: v.value })),
920
+ { depth: 10 }
921
+ )
922
+
823
923
  t.true(true)
824
924
  })