@based/schema 2.6.0 → 2.7.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 (36) hide show
  1. package/dist/src/compat/Untitled-1.d.ts +3 -0
  2. package/dist/src/compat/Untitled-1.js +205 -0
  3. package/dist/src/compat/newToOld.js +165 -28
  4. package/dist/src/compat/oldToNew.js +200 -25
  5. package/dist/src/display/number.d.ts +2 -1
  6. package/dist/src/display/number.js +10 -0
  7. package/dist/src/display/string.d.ts +3 -1
  8. package/dist/src/display/string.js +5 -0
  9. package/dist/src/display/timestamp.d.ts +3 -1
  10. package/dist/src/display/timestamp.js +9 -0
  11. package/dist/src/error.d.ts +3 -1
  12. package/dist/src/error.js +2 -0
  13. package/dist/src/index.d.ts +1 -1
  14. package/dist/src/index.js +1 -1
  15. package/dist/src/types.d.ts +4 -3
  16. package/dist/src/types.js +74 -0
  17. package/dist/src/validateSchema/basedSchemaTypeValidator.d.ts +3 -0
  18. package/dist/src/validateSchema/basedSchemaTypeValidator.js +45 -0
  19. package/dist/src/validateSchema/fieldValidators.d.ts +27 -0
  20. package/dist/src/validateSchema/fieldValidators.js +352 -0
  21. package/dist/src/validateSchema/index.d.ts +17 -0
  22. package/dist/src/validateSchema/index.js +109 -0
  23. package/dist/src/validateSchema/utils.d.ts +21 -0
  24. package/dist/src/validateSchema/utils.js +53 -0
  25. package/dist/test/compat.js +7 -3
  26. package/dist/test/data/oldSchemas.js +122 -122
  27. package/dist/test/validateSchema/basic.js +94 -0
  28. package/dist/test/validateSchema/fields.d.ts +1 -0
  29. package/dist/test/validateSchema/fields.js +366 -0
  30. package/dist/test/validateSchema/languages.d.ts +1 -0
  31. package/dist/test/validateSchema/languages.js +124 -0
  32. package/package.json +1 -1
  33. package/dist/src/validateSchema.d.ts +0 -4
  34. package/dist/src/validateSchema.js +0 -35
  35. package/dist/test/validateSchema.js +0 -38
  36. /package/dist/test/{validateSchema.d.ts → validateSchema/basic.d.ts} +0 -0
