@based/schema 4.1.1 → 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 +159 -75
  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
@@ -1,188 +0,0 @@
1
- export declare const languages: {
2
- ab: string;
3
- aa: string;
4
- af: string;
5
- ak: string;
6
- sq: string;
7
- am: string;
8
- ar: string;
9
- an: string;
10
- hy: string;
11
- as: string;
12
- av: string;
13
- ae: string;
14
- ay: string;
15
- az: string;
16
- bm: string;
17
- ba: string;
18
- eu: string;
19
- be: string;
20
- bn: string;
21
- bh: string;
22
- bi: string;
23
- bs: string;
24
- br: string;
25
- bg: string;
26
- my: string;
27
- ca: string;
28
- km: string;
29
- ch: string;
30
- ce: string;
31
- ny: string;
32
- zh: string;
33
- cu: string;
34
- cv: string;
35
- kw: string;
36
- co: string;
37
- cr: string;
38
- hr: string;
39
- cs: string;
40
- da: string;
41
- dv: string;
42
- nl: string;
43
- dz: string;
44
- en: string;
45
- eo: string;
46
- et: string;
47
- ee: string;
48
- fo: string;
49
- fj: string;
50
- fi: string;
51
- fr: string;
52
- ff: string;
53
- gd: string;
54
- gl: string;
55
- lg: string;
56
- ka: string;
57
- de: string;
58
- gsw: string;
59
- ki: string;
60
- el: string;
61
- kl: string;
62
- gn: string;
63
- gu: string;
64
- ht: string;
65
- ha: string;
66
- he: string;
67
- hz: string;
68
- hi: string;
69
- ho: string;
70
- hu: string;
71
- is: string;
72
- io: string;
73
- ig: string;
74
- id: string;
75
- ia: string;
76
- ie: string;
77
- iu: string;
78
- ik: string;
79
- ga: string;
80
- it: string;
81
- ja: string;
82
- jv: string;
83
- kn: string;
84
- kr: string;
85
- ks: string;
86
- kk: string;
87
- rw: string;
88
- kv: string;
89
- kg: string;
90
- ko: string;
91
- kj: string;
92
- ku: string;
93
- ky: string;
94
- lo: string;
95
- la: string;
96
- lv: string;
97
- lb: string;
98
- li: string;
99
- ln: string;
100
- lt: string;
101
- lu: string;
102
- mk: string;
103
- mg: string;
104
- ms: string;
105
- ml: string;
106
- mt: string;
107
- gv: string;
108
- mi: string;
109
- mr: string;
110
- mh: string;
111
- ro: string;
112
- mn: string;
113
- na: string;
114
- nv: string;
115
- nd: string;
116
- ng: string;
117
- ne: string;
118
- se: string;
119
- no: string;
120
- nb: string;
121
- nn: string;
122
- ii: string;
123
- oc: string;
124
- oj: string;
125
- or: string;
126
- om: string;
127
- os: string;
128
- pi: string;
129
- pa: string;
130
- ps: string;
131
- fa: string;
132
- pl: string;
133
- pt: string;
134
- qu: string;
135
- rm: string;
136
- rn: string;
137
- ru: string;
138
- sm: string;
139
- sg: string;
140
- sa: string;
141
- sc: string;
142
- sr: string;
143
- sn: string;
144
- sd: string;
145
- si: string;
146
- sk: string;
147
- sl: string;
148
- so: string;
149
- st: string;
150
- nr: string;
151
- es: string;
152
- su: string;
153
- sw: string;
154
- ss: string;
155
- sv: string;
156
- tl: string;
157
- ty: string;
158
- tg: string;
159
- ta: string;
160
- tt: string;
161
- te: string;
162
- th: string;
163
- bo: string;
164
- ti: string;
165
- to: string;
166
- ts: string;
167
- tn: string;
168
- tr: string;
169
- tk: string;
170
- tw: string;
171
- ug: string;
172
- uk: string;
173
- ur: string;
174
- uz: string;
175
- ve: string;
176
- vi: string;
177
- vo: string;
178
- wa: string;
179
- cy: string;
180
- fy: string;
181
- wo: string;
182
- xh: string;
183
- yi: string;
184
- yo: string;
185
- za: string;
186
- zu: string;
187
- };
188
- export type Language = keyof typeof languages;
@@ -1,188 +0,0 @@
1
- export const languages = {
2
- ab: 'Abkhazian',
3
- aa: 'Afar',
4
- af: 'Afrikaans',
5
- ak: 'Akan',
6
- sq: 'Albanian',
7
- am: 'Amharic',
8
- ar: 'Arabic',
9
- an: 'Aragonese',
10
- hy: 'Armenian',
11
- as: 'Assamese',
12
- av: 'Avaric',
13
- ae: 'Avestan',
14
- ay: 'Aymara',
15
- az: 'Azerbaijani',
16
- bm: 'Bambara',
17
- ba: 'Bashkir',
18
- eu: 'Basque',
19
- be: 'Belarusian',
20
- bn: 'Bengali',
21
- bh: 'Bihari languages',
22
- bi: 'Bislama',
23
- bs: 'Bosnian',
24
- br: 'Breton',
25
- bg: 'Bulgarian',
26
- my: 'Burmese',
27
- ca: 'Catalan, Valencian',
28
- km: 'Central Khmer',
29
- ch: 'Chamorro',
30
- ce: 'Chechen',
31
- ny: 'Chichewa, Chewa, Nyanja',
32
- zh: 'Chinese',
33
- cu: 'Church Slavonic, Old Bulgarian, Old Church Slavonic',
34
- cv: 'Chuvash',
35
- kw: 'Cornish',
36
- co: 'Corsican',
37
- cr: 'Cree',
38
- hr: 'Croatian',
39
- cs: 'Czech',
40
- da: 'Danish',
41
- dv: 'Divehi, Dhivehi, Maldivian',
42
- nl: 'Dutch, Flemish',
43
- dz: 'Dzongkha',
44
- en: 'English',
45
- eo: 'Esperanto',
46
- et: 'Estonian',
47
- ee: 'Ewe',
48
- fo: 'Faroese',
49
- fj: 'Fijian',
50
- fi: 'Finnish',
51
- fr: 'French',
52
- ff: 'Fulah',
53
- gd: 'Gaelic, Scottish Gaelic',
54
- gl: 'Galician',
55
- lg: 'Ganda',
56
- ka: 'Georgian',
57
- de: 'German',
58
- gsw: 'Swiss German',
59
- ki: 'Gikuyu, Kikuyu',
60
- el: 'Greek (Modern)',
61
- kl: 'Greenlandic, Kalaallisut',
62
- gn: 'Guarani',
63
- gu: 'Gujarati',
64
- ht: 'Haitian, Haitian Creole',
65
- ha: 'Hausa',
66
- he: 'Hebrew',
67
- hz: 'Herero',
68
- hi: 'Hindi',
69
- ho: 'Hiri Motu',
70
- hu: 'Hungarian',
71
- is: 'Icelandic',
72
- io: 'Ido',
73
- ig: 'Igbo',
74
- id: 'Indonesian',
75
- ia: 'Interlingua (International Auxiliary Language Association)',
76
- ie: 'Interlingue',
77
- iu: 'Inuktitut',
78
- ik: 'Inupiaq',
79
- ga: 'Irish',
80
- it: 'Italian',
81
- ja: 'Japanese',
82
- jv: 'Javanese',
83
- kn: 'Kannada',
84
- kr: 'Kanuri',
85
- ks: 'Kashmiri',
86
- kk: 'Kazakh',
87
- rw: 'Kinyarwanda',
88
- kv: 'Komi',
89
- kg: 'Kongo',
90
- ko: 'Korean',
91
- kj: 'Kwanyama, Kuanyama',
92
- ku: 'Kurdish',
93
- ky: 'Kyrgyz',
94
- lo: 'Lao',
95
- la: 'Latin',
96
- lv: 'Latvian',
97
- lb: 'Letzeburgesch, Luxembourgish',
98
- li: 'Limburgish, Limburgan, Limburger',
99
- ln: 'Lingala',
100
- lt: 'Lithuanian',
101
- lu: 'Luba-Katanga',
102
- mk: 'Macedonian',
103
- mg: 'Malagasy',
104
- ms: 'Malay',
105
- ml: 'Malayalam',
106
- mt: 'Maltese',
107
- gv: 'Manx',
108
- mi: 'Maori',
109
- mr: 'Marathi',
110
- mh: 'Marshallese',
111
- ro: 'Moldovan, Moldavian, Romanian',
112
- mn: 'Mongolian',
113
- na: 'Nauru',
114
- nv: 'Navajo, Navaho',
115
- nd: 'Northern Ndebele',
116
- ng: 'Ndonga',
117
- ne: 'Nepali',
118
- se: 'Northern Sami',
119
- no: 'Norwegian',
120
- nb: 'Norwegian Bokmål',
121
- nn: 'Norwegian Nynorsk',
122
- ii: 'Nuosu, Sichuan Yi',
123
- oc: 'Occitan (post 1500)',
124
- oj: 'Ojibwa',
125
- or: 'Oriya',
126
- om: 'Oromo',
127
- os: 'Ossetian, Ossetic',
128
- pi: 'Pali',
129
- pa: 'Panjabi, Punjabi',
130
- ps: 'Pashto, Pushto',
131
- fa: 'Persian',
132
- pl: 'Polish',
133
- pt: 'Portuguese',
134
- qu: 'Quechua',
135
- rm: 'Romansh',
136
- rn: 'Rundi',
137
- ru: 'Russian',
138
- sm: 'Samoan',
139
- sg: 'Sango',
140
- sa: 'Sanskrit',
141
- sc: 'Sardinian',
142
- sr: 'Serbian',
143
- sn: 'Shona',
144
- sd: 'Sindhi',
145
- si: 'Sinhala, Sinhalese',
146
- sk: 'Slovak',
147
- sl: 'Slovenian',
148
- so: 'Somali',
149
- st: 'Sotho, Southern',
150
- nr: 'South Ndebele',
151
- es: 'Spanish, Castilian',
152
- su: 'Sundanese',
153
- sw: 'Swahili',
154
- ss: 'Swati',
155
- sv: 'Swedish',
156
- tl: 'Tagalog',
157
- ty: 'Tahitian',
158
- tg: 'Tajik',
159
- ta: 'Tamil',
160
- tt: 'Tatar',
161
- te: 'Telugu',
162
- th: 'Thai',
163
- bo: 'Tibetan',
164
- ti: 'Tigrinya',
165
- to: 'Tonga (Tonga Islands)',
166
- ts: 'Tsonga',
167
- tn: 'Tswana',
168
- tr: 'Turkish',
169
- tk: 'Turkmen',
170
- tw: 'Twi',
171
- ug: 'Uighur, Uyghur',
172
- uk: 'Ukrainian',
173
- ur: 'Urdu',
174
- uz: 'Uzbek',
175
- ve: 'Venda',
176
- vi: 'Vietnamese',
177
- vo: 'Volap_k',
178
- wa: 'Walloon',
179
- cy: 'Welsh',
180
- fy: 'Western Frisian',
181
- wo: 'Wolof',
182
- xh: 'Xhosa',
183
- yi: 'Yiddish',
184
- yo: 'Yoruba',
185
- za: 'Zhuang, Chuang',
186
- zu: 'Zulu',
187
- };
188
- //# sourceMappingURL=languages.js.map
@@ -1,2 +0,0 @@
1
- import { FieldParser } from '../../walker/index.js';
2
- export declare const array: FieldParser<'array'>;
@@ -1,119 +0,0 @@
1
- import { setByPath } from '@saulx/utils';
2
- import { ParseError } from '../../error.js';
3
- const collectOperation = (fromArgs, collected, value, makeNegative) => {
4
- fromArgs.collect(value);
5
- if (collected.length) {
6
- const collect = fromArgs.root._opts.collect;
7
- for (const args of collected) {
8
- if (makeNegative) {
9
- args.path[fromArgs.path.length] =
10
- args.path[fromArgs.path.length] - makeNegative;
11
- collect(args);
12
- }
13
- else {
14
- collect(args);
15
- }
16
- }
17
- }
18
- };
19
- const parseArray = async (args, value, idx = 0) => {
20
- const fromValue = Array.isArray(value) ? value : [value];
21
- const q = [];
22
- const arr = new Array(fromValue.length);
23
- const collectNested = ['object', 'record', 'text'].includes(args.fieldSchema.items.type);
24
- const collected = [];
25
- for (let i = 0; i < fromValue.length; i++) {
26
- q.push(args.parse({
27
- key: i + idx,
28
- value: fromValue[i],
29
- fieldSchema: args.fieldSchema.items,
30
- collect: (nArgs) => {
31
- const p = nArgs.path.slice(args.path.length);
32
- // @ts-ignore
33
- p[0] = p[0] - idx;
34
- setByPath(arr, p, nArgs.value);
35
- if (collectNested) {
36
- collected.push(nArgs);
37
- }
38
- },
39
- }));
40
- }
41
- await Promise.all(q);
42
- return { arr, collected };
43
- };
44
- const operations = {
45
- $insert: async (args, value) => {
46
- if (typeof value.$insert.$idx !== 'number') {
47
- args.error(ParseError.incorrectFormat);
48
- return;
49
- }
50
- const { collected, arr } = await parseArray(args, value.$insert.$value, value.$insert.$idx);
51
- value.$insert.$value = arr;
52
- collectOperation(args, collected, value);
53
- },
54
- $push: async (args, value) => {
55
- const { collected, arr } = await parseArray(args, value.$push.$value ?? value.$push);
56
- value.$push = arr;
57
- collectOperation(args, collected, value, arr.length);
58
- },
59
- $unshift: async (args, value) => {
60
- const { collected, arr } = await parseArray(args, value.$unshift.$value ?? value.$unshift);
61
- value.$unshift = arr;
62
- collectOperation(args, collected, value);
63
- },
64
- $remove: async (args, value) => {
65
- if (typeof value.$remove.$idx !== 'number') {
66
- args.error(ParseError.incorrectFormat);
67
- return;
68
- }
69
- args.collect(value);
70
- },
71
- $assign: async (args, value) => {
72
- if (typeof value.$assign !== 'object' ||
73
- typeof value.$assign.$idx !== 'number') {
74
- args.error(ParseError.incorrectFormat);
75
- return;
76
- }
77
- await args.parse({
78
- key: value.$assign.$idx,
79
- value: value.$assign.$value,
80
- fieldSchema: args.fieldSchema.items,
81
- });
82
- },
83
- };
84
- export const array = async (args) => {
85
- args.stop();
86
- if (typeof args.value !== 'object') {
87
- args.error(ParseError.incorrectFormat);
88
- return;
89
- }
90
- let value = '$value' in args.value ? args.value.$value : args.value;
91
- if (Array.isArray(value)) {
92
- const q = [];
93
- args.collect({ $delete: true });
94
- for (let i = 0; i < value.length; i++) {
95
- q.push(args.parse({
96
- key: i,
97
- value: args.value[i],
98
- fieldSchema: args.fieldSchema.items,
99
- }));
100
- }
101
- await Promise.all(q);
102
- return;
103
- }
104
- let hasOperation = false;
105
- for (const key in value) {
106
- if (operations[key]) {
107
- if (hasOperation) {
108
- args.error(ParseError.multipleOperationsNotAllowed);
109
- return;
110
- }
111
- await operations[key](args, value);
112
- hasOperation = true;
113
- }
114
- else {
115
- args.error(ParseError.fieldDoesNotExist);
116
- }
117
- }
118
- };
119
- //# sourceMappingURL=array.js.map
@@ -1,3 +0,0 @@
1
- import { FieldParsers } from '../../walker/index.js';
2
- import { BasedSetTarget } from '../../types.js';
3
- export declare const fields: Partial<FieldParsers<BasedSetTarget>>;
@@ -1,85 +0,0 @@
1
- import { ParseError } from '../../error.js';
2
- import { array } from './array.js';
3
- import { object, record } from './object.js';
4
- import { number, integer, timestamp } from './number.js';
5
- import { string, text } from './string.js';
6
- import { reference, references } from './references.js';
7
- import { set } from './set.js';
8
- import { hashObjectIgnoreKeyOrder, hash } from '@saulx/hash';
9
- import { deepEqual } from '@saulx/utils';
10
- export const fields = {
11
- array,
12
- object,
13
- record,
14
- number,
15
- integer,
16
- timestamp,
17
- string,
18
- set,
19
- text,
20
- reference,
21
- references,
22
- cardinality: async (args) => {
23
- let hashedValue;
24
- if (args.value && typeof args.value === 'object') {
25
- args.stop();
26
- if (args.value.$default !== undefined) {
27
- args.error(ParseError.defaultNotSupported);
28
- return;
29
- }
30
- if (args.value.$value !== undefined) {
31
- hashedValue = hashObjectIgnoreKeyOrder(args.value.$value).toString(16);
32
- }
33
- else {
34
- hashedValue = hashObjectIgnoreKeyOrder(args.value).toString(16);
35
- }
36
- }
37
- else {
38
- hashedValue = hash(args.value).toString(16);
39
- }
40
- args.collect(hashedValue);
41
- },
42
- boolean: async (args) => {
43
- if (typeof args.value !== 'boolean') {
44
- args.error(ParseError.incorrectFormat);
45
- return;
46
- }
47
- args.collect();
48
- },
49
- json: async (args) => {
50
- args.stop();
51
- try {
52
- const parsedValue = JSON.stringify(args.value);
53
- args.collect(parsedValue);
54
- }
55
- catch (err) {
56
- args.error(ParseError.invalidJSON);
57
- }
58
- },
59
- enum: async (args) => {
60
- const enumValues = args.fieldSchema.enum;
61
- for (let i = 0; i < enumValues.length; i++) {
62
- if (deepEqual(enumValues[i], args.value)) {
63
- args.collect(i);
64
- return;
65
- }
66
- }
67
- args.error(ParseError.incorrectFormat);
68
- },
69
- any: async (args) => {
70
- args.stop();
71
- if (typeof args.value !== 'object') {
72
- args.collect(args.value);
73
- return;
74
- }
75
- const q = [];
76
- for (const key in args.value) {
77
- q.push(args.parse({
78
- key: key,
79
- value: args.value[key],
80
- fieldSchema: { type: 'any' },
81
- }));
82
- }
83
- },
84
- };
85
- //# sourceMappingURL=index.js.map
@@ -1,4 +0,0 @@
1
- import { FieldParser } from '../../walker/index.js';
2
- export declare const number: FieldParser<'number'>;
3
- export declare const integer: FieldParser<'integer'>;
4
- export declare const timestamp: FieldParser<'timestamp'>;
@@ -1,123 +0,0 @@
1
- import { ParseError } from '../../error.js';
2
- const validateNumber = (args, value, ignoreMinMax) => {
3
- const { fieldSchema } = args;
4
- if (typeof value !== 'number') {
5
- args.error(ParseError.incorrectFormat);
6
- return false;
7
- }
8
- if (isNaN(value)) {
9
- args.error(ParseError.incorrectFormat);
10
- return false;
11
- }
12
- if (value === Infinity || value === -Infinity) {
13
- args.error(ParseError.infinityNotSupported);
14
- return false;
15
- }
16
- if (fieldSchema.type === 'integer' && value - Math.floor(value) !== 0) {
17
- args.error(ParseError.incorrectFormat);
18
- return false;
19
- }
20
- if (fieldSchema.multipleOf &&
21
- value / fieldSchema.multipleOf -
22
- Math.floor(value / fieldSchema.multipleOf) !==
23
- 0) {
24
- args.error(ParseError.incorrectFormat);
25
- return false;
26
- }
27
- if (ignoreMinMax) {
28
- // TODO: will be handled in the actual modify command
29
- return true;
30
- }
31
- if (fieldSchema.maximum) {
32
- if (fieldSchema.exclusiveMaximum) {
33
- if (value >= fieldSchema.maximum) {
34
- args.error(ParseError.exceedsMaximum);
35
- return false;
36
- }
37
- }
38
- else if (value > fieldSchema.maximum) {
39
- args.error(ParseError.exceedsMaximum);
40
- return false;
41
- }
42
- }
43
- if (fieldSchema.minimum) {
44
- if (fieldSchema.exclusiveMinimum) {
45
- if (value <= fieldSchema.minimum) {
46
- args.error(ParseError.subceedsMinimum);
47
- return false;
48
- }
49
- }
50
- else if (value < fieldSchema.minimum) {
51
- args.error(ParseError.subceedsMinimum);
52
- return false;
53
- }
54
- }
55
- return true;
56
- };
57
- const validate = (args, value) => {
58
- if (value === null) {
59
- return false;
60
- }
61
- if (typeof value !== 'object') {
62
- return validateNumber(args, value);
63
- }
64
- if ('$value' in value) {
65
- return;
66
- }
67
- args.stop();
68
- for (const key in value) {
69
- if (key === '$default') {
70
- if (!validateNumber(args, value.$default)) {
71
- return false;
72
- }
73
- }
74
- else if (key === '$increment') {
75
- if (!validateNumber(args, value.$increment, true)) {
76
- return false;
77
- }
78
- }
79
- else if (key === '$decrement') {
80
- if (!validateNumber(args, value.$decrement, true)) {
81
- return false;
82
- }
83
- }
84
- else {
85
- args.create({ key }).error(ParseError.fieldDoesNotExist);
86
- return false;
87
- }
88
- }
89
- return true;
90
- };
91
- export const number = async (args) => {
92
- if (!validate(args, args.value)) {
93
- return;
94
- }
95
- args.collect();
96
- };
97
- export const integer = async (args) => {
98
- if (!validate(args, args.value)) {
99
- return;
100
- }
101
- args.collect();
102
- };
103
- export const timestamp = async (args) => {
104
- if (typeof args.value === 'string') {
105
- if (args.value === 'now') {
106
- // TODO: + 1s + 10s etc
107
- args.value = Date.now();
108
- }
109
- else {
110
- const d = new Date(args.value);
111
- args.value = d.valueOf();
112
- if (isNaN(args.value)) {
113
- args.error(ParseError.incorrectFormat);
114
- return;
115
- }
116
- }
117
- }
118
- if (!validateNumber(args, args.value)) {
119
- return;
120
- }
121
- args.collect();
122
- };
123
- //# sourceMappingURL=number.js.map