@based/schema 4.1.0 → 5.0.0-alpha.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 (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 +152 -0
  5. package/dist/lang.js +149 -0
  6. package/dist/mermaid.d.ts +3 -0
  7. package/dist/mermaid.js +24 -0
  8. package/dist/parse/assert.d.ts +1 -1
  9. package/dist/parse/assert.js +2 -2
  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 +160 -68
  15. package/dist/parse/utils.d.ts +2 -2
  16. package/dist/parse/utils.js +11 -2
  17. package/dist/types.d.ts +66 -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
package/dist/test/text.js DELETED
@@ -1,324 +0,0 @@
1
- import { setWalker } from '../src/index.js';
2
- import test from 'ava';
3
- import { resultCollect } from './utils/index.js';
4
- const schema = {
5
- types: {
6
- thing: {
7
- prefix: 'ti',
8
- fields: {
9
- something: { type: 'string', format: 'strongPassword' },
10
- },
11
- },
12
- bla: {
13
- prefix: 'bl',
14
- fields: {
15
- text: {
16
- type: 'text',
17
- pattern: '[^xz]{1,10}',
18
- },
19
- },
20
- },
21
- },
22
- $defs: {},
23
- language: 'en',
24
- translations: ['de', 'nl', 'ro', 'za', 'ae'],
25
- languageFallbacks: {
26
- en: ['en'],
27
- de: ['en'],
28
- fr: ['aa'],
29
- },
30
- root: {
31
- fields: {},
32
- },
33
- prefixToTypeMapping: {
34
- bl: 'bla',
35
- ti: 'thing',
36
- },
37
- };
38
- let r;
39
- test('throw error no language', async (t) => {
40
- let r = await setWalker(schema, {
41
- $id: 'bl120',
42
- text: { $value: 'x' },
43
- });
44
- t.true(r.errors.length > 0);
45
- });
46
- test('simple case', async (t) => {
47
- let r = await setWalker(schema, {
48
- $id: 'bl120',
49
- text: { en: 'flap' },
50
- });
51
- t.deepEqual(resultCollect(r), [
52
- { path: ['text', 'en'], value: 'flap' },
53
- { path: ['text'], value: { en: 'flap' } },
54
- ]);
55
- });
56
- test('simple case $value', async (t) => {
57
- let r = await setWalker(schema, {
58
- $id: 'bl120',
59
- text: { en: { $value: 'flap' } },
60
- });
61
- t.deepEqual(resultCollect(r), [
62
- { path: ['text', 'en'], value: 'flap' },
63
- { path: ['text'], value: { en: { $value: 'flap' } } },
64
- ]);
65
- });
66
- test('simple case $language', async (t) => {
67
- let r = await setWalker(schema, {
68
- $id: 'bl120',
69
- $language: 'en',
70
- text: 'flap',
71
- });
72
- t.deepEqual(resultCollect(r), [
73
- { path: ['text', 'en'], value: 'flap' },
74
- { path: ['text'], value: { en: 'flap' } },
75
- ]);
76
- });
77
- test('simple case with value', async (t) => {
78
- r = await setWalker(schema, {
79
- $id: 'bl120',
80
- $language: 'za',
81
- text: { $value: 'flap' },
82
- });
83
- t.deepEqual(resultCollect(r), [
84
- { path: ['text', 'za'], value: 'flap' },
85
- { path: ['text'], value: { $value: 'flap' } },
86
- ]);
87
- });
88
- test('simple case $value /w obj', async (t) => {
89
- let r = await setWalker(schema, {
90
- $id: 'bl120',
91
- text: { $value: { en: 'flap' } },
92
- });
93
- t.deepEqual(resultCollect(r), [
94
- { path: ['text', 'en'], value: 'flap' },
95
- { path: ['text'], value: { $value: { en: 'flap' } } },
96
- ]);
97
- });
98
- test('text default', async (t) => {
99
- r = await setWalker(schema, {
100
- $id: 'bl120',
101
- $language: 'za',
102
- text: { $default: 'sdsdds' },
103
- });
104
- t.deepEqual(resultCollect(r), [
105
- { path: ['text', 'za'], value: { $default: 'sdsdds' } },
106
- { path: ['text'], value: { $default: 'sdsdds' } },
107
- ]);
108
- });
109
- test('default and lang:default', async (t) => {
110
- r = await setWalker(schema, {
111
- $id: 'bl120',
112
- $language: 'za',
113
- text: { $default: 'sdsdds', en: { $default: 'flapflap' } },
114
- });
115
- t.deepEqual(resultCollect(r), [
116
- { path: ['text', 'za'], value: { $default: 'sdsdds' } },
117
- { path: ['text', 'en'], value: { $default: 'flapflap' } },
118
- {
119
- path: ['text'],
120
- value: { $default: 'sdsdds', en: { $default: 'flapflap' } },
121
- },
122
- ]);
123
- });
124
- test('default: lang, lang', async (t) => {
125
- r = await setWalker(schema, {
126
- $id: 'bl120',
127
- $language: 'za',
128
- text: { $default: { de: 'dsnfds' }, en: { $default: 'flapflap' } },
129
- });
130
- t.deepEqual(resultCollect(r), [
131
- { path: ['text', 'de'], value: { $default: 'dsnfds' } },
132
- { path: ['text', 'en'], value: { $default: 'flapflap' } },
133
- {
134
- path: ['text'],
135
- value: { $default: { de: 'dsnfds' }, en: { $default: 'flapflap' } },
136
- },
137
- ]);
138
- });
139
- test('defaullt:lang, lang, lang:default', async (t) => {
140
- r = await setWalker(schema, {
141
- $id: 'bl120',
142
- $language: 'za',
143
- text: {
144
- $default: { de: 'dsnfds' },
145
- nl: 'flapperonus',
146
- en: { $default: 'flapflap' },
147
- },
148
- });
149
- t.deepEqual(resultCollect(r), [
150
- { path: ['text', 'de'], value: { $default: 'dsnfds' } },
151
- { path: ['text', 'nl'], value: 'flapperonus' },
152
- { path: ['text', 'en'], value: { $default: 'flapflap' } },
153
- {
154
- path: ['text'],
155
- value: {
156
- $default: { de: 'dsnfds' },
157
- nl: 'flapperonus',
158
- en: { $default: 'flapflap' },
159
- },
160
- },
161
- ]);
162
- });
163
- test('default:lang, lang, lang:value, lang:default', async (t) => {
164
- r = await setWalker(schema, {
165
- $id: 'bl120',
166
- $language: 'za',
167
- text: {
168
- $default: { de: 'dsnfds' },
169
- nl: 'flapperonus',
170
- ro: { $value: 'durp' },
171
- en: { $default: 'flapflap' },
172
- },
173
- });
174
- t.deepEqual(resultCollect(r), [
175
- { path: ['text', 'de'], value: { $default: 'dsnfds' } },
176
- { path: ['text', 'nl'], value: 'flapperonus' },
177
- { path: ['text', 'ro'], value: 'durp' },
178
- { path: ['text', 'en'], value: { $default: 'flapflap' } },
179
- {
180
- path: ['text'],
181
- value: {
182
- $default: { de: 'dsnfds' },
183
- nl: 'flapperonus',
184
- ro: { $value: 'durp' },
185
- en: { $default: 'flapflap' },
186
- },
187
- },
188
- ]);
189
- });
190
- test('value:lang, lang, default:lang, lang:value, lang:default', async (t) => {
191
- r = await setWalker(schema, {
192
- $id: 'bl120',
193
- $language: 'za',
194
- text: {
195
- $value: 'durp',
196
- nl: 'flapperonus',
197
- $default: {
198
- ae: 'habibi',
199
- },
200
- ro: { $value: 'durp' },
201
- en: { $default: 'flapflap' },
202
- },
203
- });
204
- t.deepEqual(resultCollect(r), [
205
- { path: ['text', 'za'], value: 'durp' },
206
- { path: ['text', 'nl'], value: 'flapperonus' },
207
- { path: ['text', 'ae'], value: { $default: 'habibi' } },
208
- { path: ['text', 'ro'], value: 'durp' },
209
- { path: ['text', 'en'], value: { $default: 'flapflap' } },
210
- {
211
- path: ['text'],
212
- value: {
213
- $value: 'durp',
214
- nl: 'flapperonus',
215
- $default: {
216
- ae: 'habibi',
217
- },
218
- ro: { $value: 'durp' },
219
- en: { $default: 'flapflap' },
220
- },
221
- },
222
- ]);
223
- });
224
- test('value: wrong pattern, lang, default:lang, lang:value, lang:default', async (t) => {
225
- r = await setWalker(schema, {
226
- $id: 'bl120',
227
- $language: 'za',
228
- text: {
229
- $value: 'xz',
230
- nl: 'flapperonus',
231
- $default: {
232
- ae: 'habibi',
233
- },
234
- ro: { $value: 'durp' },
235
- en: { $default: 'xzxz' },
236
- },
237
- });
238
- t.true(r.errors.length > 0);
239
- });
240
- test('text delete', async (t) => {
241
- r = await setWalker(schema, {
242
- $id: 'bl120',
243
- text: {
244
- $delete: true,
245
- },
246
- });
247
- t.deepEqual(resultCollect(r), [{ path: ['text'], value: { $delete: true } }]);
248
- });
249
- test('text delete single language', async (t) => {
250
- r = await setWalker(schema, {
251
- $id: 'bl120',
252
- text: {
253
- en: {
254
- $delete: true,
255
- },
256
- },
257
- });
258
- t.deepEqual(resultCollect(r), [
259
- { path: ['text', 'en'], value: { $delete: true } },
260
- {
261
- path: ['text'],
262
- value: {
263
- en: {
264
- $delete: true,
265
- },
266
- },
267
- },
268
- ]);
269
- });
270
- test('just delete', async (t) => {
271
- r = await setWalker(schema, {
272
- $id: 'bl120',
273
- $delete: true,
274
- });
275
- t.true(r.errors.length === 1);
276
- });
277
- test('$default in collected path', async (t) => {
278
- r = await setWalker(schema, {
279
- $id: 'bl120',
280
- text: {
281
- en: {
282
- $default: 'title',
283
- },
284
- },
285
- });
286
- t.is(r.errors.length, 0);
287
- t.deepEqual(resultCollect(r), [
288
- { path: ['text', 'en'], value: { $default: 'title' } },
289
- {
290
- path: ['text'],
291
- value: {
292
- en: {
293
- $default: 'title',
294
- },
295
- },
296
- },
297
- ]);
298
- });
299
- test('$default in collected path + $merge:false', async (t) => {
300
- r = await setWalker(schema, {
301
- $id: 'bl120',
302
- text: {
303
- $merge: false,
304
- en: {
305
- $default: 'title',
306
- },
307
- },
308
- });
309
- t.is(r.errors.length, 0);
310
- t.deepEqual(resultCollect(r), [
311
- { path: ['text'], value: { $delete: true } },
312
- { path: ['text', 'en'], value: { $default: 'title' } },
313
- {
314
- path: ['text'],
315
- value: {
316
- $merge: false,
317
- en: {
318
- $default: 'title',
319
- },
320
- },
321
- },
322
- ]);
323
- });
324
- //# sourceMappingURL=text.js.map
@@ -1,11 +0,0 @@
1
- import { Path } from '@saulx/utils';
2
- import { BasedSetTarget } from '../../src/index.js';
3
- import { ParseError } from '../../src/error.js';
4
- export declare const resultCollect: (...results: BasedSetTarget[]) => {
5
- path: Path;
6
- value: any;
7
- }[];
8
- export declare const errorCollect: (...results: BasedSetTarget[]) => {
9
- path: Path;
10
- code: ParseError;
11
- }[];
@@ -1,17 +0,0 @@
1
- export const resultCollect = (...results) => {
2
- const assertableResults = [];
3
- for (let i = 0; i < results.length; i++) {
4
- assertableResults.push(...results[i].collected.map((v) => ({ path: v.path, value: v.value })));
5
- }
6
- return assertableResults;
7
- };
8
- export const errorCollect = (...results) => {
9
- const errors = [];
10
- for (let i = 0; i < results.length; i++) {
11
- if (results[i].errors) {
12
- errors.push(...results[i].errors);
13
- }
14
- }
15
- return errors;
16
- };
17
- //# sourceMappingURL=index.js.map
@@ -1 +0,0 @@
1
- export {};
@@ -1,94 +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('invalid properties in schema root should fail', async (t) => {
6
- // @ts-ignore
7
- t.deepEqual(await validateSchema({ invalidProperty: true }), {
8
- errors: [{ code: ParseError.invalidProperty, path: ['invalidProperty'] }],
9
- });
10
- });
11
- test('root', async (t) => {
12
- t.deepEqual(await validateSchema({
13
- root: {
14
- // @ts-ignore
15
- wawa: true,
16
- },
17
- }), {
18
- errors: [{ code: ParseError.invalidProperty, path: ['root', 'wawa'] }],
19
- });
20
- for (const key of ['directory', 'title', 'description']) {
21
- const result = await validateSchema({
22
- root: {
23
- // @ts-ignore
24
- [key]: true,
25
- },
26
- });
27
- t.deepEqual(result, {
28
- errors: [{ code: ParseError.incorrectFormat, path: ['root', key] }],
29
- });
30
- }
31
- t.deepEqual(await validateSchema({
32
- root: {
33
- // @ts-ignore
34
- fields: 'wa',
35
- },
36
- }), {
37
- errors: [{ code: ParseError.incorrectFormat, path: ['root', 'fields'] }],
38
- });
39
- t.deepEqual(await validateSchema({
40
- root: {
41
- prefix: 'wa',
42
- },
43
- }), {
44
- errors: [{ code: ParseError.incorrectFormat, path: ['root', 'prefix'] }],
45
- });
46
- t.deepEqual(await validateSchema({
47
- root: {
48
- // @ts-ignore
49
- prefix: true,
50
- },
51
- }), {
52
- errors: [{ code: ParseError.incorrectFormat, path: ['root', 'prefix'] }],
53
- });
54
- t.deepEqual(await validateSchema({
55
- root: {
56
- prefix: 'ro',
57
- },
58
- }), {
59
- valid: true,
60
- });
61
- t.deepEqual(await validateSchema({
62
- root: {
63
- required: ['astring'],
64
- },
65
- }), {
66
- valid: true,
67
- });
68
- t.deepEqual(await validateSchema({
69
- root: {
70
- // @ts-ignore
71
- required: 'anotherString',
72
- },
73
- }), {
74
- errors: [
75
- { code: ParseError.incorrectFormat, path: ['root', 'required'] },
76
- ],
77
- });
78
- t.deepEqual(await validateSchema({
79
- root: {
80
- $delete: true,
81
- },
82
- }), {
83
- valid: true,
84
- });
85
- t.deepEqual(await validateSchema({
86
- root: {
87
- // @ts-ignore
88
- $delete: 'aString',
89
- },
90
- }), {
91
- errors: [{ code: ParseError.incorrectFormat, path: ['root', '$delete'] }],
92
- });
93
- });
94
- //# sourceMappingURL=basic.js.map
@@ -1 +0,0 @@
1
- export {};