@jk2908/mdsrc 0.4.1 → 0.5.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.
@@ -0,0 +1,366 @@
1
+ import { MODIFIER_NAMES, PRIMITIVE_NAMES, } from './types.js';
2
+ import { deep, isRecord } from './utils.js';
3
+ /**
4
+ * Check one entry against the declared schema and coerce what can be coerced
5
+ * leave missing optional keys alone instead of treating them as errors
6
+ * normalise dates to ISO strings for output
7
+ */
8
+ export function validate(input, schema) {
9
+ // keep valid values separate so bad fields never sneak into output
10
+ const validated = {};
11
+ // collect every problem so one pass can report the lot
12
+ const issues = [];
13
+ // bail out early if the frontmatter is not even an object
14
+ if (typeof input !== 'object' || input === null) {
15
+ issues.push({ message: 'Input must be an object', code: 'INVALID_INPUT' });
16
+ return { issues };
17
+ }
18
+ const schemaKeys = new Set(Object.keys(schema).map(k => parseKey(k).key));
19
+ // bail out early on unknown keys
20
+ for (const key in input) {
21
+ if (!schemaKeys.has(key)) {
22
+ issues.push({ message: `Unknown key: ${key}`, code: 'UNKNOWN_KEY' });
23
+ }
24
+ }
25
+ // bail
26
+ if (issues.length)
27
+ return { issues };
28
+ function walk(key, schemaValue, data) {
29
+ const { optional, key: parsedKey } = parseKey(key);
30
+ if (data === undefined) {
31
+ if (!optional) {
32
+ issues.push({
33
+ message: `Missing required key: ${parsedKey}`,
34
+ code: 'MISSING_REQUIRED',
35
+ });
36
+ }
37
+ return;
38
+ }
39
+ // check primitives
40
+ if (typeof schemaValue === 'string') {
41
+ const { types, modifiers } = parseSchemaValue(schemaValue);
42
+ for (const type of types) {
43
+ if (type === 'string') {
44
+ if (typeof data !== 'string') {
45
+ if (types.length === 1) {
46
+ issues.push({
47
+ message: `Key ${parsedKey} must be a string`,
48
+ code: 'INVALID_TYPE',
49
+ });
50
+ return;
51
+ }
52
+ continue;
53
+ }
54
+ if (modifiers.min) {
55
+ const min = Number(modifiers.min);
56
+ if (Number.isNaN(min)) {
57
+ issues.push({
58
+ message: `Key ${parsedKey} contains a bad modifier (${modifiers.min}) that could not be converted to type (number)`,
59
+ code: 'BAD_MODIFIER',
60
+ });
61
+ return;
62
+ }
63
+ if (data.length < min) {
64
+ if (types.length === 1) {
65
+ issues.push({
66
+ message: `Key ${parsedKey} must be greater than or equal to minimum length (${min})`,
67
+ code: 'INVALID_LENGTH',
68
+ });
69
+ return;
70
+ }
71
+ continue;
72
+ }
73
+ }
74
+ if (modifiers.max) {
75
+ const max = Number(modifiers.max);
76
+ if (Number.isNaN(max)) {
77
+ issues.push({
78
+ message: `Key ${parsedKey} contains a bad modifier (${modifiers.max}) that could not be converted to type (number)`,
79
+ code: 'BAD_MODIFIER',
80
+ });
81
+ return;
82
+ }
83
+ if (data.length > max) {
84
+ if (types.length === 1) {
85
+ issues.push({
86
+ message: `Key ${parsedKey} must be less than or equal to maximum length (${max})`,
87
+ code: 'INVALID_LENGTH',
88
+ });
89
+ return;
90
+ }
91
+ continue;
92
+ }
93
+ }
94
+ deep(validated, parsedKey, data);
95
+ return;
96
+ }
97
+ else if (type === 'number') {
98
+ let num = data;
99
+ if (typeof data === 'string' && !Number.isNaN(Number(data))) {
100
+ num = Number(data);
101
+ }
102
+ if (typeof num !== 'number' || Number.isNaN(num)) {
103
+ if (types.length === 1) {
104
+ issues.push({
105
+ message: `Key ${parsedKey} must be a number`,
106
+ code: 'INVALID_TYPE',
107
+ });
108
+ return;
109
+ }
110
+ continue;
111
+ }
112
+ if (modifiers.min) {
113
+ const min = Number(modifiers.min);
114
+ if (Number.isNaN(min)) {
115
+ issues.push({
116
+ message: `Key ${parsedKey} contains a bad modifier (${modifiers.min}) that could not be converted to type (number)`,
117
+ code: 'BAD_MODIFIER',
118
+ });
119
+ return;
120
+ }
121
+ if (num < min) {
122
+ if (types.length === 1) {
123
+ issues.push({
124
+ message: `Key ${parsedKey} must be greater than or equal to minimum size (${min})`,
125
+ code: 'INVALID_SIZE',
126
+ });
127
+ return;
128
+ }
129
+ continue;
130
+ }
131
+ }
132
+ if (modifiers.max) {
133
+ const max = Number(modifiers.max);
134
+ if (Number.isNaN(max)) {
135
+ issues.push({
136
+ message: `Key ${parsedKey} contains a bad modifier (${modifiers.max}) that could not be converted to type (number)`,
137
+ code: 'BAD_MODIFIER',
138
+ });
139
+ return;
140
+ }
141
+ if (num > max) {
142
+ if (types.length === 1) {
143
+ issues.push({
144
+ message: `Key ${parsedKey} must be less than or equal to maximum size (${max})`,
145
+ code: 'INVALID_SIZE',
146
+ });
147
+ return;
148
+ }
149
+ continue;
150
+ }
151
+ }
152
+ deep(validated, parsedKey, num);
153
+ return;
154
+ }
155
+ else if (type === 'boolean') {
156
+ let bool = data;
157
+ if (typeof data === 'string') {
158
+ if (data.toLowerCase() === 'true') {
159
+ bool = true;
160
+ }
161
+ else if (data.toLowerCase() === 'false') {
162
+ bool = false;
163
+ }
164
+ }
165
+ if (typeof bool !== 'boolean') {
166
+ if (types.length === 1) {
167
+ issues.push({
168
+ message: `Key ${parsedKey} must be a boolean`,
169
+ code: 'INVALID_TYPE',
170
+ });
171
+ return;
172
+ }
173
+ continue;
174
+ }
175
+ deep(validated, parsedKey, bool);
176
+ return;
177
+ }
178
+ else if (type === 'date') {
179
+ let date;
180
+ if (data instanceof Date) {
181
+ date = data;
182
+ }
183
+ else if (typeof data === 'string' || typeof data === 'number') {
184
+ date = new Date(data);
185
+ }
186
+ else {
187
+ if (types.length === 1) {
188
+ issues.push({
189
+ message: `Key ${parsedKey} must be a Date, string or number`,
190
+ code: 'INVALID_TYPE',
191
+ });
192
+ return;
193
+ }
194
+ continue;
195
+ }
196
+ const dt = date.getTime();
197
+ if (Number.isNaN(dt)) {
198
+ if (types.length === 1) {
199
+ issues.push({
200
+ message: `Key ${parsedKey} must be a valid date`,
201
+ code: 'INVALID_DATE',
202
+ });
203
+ return;
204
+ }
205
+ continue;
206
+ }
207
+ if (modifiers.min) {
208
+ const min = new Date(Number(modifiers.min));
209
+ if (Number.isNaN(min.getTime())) {
210
+ issues.push({
211
+ message: `Key ${parsedKey} contains a bad modifier (${modifiers.min}) that could not be converted to instance (Date)`,
212
+ code: 'BAD_MODIFIER',
213
+ });
214
+ return;
215
+ }
216
+ if (dt < min.getTime()) {
217
+ if (types.length === 1) {
218
+ issues.push({
219
+ message: `Key ${parsedKey} must be greater than or equal to minimum date (${min.toISOString()})`,
220
+ code: 'INVALID_DATE',
221
+ });
222
+ return;
223
+ }
224
+ continue;
225
+ }
226
+ }
227
+ if (modifiers.max) {
228
+ const max = new Date(Number(modifiers.max));
229
+ if (Number.isNaN(max.getTime())) {
230
+ issues.push({
231
+ message: `Key ${parsedKey} contains a bad modifier (${modifiers.max}) that could not be converted to instance (Date)`,
232
+ code: 'BAD_MODIFIER',
233
+ });
234
+ return;
235
+ }
236
+ if (dt > max.getTime()) {
237
+ if (types.length === 1) {
238
+ issues.push({
239
+ message: `Key ${parsedKey} must be less than or equal to maximum date (${max.toISOString()})`,
240
+ code: 'INVALID_DATE',
241
+ });
242
+ return;
243
+ }
244
+ continue;
245
+ }
246
+ }
247
+ deep(validated, parsedKey, date.toISOString());
248
+ return;
249
+ }
250
+ else if (type === 'array') {
251
+ if (!Array.isArray(data)) {
252
+ if (types.length === 1) {
253
+ issues.push({
254
+ message: `Key ${parsedKey} must be an array`,
255
+ code: 'INVALID_TYPE',
256
+ });
257
+ return;
258
+ }
259
+ continue;
260
+ }
261
+ if (modifiers.min) {
262
+ const min = Number(modifiers.min);
263
+ if (Number.isNaN(min)) {
264
+ issues.push({
265
+ message: `Key ${parsedKey} contains a bad modifier (${modifiers.min}) that could not be converted to type (number)`,
266
+ code: 'BAD_MODIFIER',
267
+ });
268
+ return;
269
+ }
270
+ if (data.length < min) {
271
+ if (types.length === 1) {
272
+ issues.push({
273
+ message: `Key ${parsedKey} must be greater than or equal to minimum array length (${min})`,
274
+ code: 'INVALID_LENGTH',
275
+ });
276
+ return;
277
+ }
278
+ continue;
279
+ }
280
+ }
281
+ if (modifiers.max) {
282
+ const max = Number(modifiers.max);
283
+ if (Number.isNaN(max)) {
284
+ issues.push({
285
+ message: `Key ${parsedKey} contains a bad modifier (${modifiers.max}) that could not be converted to type (number)`,
286
+ code: 'BAD_MODIFIER',
287
+ });
288
+ return;
289
+ }
290
+ if (data.length > max) {
291
+ if (types.length === 1) {
292
+ issues.push({
293
+ message: `Key ${parsedKey} must be less than or equal to maximum array length (${max})`,
294
+ code: 'INVALID_LENGTH',
295
+ });
296
+ return;
297
+ }
298
+ continue;
299
+ }
300
+ }
301
+ deep(validated, parsedKey, data);
302
+ return;
303
+ }
304
+ }
305
+ // no type matched
306
+ issues.push({
307
+ message: `Key ${parsedKey} must be one of: ${types.join(', ')}`,
308
+ code: 'INVALID_TYPE',
309
+ });
310
+ }
311
+ else {
312
+ if (!isRecord(data)) {
313
+ issues.push({
314
+ message: `Key ${parsedKey} must be an object`,
315
+ code: 'INVALID_TYPE',
316
+ });
317
+ return;
318
+ }
319
+ const obj = data;
320
+ for (const subKey in schemaValue) {
321
+ walk(`${parsedKey}.${subKey}`, schemaValue[subKey], obj[parseKey(subKey).key]);
322
+ }
323
+ }
324
+ }
325
+ for (const key in schema) {
326
+ walk(key, schema[key], input[parseKey(key).key]);
327
+ }
328
+ // return the clean entry when validation passes, otherwise return the full
329
+ // issue list
330
+ return (issues.length ? { issues } : { value: validated });
331
+ }
332
+ export function parseKey(k) {
333
+ const optional = k.endsWith('?');
334
+ return {
335
+ optional,
336
+ key: optional ? k.slice(0, -1) : k,
337
+ };
338
+ }
339
+ function parseSchemaValue(value) {
340
+ if (isRecord(value))
341
+ throw new Error('Cannot parse object schema values');
342
+ const parts = value.split('|');
343
+ const types = [];
344
+ const modifiers = {};
345
+ for (const p of parts) {
346
+ if (p.indexOf('=') > -1) {
347
+ const [m, v] = p.split('=');
348
+ if (!isModifierName(m))
349
+ throw new Error(`Unrecognised modifier: ${m}`);
350
+ modifiers[m] = v;
351
+ }
352
+ else {
353
+ if (!isPrimitive(p))
354
+ throw new Error(`Unrecognised type: ${p}`);
355
+ types.push(p);
356
+ }
357
+ }
358
+ return { types, modifiers };
359
+ }
360
+ function isModifierName(name) {
361
+ return MODIFIER_NAMES.some(n => n === name);
362
+ }
363
+ function isPrimitive(name) {
364
+ return PRIMITIVE_NAMES.some(n => n === name);
365
+ }
366
+ //# sourceMappingURL=validate.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"validate.js","sourceRoot":"","sources":["../src/validate.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@jk2908/mdsrc",
3
- "version": "0.4.1",
3
+ "version": "0.5.0",
4
4
  "type": "module",
5
5
  "author": "Jerome Kenway",
6
6
  "description": "A Vite plugin for turning structured Markdown content into importable, type-safe modules",