@based/schema 3.2.0 → 4.1.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 (89) hide show
  1. package/dist/index.d.ts +3 -5
  2. package/dist/index.js +2 -21
  3. package/dist/parse/assert.d.ts +7 -0
  4. package/dist/parse/assert.js +33 -0
  5. package/dist/parse/errors.d.ts +19 -0
  6. package/dist/parse/errors.js +19 -0
  7. package/dist/parse/index.d.ts +20 -0
  8. package/dist/parse/index.js +132 -0
  9. package/dist/parse/props.d.ts +7 -0
  10. package/dist/parse/props.js +290 -0
  11. package/dist/parse/utils.d.ts +3 -0
  12. package/dist/parse/utils.js +29 -0
  13. package/dist/parsePayload/index.d.ts +3 -0
  14. package/dist/parsePayload/index.js +2 -0
  15. package/dist/parseSchema/assert.d.ts +6 -0
  16. package/dist/parseSchema/assert.js +27 -0
  17. package/dist/parseSchema/errors.d.ts +19 -0
  18. package/dist/parseSchema/errors.js +19 -0
  19. package/dist/parseSchema/index.d.ts +20 -0
  20. package/dist/parseSchema/index.js +132 -0
  21. package/dist/parseSchema/props.d.ts +7 -0
  22. package/dist/parseSchema/props.js +256 -0
  23. package/dist/parseSchema/utils.d.ts +3 -0
  24. package/dist/parseSchema/utils.js +29 -0
  25. package/dist/src/compat/index.js +2 -2
  26. package/dist/src/set/fields/references.js +3 -30
  27. package/dist/src/types.d.ts +5 -13
  28. package/dist/src/types.js +14 -0
  29. package/dist/src/validateSchema/fieldValidators.js +4 -4
  30. package/dist/test/compat.js +1 -1
  31. package/dist/test/data/newSchemas.js +19 -21
  32. package/dist/test/reference.js +4 -2
  33. package/dist/test/walker.js +2 -2
  34. package/dist/types.d.ts +129 -194
  35. package/dist/types.js +3 -25
  36. package/package.json +14 -25
  37. package/README.md +0 -2
  38. package/dist/display/index.d.ts +0 -2
  39. package/dist/display/index.js +0 -26
  40. package/dist/display/number.d.ts +0 -3
  41. package/dist/display/number.js +0 -89
  42. package/dist/display/string.d.ts +0 -3
  43. package/dist/display/string.js +0 -23
  44. package/dist/display/timestamp.d.ts +0 -3
  45. package/dist/display/timestamp.js +0 -127
  46. package/dist/error.d.ts +0 -19
  47. package/dist/error.js +0 -24
  48. package/dist/languages.d.ts +0 -187
  49. package/dist/languages.js +0 -190
  50. package/dist/set/fields/array.d.ts +0 -2
  51. package/dist/set/fields/array.js +0 -123
  52. package/dist/set/fields/index.d.ts +0 -3
  53. package/dist/set/fields/index.js +0 -74
  54. package/dist/set/fields/number.d.ts +0 -4
  55. package/dist/set/fields/number.js +0 -129
  56. package/dist/set/fields/object.d.ts +0 -3
  57. package/dist/set/fields/object.js +0 -33
  58. package/dist/set/fields/references.d.ts +0 -3
  59. package/dist/set/fields/references.js +0 -128
  60. package/dist/set/fields/set.d.ts +0 -2
  61. package/dist/set/fields/set.js +0 -63
  62. package/dist/set/fields/string.d.ts +0 -3
  63. package/dist/set/fields/string.js +0 -284
  64. package/dist/set/index.d.ts +0 -3
  65. package/dist/set/index.js +0 -183
  66. package/dist/set/isValidId.d.ts +0 -2
  67. package/dist/set/isValidId.js +0 -21
  68. package/dist/set/types.d.ts +0 -0
  69. package/dist/set/types.js +0 -1
  70. package/dist/src/compat/newToOld.d.ts +0 -3
  71. package/dist/src/compat/newToOld.js +0 -218
  72. package/dist/src/compat/oldToNew.d.ts +0 -3
  73. package/dist/src/compat/oldToNew.js +0 -210
  74. package/dist/src/generateQuery.d.ts +0 -12
  75. package/dist/src/generateQuery.js +0 -75
  76. package/dist/test/query.d.ts +0 -1
  77. package/dist/test/query.js +0 -93
  78. package/dist/updateSchema.d.ts +0 -2
  79. package/dist/updateSchema.js +0 -16
  80. package/dist/validateSchema.d.ts +0 -4
  81. package/dist/validateSchema.js +0 -41
  82. package/dist/walker/args.d.ts +0 -36
  83. package/dist/walker/args.js +0 -162
  84. package/dist/walker/index.d.ts +0 -6
  85. package/dist/walker/index.js +0 -49
  86. package/dist/walker/parse.d.ts +0 -3
  87. package/dist/walker/parse.js +0 -186
  88. package/dist/walker/types.d.ts +0 -45
  89. package/dist/walker/types.js +0 -10
