@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,436 +0,0 @@
1
- import anyTest from 'ava';
2
- import { validateSchema } from '../../src/validateSchema/index.js';
3
- import { ParseError } from '../../src/error.js';
4
- const test = anyTest;
5
- test('shared', async (t) => {
6
- t.deepEqual(await validateSchema({
7
- root: {
8
- fields: {
9
- stringField: {
10
- type: 'string',
11
- // @ts-ignore
12
- wawa: true,
13
- },
14
- },
15
- },
16
- }), {
17
- errors: [
18
- {
19
- code: ParseError.invalidProperty,
20
- path: ['root', 'fields', 'stringField', 'wawa'],
21
- },
22
- ],
23
- }, 'invalid property');
24
- t.deepEqual(await validateSchema({
25
- root: {
26
- fields: {
27
- stringField: {
28
- type: 'string',
29
- hooks: { hook: 'aHook' },
30
- },
31
- },
32
- },
33
- }), {
34
- valid: true,
35
- });
36
- t.deepEqual(await validateSchema({
37
- root: {
38
- fields: {
39
- stringField: {
40
- type: 'string',
41
- hooks: [
42
- { hook: 'aHook', interval: 1000 },
43
- { hook: 'anotherHook', interval: 2000 },
44
- ],
45
- },
46
- },
47
- },
48
- }), {
49
- valid: true,
50
- });
51
- t.deepEqual(await validateSchema({
52
- root: {
53
- fields: {
54
- stringField: {
55
- type: 'string',
56
- // @ts-ignore
57
- hooks: true,
58
- },
59
- },
60
- },
61
- }), {
62
- errors: [
63
- {
64
- code: ParseError.incorrectFormat,
65
- path: ['root', 'fields', 'stringField', 'hooks'],
66
- },
67
- ],
68
- }, 'hooks format is wrong');
69
- t.deepEqual(await validateSchema({
70
- root: {
71
- fields: {
72
- stringField: {
73
- type: 'string',
74
- // @ts-ignore
75
- hooks: {
76
- hook: 'aHook',
77
- // @ts-ignore
78
- interval: '2000',
79
- },
80
- },
81
- },
82
- },
83
- }), {
84
- errors: [
85
- {
86
- code: ParseError.incorrectFormat,
87
- path: ['root', 'fields', 'stringField', 'hooks', 'interval'],
88
- },
89
- ],
90
- }, 'hooks format is wrong');
91
- t.deepEqual(await validateSchema({
92
- root: {
93
- fields: {
94
- stringField: {
95
- type: 'string',
96
- // @ts-ignore
97
- hooks: [
98
- { hook: 'aHook', interval: 1000 },
99
- // @ts-ignore
100
- { hook: 'anotherHook', interval: '2000' },
101
- ],
102
- },
103
- },
104
- },
105
- }), {
106
- errors: [
107
- {
108
- code: ParseError.incorrectFormat,
109
- path: ['root', 'fields', 'stringField', 'hooks', '1', 'interval'],
110
- },
111
- ],
112
- }, 'hooks format is wrong');
113
- });
114
- test('string', async (t) => {
115
- t.deepEqual(await validateSchema({
116
- root: {
117
- fields: {
118
- stringField: {
119
- type: 'string',
120
- },
121
- },
122
- },
123
- }), {
124
- valid: true,
125
- });
126
- t.deepEqual(await validateSchema({
127
- types: {
128
- aType: {
129
- fields: {
130
- stringField: {
131
- type: 'string',
132
- },
133
- },
134
- },
135
- },
136
- }), {
137
- valid: true,
138
- });
139
- t.deepEqual(await validateSchema({
140
- root: {
141
- fields: {
142
- stringField: {
143
- type: 'string',
144
- // @ts-ignore
145
- values: {
146
- type: 'string',
147
- },
148
- },
149
- },
150
- },
151
- }), {
152
- errors: [
153
- {
154
- code: ParseError.invalidProperty,
155
- path: ['root', 'fields', 'stringField', 'values'],
156
- },
157
- ],
158
- });
159
- t.deepEqual(await validateSchema({
160
- types: {
161
- aType: {
162
- fields: {
163
- stringField: {
164
- type: 'string',
165
- // @ts-ignore
166
- values: {
167
- type: 'string',
168
- },
169
- },
170
- },
171
- },
172
- },
173
- }), {
174
- errors: [
175
- {
176
- code: ParseError.invalidProperty,
177
- path: ['types', 'aType', 'fields', 'stringField', 'values'],
178
- },
179
- ],
180
- });
181
- });
182
- test('objects', async (t) => {
183
- t.deepEqual(await validateSchema({
184
- root: {
185
- fields: {
186
- objectField: {
187
- type: 'object',
188
- properties: {
189
- aStringField: {
190
- type: 'string',
191
- },
192
- },
193
- },
194
- },
195
- },
196
- }), {
197
- valid: true,
198
- });
199
- t.deepEqual(await validateSchema({
200
- root: {
201
- fields: {
202
- objectField: {
203
- type: 'object',
204
- properties: {
205
- aStringField: {
206
- // @ts-ignore
207
- wawa: true,
208
- },
209
- },
210
- },
211
- },
212
- },
213
- }), {
214
- errors: [
215
- {
216
- code: ParseError.invalidProperty,
217
- path: [
218
- 'root',
219
- 'fields',
220
- 'objectField',
221
- 'properties',
222
- 'aStringField',
223
- 'wawa',
224
- ],
225
- },
226
- ],
227
- });
228
- t.deepEqual(await validateSchema({
229
- root: {
230
- fields: {
231
- objectField: {
232
- type: 'object',
233
- properties: {
234
- anotherObjectField: {
235
- type: 'object',
236
- properties: {
237
- aWrongObjectField: {
238
- type: 'object',
239
- // @ts-ignore
240
- values: { type: 'string' },
241
- },
242
- },
243
- },
244
- },
245
- },
246
- },
247
- },
248
- }), {
249
- errors: [
250
- {
251
- code: ParseError.invalidProperty,
252
- path: [
253
- 'root',
254
- 'fields',
255
- 'objectField',
256
- 'properties',
257
- 'anotherObjectField',
258
- 'properties',
259
- 'aWrongObjectField',
260
- 'values',
261
- ],
262
- },
263
- ],
264
- });
265
- });
266
- test('records', async (t) => {
267
- t.deepEqual(await validateSchema({
268
- root: {
269
- fields: {
270
- recordField: {
271
- type: 'record',
272
- values: {
273
- type: 'string',
274
- },
275
- },
276
- },
277
- },
278
- }), {
279
- valid: true,
280
- });
281
- t.deepEqual(await validateSchema({
282
- root: {
283
- fields: {
284
- recordField: {
285
- type: 'record',
286
- values: {
287
- type: 'object',
288
- properties: {
289
- aWrongObjectField: {
290
- type: 'object',
291
- // @ts-ignore
292
- values: { type: 'string' },
293
- },
294
- },
295
- },
296
- },
297
- },
298
- },
299
- }), {
300
- errors: [
301
- {
302
- code: ParseError.invalidProperty,
303
- path: [
304
- 'root',
305
- 'fields',
306
- 'recordField',
307
- 'values',
308
- 'properties',
309
- 'aWrongObjectField',
310
- 'values',
311
- ],
312
- },
313
- ],
314
- });
315
- });
316
- test('arrays', async (t) => {
317
- t.deepEqual(await validateSchema({
318
- root: {
319
- fields: {
320
- arrayField: {
321
- type: 'array',
322
- items: {
323
- type: 'string',
324
- },
325
- },
326
- },
327
- },
328
- }), {
329
- valid: true,
330
- });
331
- t.deepEqual(await validateSchema({
332
- root: {
333
- fields: {
334
- arrayField: {
335
- type: 'array',
336
- items: {
337
- type: 'object',
338
- properties: {
339
- aWrongObjectField: {
340
- type: 'object',
341
- // @ts-ignore
342
- items: { type: 'string' },
343
- },
344
- },
345
- },
346
- },
347
- },
348
- },
349
- }), {
350
- errors: [
351
- {
352
- code: ParseError.invalidProperty,
353
- path: [
354
- 'root',
355
- 'fields',
356
- 'arrayField',
357
- 'items',
358
- 'properties',
359
- 'aWrongObjectField',
360
- 'items',
361
- ],
362
- },
363
- ],
364
- });
365
- });
366
- test('enum', async (t) => {
367
- t.deepEqual(await validateSchema({
368
- root: {
369
- fields: {
370
- enumField: {
371
- enum: ['one', 'two'],
372
- },
373
- },
374
- },
375
- }), {
376
- valid: true,
377
- });
378
- t.deepEqual(await validateSchema({
379
- root: {
380
- fields: {
381
- enumField: {
382
- enum: [1, 2],
383
- },
384
- },
385
- },
386
- }), {
387
- valid: true,
388
- });
389
- t.deepEqual(await validateSchema({
390
- root: {
391
- fields: {
392
- enumField: {
393
- enum: [{ one: 'one' }, { two: 'two' }],
394
- },
395
- },
396
- },
397
- }), {
398
- valid: true,
399
- });
400
- t.deepEqual(await validateSchema({
401
- root: {
402
- fields: {
403
- enumField: {
404
- // @ts-ignore
405
- enum: 'invalidEnum',
406
- },
407
- },
408
- },
409
- }), {
410
- errors: [
411
- {
412
- code: ParseError.incorrectFormat,
413
- path: ['root', 'fields', 'enumField', 'enum'],
414
- },
415
- ],
416
- });
417
- t.deepEqual(await validateSchema({
418
- root: {
419
- fields: {
420
- enumField: {
421
- enum: ['one', 'two'],
422
- // @ts-ignore
423
- invalidProperty: 'invalid',
424
- },
425
- },
426
- },
427
- }), {
428
- errors: [
429
- {
430
- code: ParseError.invalidProperty,
431
- path: ['root', 'fields', 'enumField', 'invalidProperty'],
432
- },
433
- ],
434
- });
435
- });
436
- //# sourceMappingURL=fields.js.map
@@ -1 +0,0 @@
1
- export {};
@@ -1,124 +0,0 @@
1
- import anyTest from 'ava';
2
- import { validateSchema } from '../../src/validateSchema/index.js';
3
- import { ParseError } from '../../src/error.js';
4
- const test = anyTest;
5
- test('should not allow non object schemas', async (t) => {
6
- t.deepEqual(await validateSchema(undefined), {
7
- errors: [{ code: ParseError.invalidSchemaFormat }],
8
- });
9
- t.deepEqual(await validateSchema(null), {
10
- errors: [{ code: ParseError.invalidSchemaFormat }],
11
- });
12
- // @ts-ignore
13
- t.deepEqual(await validateSchema('this is a string'), {
14
- errors: [{ code: ParseError.invalidSchemaFormat }],
15
- });
16
- // @ts-ignore
17
- t.deepEqual(await validateSchema(1), {
18
- errors: [{ code: ParseError.invalidSchemaFormat }],
19
- });
20
- });
21
- test('`languages` property', async (t) => {
22
- t.deepEqual(await validateSchema({ language: 'en' }), {
23
- valid: true,
24
- });
25
- // @ts-ignore
26
- t.deepEqual(await validateSchema({ language: 'xx' }), {
27
- errors: [{ code: ParseError.languageNotSupported, path: ['language'] }],
28
- });
29
- });
30
- test('`translations` property', async (t) => {
31
- t.deepEqual(await validateSchema({
32
- language: 'en',
33
- translations: ['fr', 'pt'],
34
- }), {
35
- valid: true,
36
- });
37
- t.deepEqual(await validateSchema({
38
- language: 'en',
39
- // @ts-ignore
40
- translations: 'de',
41
- }), {
42
- errors: [{ code: ParseError.incorrectFormat, path: ['translations'] }],
43
- });
44
- t.deepEqual(await validateSchema({
45
- language: 'en',
46
- // @ts-ignore
47
- translations: ['pt', 'xx'],
48
- }), {
49
- errors: [
50
- { code: ParseError.languageNotSupported, path: ['translations'] },
51
- ],
52
- });
53
- });
54
- test('`languageFallbacks` property', async (t) => {
55
- t.deepEqual(await validateSchema({
56
- language: 'en',
57
- translations: ['fr', 'pt'],
58
- languageFallbacks: {
59
- fr: ['en'],
60
- pt: ['fr', 'pt'],
61
- },
62
- }), {
63
- valid: true,
64
- });
65
- t.deepEqual(await validateSchema({
66
- language: 'en',
67
- translations: ['fr', 'pt'],
68
- // @ts-ignore
69
- languageFallbacks: 'pt',
70
- }), {
71
- errors: [
72
- { code: ParseError.incorrectFormat, path: ['languageFallbacks'] },
73
- ],
74
- });
75
- t.deepEqual(await validateSchema({
76
- language: 'en',
77
- translations: ['fr', 'pt'],
78
- // @ts-ignore
79
- languageFallbacks: ['pt'],
80
- }), {
81
- errors: [
82
- { code: ParseError.incorrectFormat, path: ['languageFallbacks'] },
83
- ],
84
- });
85
- t.deepEqual(await validateSchema({
86
- language: 'en',
87
- translations: ['fr', 'pt'],
88
- languageFallbacks: {
89
- fr: ['en'],
90
- // @ts-ignore
91
- pt: ['xx', 'pt'],
92
- },
93
- }), {
94
- errors: [
95
- { code: ParseError.noLanguageFound, path: ['languageFallbacks'] },
96
- ],
97
- });
98
- t.deepEqual(await validateSchema({
99
- language: 'en',
100
- translations: ['fr', 'pt'],
101
- languageFallbacks: {
102
- // @ts-ignore
103
- fr: 'en',
104
- },
105
- }), {
106
- errors: [
107
- { code: ParseError.incorrectFormat, path: ['languageFallbacks'] },
108
- ],
109
- });
110
- t.deepEqual(await validateSchema({
111
- language: 'en',
112
- translations: ['fr', 'pt'],
113
- languageFallbacks: {
114
- fr: ['en'],
115
- // @ts-ignore
116
- xx: ['fr', 'pt'],
117
- },
118
- }), {
119
- errors: [
120
- { code: ParseError.noLanguageFound, path: ['languageFallbacks'] },
121
- ],
122
- });
123
- });
124
- //# sourceMappingURL=languages.js.map
@@ -1 +0,0 @@
1
- export {};
@@ -1,13 +0,0 @@
1
- import test from 'ava';
2
- import { newSchemas } from '../data/newSchemas.js';
3
- import { validateSchema } from '../../src/index.js';
4
- test('these schemas should work', async (t) => {
5
- await Promise.all(newSchemas.map(async (validSchema) => {
6
- const validation = await validateSchema(validSchema);
7
- if (!validation.valid) {
8
- console.dir(validation.errors, { depth: null });
9
- }
10
- t.true(validation.valid);
11
- }));
12
- });
13
- //# sourceMappingURL=realWorld.js.map
@@ -1 +0,0 @@
1
- export {};