@based/schema 4.1.1 → 5.0.0-alpha.1

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 (123) hide show
  1. package/README.md +152 -0
  2. package/dist/index.d.ts +2 -0
  3. package/dist/index.js +2 -0
  4. package/dist/lang.d.ts +153 -0
  5. package/dist/lang.js +153 -0
  6. package/dist/mermaid.d.ts +3 -0
  7. package/dist/mermaid.js +24 -0
  8. package/dist/parse/assert.d.ts +2 -1
  9. package/dist/parse/assert.js +9 -3
  10. package/dist/parse/errors.d.ts +2 -0
  11. package/dist/parse/errors.js +2 -0
  12. package/dist/parse/index.d.ts +5 -4
  13. package/dist/parse/index.js +43 -41
  14. package/dist/parse/props.js +168 -75
  15. package/dist/parse/utils.d.ts +2 -2
  16. package/dist/parse/utils.js +11 -2
  17. package/dist/types.d.ts +72 -23
  18. package/dist/types.js +93 -0
  19. package/package.json +4 -3
  20. package/dist/parsePayload/index.d.ts +0 -3
  21. package/dist/parsePayload/index.js +0 -2
  22. package/dist/parseSchema/assert.d.ts +0 -6
  23. package/dist/parseSchema/assert.js +0 -27
  24. package/dist/parseSchema/errors.d.ts +0 -19
  25. package/dist/parseSchema/errors.js +0 -19
  26. package/dist/parseSchema/index.d.ts +0 -20
  27. package/dist/parseSchema/index.js +0 -132
  28. package/dist/parseSchema/props.d.ts +0 -7
  29. package/dist/parseSchema/props.js +0 -256
  30. package/dist/parseSchema/utils.d.ts +0 -3
  31. package/dist/parseSchema/utils.js +0 -29
  32. package/dist/src/compat/index.d.ts +0 -6
  33. package/dist/src/compat/index.js +0 -217
  34. package/dist/src/compat/oldSchemaType.d.ts +0 -93
  35. package/dist/src/compat/oldSchemaType.js +0 -2
  36. package/dist/src/display/index.d.ts +0 -2
  37. package/dist/src/display/index.js +0 -16
  38. package/dist/src/display/number.d.ts +0 -4
  39. package/dist/src/display/number.js +0 -97
  40. package/dist/src/display/string.d.ts +0 -5
  41. package/dist/src/display/string.js +0 -26
  42. package/dist/src/display/timestamp.d.ts +0 -5
  43. package/dist/src/display/timestamp.js +0 -134
  44. package/dist/src/error.d.ts +0 -21
  45. package/dist/src/error.js +0 -23
  46. package/dist/src/index.d.ts +0 -6
  47. package/dist/src/index.js +0 -7
  48. package/dist/src/languages.d.ts +0 -188
  49. package/dist/src/languages.js +0 -188
  50. package/dist/src/set/fields/array.d.ts +0 -2
  51. package/dist/src/set/fields/array.js +0 -119
  52. package/dist/src/set/fields/index.d.ts +0 -3
  53. package/dist/src/set/fields/index.js +0 -85
  54. package/dist/src/set/fields/number.d.ts +0 -4
  55. package/dist/src/set/fields/number.js +0 -123
  56. package/dist/src/set/fields/object.d.ts +0 -3
  57. package/dist/src/set/fields/object.js +0 -28
  58. package/dist/src/set/fields/references.d.ts +0 -3
  59. package/dist/src/set/fields/references.js +0 -136
  60. package/dist/src/set/fields/set.d.ts +0 -2
  61. package/dist/src/set/fields/set.js +0 -59
  62. package/dist/src/set/fields/string.d.ts +0 -3
  63. package/dist/src/set/fields/string.js +0 -289
  64. package/dist/src/set/index.d.ts +0 -3
  65. package/dist/src/set/index.js +0 -205
  66. package/dist/src/set/isValidId.d.ts +0 -2
  67. package/dist/src/set/isValidId.js +0 -17
  68. package/dist/src/types.d.ts +0 -205
  69. package/dist/src/types.js +0 -113
  70. package/dist/src/updateSchema.d.ts +0 -2
  71. package/dist/src/updateSchema.js +0 -12
  72. package/dist/src/validateSchema/basedSchemaTypeValidator.d.ts +0 -3
  73. package/dist/src/validateSchema/basedSchemaTypeValidator.js +0 -45
  74. package/dist/src/validateSchema/fieldValidators.d.ts +0 -27
  75. package/dist/src/validateSchema/fieldValidators.js +0 -360
  76. package/dist/src/validateSchema/index.d.ts +0 -17
  77. package/dist/src/validateSchema/index.js +0 -109
  78. package/dist/src/validateSchema/utils.d.ts +0 -25
  79. package/dist/src/validateSchema/utils.js +0 -61
  80. package/dist/src/walker/args.d.ts +0 -36
  81. package/dist/src/walker/args.js +0 -158
  82. package/dist/src/walker/index.d.ts +0 -6
  83. package/dist/src/walker/index.js +0 -31
  84. package/dist/src/walker/parse.d.ts +0 -3
  85. package/dist/src/walker/parse.js +0 -182
  86. package/dist/src/walker/types.d.ts +0 -45
  87. package/dist/src/walker/types.js +0 -7
  88. package/dist/test/array.d.ts +0 -1
  89. package/dist/test/array.js +0 -342
  90. package/dist/test/compat.d.ts +0 -1
  91. package/dist/test/compat.js +0 -97
  92. package/dist/test/data/newSchemas.d.ts +0 -2
  93. package/dist/test/data/newSchemas.js +0 -489
  94. package/dist/test/data/oldSchemas.d.ts +0 -2
  95. package/dist/test/data/oldSchemas.js +0 -5058
  96. package/dist/test/display.d.ts +0 -1
  97. package/dist/test/display.js +0 -103
  98. package/dist/test/json.d.ts +0 -1
  99. package/dist/test/json.js +0 -40
  100. package/dist/test/number.d.ts +0 -1
  101. package/dist/test/number.js +0 -374
  102. package/dist/test/reference.d.ts +0 -1
  103. package/dist/test/reference.js +0 -188
  104. package/dist/test/rest.d.ts +0 -1
  105. package/dist/test/rest.js +0 -168
  106. package/dist/test/set.d.ts +0 -1
  107. package/dist/test/set.js +0 -95
  108. package/dist/test/string.d.ts +0 -1
  109. package/dist/test/string.js +0 -120
  110. package/dist/test/text.d.ts +0 -1
  111. package/dist/test/text.js +0 -324
  112. package/dist/test/utils/index.d.ts +0 -11
  113. package/dist/test/utils/index.js +0 -17
  114. package/dist/test/validateSchema/basic.d.ts +0 -1
  115. package/dist/test/validateSchema/basic.js +0 -94
  116. package/dist/test/validateSchema/fields.d.ts +0 -1
  117. package/dist/test/validateSchema/fields.js +0 -436
  118. package/dist/test/validateSchema/languages.d.ts +0 -1
  119. package/dist/test/validateSchema/languages.js +0 -124
  120. package/dist/test/validateSchema/realWorld.d.ts +0 -1
  121. package/dist/test/validateSchema/realWorld.js +0 -13
  122. package/dist/test/walker.d.ts +0 -1
  123. package/dist/test/walker.js +0 -289