@@ -1,218 +0,0 @@
1
- const metaChecker = (field) => {
2
- return (field === 'validation' ||
3
- // field === 'format' ||
4
- field === 'index' ||
5
- field === 'description' ||
6
- field === 'title' ||
7
- field === 'examples' ||
8
- field === 'ui' ||
9
- field === 'isRequired' ||
10
- field === 'title' ||
11
- field === 'description' ||
12
- field === 'index' ||
13
- field === 'readOnly' ||
14
- field === 'writeOnly' ||
15
- field === '$comment' ||
16
- field === 'examples' ||
17
- field === 'default' ||
18
- field === 'customValidator' ||
19
- field === 'value' ||
20
- field === 'path' ||
21
- field === 'target' ||
22
- field === 'minLength' ||
23
- field === 'maxLength' ||
24
- field === 'contentMediaEncoding' ||
25
- field === 'pattern' ||
26
- field === 'display' ||
27
- field === 'multiline' ||
28
- field === 'multipleOf' ||
29
- field === 'minimum' ||
30
- field === 'maximum' ||
31
- field === 'exclusiveMaximum' ||
32
- field === 'exclusiveMinimum' ||
33
- field === '$delete' ||
34
- field === 'display');
35
- };
36
- const DEFAULT_FIELDS = {
37
- // id: { type: 'string' },
38
- // createdAt: { type: 'timestamp' },
39
- // updatedAt: { type: 'timestamp' },
40
- // type: { type: 'string' },
41
- // parents: { type: 'references' },
42
- // children: { type: 'references' },
43
- // ancestors: { type: 'references' },
44
- // descendants: { type: 'references' },
45
- // aliases: {
46
- // type: 'set',
47
- // items: { type: 'string' },
48
- // },
49
- };
50
- const metaParser = (obj) => {
51
- const tmp = {};
52
- for (const i in obj) {
53
- if (metaChecker(i)) {
54
- if (i === 'title') {
55
- tmp.name = obj[i];
56
- }
57
- else if (obj[i] === 'bytes') {
58
- tmp.format = obj[i];
59
- }
60
- else {
61
- tmp[i] = obj[i];
62
- }
63
- }
64
- }
65
- return Object.keys(tmp).length > 0 ? { meta: tmp } : null;
66
- };
67
- const migrateField = (field) => {
68
- if (field?.type === 'object') {
69
- return {
70
- ...metaParser(field),
71
- type: 'object',
72
- properties: migrateFields(field.properties, true),
73
- };
74
- }
75
- else if (field?.type === 'json') {
76
- return {
77
- ...field,
78
- ...metaParser(field),
79
- type: 'json',
80
- };
81
- }
82
- else if (field?.type === 'array') {
83
- const values = migrateField(field.values);
84
- if (!values) {
85
- return null;
86
- }
87
- return {
88
- ...metaParser(field),
89
- type: 'array',
90
- items: values,
91
- };
92
- }
93
- else if (field?.type === 'set') {
94
- return {
95
- ...metaParser(field),
96
- type: 'set',
97
- items: migrateField(field.items),
98
- };
99
- }
100
- else if (field?.type === 'record') {
101
- return {
102
- ...metaParser(field),
103
- type: 'record',
104
- values: migrateField(field.values),
105
- };
106
- }
107
- else if (field?.type === 'reference' || field?.type === 'references') {
108
- return {
109
- ...metaParser(field),
110
- type: field?.type,
111
- ...(field.bidirectional ? { bidirectional: field.bidirectional } : null),
112
- };
113
- }
114
- else if (field?.type === 'integer') {
115
- return {
116
- ...metaParser(field),
117
- type: 'int',
118
- };
119
- }
120
- else if (field?.format === 'strongPassword') {
121
- return { ...metaParser(field), type: 'digest' };
122
- }
123
- else if (field?.format === 'basedId') {
124
- return { ...metaParser(field), type: 'id' };
125
- }
126
- else if (field?.format === 'URL') {
127
- return { ...metaParser(field), type: 'url' };
128
- }
129
- else if (field?.format === 'email') {
130
- return {
131
- ...metaParser(field),
132
- type: 'email',
133
- };
134
- }
135
- else if (field?.format === 'mobilePhone') {
136
- return {
137
- ...metaParser(field),
138
- type: 'phone',
139
- };
140
- }
141
- else if (field?.format === 'latLong') {
142
- return {
143
- ...metaParser(field),
144
- type: 'geo',
145
- };
146
- }
147
- else {
148
- return { ...metaParser(field), type: field?.type };
149
- }
150
- };
151
- const migrateFields = (oldFields, recursing = false) => {
152
- const result = {};
153
- if (oldFields) {
154
- for (const key in oldFields) {
155
- if (oldFields.hasOwnProperty(key)) {
156
- if (!recursing && Object.keys(DEFAULT_FIELDS).includes(key)) {
157
- continue;
158
- }
159
- const field = migrateField(oldFields[key]);
160
- if (!field) {
161
- continue;
162
- }
163
- result[key] = field;
164
- }
165
- }
166
- }
167
- return result;
168
- };
169
- const migrateTypes = (oldSchema) => {
170
- const result = {
171
- types: {},
172
- };
173
- for (const key in oldSchema.types) {
174
- if (oldSchema.types.hasOwnProperty(key)) {
175
- const type = oldSchema.types[key];
176
- result.types[key] = {
177
- ...metaParser(type),
178
- fields: migrateFields(type.fields),
179
- };
180
- if (type.prefix) {
181
- result.types[key].prefix = type.prefix;
182
- }
183
- }
184
- }
185
- return result;
186
- };
187
- const convertRoot = (schema) => {
188
- const result = {
189
- fields: {},
190
- ...metaParser(schema.root),
191
- ...(schema.root?.prefix ? { prefix: schema.root.prefix } : null),
192
- };
193
- for (const i in schema.root?.fields) {
194
- const field = schema.root?.fields[i];
195
- result.fields[i] = {
196
- ...metaParser(field),
197
- ...migrateField(field),
198
- };
199
- }
200
- return result;
201
- };
202
- export const convertNewToOld = (schema) => {
203
- const tmpSchema = migrateTypes(schema);
204
- if (schema.prefixToTypeMapping) {
205
- tmpSchema.prefixToTypeMapping = schema.prefixToTypeMapping;
206
- }
207
- tmpSchema.languages = [];
208
- if (schema.language) {
209
- tmpSchema.languages.push(schema.language);
210
- }
211
- if (schema.translations) {
212
- tmpSchema.languages.push(...schema.translations);
213
- }
214
- tmpSchema.rootType = convertRoot(schema);
215
- delete tmpSchema.root;
216
- return tmpSchema;
217
- };
218
- //# sourceMappingURL=newToOld.js.map
@@ -1,3 +0,0 @@
1
- import { BasedSchema } from '../types.js';
2
- import { BasedOldSchema } from './oldSchemaType.js';
3
- export declare const convertOldToNew: (oldSchema: Partial<BasedOldSchema>) => BasedSchema;
@@ -1,210 +0,0 @@
1
- const DEFAULT_FIELDS = {
2
- // id: { type: 'string' },
3
- // createdAt: { type: 'timestamp' },
4
- // updatedAt: { type: 'timestamp' },
5
- // type: { type: 'string' },
6
- // parents: { type: 'references' },
7
- // children: { type: 'references' },
8
- // ancestors: { type: 'references' },
9
- // descendants: { type: 'references' },
10
- // aliases: {
11
- // type: 'set',
12
- // items: { type: 'string' },
13
- // },
14
- };
15
- const metaParser = (obj) => {
16
- const metaObj = obj?.meta;
17
- const tmp = {};
18
- for (const i in metaObj) {
19
- if (i === 'name') {
20
- tmp.title = metaObj[i];
21
- }
22
- else if (i === 'validation' ||
23
- i === 'progress' ||
24
- i === 'format' ||
25
- i === 'ui') {
26
- if (metaObj[i] === 'url') {
27
- // tmp.format = 'URL'
28
- }
29
- if ((metaObj[i] === 'bytes' && obj.type === 'number') ||
30
- metaObj.type === 'float') {
31
- tmp.display = 'bytes';
32
- }
33
- }
34
- else {
35
- tmp[i] = metaObj[i];
36
- }
37
- }
38
- return tmp;
39
- };
40
- const migrateField = (oldField) => {
41
- switch (oldField.type) {
42
- case 'object':
43
- return {
44
- ...metaParser(oldField),
45
- type: 'object',
46
- properties: migrateFields(oldField.properties, true),
47
- };
48
- case 'json':
49
- return {
50
- ...oldField,
51
- ...metaParser(oldField),
52
- type: 'json',
53
- };
54
- case 'array':
55
- const values = migrateField(oldField.items);
56
- if (!values) {
57
- return null;
58
- }
59
- return {
60
- ...metaParser(oldField),
61
- type: 'array',
62
- values,
63
- };
64
- case 'set':
65
- return {
66
- ...metaParser(oldField),
67
- type: 'set',
68
- items: migrateField(oldField.items),
69
- };
70
- case 'record':
71
- return {
72
- ...metaParser(oldField),
73
- type: 'record',
74
- values: migrateField(oldField.values),
75
- };
76
- case 'reference':
77
- case 'references':
78
- return {
79
- ...metaParser(oldField),
80
- type: oldField.type,
81
- ...(oldField.bidirectional
82
- ? { bidirectional: oldField.bidirectional }
83
- : null),
84
- };
85
- case 'float':
86
- return {
87
- ...metaParser(oldField),
88
- type: 'number',
89
- };
90
- case 'int':
91
- return {
92
- ...metaParser(oldField),
93
- type: 'integer',
94
- };
95
- case 'digest':
96
- return {
97
- ...metaParser(oldField),
98
- format: 'strongPassword',
99
- type: 'string',
100
- };
101
- case 'id':
102
- return {
103
- format: 'basedId',
104
- ...metaParser(oldField),
105
- type: 'string',
106
- };
107
- case 'url':
108
- return {
109
- ...metaParser(oldField),
110
- format: 'URL',
111
- type: 'string',
112
- };
113
- case 'email':
114
- return {
115
- format: 'email',
116
- ...metaParser(oldField),
117
- type: 'string',
118
- };
119
- case 'phone':
120
- return {
121
- ...metaParser(oldField),
122
- format: 'mobilePhone',
123
- type: 'string',
124
- };
125
- case 'geo':
126
- return {
127
- ...metaParser(oldField),
128
- format: 'latLong',
129
- type: 'string',
130
- };
131
- case 'type':
132
- return {
133
- ...metaParser(oldField),
134
- type: 'string',
135
- };
136
- case 'number':
137
- return {
138
- ...metaParser(oldField),
139
- type: 'number',
140
- };
141
- default:
142
- return {
143
- ...metaParser(oldField),
144
- type: oldField.type,
145
- };
146
- }
147
- };
148
- const migrateFields = (oldFields, recursing = false) => {
149
- const result = {};
150
- if (oldFields) {
151
- for (const key in oldFields) {
152
- if (true) {
153
- if (!recursing && Object.keys(DEFAULT_FIELDS).includes(key)) {
154
- continue;
155
- }
156
- const field = migrateField(oldFields[key]);
157
- if (!field) {
158
- continue;
159
- }
160
- result[key] = field;
161
- }
162
- }
163
- }
164
- return result;
165
- };
166
- const migrateTypes = (oldSchema) => {
167
- const result = {
168
- types: {},
169
- };
170
- for (const key in oldSchema.types) {
171
- if (oldSchema.types.hasOwnProperty(key)) {
172
- const type = oldSchema.types[key];
173
- result.types[key] = {
174
- ...metaParser(type),
175
- prefix: type.prefix,
176
- fields: migrateFields(type.fields),
177
- };
178
- }
179
- }
180
- return result;
181
- };
182
- const convertRoot = (oldSchema) => {
183
- const result = {
184
- fields: {},
185
- ...metaParser(oldSchema.rootType?.meta),
186
- ...(oldSchema.rootType?.prefix
187
- ? { prefix: oldSchema.rootType.prefix }
188
- : null),
189
- };
190
- for (const i in oldSchema.rootType?.fields) {
191
- const field = oldSchema.rootType?.fields[i];
192
- result.fields[i] = {
193
- ...metaParser(field?.meta),
194
- ...migrateField(field),
195
- };
196
- }
197
- return result;
198
- };
199
- export const convertOldToNew = (oldSchema) => {
200
- const tempSchema = migrateTypes(oldSchema);
201
- tempSchema.$defs = {};
202
- tempSchema.language = oldSchema.languages[0];
203
- tempSchema.prefixToTypeMapping = oldSchema.prefixToTypeMapping;
204
- tempSchema.translations = oldSchema.languages.filter((_, i) => i !== 0);
205
- tempSchema.root = convertRoot(oldSchema);
206
- delete tempSchema.rootType;
207
- delete tempSchema.sha;
208
- return tempSchema;
209
- };
210
- //# sourceMappingURL=oldToNew.js.map
@@ -1,12 +0,0 @@
1
- import { BasedSchema, BasedSchemaField, BasedSchemaType } from './types.js';
2
- type Query = Record<string, any>;
3
- type Transformer = (Query: any, opts: {
4
- type: string;
5
- schema: BasedSchemaType;
6
- depth: number;
7
- }) => Query;
8
- export declare const generateQueryForType: (type: string, schema: BasedSchema, depth?: number, transformer?: Transformer, query?: Query, nestedRefs?: Set<BasedSchemaField>) => Query;
9
- export declare const generateQuery: (query: {
10
- $id: string;
11
- } & Query, schema: BasedSchema, depth?: number, transformer?: Transformer) => Query;
12
- export {};
@@ -1,75 +0,0 @@
1
- const parseSchemaField = (schemaField, schema, depth, transformer, nestedRefs, currentQuery) => {
2
- if ('values' in schemaField) {
3
- return parseSchemaField(schemaField.values, schema, depth, transformer, nestedRefs, currentQuery);
4
- }
5
- if ('items' in schemaField) {
6
- return parseSchemaField(schemaField.items, schema, depth, transformer, nestedRefs, currentQuery);
7
- }
8
- if ('properties' in schemaField) {
9
- currentQuery ??= {};
10
- for (const i in schemaField.properties) {
11
- const v = currentQuery[i];
12
- if (v === true || v === false) {
13
- continue;
14
- }
15
- currentQuery[i] = parseSchemaField(schemaField.properties[i], schema, depth, transformer, nestedRefs, currentQuery[i]);
16
- }
17
- return currentQuery;
18
- }
19
- if (schemaField.type === 'reference' || schemaField.type === 'references') {
20
- const nestedDepth = depth - 1;
21
- if (nestedDepth < 0) {
22
- return true;
23
- }
24
- if (nestedRefs) {
25
- if (nestedRefs.has(schemaField)) {
26
- return true;
27
- }
28
- nestedRefs.add(schemaField);
29
- }
30
- const allowedTypes = schemaField.allowedTypes?.length
31
- ? schemaField.allowedTypes
32
- : Object.keys(schema.types);
33
- for (const i of allowedTypes) {
34
- currentQuery = generateQueryForType(typeof i === 'string' ? i : i.type, schema, nestedDepth, transformer, currentQuery, nestedRefs || new Set([schemaField]));
35
- }
36
- if (schemaField.type === 'references') {
37
- currentQuery.$list = true;
38
- }
39
- return currentQuery;
40
- }
41
- return true;
42
- };
43
- export const generateQueryForType = (type, schema, depth = 0, transformer, query = {}, nestedRefs) => {
44
- const schemaType = type === 'root' ? schema.root : schema.types[type];
45
- if (!schemaType) {
46
- throw new Error('unknown type');
47
- }
48
- query.id ??= true;
49
- query.type ??= true;
50
- query.createdAt ??= true;
51
- query.updatedAt ??= true;
52
- if (schemaType.fields) {
53
- for (const key in schemaType.fields) {
54
- const v = query[key];
55
- if (v === true || v === false) {
56
- continue;
57
- }
58
- const schemaField = schemaType.fields[key];
59
- query[key] = parseSchemaField(schemaField, schema, depth, transformer, nestedRefs, query[key]);
60
- }
61
- }
62
- return transformer
63
- ? transformer(query, { type, depth, schema: schemaType })
64
- : query;
65
- };
66
- export const generateQuery = (query, schema, depth, transformer) => {
67
- const type = query.$id === 'root'
68
- ? query.$id
69
- : schema.prefixToTypeMapping[query.$id.substring(0, 2)];
70
- if (!type) {
71
- throw new Error('invalid type');
72
- }
73
- return generateQueryForType(type, schema, depth, transformer, query);
74
- };
75
- //# sourceMappingURL=generateQuery.js.map
@@ -1 +0,0 @@
1
- export {};
@@ -1,93 +0,0 @@
1
- import test from 'ava';
2
- import { generateQuery } from '../src/generateQuery.js';
3
- const schema = {
4
- types: {
5
- thing: {
6
- prefix: 'ti',
7
- fields: {
8
- priority: { type: 'number' },
9
- something: { type: 'string', format: 'strongPassword' },
10
- blaRef: {
11
- type: 'reference',
12
- allowedTypes: ['bla'],
13
- },
14
- },
15
- },
16
- bla: {
17
- prefix: 'bl',
18
- fields: {
19
- arr: {
20
- type: 'array',
21
- items: {
22
- type: 'string',
23
- },
24
- },
25
- refArr: {
26
- type: 'array',
27
- items: {
28
- type: 'reference',
29
- },
30
- },
31
- refRec: {
32
- type: 'record',
33
- values: {
34
- type: 'reference',
35
- },
36
- },
37
- obj: {
38
- type: 'object',
39
- properties: {
40
- blafurp: { type: 'string' },
41
- nesto: {
42
- type: 'object',
43
- properties: {
44
- nestfield: { type: 'string' },
45
- },
46
- },
47
- reffie: { type: 'reference' },
48
- },
49
- },
50
- ref: {
51
- type: 'reference',
52
- },
53
- children: {
54
- type: 'references',
55
- },
56
- referencesToThings: {
57
- type: 'references',
58
- allowedTypes: ['thing'],
59
- },
60
- referenceToThing: {
61
- type: 'reference',
62
- allowedTypes: ['thing'],
63
- },
64
- },
65
- },
66
- },
67
- $defs: {},
68
- language: 'en',
69
- translations: ['de', 'nl', 'ro', 'za', 'ae'],
70
- root: {
71
- fields: {},
72
- },
73
- prefixToTypeMapping: {
74
- bl: 'bla',
75
- ti: 'thing',
76
- },
77
- };
78
- test('generate query', async (t) => {
79
- const query = generateQuery({
80
- $id: 'bl1',
81
- $language: 'en',
82
- children: {
83
- id: false,
84
- },
85
- refArr: {
86
- id: false,
87
- obj: false,
88
- },
89
- }, schema, 1);
90
- console.dir(query, { depth: null });
91
- t.pass();
92
- });
93
- //# sourceMappingURL=query.js.map
@@ -1,2 +0,0 @@
1
- import { BasedSchema, BasedSchemaPartial } from './types';
2
- export declare const updateSchema: (newSchema: BasedSchemaPartial, oldSchema?: BasedSchema) => Promise<BasedSchema>;
@@ -1,16 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.updateSchema = void 0;
4
- const updateSchema = async (newSchema, oldSchema = {
5
- $defs: {},
6
- types: {},
7
- language: 'en',
8
- root: { fields: {} },
9
- prefixToTypeMapping: {},
10
- }) => {
11
- // add sha
12
- // put isRequired on the new schema in REQUIRED arrays
13
- return oldSchema;
14
- };
15
- exports.updateSchema = updateSchema;
16
- //# sourceMappingURL=updateSchema.js.map
@@ -1,4 +0,0 @@
1
- import { BasedSchemaPartial, BasedSchemaFieldPartial, BasedSchemaTypePartial } from './types';
2
- export declare const validateType: (fromSchema: BasedSchemaPartial, typeName: string, type: BasedSchemaTypePartial) => void;
3
- export declare const validateField: (fromSchema: BasedSchemaPartial, path: string[], field: BasedSchemaFieldPartial) => void;
4
- export declare const validateSchema: (schema: BasedSchemaPartial) => BasedSchemaPartial;
@@ -1,41 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.validateSchema = exports.validateField = exports.validateType = void 0;
4
- // gaurd in the schema for refs in arrays
5
- const validateType = (fromSchema, typeName, type) => {
6
- if (type.prefix &&
7
- (typeof type.prefix !== 'string' || type.prefix.length !== 2)) {
8
- throw new Error(`Incorrect prefix "${type.prefix}" for type "${typeName}" has to be a string of 2 alphanumerical characters e.g. "Az", "ab", "cc", "10"`);
9
- }
10
- };
11
- exports.validateType = validateType;
12
- const validateField = (fromSchema, path, field) => {
13
- //
14
- };
15
- exports.validateField = validateField;
16
- const validateSchema = (schema) => {
17
- // rewrite schema things like required / required: []
18
- if (typeof schema !== 'object') {
19
- throw new Error('Schema is not an object');
20
- }
21
- if (schema.language && typeof schema.language !== 'string') {
22
- throw new Error('Language must be a string');
23
- }
24
- if (schema.translations && !Array.isArray(schema.translations)) {
25
- throw new Error('Translations needs to be an array');
26
- }
27
- if (schema.$defs) {
28
- // first defs ofc
29
- }
30
- if (schema.root) {
31
- (0, exports.validateType)(schema, 'root', schema.root);
32
- }
33
- if (schema.types) {
34
- for (const type in schema.types) {
35
- (0, exports.validateType)(schema, type, schema.types[type]);
36
- }
37
- }
38
- return schema;
39
- };
40
- exports.validateSchema = validateSchema;
41
- //# sourceMappingURL=validateSchema.js.map