@@ -0,0 +1,3 @@
1
+ import { BasedSchema } from '../types.js';
2
+ import { BasedOldSchema } from './oldSchemaType.js';
3
+ export declare const convertNewToOld222: (schema: BasedSchema) => Partial<BasedOldSchema>;
@@ -0,0 +1,205 @@
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
+ };
35
+ const excludedFields = (field) => {
36
+ return field === 'language' || field === 'translations' || field === '$defs';
37
+ };
38
+ const DEFAULT_FIELDS = {
39
+ id: { type: 'string' },
40
+ createdAt: { type: 'timestamp' },
41
+ updatedAt: { type: 'timestamp' },
42
+ type: { type: 'string' },
43
+ parents: { type: 'references' },
44
+ children: { type: 'references' },
45
+ ancestors: { type: 'references' },
46
+ descendants: { type: 'references' },
47
+ aliases: {
48
+ type: 'set',
49
+ items: { type: 'string' },
50
+ },
51
+ };
52
+ const metaParser = (obj) => {
53
+ const tmp = {};
54
+ for (const i in obj) {
55
+ if (metaChecker(i)) {
56
+ if (i === 'title') {
57
+ tmp.name = obj[i];
58
+ }
59
+ else {
60
+ tmp[i] = obj[i];
61
+ }
62
+ }
63
+ }
64
+ return Object.keys({ meta: tmp }.meta).length > 0 ? { meta: tmp } : null;
65
+ };
66
+ const migrateField = (oldField) => {
67
+ switch (oldField?.type) {
68
+ case 'object':
69
+ return {
70
+ ...metaParser(oldField),
71
+ type: 'object',
72
+ properties: migrateFields(oldField.properties, true),
73
+ };
74
+ case 'json':
75
+ return {
76
+ ...oldField,
77
+ ...metaParser(oldField),
78
+ type: 'json',
79
+ };
80
+ case 'array':
81
+ const values = migrateField(oldField.items);
82
+ if (!values) {
83
+ return null;
84
+ }
85
+ return {
86
+ ...metaParser(oldField),
87
+ type: 'array',
88
+ items: values,
89
+ };
90
+ case 'set':
91
+ return {
92
+ ...metaParser(oldField),
93
+ type: 'set',
94
+ items: migrateField(oldField.items),
95
+ };
96
+ case 'record':
97
+ return {
98
+ ...metaParser(oldField),
99
+ type: 'record',
100
+ values: migrateField(oldField.values),
101
+ };
102
+ case 'reference':
103
+ case 'references':
104
+ return {
105
+ ...metaParser(oldField),
106
+ type: oldField.type,
107
+ ...(oldField.bidirectional
108
+ ? { bidirectional: oldField.bidirectional }
109
+ : null),
110
+ };
111
+ case 'float':
112
+ return {
113
+ ...metaParser(oldField),
114
+ type: 'number',
115
+ };
116
+ case 'int':
117
+ return {
118
+ ...metaParser(oldField),
119
+ type: 'integer',
120
+ };
121
+ case 'digest':
122
+ return {
123
+ format: 'strongPassword',
124
+ type: 'string',
125
+ };
126
+ case 'id':
127
+ return {
128
+ ...metaParser(oldField),
129
+ type: 'string',
130
+ };
131
+ case 'url':
132
+ return {
133
+ ...metaParser(oldField),
134
+ format: 'URL',
135
+ type: 'string',
136
+ };
137
+ case 'email':
138
+ return {
139
+ ...metaParser(oldField),
140
+ type: 'string',
141
+ };
142
+ case 'phone':
143
+ return {
144
+ format: 'mobilePhone',
145
+ type: 'string',
146
+ };
147
+ case 'geo':
148
+ return {
149
+ format: 'latLong',
150
+ type: 'string',
151
+ };
152
+ case 'type':
153
+ return {
154
+ ...metaParser(oldField),
155
+ type: 'string',
156
+ };
157
+ default:
158
+ return {
159
+ ...metaParser(oldField),
160
+ type: oldField.type,
161
+ };
162
+ }
163
+ };
164
+ const migrateFields = (oldFields, recursing = false) => {
165
+ const result = {};
166
+ if (oldFields) {
167
+ for (const key in oldFields) {
168
+ if (oldFields.hasOwnProperty(key)) {
169
+ if (!recursing && Object.keys(DEFAULT_FIELDS).includes(key)) {
170
+ continue;
171
+ }
172
+ const field = migrateField(oldFields[key]);
173
+ if (!field) {
174
+ continue;
175
+ }
176
+ result[key] = field;
177
+ }
178
+ }
179
+ }
180
+ return result;
181
+ };
182
+ const migrateTypes = (oldSchema) => {
183
+ const result = {
184
+ types: {},
185
+ };
186
+ for (const key in oldSchema.types) {
187
+ if (oldSchema.types.hasOwnProperty(key)) {
188
+ const type = oldSchema.types[key];
189
+ result.types[key] = {
190
+ ...metaParser(type),
191
+ prefix: type.prefix,
192
+ fields: migrateFields(type.fields),
193
+ };
194
+ }
195
+ }
196
+ return result;
197
+ };
198
+ export const convertNewToOld222 = (schema) => {
199
+ const tmpSchema = migrateTypes(schema);
200
+ tmpSchema.prefixToTypeMapping = schema.prefixToTypeMapping;
201
+ tmpSchema.languages = [schema.language, ...schema?.translations];
202
+ delete tmpSchema.root;
203
+ return tmpSchema;
204
+ };
205
+ //# sourceMappingURL=Untitled-1.js.map
@@ -1,6 +1,8 @@
1
+ // import { BasedSchema } from '../types.js'
2
+ // import { BasedOldSchema } from './oldSchemaType.js'
1
3
  const metaChecker = (field) => {
2
4
  return (field === 'validation' ||
3
- field === 'format' ||
5
+ // field === 'format' ||
4
6
  field === 'index' ||
5
7
  field === 'description' ||
6
8
  field === 'title' ||
@@ -30,47 +32,182 @@ const metaChecker = (field) => {
30
32
  field === 'maximum' ||
31
33
  field === 'exclusiveMaximum' ||
32
34
  field === 'exclusiveMinimum' ||
33
- field === '$delete');
35
+ field === '$delete' ||
36
+ field === 'display');
34
37
  };
35
38
  const excludedFields = (field) => {
36
39
  return field === 'language' || field === 'translations' || field === '$defs';
37
40
  };