@@ -1,289 +0,0 @@
1
- import test from 'ava';
2
- import { setWalker, walk } from '../src/index.js';
3
- const schema = {
4
- types: {
5
- thing: {
6
- prefix: 'ti',
7
- fields: {
8
- priority: { type: 'number' },
9
- something: { type: 'string', format: 'strongPassword' },
10
- },
11
- },
12
- bla: {
13
- prefix: 'bl',
14
- fields: {
15
- referencesToThings: {
16
- type: 'references',
17
- allowedType: 'thing',
18
- },
19
- referenceToThing: {
20
- type: 'reference',
21
- allowedType: 'thing',
22
- },
23
- enum: {
24
- enum: ['tony', 'jim'],
25
- },
26
- exclusiveminmax: {
27
- type: 'number',
28
- minimum: 3,
29
- exclusiveMinimum: true,
30
- maximum: 6,
31
- exclusiveMaximum: true,
32
- },
33
- text: {
34
- type: 'text',
35
- pattern: '[^xz]{1,10}',
36
- },
37
- timestamp: {
38
- type: 'timestamp',
39
- },
40
- setOfNumbers: {
41
- type: 'set',
42
- items: {
43
- type: 'number',
44
- },
45
- },
46
- intarray: {
47
- type: 'array',
48
- items: {
49
- type: 'integer',
50
- },
51
- },
52
- object: {
53
- type: 'object',
54
- properties: {
55
- flap: { type: 'boolean' },
56
- },
57
- },
58
- name: {
59
- minLength: 3,
60
- maxLength: 6,
61
- type: 'string',
62
- },
63
- phonkName: {
64
- type: 'string',
65
- pattern: '\\${1,4}',
66
- },
67
- flap: {
68
- type: 'boolean',
69
- },
70
- x: {
71
- type: 'object',
72
- properties: {
73
- flap: {
74
- type: 'boolean',
75
- },
76
- },
77
- },
78
- record: {
79
- type: 'record',
80
- values: {
81
- type: 'object',
82
- properties: {
83
- bla: {
84
- type: 'array',
85
- items: {
86
- type: 'object',
87
- properties: {
88
- snux: {
89
- type: 'object',
90
- properties: {
91
- x: {
92
- type: 'number',
93
- },
94
- },
95
- },
96
- flap: { type: 'number' },
97
- },
98
- },
99
- },
100
- },
101
- },
102
- },
103
- bla: {
104
- type: 'set',
105
- items: { type: 'string', minLength: 3, maxLength: 6 },
106
- },
107
- },
108
- },
109
- },
110
- $defs: {},
111
- language: 'en',
112
- translations: ['de', 'nl', 'ro', 'za', 'ae'],
113
- root: {
114
- fields: {},
115
- },
116
- prefixToTypeMapping: {
117
- bl: 'bla',
118
- ti: 'thing',
119
- },
120
- };
121
- test('backtracking', async (t) => {
122
- const results = [];
123
- const setObj = {
124
- x: {
125
- y: {
126
- a: 10,
127
- bla: [1, 2, 3, 4, 5],
128
- },
129
- c: 40,
130
- },
131
- };
132
- await walk(schema, {
133
- init: async () => {
134
- return { target: { lullz: true } };
135
- },
136
- parsers: {
137
- keys: {},
138
- fields: {},
139
- any: async (args) => {
140
- args.collect();
141
- return args;
142
- },
143
- },
144
- collect: (args) => {
145
- return args.path.join('.');
146
- },
147
- backtrack: (args, fromBt, collected) => {
148
- results.push({ path: args.path, bt: [...fromBt] });
149
- return fromBt.length ? fromBt : collected;
150
- },
151
- }, setObj);
152
- t.deepEqual(results, [
153
- { path: ['x', 'y', 'bla'], bt: [] },
154
- {
155
- path: ['x', 'y'],
156
- bt: [['x.y.bla.0', 'x.y.bla.1', 'x.y.bla.2', 'x.y.bla.3', 'x.y.bla.4']],
157
- },
158
- {
159
- path: ['x'],
160
- bt: [[['x.y.bla.0', 'x.y.bla.1', 'x.y.bla.2', 'x.y.bla.3', 'x.y.bla.4']]],
161
- },
162
- {
163
- path: [],
164
- bt: [
165
- [[['x.y.bla.0', 'x.y.bla.1', 'x.y.bla.2', 'x.y.bla.3', 'x.y.bla.4']]],
166
- ],
167
- },
168
- ]);
169
- const results2 = [];
170
- await walk(schema, {
171
- init: async () => {
172
- return { target: { lullz: true } };
173
- },
174
- parsers: {
175
- keys: {},
176
- fields: {},
177
- any: async (args) => {
178
- args.collect();
179
- return { target: { lullz: true } };
180
- },
181
- },
182
- collect: (args) => {
183
- return args.path.join('.');
184
- },
185
- backtrack: (args, fromBt, collected) => {
186
- results2.push({ path: args.path, bt: [...fromBt] });
187
- return fromBt.length ? fromBt : collected;
188
- },
189
- }, setObj);
190
- t.deepEqual(results, results2);
191
- const results3 = [];
192
- let cnt = 0;
193
- await walk(schema, {
194
- init: async () => {
195
- return { target: { lullz: true } };
196
- },
197
- parsers: {
198
- keys: {},
199
- fields: {},
200
- any: async (args) => {
201
- cnt++;
202
- args.collect();
203
- return cnt % 2 ? args : { target: { lullz: true } };
204
- },
205
- },
206
- collect: (args) => {
207
- return args.path.join('.');
208
- },
209
- backtrack: (args, fromBt, collected) => {
210
- results3.push({ path: args.path, bt: [...fromBt] });
211
- return fromBt.length ? fromBt : collected;
212
- },
213
- }, setObj);
214
- t.deepEqual(results, results3);
215
- });
216
- test.only('parseTop update target', async (t) => {
217
- const parsed = [];
218
- await walk(schema, {
219
- init: async () => {
220
- return { target: { path: [] } };
221
- },
222
- parsers: {
223
- keys: {},
224
- fields: {},
225
- any: async (args) => {
226
- args.collect();
227
- if (args.prev.key !== args.key) {
228
- return {
229
- parseTopLevel: true,
230
- target: {
231
- path: args.path.join('.'),
232
- prevTarget: args.target.id,
233
- id: args.id,
234
- },
235
- value: args.value,
236
- };
237
- }
238
- },
239
- },
240
- collect: (args) => {
241
- parsed.push({ path: args.path, target: args.target });
242
- return args.path.join('.');
243
- },
244
- }, {
245
- x: {
246
- y: {
247
- z: 'bla!',
248
- },
249
- },
250
- });
251
- t.deepEqual(parsed, [
252
- { path: ['x'], target: { path: [] } },
253
- {
254
- path: ['x'],
255
- target: { path: 'x', prevTarget: undefined, id: 2 },
256
- },
257
- {
258
- path: ['x', 'y'],
259
- target: { path: 'x', prevTarget: undefined, id: 2 },
260
- },
261
- { path: ['x', 'y'], target: { path: 'x.y', prevTarget: 2, id: 4 } },
262
- {
263
- path: ['x', 'y', 'z'],
264
- target: { path: 'x.y', prevTarget: 2, id: 4 },
265
- },
266
- {
267
- path: ['x', 'y', 'z'],
268
- target: { path: 'x.y.z', prevTarget: 4, id: 6 },
269
- },
270
- ]);
271
- });
272
- test.serial('perf setWalker', async (t) => {
273
- let d = Date.now();
274
- let collected = 0;
275
- let errs = 0;
276
- for (let i = 0; i < 1e5; i++) {
277
- const x = await setWalker(schema, {
278
- $id: 'bl120',
279
- name: 'blasdsdsd',
280
- x: { flap: true },
281
- });
282
- errs += x.errors.length;
283
- collected += x.collected.length;
284
- }
285
- d = Date.now() - d;
286
- console.info('setting 200k', d, 'ms');
287
- t.true(d < 1e3);
288
- });
289
- //# sourceMappingURL=walker.js.map