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