@based/schema 0.0.7 → 0.0.9

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.
@@ -0,0 +1,3 @@
1
+ import { BasedSchemaFields } from '../types';
2
+ import { Parser } from './types';
3
+ export declare const parseValueAndDefault: Parser<keyof BasedSchemaFields>;
@@ -0,0 +1,33 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.parseValueAndDefault = void 0;
7
+ const error_1 = require("./error");
8
+ const parsers_1 = __importDefault(require("./parsers"));
9
+ const parseValueAndDefault = async (path, value, fieldSchema, typeSchema, target, handlers, noCollect) => {
10
+ let handled = false;
11
+ if (typeof value === 'object') {
12
+ const typeDef = fieldSchema.type ?? ('enum' in fieldSchema ? 'enum' : '');
13
+ const parse = parsers_1.default[typeDef];
14
+ if (value.$value !== undefined) {
15
+ // TODO: for errors handle path a bit smarter...
16
+ parse(path, value.$value, fieldSchema, typeSchema, target, handlers, true);
17
+ handled = true;
18
+ }
19
+ if (value.$default !== undefined) {
20
+ if (value.$value !== undefined) {
21
+ (0, error_1.error)(path, error_1.ParseError.valueAndDefault);
22
+ }
23
+ parse(path, value.$default, fieldSchema, typeSchema, target, handlers, true);
24
+ handled = true;
25
+ }
26
+ }
27
+ if (handled && !noCollect) {
28
+ handlers.collect({ path, value, typeSchema, fieldSchema, target });
29
+ }
30
+ return handled;
31
+ };
32
+ exports.parseValueAndDefault = parseValueAndDefault;
33
+ //# sourceMappingURL=checkDefaultAndValue.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"checkDefaultAndValue.js","sourceRoot":"","sources":["../../src/set/checkDefaultAndValue.ts"],"names":[],"mappings":";;;;;;AAEA,mCAA2C;AAC3C,wDAA+B;AAExB,MAAM,oBAAoB,GAAoC,KAAK,EACxE,IAAI,EACJ,KAAK,EACL,WAAW,EACX,UAAU,EACV,MAAM,EACN,QAAQ,EACR,SAAS,EACS,EAAE;IACpB,IAAI,OAAO,GAAG,KAAK,CAAA;IACnB,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE;QAC7B,MAAM,OAAO,GAAG,WAAW,CAAC,IAAI,IAAI,CAAC,MAAM,IAAI,WAAW,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAA;QACzE,MAAM,KAAK,GAAG,iBAAO,CAAC,OAAO,CAAC,CAAA;QAC9B,IAAI,KAAK,CAAC,MAAM,KAAK,SAAS,EAAE;YAC9B,gDAAgD;YAChD,KAAK,CAAC,IAAI,EAAE,KAAK,CAAC,MAAM,EAAE,WAAW,EAAE,UAAU,EAAE,MAAM,EAAE,QAAQ,EAAE,IAAI,CAAC,CAAA;YAC1E,OAAO,GAAG,IAAI,CAAA;SACf;QACD,IAAI,KAAK,CAAC,QAAQ,KAAK,SAAS,EAAE;YAChC,IAAI,KAAK,CAAC,MAAM,KAAK,SAAS,EAAE;gBAC9B,IAAA,aAAK,EAAC,IAAI,EAAE,kBAAU,CAAC,eAAe,CAAC,CAAA;aACxC;YACD,KAAK,CACH,IAAI,EACJ,KAAK,CAAC,QAAQ,EACd,WAAW,EACX,UAAU,EACV,MAAM,EACN,QAAQ,EACR,IAAI,CACL,CAAA;YACD,OAAO,GAAG,IAAI,CAAA;SACf;KACF;IACD,IAAI,OAAO,IAAI,CAAC,SAAS,EAAE;QACzB,QAAQ,CAAC,OAAO,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,UAAU,EAAE,WAAW,EAAE,MAAM,EAAE,CAAC,CAAA;KACnE;IACD,OAAO,OAAO,CAAA;AAChB,CAAC,CAAA;AAtCY,QAAA,oBAAoB,wBAsChC"}
@@ -30,12 +30,12 @@ const set = async (path, value, fieldSchema, typeSchema, target, handlers, noCol
30
30
  else {
31
31
  if (value.$add) {
32
32
  for (let i = 0; i < value.$add.length; i++) {
33
- q.push((0, _1.fieldWalker)([...path, '$add', i], value.$add[i], fieldDef, typeSchema, target, handlers, true));
33
+ q.push((0, _1.fieldWalker)(path, value.$add[i], fieldDef, typeSchema, target, handlers, true));
34
34
  }
35
35
  }
36
36
  if (value.$delete) {
37
37
  for (let i = 0; i < value.$add.length; i++) {
38
- q.push((0, _1.fieldWalker)([...path, '$delete', i], value.$delete[i], fieldDef, typeSchema, target, handlers, true));
38
+ q.push((0, _1.fieldWalker)(path, value.$delete[i], fieldDef, typeSchema, target, handlers, true));
39
39
  }
40
40
  }
41
41
  await Promise.all(q);
@@ -64,13 +64,28 @@ const object = async (path, value, fieldSchema, typeSchema, target, handlers, no
64
64
  await Promise.all(q);
65
65
  };
66
66
  exports.object = object;
67
+ // unshift // only allow 1 command
67
68
  const array = async (path, value, fieldSchema, typeSchema, target, handlers, noCollect) => {
68
- const isArray = Array.isArray(value);
69
- if (typeof value === 'object' && !isArray) {
69
+ // $value
70
+ let isArray = Array.isArray(value);
71
+ let parsedValue = value;
72
+ let opCount = 0;
73
+ let has$Value = false;
74
+ if (typeof parsedValue === 'object' && !isArray) {
75
+ if (value.$value) {
76
+ opCount++;
77
+ has$Value = true;
78
+ parsedValue = value.$value;
79
+ isArray = Array.isArray(parsedValue);
80
+ }
70
81
  if (value.$insert) {
82
+ opCount++;
83
+ if (opCount > 1) {
84
+ (0, error_1.error)(path, error_1.ParseError.multipleOperationsNotAllowed);
85
+ }
71
86
  if (typeof value.$insert !== 'object' ||
72
87
  value.$insert.$idx === undefined) {
73
- (0, error_1.error)([...path, '$insert'], error_1.ParseError.incorrectFormat);
88
+ (0, error_1.error)(path, error_1.ParseError.incorrectFormat);
74
89
  }
75
90
  else {
76
91
  const insert = Array.isArray(value.$insert.$value)
@@ -78,44 +93,102 @@ const array = async (path, value, fieldSchema, typeSchema, target, handlers, noC
78
93
  : [value.$insert.$value];
79
94
  const q = [];
80
95
  for (let i = 0; i < insert.length; i++) {
81
- q.push((0, _1.fieldWalker)([...path, 'insert', i], insert[i], fieldSchema.values, typeSchema, target, handlers, true));
96
+ q.push((0, _1.fieldWalker)(path, insert[i], fieldSchema.values, typeSchema, target, handlers, true));
82
97
  }
83
98
  await Promise.all(q);
84
99
  }
85
100
  }
86
- if (value.$remove && value.$remove.$idx === undefined) {
87
- (0, error_1.error)([...path, '$remove'], error_1.ParseError.incorrectFormat);
101
+ if (value.$remove) {
102
+ opCount++;
103
+ if (opCount > 1) {
104
+ (0, error_1.error)(path, error_1.ParseError.multipleOperationsNotAllowed);
105
+ }
106
+ if (value.$remove.$idx === undefined) {
107
+ (0, error_1.error)(path, error_1.ParseError.incorrectFormat);
108
+ }
88
109
  }
89
110
  if (value.$push) {
111
+ opCount++;
112
+ if (opCount > 1) {
113
+ (0, error_1.error)(path, error_1.ParseError.multipleOperationsNotAllowed);
114
+ }
90
115
  const q = [];
91
116
  const push = Array.isArray(value.$push) ? value.$push : [value.$push];
92
117
  for (let i = 0; i < push.length; i++) {
93
- q.push((0, _1.fieldWalker)([...path, i], push[i], fieldSchema.values, typeSchema, target, handlers, true));
118
+ q.push((0, _1.fieldWalker)(path, push[i], fieldSchema.values, typeSchema, target, handlers, true));
94
119
  }
95
120
  await Promise.all(q);
121
+ parsedValue = { $push: push };
122
+ }
123
+ if (value.$unshift) {
124
+ opCount++;
125
+ if (opCount > 1) {
126
+ (0, error_1.error)(path, error_1.ParseError.multipleOperationsNotAllowed);
127
+ }
128
+ const q = [];
129
+ const unshift = Array.isArray(value.$unshift)
130
+ ? value.$unshift
131
+ : [value.$unshift];
132
+ for (let i = 0; i < unshift.length; i++) {
133
+ q.push((0, _1.fieldWalker)(path, unshift[i], fieldSchema.values, typeSchema, target, handlers, true));
134
+ }
135
+ await Promise.all(q);
136
+ parsedValue = { $unshift: unshift };
96
137
  }
97
138
  if (value.$assign) {
98
- if (typeof value.$assign !== 'object' ||
99
- value.$assign.$idx === undefined) {
100
- (0, error_1.error)([...path, '$assign'], error_1.ParseError.incorrectFormat);
139
+ opCount++;
140
+ if (opCount > 1) {
141
+ (0, error_1.error)(path, error_1.ParseError.multipleOperationsNotAllowed);
101
142
  }
102
- else {
103
- await (0, _1.fieldWalker)([...path, '$assign', '$value'], value.$assign.$value, fieldSchema.values, typeSchema, target, handlers, true);
143
+ if (typeof value.$assign !== 'object' ||
144
+ typeof value.$assign.$idx !== 'number') {
145
+ (0, error_1.error)(path, error_1.ParseError.incorrectFormat);
104
146
  }
147
+ await (0, _1.fieldWalker)([...path, value.$assign.$idx], value.$assign.$value, fieldSchema.values, typeSchema, target, handlers, noCollect);
148
+ return;
105
149
  }
106
- if (!noCollect) {
107
- handlers.collect({ path, value, typeSchema, fieldSchema, target });
150
+ if (!has$Value && !noCollect) {
151
+ handlers.collect({
152
+ path,
153
+ value: parsedValue,
154
+ typeSchema,
155
+ fieldSchema,
156
+ target,
157
+ });
158
+ }
159
+ if (!has$Value) {
160
+ return;
108
161
  }
109
- return;
110
162
  }
111
163
  if (!isArray) {
112
164
  (0, error_1.error)(path, error_1.ParseError.incorrectFieldType);
113
165
  }
114
166
  const q = [];
115
- for (let i = 0; i < value.length; i++) {
116
- q.push((0, _1.fieldWalker)([...path, i], value[i], fieldSchema.values, typeSchema, target, handlers, noCollect));
167
+ const collector = [];
168
+ const nHandler = noCollect
169
+ ? handlers
170
+ : {
171
+ ...handlers,
172
+ collect: (collect) => {
173
+ collector.push(collect);
174
+ },
175
+ };
176
+ for (let i = 0; i < parsedValue.length; i++) {
177
+ q.push((0, _1.fieldWalker)([...path, i], parsedValue[i], fieldSchema.values, typeSchema, target, nHandler, noCollect));
117
178
  }
118
179
  await Promise.all(q);
180
+ if (!noCollect) {
181
+ handlers.collect({
182
+ path,
183
+ typeSchema,
184
+ fieldSchema,
185
+ target,
186
+ value: { $delete: true },
187
+ });
188
+ for (const c of collector) {
189
+ handlers.collect(c);
190
+ }
191
+ }
119
192
  };
120
193
  exports.array = array;
121
194
  const record = async (path, value, fieldSchema) => { };
@@ -1 +1 @@
1
- {"version":3,"file":"collections.js","sourceRoot":"","sources":["../../src/set/collections.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"collections.js","sourceRoot":"","sources":["../../src/set/collections.ts"],"names":[],"mappings":"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"}
@@ -5,6 +5,9 @@ export declare enum ParseError {
5
5
  'subceedsMinimum' = 3,
6
6
  'fieldDoesNotExist' = 4,
7
7
  'incorrectFormat' = 5,
8
- 'referenceIsIncorrectType' = 6
8
+ 'referenceIsIncorrectType' = 6,
9
+ 'valueAndDefault' = 7,
10
+ 'defaultNotSupported' = 8,
11
+ 'multipleOperationsNotAllowed' = 9
9
12
  }
10
13
  export declare const error: (path: (number | string)[], error: ParseError, type?: string) => never;
package/dist/set/error.js CHANGED
@@ -10,6 +10,9 @@ var ParseError;
10
10
  ParseError[ParseError["fieldDoesNotExist"] = 4] = "fieldDoesNotExist";
11
11
  ParseError[ParseError["incorrectFormat"] = 5] = "incorrectFormat";
12
12
  ParseError[ParseError["referenceIsIncorrectType"] = 6] = "referenceIsIncorrectType";
13
+ ParseError[ParseError["valueAndDefault"] = 7] = "valueAndDefault";
14
+ ParseError[ParseError["defaultNotSupported"] = 8] = "defaultNotSupported";
15
+ ParseError[ParseError["multipleOperationsNotAllowed"] = 9] = "multipleOperationsNotAllowed";
13
16
  })(ParseError = exports.ParseError || (exports.ParseError = {}));
14
17
  const error = (path, error, type // nice to give as option
15
18
  ) => {
@@ -1 +1 @@
1
- {"version":3,"file":"error.js","sourceRoot":"","sources":["../../src/set/error.ts"],"names":[],"mappings":";;;AAAA,IAAY,UAQX;AARD,WAAY,UAAU;IACpB,uEAAoB,CAAA;IACpB,qEAAmB,CAAA;IACnB,+DAAgB,CAAA;IAChB,iEAAiB,CAAA;IACjB,qEAAmB,CAAA;IACnB,iEAAiB,CAAA;IACjB,mFAA0B,CAAA;AAC5B,CAAC,EARW,UAAU,GAAV,kBAAU,KAAV,kBAAU,QAQrB;AAEM,MAAM,KAAK,GAAG,CACnB,IAAyB,EACzB,KAAiB,EACjB,IAAa,CAAC,yBAAyB;EACvC,EAAE;IACF,MAAM,IAAI,KAAK,CAAC,WAAW,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,UAAU,CAAC,KAAK,CAAC,EAAE,CAAC,CAAA;AACpE,CAAC,CAAA;AANY,QAAA,KAAK,SAMjB"}
1
+ {"version":3,"file":"error.js","sourceRoot":"","sources":["../../src/set/error.ts"],"names":[],"mappings":";;;AAAA,IAAY,UAWX;AAXD,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;AAChC,CAAC,EAXW,UAAU,GAAV,kBAAU,KAAV,kBAAU,QAWrB;AAEM,MAAM,KAAK,GAAG,CACnB,IAAyB,EACzB,KAAiB,EACjB,IAAa,CAAC,yBAAyB;EACvC,EAAE;IACF,MAAM,IAAI,KAAK,CAAC,WAAW,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,UAAU,CAAC,KAAK,CAAC,EAAE,CAAC,CAAA;AACpE,CAAC,CAAA;AANY,QAAA,KAAK,SAMjB"}
@@ -6,6 +6,15 @@ const validate = (path, value, fieldSchema) => {
6
6
  if (typeof value !== 'number') {
7
7
  (0, error_1.error)(path, error_1.ParseError.incorrectFormat);
8
8
  }
9
+ if (fieldSchema.type === 'integer' && value - Math.floor(value) !== 0) {
10
+ (0, error_1.error)(path, error_1.ParseError.incorrectFormat);
11
+ }
12
+ if (fieldSchema.multipleOf &&
13
+ value / fieldSchema.multipleOf -
14
+ Math.floor(value / fieldSchema.multipleOf) !==
15
+ 0) {
16
+ (0, error_1.error)(path, error_1.ParseError.incorrectFormat);
17
+ }
9
18
  if (fieldSchema.maximum) {
10
19
  if (fieldSchema.exclusiveMaximum && value > value) {
11
20
  (0, error_1.error)(path, error_1.ParseError.exceedsMaximum);
@@ -32,8 +41,14 @@ const shared = (path, value, fieldSchema) => {
32
41
  if (value.$decrement) {
33
42
  validate([...path, '$decrement'], value.$decrement, fieldSchema);
34
43
  }
35
- if (value.$value) {
36
- validate([...path], value.$value, fieldSchema);
44
+ if (value.$value !== undefined) {
45
+ validate(path, value.$value, fieldSchema);
46
+ }
47
+ if (value.$default !== undefined) {
48
+ if (value.$value !== undefined) {
49
+ (0, error_1.error)(path, error_1.ParseError.valueAndDefault);
50
+ }
51
+ validate(path, value.$default, fieldSchema);
37
52
  }
38
53
  }
39
54
  else {
@@ -50,7 +65,7 @@ const timestamp = async (path, value, fieldSchema, typeSchema, target, handlers,
50
65
  const d = new Date(value);
51
66
  value = d.valueOf();
52
67
  if (isNaN(value)) {
53
- throw (0, error_1.error)(path, error_1.ParseError.incorrectFormat);
68
+ (0, error_1.error)(path, error_1.ParseError.incorrectFormat);
54
69
  }
55
70
  }
56
71
  }
@@ -80,9 +95,6 @@ const number = async (path, value, fieldSchema, typeSchema, target, handlers, no
80
95
  };
81
96
  exports.number = number;
82
97
  const integer = async (path, value, fieldSchema, typeSchema, target, handlers, noCollect) => {
83
- if (typeof value === 'number' && value - Math.floor(value) !== 0) {
84
- (0, error_1.error)(path, error_1.ParseError.incorrectFormat);
85
- }
86
98
  const parsedValue = shared(path, value, fieldSchema);
87
99
  if (!noCollect) {
88
100
  handlers.collect({
@@ -1 +1 @@
1
- {"version":3,"file":"number.js","sourceRoot":"","sources":["../../src/set/number.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"number.js","sourceRoot":"","sources":["../../src/set/number.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ import { BasedSchemaFields } from '../types';
2
+ import { Parser } from './types';
3
+ export declare const parseValueAndDefault: Parser<keyof BasedSchemaFields>;
@@ -0,0 +1,33 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.parseValueAndDefault = void 0;
7
+ const error_1 = require("./error");
8
+ const parsers_1 = __importDefault(require("./parsers"));
9
+ const parseValueAndDefault = async (path, value, fieldSchema, typeSchema, target, handlers, noCollect) => {
10
+ let handled = false;
11
+ if (typeof value === 'object') {
12
+ const typeDef = fieldSchema.type ?? ('enum' in fieldSchema ? 'enum' : '');
13
+ const parse = parsers_1.default[typeDef];
14
+ if (value.$value !== undefined) {
15
+ // TODO: for errors handle path a bit smarter...
16
+ parse(path, value.$value, fieldSchema, typeSchema, target, handlers, true);
17
+ handled = true;
18
+ }
19
+ if (value.$default !== undefined) {
20
+ if (value.$value !== undefined) {
21
+ (0, error_1.error)(path, error_1.ParseError.valueAndDefault);
22
+ }
23
+ parse(path, value.$default, fieldSchema, typeSchema, target, handlers, true);
24
+ handled = true;
25
+ }
26
+ }
27
+ if (handled && !noCollect) {
28
+ handlers.collect({ path, value, typeSchema, fieldSchema, target });
29
+ }
30
+ return handled;
31
+ };
32
+ exports.parseValueAndDefault = parseValueAndDefault;
33
+ //# sourceMappingURL=parseDefaultAndValue.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"parseDefaultAndValue.js","sourceRoot":"","sources":["../../src/set/parseDefaultAndValue.ts"],"names":[],"mappings":";;;;;;AAEA,mCAA2C;AAC3C,wDAA+B;AAExB,MAAM,oBAAoB,GAAoC,KAAK,EACxE,IAAI,EACJ,KAAK,EACL,WAAW,EACX,UAAU,EACV,MAAM,EACN,QAAQ,EACR,SAAS,EACS,EAAE;IACpB,IAAI,OAAO,GAAG,KAAK,CAAA;IACnB,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE;QAC7B,MAAM,OAAO,GAAG,WAAW,CAAC,IAAI,IAAI,CAAC,MAAM,IAAI,WAAW,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAA;QACzE,MAAM,KAAK,GAAG,iBAAO,CAAC,OAAO,CAAC,CAAA;QAC9B,IAAI,KAAK,CAAC,MAAM,KAAK,SAAS,EAAE;YAC9B,gDAAgD;YAChD,KAAK,CAAC,IAAI,EAAE,KAAK,CAAC,MAAM,EAAE,WAAW,EAAE,UAAU,EAAE,MAAM,EAAE,QAAQ,EAAE,IAAI,CAAC,CAAA;YAC1E,OAAO,GAAG,IAAI,CAAA;SACf;QACD,IAAI,KAAK,CAAC,QAAQ,KAAK,SAAS,EAAE;YAChC,IAAI,KAAK,CAAC,MAAM,KAAK,SAAS,EAAE;gBAC9B,IAAA,aAAK,EAAC,IAAI,EAAE,kBAAU,CAAC,eAAe,CAAC,CAAA;aACxC;YACD,KAAK,CACH,IAAI,EACJ,KAAK,CAAC,QAAQ,EACd,WAAW,EACX,UAAU,EACV,MAAM,EACN,QAAQ,EACR,IAAI,CACL,CAAA;YACD,OAAO,GAAG,IAAI,CAAA;SACf;KACF;IACD,IAAI,OAAO,IAAI,CAAC,SAAS,EAAE;QACzB,QAAQ,CAAC,OAAO,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,UAAU,EAAE,WAAW,EAAE,MAAM,EAAE,CAAC,CAAA;KACnE;IACD,OAAO,OAAO,CAAA;AAChB,CAAC,CAAA;AAtCY,QAAA,oBAAoB,wBAsChC"}
package/dist/set/rest.js CHANGED
@@ -4,17 +4,31 @@ exports.json = exports.enumParser = exports.boolean = exports.cardinality = void
4
4
  const utils_1 = require("@saulx/utils");
5
5
  const hash_1 = require("@saulx/hash");
6
6
  const error_1 = require("./error");
7
- const cardinality = async (path, value, fieldSchema, typeSchema, target, handlers) => {
7
+ const parseDefaultAndValue_1 = require("./parseDefaultAndValue");
8
+ const cardinality = async (path, value, fieldSchema, typeSchema, target, handlers, noCollect) => {
8
9
  if (value && typeof value === 'object') {
9
- value = (0, hash_1.hashObjectIgnoreKeyOrder)(value).toString(16);
10
+ if (value.$default !== undefined) {
11
+ (0, error_1.error)(path, error_1.ParseError.defaultNotSupported);
12
+ }
13
+ if (value.$value !== undefined) {
14
+ value = (0, hash_1.hashObjectIgnoreKeyOrder)(value.$value).toString(16);
15
+ }
16
+ else {
17
+ value = (0, hash_1.hashObjectIgnoreKeyOrder)(value).toString(16);
18
+ }
10
19
  }
11
20
  else {
12
21
  value = (0, hash_1.hash)(value).toString(16);
13
22
  }
14
- handlers.collect({ path, value, typeSchema, fieldSchema, target });
23
+ if (!noCollect) {
24
+ handlers.collect({ path, value, typeSchema, fieldSchema, target });
25
+ }
15
26
  };
16
27
  exports.cardinality = cardinality;
17
28
  const boolean = async (path, value, fieldSchema, typeSchema, target, handlers, noCollect) => {
29
+ if (await (0, parseDefaultAndValue_1.parseValueAndDefault)(path, value, fieldSchema, typeSchema, target, handlers, noCollect)) {
30
+ return;
31
+ }
18
32
  if (typeof value !== 'boolean') {
19
33
  (0, error_1.error)(path, error_1.ParseError.incorrectFormat);
20
34
  }
@@ -25,18 +39,23 @@ const boolean = async (path, value, fieldSchema, typeSchema, target, handlers, n
25
39
  exports.boolean = boolean;
26
40
  const enumParser = async (path, value, fieldSchema, typeSchema, target, handlers, noCollect) => {
27
41
  const enumValues = fieldSchema.enum;
28
- for (let i = 0; i < enumValues.length; i++) {
29
- if ((0, utils_1.deepEqual)(enumValues[i], value)) {
30
- if (!noCollect) {
31
- handlers.collect({ path, value: i, typeSchema, fieldSchema, target });
42
+ if (!(await (0, parseDefaultAndValue_1.parseValueAndDefault)(path, value, fieldSchema, typeSchema, target, handlers, noCollect))) {
43
+ for (let i = 0; i < enumValues.length; i++) {
44
+ if ((0, utils_1.deepEqual)(enumValues[i], value)) {
45
+ if (!noCollect) {
46
+ handlers.collect({ path, value: i, typeSchema, fieldSchema, target });
47
+ }
48
+ return;
32
49
  }
33
- return;
34
50
  }
51
+ (0, error_1.error)(path, error_1.ParseError.incorrectFormat);
35
52
  }
36
- (0, error_1.error)(path, error_1.ParseError.incorrectFormat);
37
53
  };
38
54
  exports.enumParser = enumParser;
39
55
  const json = async (path, value, fieldSchema, typeSchema, target, handlers, noCollect) => {
56
+ if (await (0, parseDefaultAndValue_1.parseValueAndDefault)(path, value, fieldSchema, typeSchema, target, handlers, noCollect)) {
57
+ return;
58
+ }
40
59
  try {
41
60
  const parsedValue = JSON.stringify(value);
42
61
  if (!noCollect) {
@@ -50,7 +69,7 @@ const json = async (path, value, fieldSchema, typeSchema, target, handlers, noCo
50
69
  }
51
70
  }
52
71
  catch (err) {
53
- throw err(path, error_1.ParseError.incorrectFormat);
72
+ (0, error_1.error)(path, error_1.ParseError.incorrectFormat);
54
73
  }
55
74
  };
56
75
  exports.json = json;
@@ -1 +1 @@
1
- {"version":3,"file":"rest.js","sourceRoot":"","sources":["../../src/set/rest.ts"],"names":[],"mappings":";;;AACA,wCAAwC;AACxC,sCAA4D;AAC5D,mCAA2C;AAEpC,MAAM,WAAW,GAA0B,KAAK,EACrD,IAAI,EACJ,KAAK,EACL,WAAW,EACX,UAAU,EACV,MAAM,EACN,QAAQ,EACR,EAAE;IACF,IAAI,KAAK,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE;QACtC,KAAK,GAAG,IAAA,+BAAwB,EAAC,KAAK,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAA;KACrD;SAAM;QACL,KAAK,GAAG,IAAA,WAAI,EAAC,KAAK,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAA;KACjC;IACD,QAAQ,CAAC,OAAO,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,UAAU,EAAE,WAAW,EAAE,MAAM,EAAE,CAAC,CAAA;AACpE,CAAC,CAAA;AAdY,QAAA,WAAW,eAcvB;AAEM,MAAM,OAAO,GAAsB,KAAK,EAC7C,IAAI,EACJ,KAAK,EACL,WAAW,EACX,UAAU,EACV,MAAM,EACN,QAAQ,EACR,SAAS,EACT,EAAE;IACF,IAAI,OAAO,KAAK,KAAK,SAAS,EAAE;QAC9B,IAAA,aAAK,EAAC,IAAI,EAAE,kBAAU,CAAC,eAAe,CAAC,CAAA;KACxC;IACD,IAAI,CAAC,SAAS,EAAE;QACd,QAAQ,CAAC,OAAO,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,UAAU,EAAE,WAAW,EAAE,MAAM,EAAE,CAAC,CAAA;KACnE;AACH,CAAC,CAAA;AAfY,QAAA,OAAO,WAenB;AAEM,MAAM,UAAU,GAAmB,KAAK,EAC7C,IAAI,EACJ,KAAK,EACL,WAAW,EACX,UAAU,EACV,MAAM,EACN,QAAQ,EACR,SAAS,EACT,EAAE;IACF,MAAM,UAAU,GAAG,WAAW,CAAC,IAAI,CAAA;IACnC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,UAAU,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;QAC1C,IAAI,IAAA,iBAAS,EAAC,UAAU,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC,EAAE;YACnC,IAAI,CAAC,SAAS,EAAE;gBACd,QAAQ,CAAC,OAAO,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,EAAE,UAAU,EAAE,WAAW,EAAE,MAAM,EAAE,CAAC,CAAA;aACtE;YACD,OAAM;SACP;KACF;IACD,IAAA,aAAK,EAAC,IAAI,EAAE,kBAAU,CAAC,eAAe,CAAC,CAAA;AACzC,CAAC,CAAA;AAnBY,QAAA,UAAU,cAmBtB;AAEM,MAAM,IAAI,GAAmB,KAAK,EACvC,IAAI,EACJ,KAAK,EACL,WAAW,EACX,UAAU,EACV,MAAM,EACN,QAAQ,EACR,SAAS,EACT,EAAE;IACF,IAAI;QACF,MAAM,WAAW,GAAG,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAA;QACzC,IAAI,CAAC,SAAS,EAAE;YACd,QAAQ,CAAC,OAAO,CAAC;gBACf,IAAI;gBACJ,KAAK,EAAE,WAAW;gBAClB,UAAU;gBACV,WAAW;gBACX,MAAM;aACP,CAAC,CAAA;SACH;KACF;IAAC,OAAO,GAAG,EAAE;QACZ,MAAM,GAAG,CAAC,IAAI,EAAE,kBAAU,CAAC,eAAe,CAAC,CAAA;KAC5C;AACH,CAAC,CAAA;AAvBY,QAAA,IAAI,QAuBhB"}
1
+ {"version":3,"file":"rest.js","sourceRoot":"","sources":["../../src/set/rest.ts"],"names":[],"mappings":";;;AACA,wCAAwC;AACxC,sCAA4D;AAC5D,mCAA2C;AAC3C,iEAA6D;AAEtD,MAAM,WAAW,GAA0B,KAAK,EACrD,IAAI,EACJ,KAAK,EACL,WAAW,EACX,UAAU,EACV,MAAM,EACN,QAAQ,EACR,SAAS,EACT,EAAE;IACF,IAAI,KAAK,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE;QACtC,IAAI,KAAK,CAAC,QAAQ,KAAK,SAAS,EAAE;YAChC,IAAA,aAAK,EAAC,IAAI,EAAE,kBAAU,CAAC,mBAAmB,CAAC,CAAA;SAC5C;QACD,IAAI,KAAK,CAAC,MAAM,KAAK,SAAS,EAAE;YAC9B,KAAK,GAAG,IAAA,+BAAwB,EAAC,KAAK,CAAC,MAAM,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAA;SAC5D;aAAM;YACL,KAAK,GAAG,IAAA,+BAAwB,EAAC,KAAK,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAA;SACrD;KACF;SAAM;QACL,KAAK,GAAG,IAAA,WAAI,EAAC,KAAK,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAA;KACjC;IACD,IAAI,CAAC,SAAS,EAAE;QACd,QAAQ,CAAC,OAAO,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,UAAU,EAAE,WAAW,EAAE,MAAM,EAAE,CAAC,CAAA;KACnE;AACH,CAAC,CAAA;AAxBY,QAAA,WAAW,eAwBvB;AAEM,MAAM,OAAO,GAAsB,KAAK,EAC7C,IAAI,EACJ,KAAK,EACL,WAAW,EACX,UAAU,EACV,MAAM,EACN,QAAQ,EACR,SAAS,EACT,EAAE;IACF,IACE,MAAM,IAAA,2CAAoB,EACxB,IAAI,EACJ,KAAK,EACL,WAAW,EACX,UAAU,EACV,MAAM,EACN,QAAQ,EACR,SAAS,CACV,EACD;QACA,OAAM;KACP;IAED,IAAI,OAAO,KAAK,KAAK,SAAS,EAAE;QAC9B,IAAA,aAAK,EAAC,IAAI,EAAE,kBAAU,CAAC,eAAe,CAAC,CAAA;KACxC;IAED,IAAI,CAAC,SAAS,EAAE;QACd,QAAQ,CAAC,OAAO,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,UAAU,EAAE,WAAW,EAAE,MAAM,EAAE,CAAC,CAAA;KACnE;AACH,CAAC,CAAA;AA9BY,QAAA,OAAO,WA8BnB;AAEM,MAAM,UAAU,GAAmB,KAAK,EAC7C,IAAI,EACJ,KAAK,EACL,WAAW,EACX,UAAU,EACV,MAAM,EACN,QAAQ,EACR,SAAS,EACT,EAAE;IACF,MAAM,UAAU,GAAG,WAAW,CAAC,IAAI,CAAA;IACnC,IACE,CAAC,CAAC,MAAM,IAAA,2CAAoB,EAC1B,IAAI,EACJ,KAAK,EACL,WAAW,EACX,UAAU,EACV,MAAM,EACN,QAAQ,EACR,SAAS,CACV,CAAC,EACF;QACA,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,UAAU,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;YAC1C,IAAI,IAAA,iBAAS,EAAC,UAAU,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC,EAAE;gBACnC,IAAI,CAAC,SAAS,EAAE;oBACd,QAAQ,CAAC,OAAO,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,EAAE,UAAU,EAAE,WAAW,EAAE,MAAM,EAAE,CAAC,CAAA;iBACtE;gBACD,OAAM;aACP;SACF;QACD,IAAA,aAAK,EAAC,IAAI,EAAE,kBAAU,CAAC,eAAe,CAAC,CAAA;KACxC;AACH,CAAC,CAAA;AA/BY,QAAA,UAAU,cA+BtB;AAEM,MAAM,IAAI,GAAmB,KAAK,EACvC,IAAI,EACJ,KAAK,EACL,WAAW,EACX,UAAU,EACV,MAAM,EACN,QAAQ,EACR,SAAS,EACT,EAAE;IACF,IACE,MAAM,IAAA,2CAAoB,EACxB,IAAI,EACJ,KAAK,EACL,WAAW,EACX,UAAU,EACV,MAAM,EACN,QAAQ,EACR,SAAS,CACV,EACD;QACA,OAAM;KACP;IAED,IAAI;QACF,MAAM,WAAW,GAAG,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAA;QACzC,IAAI,CAAC,SAAS,EAAE;YACd,QAAQ,CAAC,OAAO,CAAC;gBACf,IAAI;gBACJ,KAAK,EAAE,WAAW;gBAClB,UAAU;gBACV,WAAW;gBACX,MAAM;aACP,CAAC,CAAA;SACH;KACF;IAAC,OAAO,GAAG,EAAE;QACZ,IAAA,aAAK,EAAC,IAAI,EAAE,kBAAU,CAAC,eAAe,CAAC,CAAA;KACxC;AACH,CAAC,CAAA;AArCY,QAAA,IAAI,QAqChB"}
@@ -6,6 +6,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
6
6
  exports.text = exports.string = void 0;
7
7
  const error_1 = require("./error");
8
8
  const validator_1 = __importDefault(require("validator"));
9
+ const parseDefaultAndValue_1 = require("./parseDefaultAndValue");
9
10
  const formatPatterns = {
10
11
  email: validator_1.default.isEmail,
11
12
  URL: validator_1.default.isURL,
@@ -90,6 +91,9 @@ const validate = (path, value, fieldSchema) => {
90
91
  }
91
92
  };
92
93
  const string = async (path, value, fieldSchema, typeSchema, target, handlers, noCollect) => {
94
+ if (await (0, parseDefaultAndValue_1.parseValueAndDefault)(path, value, fieldSchema, typeSchema, target, handlers, noCollect)) {
95
+ return;
96
+ }
93
97
  validate(path, value, fieldSchema);
94
98
  if (!noCollect) {
95
99
  handlers.collect({ path, value, typeSchema, fieldSchema, target });
@@ -114,14 +118,16 @@ const text = async (path, value, fieldSchema, typeSchema, target, handlers, noCo
114
118
  if (valueType !== 'object') {
115
119
  (0, error_1.error)(path, error_1.ParseError.incorrectFormat);
116
120
  }
121
+ if (target.$language &&
122
+ (await (0, parseDefaultAndValue_1.parseValueAndDefault)(path, value, fieldSchema, typeSchema, target, handlers, noCollect))) {
123
+ return;
124
+ }
117
125
  for (const key in value) {
118
126
  const newPath = [...path, key];
119
127
  if (typeof value[key] === 'object') {
120
128
  if (value[key].$value) {
121
129
  (0, exports.text)([...path, key, '$value'], value[key].$value, fieldSchema, typeSchema, target, handlers, true);
122
130
  }
123
- // if (value[key].$default) {
124
- // }
125
131
  if (!noCollect) {
126
132
  handlers.collect({
127
133
  path: newPath,
@@ -133,7 +139,8 @@ const text = async (path, value, fieldSchema, typeSchema, target, handlers, noCo
133
139
  }
134
140
  continue;
135
141
  }
136
- validate(newPath, value[key], fieldSchema);
142
+ // if
143
+ // validate(newPath, value[key], fieldSchema)
137
144
  if (!noCollect) {
138
145
  handlers.collect({
139
146
  path: newPath,
@@ -1 +1 @@
1
- {"version":3,"file":"string.js","sourceRoot":"","sources":["../../src/set/string.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"string.js","sourceRoot":"","sources":["../../src/set/string.ts"],"names":[],"mappings":"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"}
@@ -1,5 +1,5 @@
1
1
  import { BasedSchemaType, BasedSetHandlers, BasedSetTarget, BasedSchemaFields } from '../types';
2
- export type Parser<K extends keyof BasedSchemaFields> = (path: (string | number)[], value: any, fieldSchema: BasedSchemaFields[K], typeSchema: BasedSchemaType, target: BasedSetTarget, handlers: BasedSetHandlers, noCollect?: boolean) => Promise<void>;
2
+ export type Parser<K extends keyof BasedSchemaFields> = (path: (string | number)[], value: any, fieldSchema: BasedSchemaFields[K], typeSchema: BasedSchemaType, target: BasedSetTarget, handlers: BasedSetHandlers, noCollect?: boolean) => Promise<void | boolean>;
3
3
  export type Parsers = {
4
4
  [Key in keyof BasedSchemaFields]: Parser<Key>;
5
5
  };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@based/schema",
3
- "version": "0.0.7",
3
+ "version": "0.0.9",
4
4
  "license": "MIT",
5
5
  "main": "dist/index.js",
6
6
  "scripts": {
@@ -40,7 +40,7 @@ export const set: Parser<'set'> = async (
40
40
  for (let i = 0; i < value.$add.length; i++) {
41
41
  q.push(
42
42
  fieldWalker(
43
- [...path, '$add', i],
43
+ path,
44
44
  value.$add[i],
45
45
  fieldDef,
46
46
  typeSchema,
@@ -55,7 +55,7 @@ export const set: Parser<'set'> = async (
55
55
  for (let i = 0; i < value.$add.length; i++) {
56
56
  q.push(
57
57
  fieldWalker(
58
- [...path, '$delete', i],
58
+ path,
59
59
  value.$delete[i],
60
60
  fieldDef,
61
61
  typeSchema,
@@ -110,6 +110,7 @@ export const object: Parser<'object'> = async (
110
110
  await Promise.all(q)
111
111
  }
112
112
 
113
+ // unshift // only allow 1 command
113
114
  export const array: Parser<'array'> = async (
114
115
  path,
115
116
  value,
@@ -119,14 +120,30 @@ export const array: Parser<'array'> = async (
119
120
  handlers,
120
121
  noCollect
121
122
  ) => {
122
- const isArray = Array.isArray(value)
123
- if (typeof value === 'object' && !isArray) {
123
+ // $value
124
+
125
+ let isArray = Array.isArray(value)
126
+ let parsedValue = value
127
+ let opCount = 0
128
+ let has$Value = false
129
+
130
+ if (typeof parsedValue === 'object' && !isArray) {
131
+ if (value.$value) {
132
+ opCount++
133
+ has$Value = true
134
+ parsedValue = value.$value
135
+ isArray = Array.isArray(parsedValue)
136
+ }
124
137
  if (value.$insert) {
138
+ opCount++
139
+ if (opCount > 1) {
140
+ error(path, ParseError.multipleOperationsNotAllowed)
141
+ }
125
142
  if (
126
143
  typeof value.$insert !== 'object' ||
127
144
  value.$insert.$idx === undefined
128
145
  ) {
129
- error([...path, '$insert'], ParseError.incorrectFormat)
146
+ error(path, ParseError.incorrectFormat)
130
147
  } else {
131
148
  const insert = Array.isArray(value.$insert.$value)
132
149
  ? value.$insert.$value
@@ -135,7 +152,7 @@ export const array: Parser<'array'> = async (
135
152
  for (let i = 0; i < insert.length; i++) {
136
153
  q.push(
137
154
  fieldWalker(
138
- [...path, 'insert', i],
155
+ path,
139
156
  insert[i],
140
157
  fieldSchema.values,
141
158
  typeSchema,
@@ -148,16 +165,27 @@ export const array: Parser<'array'> = async (
148
165
  await Promise.all(q)
149
166
  }
150
167
  }
151
- if (value.$remove && value.$remove.$idx === undefined) {
152
- error([...path, '$remove'], ParseError.incorrectFormat)
168
+ if (value.$remove) {
169
+ opCount++
170
+ if (opCount > 1) {
171
+ error(path, ParseError.multipleOperationsNotAllowed)
172
+ }
173
+ if (value.$remove.$idx === undefined) {
174
+ error(path, ParseError.incorrectFormat)
175
+ }
153
176
  }
154
177
  if (value.$push) {
178
+ opCount++
179
+ if (opCount > 1) {
180
+ error(path, ParseError.multipleOperationsNotAllowed)
181
+ }
182
+
155
183
  const q: Promise<void>[] = []
156
184
  const push = Array.isArray(value.$push) ? value.$push : [value.$push]
157
185
  for (let i = 0; i < push.length; i++) {
158
186
  q.push(
159
187
  fieldWalker(
160
- [...path, i],
188
+ path,
161
189
  push[i],
162
190
  fieldSchema.values,
163
191
  typeSchema,
@@ -168,48 +196,108 @@ export const array: Parser<'array'> = async (
168
196
  )
169
197
  }
170
198
  await Promise.all(q)
199
+ parsedValue = { $push: push }
200
+ }
201
+ if (value.$unshift) {
202
+ opCount++
203
+ if (opCount > 1) {
204
+ error(path, ParseError.multipleOperationsNotAllowed)
205
+ }
206
+ const q: Promise<void>[] = []
207
+ const unshift = Array.isArray(value.$unshift)
208
+ ? value.$unshift
209
+ : [value.$unshift]
210
+ for (let i = 0; i < unshift.length; i++) {
211
+ q.push(
212
+ fieldWalker(
213
+ path,
214
+ unshift[i],
215
+ fieldSchema.values,
216
+ typeSchema,
217
+ target,
218
+ handlers,
219
+ true
220
+ )
221
+ )
222
+ }
223
+ await Promise.all(q)
224
+ parsedValue = { $unshift: unshift }
171
225
  }
172
226
  if (value.$assign) {
227
+ opCount++
228
+ if (opCount > 1) {
229
+ error(path, ParseError.multipleOperationsNotAllowed)
230
+ }
173
231
  if (
174
232
  typeof value.$assign !== 'object' ||
175
- value.$assign.$idx === undefined
233
+ typeof value.$assign.$idx !== 'number'
176
234
  ) {
177
- error([...path, '$assign'], ParseError.incorrectFormat)
178
- } else {
179
- await fieldWalker(
180
- [...path, '$assign', '$value'],
181
- value.$assign.$value,
182
- fieldSchema.values,
183
- typeSchema,
184
- target,
185
- handlers,
186
- true
187
- )
235
+ error(path, ParseError.incorrectFormat)
188
236
  }
237
+ await fieldWalker(
238
+ [...path, value.$assign.$idx],
239
+ value.$assign.$value,
240
+ fieldSchema.values,
241
+ typeSchema,
242
+ target,
243
+ handlers,
244
+ noCollect
245
+ )
246
+ return
189
247
  }
190
- if (!noCollect) {
191
- handlers.collect({ path, value, typeSchema, fieldSchema, target })
248
+ if (!has$Value && !noCollect) {
249
+ handlers.collect({
250
+ path,
251
+ value: parsedValue,
252
+ typeSchema,
253
+ fieldSchema,
254
+ target,
255
+ })
256
+ }
257
+ if (!has$Value) {
258
+ return
192
259
  }
193
- return
194
260
  }
195
261
  if (!isArray) {
196
262
  error(path, ParseError.incorrectFieldType)
197
263
  }
198
264
  const q: Promise<void>[] = []
199
- for (let i = 0; i < value.length; i++) {
265
+ const collector: any[] = []
266
+ const nHandler = noCollect
267
+ ? handlers
268
+ : {
269
+ ...handlers,
270
+ collect: (collect) => {
271
+ collector.push(collect)
272
+ },
273
+ }
274
+ for (let i = 0; i < parsedValue.length; i++) {
200
275
  q.push(
201
276
  fieldWalker(
202
277
  [...path, i],
203
- value[i],
278
+ parsedValue[i],
204
279
  fieldSchema.values,
205
280
  typeSchema,
206
281
  target,
207
- handlers,
282
+ nHandler,
208
283
  noCollect
209
284
  )
210
285
  )
211
286
  }
212
287
  await Promise.all(q)
288
+
289
+ if (!noCollect) {
290
+ handlers.collect({
291
+ path,
292
+ typeSchema,
293
+ fieldSchema,
294
+ target,
295
+ value: { $delete: true },
296
+ })
297
+ for (const c of collector) {
298
+ handlers.collect(c)
299
+ }
300
+ }
213
301
  }
214
302
 
215
303
  export const record: Parser<'record'> = async (path, value, fieldSchema) => {}
package/src/set/error.ts CHANGED
@@ -6,6 +6,9 @@ export enum ParseError {
6
6
  'fieldDoesNotExist',
7
7
  'incorrectFormat',
8
8
  'referenceIsIncorrectType',
9
+ 'valueAndDefault',
10
+ 'defaultNotSupported',
11
+ 'multipleOperationsNotAllowed',
9
12
  }
10
13
 
11
14
  export const error = (
package/src/set/number.ts CHANGED
@@ -17,6 +17,17 @@ const validate = (
17
17
  if (typeof value !== 'number') {
18
18
  error(path, ParseError.incorrectFormat)
19
19
  }
20
+ if (fieldSchema.type === 'integer' && value - Math.floor(value) !== 0) {
21
+ error(path, ParseError.incorrectFormat)
22
+ }
23
+ if (
24
+ fieldSchema.multipleOf &&
25
+ value / fieldSchema.multipleOf -
26
+ Math.floor(value / fieldSchema.multipleOf) !==
27
+ 0
28
+ ) {
29
+ error(path, ParseError.incorrectFormat)
30
+ }
20
31
  if (fieldSchema.maximum) {
21
32
  if (fieldSchema.exclusiveMaximum && value > value) {
22
33
  error(path, ParseError.exceedsMaximum)
@@ -49,8 +60,14 @@ const shared = (
49
60
  if (value.$decrement) {
50
61
  validate([...path, '$decrement'], value.$decrement, fieldSchema)
51
62
  }
52
- if (value.$value) {
53
- validate([...path], value.$value, fieldSchema)
63
+ if (value.$value !== undefined) {
64
+ validate(path, value.$value, fieldSchema)
65
+ }
66
+ if (value.$default !== undefined) {
67
+ if (value.$value !== undefined) {
68
+ error(path, ParseError.valueAndDefault)
69
+ }
70
+ validate(path, value.$default, fieldSchema)
54
71
  }
55
72
  } else {
56
73
  validate(path, value, fieldSchema)
@@ -74,7 +91,7 @@ export const timestamp: Parser<'timestamp'> = async (
74
91
  const d = new Date(value)
75
92
  value = d.valueOf()
76
93
  if (isNaN(value)) {
77
- throw error(path, ParseError.incorrectFormat)
94
+ error(path, ParseError.incorrectFormat)
78
95
  }
79
96
  }
80
97
  }
@@ -120,9 +137,6 @@ export const integer: Parser<'integer'> = async (
120
137
  handlers,
121
138
  noCollect
122
139
  ) => {
123
- if (typeof value === 'number' && value - Math.floor(value) !== 0) {
124
- error(path, ParseError.incorrectFormat)
125
- }
126
140
  const parsedValue = shared(path, value, fieldSchema)
127
141
  if (!noCollect) {
128
142
  handlers.collect({
@@ -0,0 +1,44 @@
1
+ import { BasedSchemaFields } from '../types'
2
+ import { Parser } from './types'
3
+ import { error, ParseError } from './error'
4
+ import parsers from './parsers'
5
+
6
+ export const parseValueAndDefault: Parser<keyof BasedSchemaFields> = async (
7
+ path,
8
+ value,
9
+ fieldSchema,
10
+ typeSchema,
11
+ target,
12
+ handlers,
13
+ noCollect
14
+ ): Promise<boolean> => {
15
+ let handled = false
16
+ if (typeof value === 'object') {
17
+ const typeDef = fieldSchema.type ?? ('enum' in fieldSchema ? 'enum' : '')
18
+ const parse = parsers[typeDef]
19
+ if (value.$value !== undefined) {
20
+ // TODO: for errors handle path a bit smarter...
21
+ parse(path, value.$value, fieldSchema, typeSchema, target, handlers, true)
22
+ handled = true
23
+ }
24
+ if (value.$default !== undefined) {
25
+ if (value.$value !== undefined) {
26
+ error(path, ParseError.valueAndDefault)
27
+ }
28
+ parse(
29
+ path,
30
+ value.$default,
31
+ fieldSchema,
32
+ typeSchema,
33
+ target,
34
+ handlers,
35
+ true
36
+ )
37
+ handled = true
38
+ }
39
+ }
40
+ if (handled && !noCollect) {
41
+ handlers.collect({ path, value, typeSchema, fieldSchema, target })
42
+ }
43
+ return handled
44
+ }
package/src/set/rest.ts CHANGED
@@ -2,6 +2,7 @@ import { Parser } from './types'
2
2
  import { deepEqual } from '@saulx/utils'
3
3
  import { hashObjectIgnoreKeyOrder, hash } from '@saulx/hash'
4
4
  import { error, ParseError } from './error'
5
+ import { parseValueAndDefault } from './parseDefaultAndValue'
5
6
 
6
7
  export const cardinality: Parser<'cardinality'> = async (
7
8
  path,
@@ -9,14 +10,24 @@ export const cardinality: Parser<'cardinality'> = async (
9
10
  fieldSchema,
10
11
  typeSchema,
11
12
  target,
12
- handlers
13
+ handlers,
14
+ noCollect
13
15
  ) => {
14
16
  if (value && typeof value === 'object') {
15
- value = hashObjectIgnoreKeyOrder(value).toString(16)
17
+ if (value.$default !== undefined) {
18
+ error(path, ParseError.defaultNotSupported)
19
+ }
20
+ if (value.$value !== undefined) {
21
+ value = hashObjectIgnoreKeyOrder(value.$value).toString(16)
22
+ } else {
23
+ value = hashObjectIgnoreKeyOrder(value).toString(16)
24
+ }
16
25
  } else {
17
26
  value = hash(value).toString(16)
18
27
  }
19
- handlers.collect({ path, value, typeSchema, fieldSchema, target })
28
+ if (!noCollect) {
29
+ handlers.collect({ path, value, typeSchema, fieldSchema, target })
30
+ }
20
31
  }
21
32
 
22
33
  export const boolean: Parser<'boolean'> = async (
@@ -28,9 +39,24 @@ export const boolean: Parser<'boolean'> = async (
28
39
  handlers,
29
40
  noCollect
30
41
  ) => {
42
+ if (
43
+ await parseValueAndDefault(
44
+ path,
45
+ value,
46
+ fieldSchema,
47
+ typeSchema,
48
+ target,
49
+ handlers,
50
+ noCollect
51
+ )
52
+ ) {
53
+ return
54
+ }
55
+
31
56
  if (typeof value !== 'boolean') {
32
57
  error(path, ParseError.incorrectFormat)
33
58
  }
59
+
34
60
  if (!noCollect) {
35
61
  handlers.collect({ path, value, typeSchema, fieldSchema, target })
36
62
  }
@@ -46,15 +72,27 @@ export const enumParser: Parser<'enum'> = async (
46
72
  noCollect
47
73
  ) => {
48
74
  const enumValues = fieldSchema.enum
49
- for (let i = 0; i < enumValues.length; i++) {
50
- if (deepEqual(enumValues[i], value)) {
51
- if (!noCollect) {
52
- handlers.collect({ path, value: i, typeSchema, fieldSchema, target })
75
+ if (
76
+ !(await parseValueAndDefault(
77
+ path,
78
+ value,
79
+ fieldSchema,
80
+ typeSchema,
81
+ target,
82
+ handlers,
83
+ noCollect
84
+ ))
85
+ ) {
86
+ for (let i = 0; i < enumValues.length; i++) {
87
+ if (deepEqual(enumValues[i], value)) {
88
+ if (!noCollect) {
89
+ handlers.collect({ path, value: i, typeSchema, fieldSchema, target })
90
+ }
91
+ return
53
92
  }
54
- return
55
93
  }
94
+ error(path, ParseError.incorrectFormat)
56
95
  }
57
- error(path, ParseError.incorrectFormat)
58
96
  }
59
97
 
60
98
  export const json: Parser<'json'> = async (
@@ -66,6 +104,20 @@ export const json: Parser<'json'> = async (
66
104
  handlers,
67
105
  noCollect
68
106
  ) => {
107
+ if (
108
+ await parseValueAndDefault(
109
+ path,
110
+ value,
111
+ fieldSchema,
112
+ typeSchema,
113
+ target,
114
+ handlers,
115
+ noCollect
116
+ )
117
+ ) {
118
+ return
119
+ }
120
+
69
121
  try {
70
122
  const parsedValue = JSON.stringify(value)
71
123
  if (!noCollect) {
@@ -78,6 +130,6 @@ export const json: Parser<'json'> = async (
78
130
  })
79
131
  }
80
132
  } catch (err) {
81
- throw err(path, ParseError.incorrectFormat)
133
+ error(path, ParseError.incorrectFormat)
82
134
  }
83
135
  }
package/src/set/string.ts CHANGED
@@ -2,6 +2,7 @@ import { Parser } from './types'
2
2
  import { error, ParseError } from './error'
3
3
  import { BasedSchemaFieldString, BasedSchemaFieldText } from '../types'
4
4
  import validators from 'validator'
5
+ import { parseValueAndDefault } from './parseDefaultAndValue'
5
6
 
6
7
  const formatPatterns: Record<
7
8
  BasedSchemaFieldString['format'],
@@ -104,6 +105,19 @@ export const string: Parser<'string'> = async (
104
105
  handlers,
105
106
  noCollect
106
107
  ) => {
108
+ if (
109
+ await parseValueAndDefault(
110
+ path,
111
+ value,
112
+ fieldSchema,
113
+ typeSchema,
114
+ target,
115
+ handlers,
116
+ noCollect
117
+ )
118
+ ) {
119
+ return
120
+ }
107
121
  validate(path, value, fieldSchema)
108
122
  if (!noCollect) {
109
123
  handlers.collect({ path, value, typeSchema, fieldSchema, target })
@@ -138,6 +152,21 @@ export const text: Parser<'text'> = async (
138
152
  error(path, ParseError.incorrectFormat)
139
153
  }
140
154
 
155
+ if (
156
+ target.$language &&
157
+ (await parseValueAndDefault(
158
+ path,
159
+ value,
160
+ fieldSchema,
161
+ typeSchema,
162
+ target,
163
+ handlers,
164
+ noCollect
165
+ ))
166
+ ) {
167
+ return
168
+ }
169
+
141
170
  for (const key in value) {
142
171
  const newPath = [...path, key]
143
172
 
@@ -153,10 +182,6 @@ export const text: Parser<'text'> = async (
153
182
  true
154
183
  )
155
184
  }
156
-
157
- // if (value[key].$default) {
158
- // }
159
-
160
185
  if (!noCollect) {
161
186
  handlers.collect({
162
187
  path: newPath,
@@ -169,7 +194,9 @@ export const text: Parser<'text'> = async (
169
194
  continue
170
195
  }
171
196
 
172
- validate(newPath, value[key], fieldSchema)
197
+ // if
198
+
199
+ // validate(newPath, value[key], fieldSchema)
173
200
 
174
201
  if (!noCollect) {
175
202
  handlers.collect({
package/src/set/types.ts CHANGED
@@ -13,7 +13,7 @@ export type Parser<K extends keyof BasedSchemaFields> = (
13
13
  target: BasedSetTarget,
14
14
  handlers: BasedSetHandlers,
15
15
  noCollect?: boolean
16
- ) => Promise<void>
16
+ ) => Promise<void | boolean>
17
17
 
18
18
  export type Parsers = {
19
19
  [Key in keyof BasedSchemaFields]: Parser<Key>
package/test/setWalker.ts CHANGED
@@ -12,6 +12,9 @@ const schema: BasedSchema = {
12
12
  blub: {
13
13
  type: 'number',
14
14
  },
15
+ flap: {
16
+ type: 'number',
17
+ },
15
18
  snurp: {
16
19
  type: 'array',
17
20
  values: {
@@ -210,29 +213,112 @@ test.serial('collect correctly', async (t) => {
210
213
  const result = [
211
214
  { path: ['visits'], value: '3a9009740ee' },
212
215
  { path: ['blub'], value: { $increment: 1 } },
213
- { path: ['bla'], value: false },
214
216
  { path: ['time'], value: now },
217
+ { path: ['form', 'snurp'], value: 'blx12' },
218
+ {
219
+ path: ['snurpArray', 0],
220
+ value: 100,
221
+ },
222
+
223
+ { path: ['bla'], value: false },
215
224
  { path: ['form', 'lastName'], value: 'de beer' },
216
225
  { path: ['form', 'json'], value: '{"bla":1,"x":2,"y":3}' },
217
- { path: ['form', 'snurp'], value: 'blx12' },
218
226
  { path: ['form', 'things'], value: 2 },
219
227
  { path: ['form', 'password'], value: 'mypassword!' },
220
- { path: ['snurp', 0, 'x', 0], value: 1 },
221
- { path: ['snurp', 0, 'x', 1], value: 2 },
222
- { path: ['snurp', 0, 'x', 2], value: 3 },
223
228
  { path: ['form', 'bla'], value: { $value: ['bl123', 'bl234'] } },
224
229
  { path: ['form', 'blab'], value: { $add: ['bl456'] } },
225
- {
226
- path: ['snurpArray'],
227
- value: { $assign: { $idx: 0, $value: 100 } },
228
- },
230
+
229
231
  { path: ['setje'], value: { $value: [1, 2, 3] } },
230
232
  { path: ['form', 'blub'], value: { $value: ['x'] } },
231
233
  {
232
234
  path: ['specialArray'],
233
235
  value: { $insert: { $value: ['a', 'b', 'c'], $idx: 0 } },
234
236
  },
237
+
238
+ { path: ['snurp'], value: { $delete: true } },
239
+ { path: ['snurp', 0, 'x'], value: { $delete: true } },
240
+ { path: ['snurp', 0, 'x', 0], value: 1 },
241
+ { path: ['snurp', 0, 'x', 1], value: 2 },
242
+ { path: ['snurp', 0, 'x', 2], value: 3 },
235
243
  ]
236
244
 
245
+ console.log(results)
246
+
237
247
  t.deepEqual(results, result)
248
+
249
+ console.info('DID COMPARSION!')
250
+
251
+ const results2: any[] = []
252
+ await setWalker(
253
+ schema,
254
+ {
255
+ $id: 'bl1',
256
+ blub: {
257
+ $value: 4,
258
+ },
259
+ flap: {
260
+ $default: 1,
261
+ },
262
+ },
263
+ {
264
+ collect: ({ path, value, typeSchema, fieldSchema, target }) => {
265
+ console.dir(
266
+ {
267
+ path,
268
+ value,
269
+ },
270
+ { depth: 10 }
271
+ )
272
+ results2.push({
273
+ path,
274
+ value,
275
+ })
276
+ },
277
+ referenceFilterCondition: async (id, filter) => {
278
+ return true
279
+ },
280
+ }
281
+ )
282
+
283
+ t.deepEqual(results2, [
284
+ { path: ['blub'], value: { $value: 4 } },
285
+ { path: ['flap'], value: { $default: 1 } },
286
+ ])
287
+
288
+ const results3: any[] = []
289
+ await setWalker(
290
+ schema,
291
+ {
292
+ $id: 'bl1',
293
+ snurpArray: {
294
+ $push: 1,
295
+ },
296
+ specialArray: {
297
+ $push: { $value: 'flap' },
298
+ },
299
+ },
300
+ {
301
+ collect: ({ path, value, typeSchema, fieldSchema, target }) => {
302
+ console.dir(
303
+ {
304
+ path,
305
+ value,
306
+ },
307
+ { depth: 10 }
308
+ )
309
+ results3.push({
310
+ path,
311
+ value,
312
+ })
313
+ },
314
+ referenceFilterCondition: async (id, filter) => {
315
+ return true
316
+ },
317
+ }
318
+ )
319
+
320
+ t.deepEqual(results3, [
321
+ { path: ['snurpArray'], value: { $push: [1] } },
322
+ { path: ['specialArray'], value: { $push: [{ $value: 'flap' }] } },
323
+ ])
238
324
  })