@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,489 +0,0 @@
1
- const defaultFields = {
2
- createdAt: {
3
- readOnly: true,
4
- type: 'timestamp',
5
- },
6
- updatedAt: {
7
- readOnly: true,
8
- type: 'timestamp',
9
- },
10
- };
11
- const testSchema = {
12
- language: 'en',
13
- translations: ['pt', 'es'],
14
- root: {
15
- fields: {
16
- currentSeason: {
17
- type: 'reference',
18
- title: 'Currently active season',
19
- },
20
- },
21
- },
22
- types: {
23
- file: {
24
- fields: {
25
- ...defaultFields,
26
- width: {
27
- type: 'number',
28
- },
29
- height: {
30
- type: 'number',
31
- },
32
- },
33
- },
34
- country: {
35
- prefix: 'co',
36
- title: 'Country',
37
- description: 'This is the country',
38
- fields: {
39
- ...defaultFields,
40
- name: {
41
- type: 'string',
42
- title: 'Country code',
43
- },
44
- title: {
45
- type: 'text',
46
- title: 'Translated country name',
47
- },
48
- circleImage: {
49
- type: 'reference',
50
- title: 'Circular flag image',
51
- },
52
- heartImage: {
53
- type: 'reference',
54
- title: 'Heart-shaped flag image',
55
- },
56
- },
57
- },
58
- season: {
59
- prefix: 'se',
60
- fields: {
61
- ...defaultFields,
62
- name: {
63
- type: 'string',
64
- title: 'Season name',
65
- },
66
- winner: {
67
- type: 'reference',
68
- allowedType: 'contestant',
69
- },
70
- countries: {
71
- type: 'references',
72
- title: 'Participating countries',
73
- },
74
- },
75
- },
76
- episode: {
77
- prefix: 'ep',
78
- fields: {
79
- ...defaultFields,
80
- episodeType: {
81
- type: 'string', // redemption, grandFinal, nationalFinal or nationalQualifier
82
- title: 'Type of episode',
83
- },
84
- title: {
85
- type: 'text',
86
- title: 'Episode title',
87
- },
88
- image: {
89
- type: 'reference',
90
- allowedType: 'file',
91
- },
92
- startTime: {
93
- type: 'timestamp',
94
- title: 'Start time',
95
- },
96
- endTime: {
97
- type: 'timestamp',
98
- title: 'End time',
99
- },
100
- producer: {
101
- type: 'reference',
102
- allowedType: 'broadcaster',
103
- },
104
- distributors: {
105
- type: 'references',
106
- allowedType: 'broadcaster',
107
- },
108
- },
109
- },
110
- votingWindow: {
111
- prefix: 'vo',
112
- fields: {
113
- ...defaultFields,
114
- startTime: {
115
- type: 'timestamp',
116
- },
117
- closeTime: {
118
- type: 'timestamp',
119
- },
120
- endTime: {
121
- type: 'timestamp',
122
- },
123
- },
124
- },
125
- contestant: {
126
- prefix: 'ct',
127
- fields: {
128
- ...defaultFields,
129
- name: {
130
- type: 'string',
131
- },
132
- song: {
133
- type: 'string',
134
- },
135
- songUrl: {
136
- type: 'string',
137
- format: 'URL',
138
- },
139
- writer: {
140
- type: 'string',
141
- },
142
- image: {
143
- type: 'reference',
144
- allowedType: 'file',
145
- },
146
- content: {
147
- type: 'text',
148
- format: 'html',
149
- },
150
- },
151
- },
152
- broadcaster: {
153
- prefix: 'br',
154
- fields: {
155
- ...defaultFields,
156
- name: {
157
- type: 'string',
158
- },
159
- email: {
160
- type: 'string',
161
- format: 'email',
162
- },
163
- image: {
164
- type: 'reference',
165
- allowedType: 'file',
166
- },
167
- },
168
- },
169
- feed: {
170
- prefix: 'fe',
171
- fields: {
172
- ...defaultFields,
173
- title: {
174
- type: 'text',
175
- },
176
- content: {
177
- type: 'text',
178
- format: 'html',
179
- },
180
- imageUrl: {
181
- type: 'string',
182
- format: 'URL',
183
- },
184
- videoUrl: {
185
- type: 'string',
186
- format: 'URL',
187
- },
188
- url: {
189
- type: 'string',
190
- format: 'URL',
191
- },
192
- },
193
- },
194
- user: {
195
- prefix: 'us',
196
- fields: {
197
- ...defaultFields,
198
- name: { type: 'string' },
199
- language: { type: 'string' },
200
- notify: { type: 'boolean' },
201
- country: { type: 'string' },
202
- customerId: {
203
- // stripe customerId
204
- type: 'string',
205
- },
206
- credits: {
207
- type: 'record',
208
- values: {
209
- type: 'object',
210
- properties: {
211
- purchased: {
212
- type: 'number',
213
- },
214
- earned: {
215
- type: 'number',
216
- },
217
- },
218
- },
219
- },
220
- voteHistory: {
221
- type: 'record',
222
- values: {
223
- type: 'record',
224
- values: {
225
- type: 'record',
226
- values: {
227
- type: 'number',
228
- },
229
- },
230
- },
231
- },
232
- },
233
- },
234
- },
235
- };
236
- export const newSchemas = [
237
- testSchema,
238
- {
239
- types: {
240
- thing: {
241
- prefix: 'ti',
242
- fields: {
243
- priority: { type: 'number' },
244
- something: { type: 'string', format: 'strongPassword' },
245
- },
246
- },
247
- bla: {
248
- prefix: 'bl',
249
- fields: {
250
- createdAt: {
251
- type: 'timestamp',
252
- readOnly: true,
253
- },
254
- // enum: {
255
- // enum: ['tony', 'jim'],
256
- // },
257
- setOfNumbers: {
258
- type: 'set',
259
- items: {
260
- type: 'number',
261
- },
262
- },
263
- object: {
264
- type: 'object',
265
- properties: {
266
- flap: { type: 'boolean' },
267
- },
268
- },
269
- flap: {
270
- type: 'boolean',
271
- },
272
- x: {
273
- type: 'object',
274
- properties: {
275
- flap: {
276
- type: 'boolean',
277
- },
278
- },
279
- },
280
- record: {
281
- type: 'record',
282
- values: {
283
- type: 'object',
284
- properties: {
285
- bla: {
286
- type: 'array',
287
- items: {
288
- type: 'object',
289
- properties: {
290
- snux: {
291
- type: 'object',
292
- properties: {
293
- x: {
294
- type: 'number',
295
- },
296
- },
297
- },
298
- flap: { type: 'number' },
299
- },
300
- },
301
- },
302
- },
303
- },
304
- },
305
- bla: {
306
- type: 'set',
307
- items: { type: 'string', minLength: 3, maxLength: 6 },
308
- },
309
- },
310
- },
311
- },
312
- language: 'en',
313
- translations: ['de', 'nl', 'ro', 'za', 'ae'],
314
- root: {
315
- fields: {},
316
- },
317
- prefixToTypeMapping: {
318
- bl: 'bla',
319
- ti: 'thing',
320
- },
321
- },
322
- {
323
- types: {
324
- thing: {
325
- prefix: 'ti',
326
- fields: {
327
- dateHuman: { type: 'timestamp', display: 'human' },
328
- dateTime: { type: 'timestamp', display: 'date-time' },
329
- dateTimeText: { type: 'timestamp', display: 'date-time-text' },
330
- time: { type: 'timestamp', display: 'time' },
331
- timePrecise: { type: 'timestamp', display: 'time-precise' },
332
- capitalize: {
333
- type: 'string',
334
- display: 'capitalize',
335
- format: 'lowercase',
336
- },
337
- upperCase: { type: 'string', display: 'uppercase' },
338
- lowerCase: { type: 'string', display: 'lowercase' },
339
- euros: { type: 'number', display: 'euro' },
340
- dollars: { type: 'number', display: 'dollar' },
341
- pounds: { type: 'number', display: 'pound' },
342
- bytes: { type: 'number', display: 'bytes' },
343
- humanNumber: { type: 'number', display: 'human' },
344
- ratio: { type: 'number', display: 'ratio' },
345
- short: { type: 'number', display: 'short' },
346
- },
347
- },
348
- },
349
- language: 'en',
350
- root: {
351
- fields: {},
352
- },
353
- prefixToTypeMapping: {
354
- bl: 'bla',
355
- ti: 'thing',
356
- },
357
- },
358
- {
359
- language: 'en',
360
- translations: ['nl'],
361
- prefixToTypeMapping: {},
362
- root: {
363
- fields: {},
364
- },
365
- types: {
366
- file: {
367
- prefix: 'fi',
368
- fields: {
369
- usedIn: {
370
- type: 'references',
371
- inverseProperty: 'img',
372
- },
373
- caption: {
374
- // needs translation?
375
- type: 'text',
376
- description: 'Caption for seo',
377
- title: 'Caption',
378
- },
379
- },
380
- },
381
- user: {
382
- prefix: 'us',
383
- fields: {
384
- firstName: { type: 'string' },
385
- lastName: { type: 'string' },
386
- email: { type: 'string', format: 'email' },
387
- company: { type: 'reference' },
388
- newsletter: { type: 'integer' },
389
- ip: { type: 'string' },
390
- seen: { type: 'timestamp' },
391
- charges: {
392
- type: 'references',
393
- inverseProperty: 'user',
394
- allowedType: 'charge',
395
- },
396
- articles: {
397
- type: 'references',
398
- inverseProperty: 'contributors',
399
- allowedType: 'article',
400
- },
401
- },
402
- },
403
- charge: {
404
- fields: {
405
- // does this have a user?
406
- user: {
407
- type: 'reference',
408
- inverseProperty: 'charges',
409
- allowedType: 'user',
410
- },
411
- token: { type: 'string' },
412
- description: { type: 'string' },
413
- amount: { type: 'number' },
414
- stripeId: { type: 'string' },
415
- },
416
- },
417
- category: {
418
- fields: {
419
- title: { type: 'text' },
420
- children: {
421
- type: 'references',
422
- allowedType: 'article',
423
- },
424
- },
425
- },
426
- section: {
427
- fields: {
428
- title: { type: 'text' },
429
- membership: { type: 'number' },
430
- membershipFreeDays: { type: 'number' },
431
- hidden: { type: 'boolean' },
432
- metaDescription: { type: 'text' },
433
- // meta_keywords: { type: 'array', values: { type: 'string' } },
434
- children: {
435
- type: 'references',
436
- allowedType: 'article' // FIXME Can't have both 'category'],
437
- },
438
- },
439
- },
440
- article: {
441
- prefix: 'ar',
442
- fields: {
443
- contributors: {
444
- title: 'Writers',
445
- description: 'Writers or people involved with the article.',
446
- type: 'references',
447
- allowedType: 'user',
448
- inverseProperty: 'articles',
449
- },
450
- contributorsText: {
451
- title: 'Contributors text',
452
- description: 'Gets auto generated based on contributors, fill it in to override.',
453
- examples: ['Peter Teffer, graphics by Kashyap Raibagi (EDJNET)'],
454
- type: 'text',
455
- },
456
- headline: {
457
- title: 'Headline',
458
- description: 'Displayed on pages, also used as meta title for seo.',
459
- type: 'text',
460
- },
461
- publishDate: {
462
- title: 'Publish date',
463
- description: 'Any time you want the article to show on the website',
464
- type: 'timestamp',
465
- },
466
- archived: {
467
- title: 'Archived',
468
- description: 'Archived articles will not show up on the website or be available outside of the cms',
469
- type: 'boolean',
470
- },
471
- img: {
472
- type: 'reference',
473
- allowedType: 'file',
474
- inverseProperty: 'usedIn',
475
- },
476
- hits: { type: 'number' }, // get a bit more going here maybe? what does this mean
477
- // membership: { enum: ['Need membership', 'Free'] },
478
- location: { type: 'text' }, // or string its just city name or smth
479
- bio: { type: 'text', format: 'json' }, //has a href and stuff so aarich text
480
- tweet: { type: 'string' }, // ask if it needs translation // 'The 2009 allocation of solar subsidies in Solvakia "was rigged," say a US cable. PM Fico denies it.',
481
- notes: { type: 'string' },
482
- abstract: { type: 'text' },
483
- body: { type: 'text', format: 'json' }, // will add rich text
484
- },
485
- },
486
- },
487
- },
488
- ];
489
- //# sourceMappingURL=newSchemas.js.map
@@ -1,2 +0,0 @@
1
- import { BasedOldSchema } from '../../src/compat/oldSchemaType.js';
2
- export declare const oldSchemas: BasedOldSchema[];