38
- export const convertNewToOld = (schema) => {
39
- const tmpSchema = {};
40
- const walker = (target, source) => {
41
- for (const i in source) {
42
- if (source[i] && typeof source[i] === 'object' && i in target === false) {
43
- target[i] = source[i].length ? [] : {};
44
- walker(target[i], source[i]);
41
+ const DEFAULT_FIELDS = {
42
+ // id: { type: 'string' },
43
+ // createdAt: { type: 'timestamp' },
44
+ // updatedAt: { type: 'timestamp' },
45
+ // type: { type: 'string' },
46
+ // parents: { type: 'references' },
47
+ // children: { type: 'references' },
48
+ // ancestors: { type: 'references' },
49
+ // descendants: { type: 'references' },
50
+ // aliases: {
51
+ // type: 'set',
52
+ // items: { type: 'string' },
53
+ // },
54
+ };
55
+ const metaParser = (obj) => {
56
+ const tmp = {};
57
+ for (const i in obj) {
58
+ if (metaChecker(i)) {
59
+ if (i === 'title') {
60
+ tmp.name = obj[i];
45
61
  }
46
- else if (!metaChecker(i)) {
47
- target[i] = source[i];
62
+ else if (obj[i] === 'bytes') {
63
+ tmp.format = obj[i];
48
64
  }
49
65
  else {
50
- target.meta = {};
51
- for (const i in source) {
52
- if (metaChecker(i) && typeof source[i] !== 'object') {
53
- if (i === 'title') {
54
- target.meta = { ...target.meta, name: source[i] };
55
- }
56
- else {
57
- target.meta = { ...target.meta, [i]: source[i] };
58
- }
59
- delete source[i];
60
- }
66
+ tmp[i] = obj[i];
67
+ }
68
+ }
69
+ }
70
+ return Object.keys({ meta: tmp }.meta).length > 0 ? { meta: tmp } : null;
71
+ };
72
+ const migrateField = (field) => {
73
+ if (field?.type === 'object') {
74
+ return {
75
+ ...metaParser(field),
76
+ type: 'object',
77
+ properties: migrateFields(field.properties, true),
78
+ };
79
+ }
80
+ else if (field?.type === 'json') {
81
+ return {
82
+ ...field,
83
+ ...metaParser(field),
84
+ type: 'json',
85
+ };
86
+ }
87
+ else if (field?.type === 'array') {
88
+ const values = migrateField(field.values);
89
+ if (!values) {
90
+ return null;
91
+ }
92
+ return {
93
+ ...metaParser(field),
94
+ type: 'array',
95
+ items: values,
96
+ };
97
+ }
98
+ else if (field?.type === 'set') {
99
+ return {
100
+ ...metaParser(field),
101
+ type: 'set',
102
+ items: migrateField(field.items),
103
+ };
104
+ }
105
+ else if (field?.type === 'record') {
106
+ return {
107
+ ...metaParser(field),
108
+ type: 'record',
109
+ values: migrateField(field.values),
110
+ };
111
+ }
112
+ else if (field?.type === 'reference' || field?.type === 'references') {
113
+ return {
114
+ ...metaParser(field),
115
+ type: field?.type,
116
+ ...(field.bidirectional ? { bidirectional: field.bidirectional } : null),
117
+ };
118
+ }
119
+ else if (field?.type === 'integer') {
120
+ return {
121
+ ...metaParser(field),
122
+ type: 'int',
123
+ };
124
+ }
125
+ else if (field?.format === 'strongPassword') {
126
+ return { ...metaParser(field), type: 'digest' };
127
+ }
128
+ else if (field?.format === 'basedId') {
129
+ return { ...metaParser(field), type: 'id' };
130
+ }
131
+ else if (field?.format === 'URL') {
132
+ return { ...metaParser(field), type: 'url' };
133
+ }
134
+ else if (field?.format === 'email') {
135
+ return {
136
+ ...metaParser(field),
137
+ type: 'email',
138
+ };
139
+ }
140
+ else if (field?.format === 'mobilePhone') {
141
+ return {
142
+ ...metaParser(field),
143
+ type: 'phone',
144
+ };
145
+ }
146
+ else if (field?.format === 'latLong') {
147
+ return {
148
+ ...metaParser(field),
149
+ type: 'geo',
150
+ };
151
+ }
152
+ else {
153
+ return { ...metaParser(field), type: field?.type };
154
+ }
155
+ };
156
+ const migrateFields = (oldFields, recursing = false) => {
157
+ const result = {};
158
+ if (oldFields) {
159
+ for (const key in oldFields) {
160
+ if (oldFields.hasOwnProperty(key)) {
161
+ if (!recursing && Object.keys(DEFAULT_FIELDS).includes(key)) {
162
+ continue;
163
+ }
164
+ const field = migrateField(oldFields[key]);
165
+ if (!field) {
166
+ continue;
61
167
  }
168
+ result[key] = field;
62
169
  }
63
170
  }
171
+ }
172
+ return result;
173
+ };
174
+ const migrateTypes = (oldSchema) => {
175
+ const result = {
176
+ types: {},
64
177
  };
65
- walker(tmpSchema, schema);
66
- if ((tmpSchema.meta = {}))
67
- delete tmpSchema.meta;
68
- for (const i in tmpSchema) {
69
- if (excludedFields(i)) {
70
- delete tmpSchema[i];
178
+ for (const key in oldSchema.types) {
179
+ if (oldSchema.types.hasOwnProperty(key)) {
180
+ const type = oldSchema.types[key];
181
+ result.types[key] = {
182
+ ...metaParser(type),
183
+ prefix: type.prefix,
184
+ fields: migrateFields(type.fields),
185
+ };
71
186
  }
72
187
  }
188
+ return result;
189
+ };
190
+ const convertRoot = (schema) => {
191
+ const result = {
192
+ fields: {},
193
+ ...metaParser(schema.root),
194
+ ...(schema.root?.prefix ? { prefix: schema.root.prefix } : null),
195
+ };
196
+ for (const i in schema.root?.fields) {
197
+ const field = schema.root?.fields[i];
198
+ result.fields[i] = {
199
+ ...metaParser(field),
200
+ ...migrateField(field),
201
+ };
202
+ }
203
+ return result;
204
+ };
205
+ export const convertNewToOld = (schema) => {
206
+ const tmpSchema = migrateTypes(schema);
207
+ tmpSchema.prefixToTypeMapping = schema.prefixToTypeMapping;
73
208
  tmpSchema.languages = [schema.language, ...schema?.translations];
209
+ tmpSchema.rootType = convertRoot(schema);
210
+ delete tmpSchema.root;
74
211
  return tmpSchema;
75
212
  };
76
213
  //# sourceMappingURL=newToOld.js.map
@@ -1,35 +1,210 @@
1
- export const convertOldToNew = (oldSchema) => {
2
- const tempSchema = {};
3
- const walker = (source, target) => {
4
- for (const i in source) {
5
- if (i === 'languages' && source[i].length) {
6
- target.language = source[i][0];
7
- target.translations = source[i].filter((_, i) => i !== 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;
8
58
  }
9
- else if (typeof source[i] === 'object' && i in target === false) {
10
- if (i === 'meta' &&
11
- !Object.keys(source[i]).includes('properties' || 'type')) {
12
- for (const j in source[i]) {
13
- if (j === 'name') {
14
- target.title = source[i][j];
15
- }
16
- else {
17
- target[j] = source[i][j];
18
- }
19
- }
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;
20
155
  }
21
- else {
22
- target[i] = source[i].length ? [] : {};
23
- walker(source[i], target[i]);
156
+ const field = migrateField(oldFields[key]);
157
+ if (!field) {
158
+ continue;
24
159
  }
160
+ result[key] = field;
25
161
  }
26
- else if (i !== 'meta') {
27
- target[i] = source[i];
28
- }
29
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),
30
189
  };
31
- walker(oldSchema, tempSchema);
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);
32
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;
33
208
  return tempSchema;
34
209
  };
35
210
  //# sourceMappingURL=oldToNew.js.map
@@ -1,3 +1,4 @@
1
- export type NumberFormat = 'short' | 'human' | 'ratio' | 'bytes' | 'euro' | 'dollar' | 'pound' | `round-${number}`;
1
+ export declare const basedSchemaNumberFormats: readonly [any, "short", "human", "ratio", "bytes", "euro", "dollar", "pound"];
2
+ export type NumberFormat = (typeof basedSchemaNumberFormats)[number] | `round-${number}`;
2
3
  declare const parseNumber: (nr: number | string, format?: NumberFormat) => string | number;
3
4
  export default parseNumber;
@@ -1,3 +1,13 @@
1
+ export const basedSchemaNumberFormats = [
2
+ ,
3
+ 'short',
4
+ 'human',
5
+ 'ratio',
6
+ 'bytes',
7
+ 'euro',
8
+ 'dollar',
9
+ 'pound',
10
+ ];
1
11
  const parseNumber = (nr, format) => {
2
12
  if (!format) {
3
13
  return nr;
@@ -1,3 +1,5 @@
1
- export type StringFormat = 'lowercase' | 'uppercase' | 'capitalize';
1
+ export declare const basedSchemaDisplayFormats: readonly ["lowercase", "uppercase", "capitalize"];
2
+ export type basedSchemaDisplayFormat = (typeof basedSchemaDisplayFormats)[number];
3
+ export type StringFormat = basedSchemaDisplayFormat;
2
4
  declare const parseString: (value?: string, format?: StringFormat) => string;
3
5
  export default parseString;