@maadb/core 0.8.4 → 0.10.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 (41) hide show
  1. package/dist/backend/adapter.d.ts +1 -0
  2. package/dist/backend/adapter.d.ts.map +1 -1
  3. package/dist/backend/sqlite/index.d.ts +1 -0
  4. package/dist/backend/sqlite/index.d.ts.map +1 -1
  5. package/dist/backend/sqlite/index.js +60 -26
  6. package/dist/backend/sqlite/index.js.map +1 -1
  7. package/dist/engine/journal.d.ts +4 -0
  8. package/dist/engine/journal.d.ts.map +1 -1
  9. package/dist/engine/journal.js +48 -8
  10. package/dist/engine/journal.js.map +1 -1
  11. package/dist/engine/pathguard.d.ts +8 -0
  12. package/dist/engine/pathguard.d.ts.map +1 -1
  13. package/dist/engine/pathguard.js +45 -5
  14. package/dist/engine/pathguard.js.map +1 -1
  15. package/dist/engine/reads.d.ts.map +1 -1
  16. package/dist/engine/reads.js +5 -2
  17. package/dist/engine/reads.js.map +1 -1
  18. package/dist/engine/repairs.d.ts.map +1 -1
  19. package/dist/engine/repairs.js +30 -0
  20. package/dist/engine/repairs.js.map +1 -1
  21. package/dist/engine/types.d.ts +2 -0
  22. package/dist/engine/types.d.ts.map +1 -1
  23. package/dist/engine/write-boundary.d.ts +9 -0
  24. package/dist/engine/write-boundary.d.ts.map +1 -0
  25. package/dist/engine/write-boundary.js +32 -0
  26. package/dist/engine/write-boundary.js.map +1 -0
  27. package/dist/engine/writes.d.ts.map +1 -1
  28. package/dist/engine/writes.js +112 -18
  29. package/dist/engine/writes.js.map +1 -1
  30. package/dist/registry/loader.d.ts.map +1 -1
  31. package/dist/registry/loader.js +18 -5
  32. package/dist/registry/loader.js.map +1 -1
  33. package/dist/schema/loader.d.ts.map +1 -1
  34. package/dist/schema/loader.js +14 -2
  35. package/dist/schema/loader.js.map +1 -1
  36. package/dist/schema/validator.js +13 -13
  37. package/dist/schema/validator.js.map +1 -1
  38. package/dist/writer/serializer.d.ts.map +1 -1
  39. package/dist/writer/serializer.js +25 -7
  40. package/dist/writer/serializer.js.map +1 -1
  41. package/package.json +2 -1
@@ -13,10 +13,18 @@ import { generateDocument, extractBody } from '../writer/index.js';
13
13
  import { gitCommit } from './context.js';
14
14
  import { indexFile } from './indexing.js';
15
15
  import { generateDocId, readFrontmatter, toCanonicalRelPath } from './helpers.js';
16
- import { atomicWrite } from './journal.js';
16
+ import { atomicCreate, atomicWrite } from './journal.js';
17
17
  import { checkDocIdSafe } from './docid-safe.js';
18
- import { isContainedIn } from './pathguard.js';
18
+ import { isWritePathContainedIn } from './pathguard.js';
19
+ import { validateCallerFields, validateStoredIdentity } from './write-boundary.js';
20
+ function isAlreadyExistsError(error) {
21
+ return typeof error === 'object' && error !== null && 'code' in error && error.code === 'EEXIST';
22
+ }
19
23
  export async function createDocument(ctx, dt, fields, body, customDocId) {
24
+ const fieldsViolation = validateCallerFields(fields);
25
+ if (fieldsViolation) {
26
+ return singleErr(fieldsViolation.code, fieldsViolation.message);
27
+ }
20
28
  const regType = ctx.registry.types.get(dt);
21
29
  if (!regType)
22
30
  return singleErr('UNKNOWN_TYPE', `Type "${dt}" not in registry`);
@@ -37,10 +45,10 @@ export async function createDocument(ctx, dt, fields, body, customDocId) {
37
45
  return singleErr('DUPLICATE_DOC_ID', `Document "${id}" already exists`);
38
46
  }
39
47
  const frontmatter = {
48
+ ...fields,
40
49
  doc_id: id,
41
50
  doc_type: dt,
42
51
  schema: regType.schemaRef,
43
- ...fields,
44
52
  };
45
53
  const validation = validateFrontmatter(frontmatter, schema, ctx.registry, undefined, { mode: 'write' });
46
54
  if (!validation.valid) {
@@ -48,16 +56,30 @@ export async function createDocument(ctx, dt, fields, body, customDocId) {
48
56
  }
49
57
  const markdown = generateDocument(frontmatter, schema, body);
50
58
  const dirPath = path.join(ctx.projectRoot, regType.path);
51
- if (!existsSync(dirPath))
52
- mkdirSync(dirPath, { recursive: true });
59
+ if (!isWritePathContainedIn(dirPath, ctx.projectRoot)) {
60
+ return singleErr('PATH_OUTSIDE_PROJECT', `Write directory "${dirPath}" escapes the project root`);
61
+ }
62
+ try {
63
+ if (!existsSync(dirPath))
64
+ mkdirSync(dirPath, { recursive: true });
65
+ }
66
+ catch (error) {
67
+ return singleErr('WRITE_ERROR', `Failed to create write directory: ${error instanceof Error ? error.message : String(error)}`);
68
+ }
69
+ if (!isWritePathContainedIn(dirPath, ctx.projectRoot)) {
70
+ return singleErr('PATH_OUTSIDE_PROJECT', `Write directory "${dirPath}" escapes the project root through a symbolic link`);
71
+ }
53
72
  const fp = path.join(dirPath, `${id}.md`);
54
73
  // 0.7.6 (fup-2026-200) — defense-in-depth: assert the resolved write path
55
74
  // is contained within the project root. checkDocIdSafe above should have
56
75
  // already rejected any traversal attempt; this catches future regressions
57
76
  // (e.g., a new code path that bypasses validation) before disk touches.
58
- if (!isContainedIn(fp, ctx.projectRoot)) {
77
+ if (!isWritePathContainedIn(fp, ctx.projectRoot)) {
59
78
  return singleErr('PATH_OUTSIDE_PROJECT', `resolved write path "${fp}" is outside project root "${ctx.projectRoot}"`);
60
79
  }
80
+ if (existsSync(fp)) {
81
+ return singleErr('DUPLICATE_DOC_ID', `Document "${id}" already exists on disk`);
82
+ }
61
83
  // Pre-flight parse: catches frontmatter / profile errors before any disk write,
62
84
  // so invalid writes never leave orphan files on disk.
63
85
  const preflight = parseDocumentFromContent(markdown, toFilePath(fp), ctx.registry.subtypeMap);
@@ -69,7 +91,16 @@ export async function createDocument(ctx, dt, fields, body, customDocId) {
69
91
  }
70
92
  // Durable write: journal → atomic write → index → git → complete
71
93
  const journalId = ctx.journal.begin('create', id, fp);
72
- await atomicWrite(fp, markdown);
94
+ try {
95
+ await atomicCreate(fp, markdown);
96
+ }
97
+ catch (error) {
98
+ ctx.journal.complete(journalId);
99
+ if (isAlreadyExistsError(error)) {
100
+ return singleErr('DUPLICATE_DOC_ID', `Document "${id}" already exists on disk`);
101
+ }
102
+ return singleErr('WRITE_ERROR', `Failed to create document "${id}": ${error instanceof Error ? error.message : String(error)}`);
103
+ }
73
104
  ctx.journal.advance(journalId, 'file_written');
74
105
  const indexResult = await indexFile(ctx, toFilePath(fp));
75
106
  if (!indexResult.ok) {
@@ -113,6 +144,9 @@ export async function updateDocument(ctx, id, fields, body, appendBody, expected
113
144
  if (!schema)
114
145
  return singleErr('SCHEMA_NOT_FOUND', `No schema for type "${doc.docType}"`);
115
146
  const absPath = path.join(ctx.projectRoot, doc.filePath);
147
+ if (!isWritePathContainedIn(absPath, ctx.projectRoot)) {
148
+ return singleErr('PATH_OUTSIDE_PROJECT', `Document path "${absPath}" escapes the project root`);
149
+ }
116
150
  let raw;
117
151
  try {
118
152
  raw = await readFile(absPath, 'utf-8');
@@ -120,13 +154,23 @@ export async function updateDocument(ctx, id, fields, body, appendBody, expected
120
154
  catch {
121
155
  return singleErr('FILE_READ_ERROR', `Cannot read file: ${absPath}`);
122
156
  }
123
- const currentFm = await readFrontmatter(ctx.projectRoot, doc);
157
+ let currentFm;
158
+ try {
159
+ currentFm = parseMatter(raw).data;
160
+ }
161
+ catch (error) {
162
+ return singleErr('PARSE_ERROR', `Cannot parse frontmatter for "${id}": ${error instanceof Error ? error.message : String(error)}`);
163
+ }
164
+ const identityViolation = validateStoredIdentity(currentFm, doc);
165
+ if (identityViolation) {
166
+ return singleErr(identityViolation.code, identityViolation.message);
167
+ }
124
168
  const changedFields = [];
125
169
  const updatedFm = { ...currentFm };
126
- if (fields) {
127
- // Guard: reject non-object fields that survived past the MCP layer
128
- if (typeof fields !== 'object' || Array.isArray(fields)) {
129
- return singleErr('INVALID_FIELDS', 'fields must be a plain object, not a string or array');
170
+ if (fields !== undefined) {
171
+ const fieldsViolation = validateCallerFields(fields);
172
+ if (fieldsViolation) {
173
+ return singleErr(fieldsViolation.code, fieldsViolation.message);
130
174
  }
131
175
  for (const [key, value] of Object.entries(fields)) {
132
176
  if (updatedFm[key] !== value) {
@@ -224,6 +268,20 @@ export async function deleteDocument(ctx, id, mode, skipGit) {
224
268
  if (!doc)
225
269
  return singleErr('FILE_NOT_FOUND', `Document "${id}" not found`);
226
270
  const absPath = path.join(ctx.projectRoot, doc.filePath);
271
+ if (!isWritePathContainedIn(absPath, ctx.projectRoot)) {
272
+ return singleErr('PATH_OUTSIDE_PROJECT', `Document path "${absPath}" escapes the project root`);
273
+ }
274
+ let currentFm;
275
+ try {
276
+ currentFm = await readFrontmatter(ctx.projectRoot, doc);
277
+ }
278
+ catch (error) {
279
+ return singleErr('FILE_READ_ERROR', `Cannot read frontmatter for "${id}": ${error instanceof Error ? error.message : String(error)}`);
280
+ }
281
+ const identityViolation = validateStoredIdentity(currentFm, doc);
282
+ if (identityViolation) {
283
+ return singleErr(identityViolation.code, identityViolation.message);
284
+ }
227
285
  const journalId = ctx.journal.begin('delete', id, absPath);
228
286
  if (mode === 'hard') {
229
287
  try {
@@ -238,6 +296,9 @@ export async function deleteDocument(ctx, id, mode, skipGit) {
238
296
  const dir = path.dirname(absPath);
239
297
  const base = path.basename(absPath);
240
298
  const deletedPath = path.join(dir, `_deleted_${base}`);
299
+ if (!isWritePathContainedIn(deletedPath, ctx.projectRoot)) {
300
+ return singleErr('PATH_OUTSIDE_PROJECT', `Deleted-document path "${deletedPath}" escapes the project root`);
301
+ }
241
302
  try {
242
303
  await rename(absPath, deletedPath);
243
304
  }
@@ -387,6 +448,11 @@ export async function bulkCreate(ctx, records) {
387
448
  failed.push({ index: i, docId: rec.docId ?? null, error: `No schema for type "${rec.docType}"` });
388
449
  continue;
389
450
  }
451
+ const fieldsViolation = validateCallerFields(rec.fields);
452
+ if (fieldsViolation) {
453
+ failed.push({ index: i, docId: rec.docId ?? null, error: `${fieldsViolation.code}: ${fieldsViolation.message}` });
454
+ continue;
455
+ }
390
456
  const existingIds = [
391
457
  ...ctx.backend.getSampleDocIds(dt, 10000).map(id => id),
392
458
  ...succeeded.map(s => s.docId),
@@ -403,10 +469,10 @@ export async function bulkCreate(ctx, records) {
403
469
  continue;
404
470
  }
405
471
  const frontmatter = {
472
+ ...rec.fields,
406
473
  doc_id: id,
407
474
  doc_type: rec.docType,
408
475
  schema: regType.schemaRef,
409
- ...rec.fields,
410
476
  };
411
477
  const validation = validateFrontmatter(frontmatter, schema, ctx.registry, undefined, { mode: 'write' });
412
478
  if (!validation.valid) {
@@ -416,14 +482,32 @@ export async function bulkCreate(ctx, records) {
416
482
  }
417
483
  const markdown = generateDocument(frontmatter, schema, rec.body);
418
484
  const dirPath = path.join(ctx.projectRoot, regType.path);
419
- if (!existsSync(dirPath))
420
- mkdirSync(dirPath, { recursive: true });
485
+ if (!isWritePathContainedIn(dirPath, ctx.projectRoot)) {
486
+ failed.push({ index: i, docId: id, error: `PATH_OUTSIDE_PROJECT: write directory "${dirPath}" escapes the project root` });
487
+ continue;
488
+ }
489
+ try {
490
+ if (!existsSync(dirPath))
491
+ mkdirSync(dirPath, { recursive: true });
492
+ }
493
+ catch (error) {
494
+ failed.push({ index: i, docId: id, error: `WRITE_ERROR: ${error instanceof Error ? error.message : String(error)}` });
495
+ continue;
496
+ }
497
+ if (!isWritePathContainedIn(dirPath, ctx.projectRoot)) {
498
+ failed.push({ index: i, docId: id, error: `PATH_OUTSIDE_PROJECT: write directory "${dirPath}" escapes through a symbolic link` });
499
+ continue;
500
+ }
421
501
  const fp = path.join(dirPath, `${id}.md`);
422
502
  // 0.7.6 — defense-in-depth path containment.
423
- if (!isContainedIn(fp, ctx.projectRoot)) {
503
+ if (!isWritePathContainedIn(fp, ctx.projectRoot)) {
424
504
  failed.push({ index: i, docId: id, error: `PATH_OUTSIDE_PROJECT: resolved write path "${fp}" is outside project root` });
425
505
  continue;
426
506
  }
507
+ if (existsSync(fp)) {
508
+ failed.push({ index: i, docId: id, error: `DUPLICATE_DOC_ID: Document "${id}" already exists on disk` });
509
+ continue;
510
+ }
427
511
  // Pre-flight parse: keep invalid records out of the batch before touching disk.
428
512
  const preflight = parseDocumentFromContent(markdown, toFilePath(fp), ctx.registry.subtypeMap);
429
513
  if (!preflight.ok) {
@@ -431,10 +515,13 @@ export async function bulkCreate(ctx, records) {
431
515
  continue;
432
516
  }
433
517
  try {
434
- await atomicWrite(fp, markdown);
518
+ await atomicCreate(fp, markdown);
435
519
  }
436
520
  catch (e) {
437
- failed.push({ index: i, docId: id, error: `File write failed: ${e instanceof Error ? e.message : String(e)}` });
521
+ const error = isAlreadyExistsError(e)
522
+ ? `DUPLICATE_DOC_ID: Document "${id}" already exists on disk`
523
+ : `WRITE_ERROR: ${e instanceof Error ? e.message : String(e)}`;
524
+ failed.push({ index: i, docId: id, error });
438
525
  continue;
439
526
  }
440
527
  const indexResult = await indexFile(ctx, toFilePath(fp));
@@ -704,6 +791,13 @@ export async function purgeSoftDeleted(ctx, olderThanIso, maxRecords) {
704
791
  const allFiles = [];
705
792
  for (const doc of targets) {
706
793
  const absPath = path.join(ctx.projectRoot, doc.filePath);
794
+ if (!isWritePathContainedIn(absPath, ctx.projectRoot)) {
795
+ failed.push({
796
+ docId: doc.docId,
797
+ error: `PATH_OUTSIDE_PROJECT: document path "${absPath}" escapes the project root`,
798
+ });
799
+ continue;
800
+ }
707
801
  try {
708
802
  await unlink(absPath);
709
803
  }
@@ -1 +1 @@
1
- {"version":3,"file":"writes.js","sourceRoot":"","sources":["../../src/engine/writes.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"writes.js","sourceRoot":"","sources":["../../src/engine/writes.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"loader.d.ts","sourceRoot":"","sources":["../../src/registry/loader.ts"],"names":[],"mappings":"AASA,OAAO,EAAiC,KAAK,MAAM,EAAE,MAAM,cAAc,CAAC;AAE1E,OAAO,EAML,KAAK,QAAQ,EAId,MAAM,aAAa,CAAC;AAKrB,wBAAsB,YAAY,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,CAmJjF"}
1
+ {"version":3,"file":"loader.d.ts","sourceRoot":"","sources":["../../src/registry/loader.ts"],"names":[],"mappings":"AASA,OAAO,EAAiC,KAAK,MAAM,EAAE,MAAM,cAAc,CAAC;AAO1E,OAAO,EAML,KAAK,QAAQ,EAId,MAAM,aAAa,CAAC;AAKrB,wBAAsB,YAAY,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,CA+JjF"}
@@ -7,7 +7,7 @@ import { existsSync, mkdirSync } from 'node:fs';
7
7
  import path from 'node:path';
8
8
  import { parseMatter } from '../parser/matter.js';
9
9
  import { ok, err, singleErr, maadError } from '../errors.js';
10
- import { isContainedIn } from '../engine/pathguard.js';
10
+ import { isReallyContainedIn, isSafeProjectRelativePath, isSafeSchemaRef, isWritePathContainedIn, } from '../engine/pathguard.js';
11
11
  import { docType, schemaRef, PRIMITIVES, DEFAULT_SUBTYPE_MAP, buildSubtypeMap, } from '../types.js';
12
12
  const VALID_NAME_REGEX = /^[a-z][a-z0-9_]*$/;
13
13
  const VALID_PREFIX_REGEX = /^[a-z0-9]{2,5}$/;
@@ -16,6 +16,9 @@ export async function loadRegistry(projectRoot) {
16
16
  if (!existsSync(registryPath)) {
17
17
  return singleErr('REGISTRY_NOT_FOUND', `Registry file not found: ${registryPath}`);
18
18
  }
19
+ if (!isReallyContainedIn(registryPath, projectRoot)) {
20
+ return singleErr('REGISTRY_INVALID', `Registry path escapes project root through a symbolic link: ${registryPath}`);
21
+ }
19
22
  let raw;
20
23
  try {
21
24
  raw = await readFile(registryPath, 'utf-8');
@@ -67,13 +70,17 @@ export async function loadRegistry(projectRoot) {
67
70
  continue;
68
71
  }
69
72
  const resolvedPath = path.join(projectRoot, typePath);
70
- if (!isContainedIn(resolvedPath, projectRoot)) {
73
+ if (!isSafeProjectRelativePath(typePath) || !isWritePathContainedIn(resolvedPath, projectRoot)) {
71
74
  errors.push(maadError('REGISTRY_INVALID', `Type "${name}" path escapes project root: ${typePath}`));
72
75
  continue;
73
76
  }
74
77
  if (!existsSync(resolvedPath)) {
75
78
  mkdirSync(resolvedPath, { recursive: true });
76
79
  }
80
+ if (!isReallyContainedIn(resolvedPath, projectRoot)) {
81
+ errors.push(maadError('REGISTRY_INVALID', `Type "${name}" path escapes project root through a symbolic link: ${typePath}`));
82
+ continue;
83
+ }
77
84
  // Validate id_prefix
78
85
  const idPrefix = typeDef['id_prefix'];
79
86
  if (typeof idPrefix !== 'string' || !VALID_PREFIX_REGEX.test(idPrefix)) {
@@ -88,24 +95,30 @@ export async function loadRegistry(projectRoot) {
88
95
  seenPrefixes.set(idPrefix, name);
89
96
  // Validate schema ref
90
97
  const schemaValue = typeDef['schema'];
91
- if (typeof schemaValue !== 'string' || schemaValue.length === 0) {
92
- errors.push(maadError('REGISTRY_INVALID', `Type "${name}" must have a "schema" string`));
98
+ if (typeof schemaValue !== 'string' || !isSafeSchemaRef(schemaValue)) {
99
+ errors.push(maadError('REGISTRY_INVALID', `Type "${name}" schema must match <type>.v<positive integer>`));
93
100
  continue;
94
101
  }
95
102
  const schemaFilePath = path.join(projectRoot, '_schema', `${schemaValue}.yaml`);
96
103
  if (!existsSync(schemaFilePath)) {
97
104
  errors.push(maadError('SCHEMA_NOT_FOUND', `Type "${name}" references schema "${schemaValue}" but file not found: ${schemaFilePath}`));
98
105
  }
106
+ else if (!isReallyContainedIn(schemaFilePath, projectRoot)) {
107
+ errors.push(maadError('REGISTRY_INVALID', `Type "${name}" schema escapes project root through a symbolic link: ${schemaValue}`));
108
+ }
99
109
  // Optional template
100
110
  const template = typeof typeDef['template'] === 'string' ? typeDef['template'] : null;
101
111
  if (template !== null) {
102
112
  const templatePath = path.join(projectRoot, template);
103
- if (!isContainedIn(templatePath, projectRoot)) {
113
+ if (!isSafeProjectRelativePath(template) || !isWritePathContainedIn(templatePath, projectRoot)) {
104
114
  errors.push(maadError('REGISTRY_INVALID', `Type "${name}" template escapes project root: ${template}`));
105
115
  }
106
116
  else if (!existsSync(templatePath)) {
107
117
  errors.push(maadError('FILE_NOT_FOUND', `Type "${name}" references template "${template}" but file not found`));
108
118
  }
119
+ else if (!isReallyContainedIn(templatePath, projectRoot)) {
120
+ errors.push(maadError('REGISTRY_INVALID', `Type "${name}" template escapes project root through a symbolic link: ${template}`));
121
+ }
109
122
  }
110
123
  types.set(name, {
111
124
  name: docType(name),
@@ -1 +1 @@
1
- {"version":3,"file":"loader.js","sourceRoot":"","sources":["../../src/registry/loader.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"loader.js","sourceRoot":"","sources":["../../src/registry/loader.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"loader.d.ts","sourceRoot":"","sources":["../../src/schema/loader.ts"],"names":[],"mappings":"AASA,OAAO,EAAsB,KAAK,MAAM,EAAkB,MAAM,cAAc,CAAC;AAE/E,OAAO,EAGL,KAAK,QAAQ,EAOb,KAAK,WAAW,EACjB,MAAM,aAAa,CAAC;AAIrB,wBAAsB,WAAW,CAAC,WAAW,EAAE,MAAM,EAAE,QAAQ,EAAE,QAAQ,GAAG,OAAO,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC,CAuFvG"}
1
+ {"version":3,"file":"loader.d.ts","sourceRoot":"","sources":["../../src/schema/loader.ts"],"names":[],"mappings":"AASA,OAAO,EAAsB,KAAK,MAAM,EAAkB,MAAM,cAAc,CAAC;AAG/E,OAAO,EAGL,KAAK,QAAQ,EAOb,KAAK,WAAW,EACjB,MAAM,aAAa,CAAC;AAIrB,wBAAsB,WAAW,CAAC,WAAW,EAAE,MAAM,EAAE,QAAQ,EAAE,QAAQ,GAAG,OAAO,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC,CAgGvG"}
@@ -8,6 +8,7 @@ import path from 'node:path';
8
8
  import { parseMatter } from '../parser/matter.js';
9
9
  import { ok, err, maadError } from '../errors.js';
10
10
  import { isPrecision, comparePrecision } from './precision.js';
11
+ import { isSafeSchemaRef, isWritePathContainedIn } from '../engine/pathguard.js';
11
12
  import { docType, } from '../types.js';
12
13
  const VALID_FIELD_TYPES = ['string', 'number', 'date', 'enum', 'ref', 'boolean', 'list', 'amount'];
13
14
  export async function loadSchemas(projectRoot, registry) {
@@ -29,9 +30,17 @@ export async function loadSchemas(projectRoot, registry) {
29
30
  // doesn't exist. For an absent registry the schemas map is empty anyway.
30
31
  }
31
32
  for (const [, regType] of registry.types) {
33
+ if (!isSafeSchemaRef(regType.schemaRef)) {
34
+ errors.push(maadError('SCHEMA_INVALID', `Unsafe schema reference for type "${regType.name}": ${regType.schemaRef}`));
35
+ continue;
36
+ }
32
37
  const schemaFile = path.join(projectRoot, '_schema', `${regType.schemaRef}.yaml`);
33
38
  let raw;
34
39
  try {
40
+ if (!isWritePathContainedIn(schemaFile, projectRoot)) {
41
+ errors.push(maadError('SCHEMA_INVALID', `Schema path escapes project root: ${regType.schemaRef}`));
42
+ continue;
43
+ }
35
44
  raw = await readFile(schemaFile, 'utf-8');
36
45
  const st = await stat(schemaFile);
37
46
  cachedFiles.set(schemaFile, { mtimeMs: st.mtimeMs, size: st.size });
@@ -202,10 +211,10 @@ function parseFieldDefinition(name, fd, schemaRef, registry) {
202
211
  }
203
212
  // Enum values
204
213
  let values = null;
205
- if (fieldType === 'enum') {
214
+ if (fieldType === 'enum' || (fieldType === 'list' && fd['item_type'] === 'enum')) {
206
215
  const valuesRaw = fd['values'];
207
216
  if (!Array.isArray(valuesRaw) || valuesRaw.length === 0) {
208
- errors.push(maadError('SCHEMA_INVALID', `Schema "${schemaRef}" field "${name}" is an enum but has no "values" array`));
217
+ errors.push(maadError('SCHEMA_INVALID', `Schema "${schemaRef}" field "${name}" has enum values but no "values" array`));
209
218
  }
210
219
  else {
211
220
  values = valuesRaw.map(String);
@@ -218,6 +227,9 @@ function parseFieldDefinition(name, fd, schemaRef, registry) {
218
227
  if (typeof itemTypeStr === 'string' && VALID_FIELD_TYPES.includes(itemTypeStr)) {
219
228
  itemType = itemTypeStr;
220
229
  }
230
+ else if (itemTypeStr !== undefined) {
231
+ errors.push(maadError('SCHEMA_INVALID', `Schema "${schemaRef}" field "${name}" has invalid item_type "${String(itemTypeStr)}". Valid: ${VALID_FIELD_TYPES.join(', ')}`));
232
+ }
221
233
  // item_type is optional for lists — default to string items
222
234
  }
223
235
  const defaultValue = fd['default'] ?? null;
@@ -1 +1 @@
1
- {"version":3,"file":"loader.js","sourceRoot":"","sources":["../../src/schema/loader.ts"],"names":[],"mappings":"AAAA,+EAA+E;AAC/E,gBAAgB;AAChB,uEAAuE;AACvE,+EAA+E;AAE/E,OAAO,EAAE,QAAQ,EAAE,IAAI,EAAE,MAAM,kBAAkB,CAAC;AAClD,OAAO,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC;AACnC,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;AAClD,OAAO,EAAE,EAAE,EAAE,GAAG,EAAE,SAAS,EAA+B,MAAM,cAAc,CAAC;AAC/E,OAAO,EAAE,WAAW,EAAE,gBAAgB,EAAkB,MAAM,gBAAgB,CAAC;AAC/E,OAAO,EACL,OAAO,GAUR,MAAM,aAAa,CAAC;AAErB,MAAM,iBAAiB,GAAgB,CAAC,QAAQ,EAAE,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,SAAS,EAAE,MAAM,EAAE,QAAQ,CAAC,CAAC;AAEhH,MAAM,CAAC,KAAK,UAAU,WAAW,CAAC,WAAmB,EAAE,QAAkB;IACvE,MAAM,MAAM,GAAgB,EAAE,CAAC;IAC/B,MAAM,OAAO,GAAG,IAAI,GAAG,EAA+B,CAAC;IACvD,MAAM,YAAY,GAAG,IAAI,GAAG,EAAqB,CAAC;IAClD,2EAA2E;IAC3E,wEAAwE;IACxE,mEAAmE;IACnE,MAAM,WAAW,GAAG,IAAI,GAAG,EAA6C,CAAC;IACzE,MAAM,YAAY,GAAG,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,WAAW,EAAE,mBAAmB,CAAC,CAAC;IAC9E,IAAI,CAAC;QACH,MAAM,EAAE,GAAG,MAAM,IAAI,CAAC,YAAY,CAAC,CAAC;QACpC,WAAW,CAAC,GAAG,CAAC,YAAY,EAAE,EAAE,OAAO,EAAE,EAAE,CAAC,OAAO,EAAE,IAAI,EAAE,EAAE,CAAC,IAAI,EAAE,CAAC,CAAC;IACxE,CAAC;IAAC,MAAM,CAAC;QACP,sEAAsE;QACtE,oEAAoE;QACpE,yEAAyE;IAC3E,CAAC;IAED,KAAK,MAAM,CAAC,EAAE,OAAO,CAAC,IAAI,QAAQ,CAAC,KAAK,EAAE,CAAC;QACzC,MAAM,UAAU,GAAG,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,SAAS,EAAE,GAAG,OAAO,CAAC,SAAS,OAAO,CAAC,CAAC;QAClF,IAAI,GAAW,CAAC;QAEhB,IAAI,CAAC;YACH,GAAG,GAAG,MAAM,QAAQ,CAAC,UAAU,EAAE,OAAO,CAAC,CAAC;YAC1C,MAAM,EAAE,GAAG,MAAM,IAAI,CAAC,UAAU,CAAC,CAAC;YAClC,WAAW,CAAC,GAAG,CAAC,UAAU,EAAE,EAAE,OAAO,EAAE,EAAE,CAAC,OAAO,EAAE,IAAI,EAAE,EAAE,CAAC,IAAI,EAAE,CAAC,CAAC;QACtE,CAAC;QAAC,OAAO,CAAC,EAAE,CAAC;YACX,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,kBAAkB,EAAE,mCAAmC,OAAO,CAAC,IAAI,MAAM,UAAU,EAAE,CAAC,CAAC,CAAC;YAC9G,SAAS;QACX,CAAC;QAED,IAAI,IAA6B,CAAC;QAClC,IAAI,CAAC;YACH,IAAI,GAAG,CAAC,SAAS,EAAE,CAAC,UAAU,CAAC,KAAK,CAAC,EAAE,CAAC;gBACtC,IAAI,GAAG,WAAW,CAAC,GAAG,CAAC,CAAC,IAA+B,CAAC;YAC1D,CAAC;iBAAM,CAAC;gBACN,IAAI,GAAG,WAAW,CAAC,QAAQ,GAAG,OAAO,CAAC,CAAC,IAA+B,CAAC;YACzE,CAAC;QACH,CAAC;QAAC,OAAO,CAAC,EAAE,CAAC;YACX,MAAM,OAAO,GAAG,CAAC,YAAY,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,qBAAqB,CAAC;YACvE,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,aAAa,EAAE,2BAA2B,OAAO,CAAC,SAAS,MAAM,OAAO,EAAE,CAAC,CAAC,CAAC;YACnG,SAAS;QACX,CAAC;QAED,MAAM,MAAM,GAAG,qBAAqB,CAAC,IAAI,EAAE,OAAO,CAAC,SAAS,EAAE,QAAQ,CAAC,CAAC;QACxE,IAAI,CAAC,MAAM,CAAC,EAAE,EAAE,CAAC;YACf,MAAM,CAAC,IAAI,CAAC,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC;YAC9B,SAAS;QACX,CAAC;QAED,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,SAAS,EAAE,MAAM,CAAC,KAAK,CAAC,CAAC;QAC7C,YAAY,CAAC,GAAG,CAAC,MAAM,CAAC,KAAK,CAAC,IAAc,EAAE,OAAO,CAAC,SAAS,CAAC,CAAC;IACnE,CAAC;IAED,IAAI,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACtB,OAAO,GAAG,CAAC,MAAM,CAAC,CAAC;IACrB,CAAC;IAED,MAAM,KAAK,GAAgB;QACzB,OAAO;QACP,WAAW;QACX,SAAS,CAAC,GAAc;YACtB,OAAO,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;QAC1B,CAAC;QACD,gBAAgB,CAAC,IAAa;YAC5B,MAAM,GAAG,GAAG,YAAY,CAAC,GAAG,CAAC,IAAc,CAAC,CAAC;YAC7C,IAAI,GAAG,KAAK,SAAS;gBAAE,OAAO,SAAS,CAAC;YACxC,OAAO,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;QAC1B,CAAC;QACD,OAAO;YACL,sEAAsE;YACtE,wEAAwE;YACxE,qEAAqE;YACrE,yCAAyC;YACzC,KAAK,MAAM,CAAC,OAAO,EAAE,MAAM,CAAC,IAAI,WAAW,EAAE,CAAC;gBAC5C,IAAI,CAAC;oBACH,MAAM,EAAE,GAAG,QAAQ,CAAC,OAAO,CAAC,CAAC;oBAC7B,IAAI,EAAE,CAAC,OAAO,KAAK,MAAM,CAAC,OAAO,IAAI,EAAE,CAAC,IAAI,KAAK,MAAM,CAAC,IAAI;wBAAE,OAAO,IAAI,CAAC;gBAC5E,CAAC;gBAAC,MAAM,CAAC;oBACP,OAAO,IAAI,CAAC;gBACd,CAAC;YACH,CAAC;YACD,OAAO,KAAK,CAAC;QACf,CAAC;KACF,CAAC;IAEF,OAAO,EAAE,CAAC,KAAK,CAAC,CAAC;AACnB,CAAC;AAED,SAAS,qBAAqB,CAC5B,IAA6B,EAC7B,GAAc,EACd,QAAkB;IAElB,MAAM,MAAM,GAAgB,EAAE,CAAC;IAE/B,OAAO;IACP,MAAM,QAAQ,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC;IAC9B,IAAI,OAAO,QAAQ,KAAK,QAAQ,EAAE,CAAC;QACjC,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,gBAAgB,EAAE,WAAW,GAAG,6BAA6B,CAAC,CAAC,CAAC;QACtF,OAAO,GAAG,CAAC,MAAM,CAAC,CAAC;IACrB,CAAC;IAED,UAAU;IACV,MAAM,OAAO,GAAG,IAAI,CAAC,SAAS,CAAC,CAAC;IAChC,MAAM,UAAU,GAAG,OAAO,OAAO,KAAK,QAAQ,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,mBAAmB,CAAC,GAAG,CAAC,CAAC;IAEpF,kBAAkB;IAClB,MAAM,WAAW,GAAG,IAAI,CAAC,UAAU,CAAC,CAAC;IACrC,MAAM,QAAQ,GAAa,EAAE,CAAC;IAC9B,IAAI,KAAK,CAAC,OAAO,CAAC,WAAW,CAAC,EAAE,CAAC;QAC/B,KAAK,MAAM,CAAC,IAAI,WAAW,EAAE,CAAC;YAC5B,IAAI,OAAO,CAAC,KAAK,QAAQ;gBAAE,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAC9C,CAAC;IACH,CAAC;IAED,SAAS;IACT,MAAM,SAAS,GAAG,IAAI,CAAC,QAAQ,CAAC,CAAC;IACjC,MAAM,MAAM,GAAG,IAAI,GAAG,EAA2B,CAAC;IAElD,IAAI,SAAS,KAAK,SAAS,IAAI,OAAO,SAAS,KAAK,QAAQ,IAAI,SAAS,KAAK,IAAI,EAAE,CAAC;QACnF,KAAK,MAAM,CAAC,SAAS,EAAE,QAAQ,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,SAAoC,CAAC,EAAE,CAAC;YACzF,IAAI,OAAO,QAAQ,KAAK,QAAQ,IAAI,QAAQ,KAAK,IAAI,EAAE,CAAC;gBACtD,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,gBAAgB,EAAE,WAAW,GAAG,YAAY,SAAS,qBAAqB,CAAC,CAAC,CAAC;gBACnG,SAAS;YACX,CAAC;YAED,MAAM,EAAE,GAAG,QAAmC,CAAC;YAC/C,MAAM,WAAW,GAAG,oBAAoB,CAAC,SAAS,EAAE,EAAE,EAAE,GAAG,EAAE,QAAQ,CAAC,CAAC;YACvE,IAAI,CAAC,WAAW,CAAC,EAAE,EAAE,CAAC;gBACpB,MAAM,CAAC,IAAI,CAAC,GAAG,WAAW,CAAC,MAAM,CAAC,CAAC;gBACnC,SAAS;YACX,CAAC;YACD,MAAM,CAAC,GAAG,CAAC,SAAS,EAAE,WAAW,CAAC,KAAK,CAAC,CAAC;QAC3C,CAAC;IACH,CAAC;IAED,+CAA+C;IAC/C,KAAK,MAAM,GAAG,IAAI,QAAQ,EAAE,CAAC;QAC3B,IAAI,GAAG,KAAK,QAAQ,IAAI,GAAG,KAAK,UAAU,IAAI,GAAG,KAAK,QAAQ;YAAE,SAAS;QACzE,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC;YACrB,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,gBAAgB,EAAE,WAAW,GAAG,YAAY,GAAG,+CAA+C,CAAC,CAAC,CAAC;QACzH,CAAC;IACH,CAAC;IAED,WAAW;IACX,IAAI,QAAQ,GAA6B,IAAI,CAAC;IAC9C,MAAM,WAAW,GAAG,IAAI,CAAC,UAAU,CAAC,CAAC;IACrC,IAAI,WAAW,KAAK,SAAS,IAAI,OAAO,WAAW,KAAK,QAAQ,IAAI,WAAW,KAAK,IAAI,EAAE,CAAC;QACzF,MAAM,GAAG,GAAG,WAAsC,CAAC;QACnD,MAAM,WAAW,GAAG,GAAG,CAAC,UAAU,CAAC,CAAC;QACpC,IAAI,KAAK,CAAC,OAAO,CAAC,WAAW,CAAC,EAAE,CAAC;YAC/B,QAAQ,GAAG,EAAE,CAAC;YACd,KAAK,MAAM,CAAC,IAAI,WAAW,EAAE,CAAC;gBAC5B,IAAI,OAAO,CAAC,KAAK,QAAQ,IAAI,CAAC,KAAK,IAAI,EAAE,CAAC;oBACxC,MAAM,IAAI,GAAG,CAA4B,CAAC;oBAC1C,QAAQ,CAAC,IAAI,CAAC;wBACZ,KAAK,EAAE,OAAO,IAAI,CAAC,OAAO,CAAC,KAAK,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC;wBAC5D,IAAI,EAAE,OAAO,IAAI,CAAC,MAAM,CAAC,KAAK,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,EAAE;wBAC1D,EAAE,EAAE,OAAO,IAAI,CAAC,IAAI,CAAC,KAAK,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI;qBACvD,CAAC,CAAC;gBACL,CAAC;YACH,CAAC;QACH,CAAC;IACH,CAAC;IAED,IAAI,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACtB,OAAO,GAAG,CAAC,MAAM,CAAC,CAAC;IACrB,CAAC;IAED,OAAO,EAAE,CAAC;QACR,IAAI,EAAE,OAAO,CAAC,QAAQ,CAAC;QACvB,OAAO,EAAE,UAAU;QACnB,QAAQ;QACR,MAAM;QACN,QAAQ;KACT,CAAC,CAAC;AACL,CAAC;AAED,SAAS,oBAAoB,CAC3B,IAAY,EACZ,EAA2B,EAC3B,SAAoB,EACpB,QAAkB;IAElB,MAAM,MAAM,GAAgB,EAAE,CAAC;IAE/B,MAAM,OAAO,GAAG,EAAE,CAAC,MAAM,CAAC,CAAC;IAC3B,IAAI,OAAO,OAAO,KAAK,QAAQ,IAAI,CAAC,iBAAiB,CAAC,QAAQ,CAAC,OAAoB,CAAC,EAAE,CAAC;QACrF,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,gBAAgB,EACpC,WAAW,SAAS,YAAY,IAAI,uBAAuB,MAAM,CAAC,OAAO,CAAC,aAAa,iBAAiB,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC;QAC1H,OAAO,GAAG,CAAC,MAAM,CAAC,CAAC;IACrB,CAAC;IACD,MAAM,SAAS,GAAG,OAAoB,CAAC;IAEvC,MAAM,KAAK,GAAG,EAAE,CAAC,OAAO,CAAC,KAAK,IAAI,CAAC;IACnC,MAAM,IAAI,GAAG,OAAO,EAAE,CAAC,MAAM,CAAC,KAAK,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;IAChE,MAAM,MAAM,GAAG,OAAO,EAAE,CAAC,QAAQ,CAAC,KAAK,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,KAAK,MAAM,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;IAE9G,oFAAoF;IACpF,IAAI,MAAM,GAAmB,IAAI,CAAC;IAClC,MAAM,WAAW,GAAG,SAAS,KAAK,KAAK,IAAI,CAAC,SAAS,KAAK,MAAM,IAAI,EAAE,CAAC,WAAW,CAAC,KAAK,KAAK,CAAC,CAAC;IAC/F,IAAI,WAAW,EAAE,CAAC;QAChB,MAAM,SAAS,GAAG,EAAE,CAAC,QAAQ,CAAC,CAAC;QAC/B,IAAI,OAAO,SAAS,KAAK,QAAQ,EAAE,CAAC;YAClC,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,gBAAgB,EAAE,WAAW,SAAS,YAAY,IAAI,iDAAiD,CAAC,CAAC,CAAC;QAClI,CAAC;aAAM,CAAC;YACN,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,GAAG,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,EAAE,CAAC;gBAC5C,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,gBAAgB,EAAE,WAAW,SAAS,YAAY,IAAI,8BAA8B,SAAS,GAAG,CAAC,CAAC,CAAC;YAC3H,CAAC;YACD,MAAM,GAAG,OAAO,CAAC,SAAS,CAAC,CAAC;QAC9B,CAAC;IACH,CAAC;IAED,cAAc;IACd,IAAI,MAAM,GAAoB,IAAI,CAAC;IACnC,IAAI,SAAS,KAAK,MAAM,EAAE,CAAC;QACzB,MAAM,SAAS,GAAG,EAAE,CAAC,QAAQ,CAAC,CAAC;QAC/B,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,SAAS,CAAC,IAAI,SAAS,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACxD,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,gBAAgB,EAAE,WAAW,SAAS,YAAY,IAAI,wCAAwC,CAAC,CAAC,CAAC;QACzH,CAAC;aAAM,CAAC;YACN,MAAM,GAAG,SAAS,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;QACjC,CAAC;IACH,CAAC;IAED,iBAAiB;IACjB,IAAI,QAAQ,GAAqB,IAAI,CAAC;IACtC,IAAI,SAAS,KAAK,MAAM,EAAE,CAAC;QACzB,MAAM,WAAW,GAAG,EAAE,CAAC,WAAW,CAAC,CAAC;QACpC,IAAI,OAAO,WAAW,KAAK,QAAQ,IAAI,iBAAiB,CAAC,QAAQ,CAAC,WAAwB,CAAC,EAAE,CAAC;YAC5F,QAAQ,GAAG,WAAwB,CAAC;QACtC,CAAC;QACD,4DAA4D;IAC9D,CAAC;IAED,MAAM,YAAY,GAAG,EAAE,CAAC,SAAS,CAAC,IAAI,IAAI,CAAC;IAE3C,0EAA0E;IAC1E,IAAI,cAAc,GAAqB,IAAI,CAAC;IAC5C,IAAI,SAAS,GAA4B,IAAI,CAAC;IAC9C,IAAI,gBAAgB,GAAqB,IAAI,CAAC;IAE9C,IAAI,SAAS,KAAK,MAAM,EAAE,CAAC;QACzB,MAAM,KAAK,GAAG,EAAE,CAAC,iBAAiB,CAAC,CAAC;QACpC,IAAI,KAAK,KAAK,SAAS,EAAE,CAAC;YACxB,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,EAAE,CAAC;gBACxB,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,gBAAgB,EACpC,WAAW,SAAS,YAAY,IAAI,kCAAkC,MAAM,CAAC,KAAK,CAAC,KAAK;oBACxF,4DAA4D,CAAC,CAAC,CAAC;YACnE,CAAC;iBAAM,CAAC;gBACN,cAAc,GAAG,KAAK,CAAC;YACzB,CAAC;QACH,CAAC;QAED,MAAM,KAAK,GAAG,EAAE,CAAC,YAAY,CAAC,CAAC;QAC/B,IAAI,KAAK,KAAK,SAAS,EAAE,CAAC;YACxB,IAAI,KAAK,KAAK,MAAM,IAAI,KAAK,KAAK,OAAO,EAAE,CAAC;gBAC1C,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,gBAAgB,EACpC,WAAW,SAAS,YAAY,IAAI,6BAA6B,MAAM,CAAC,KAAK,CAAC,KAAK;oBACnF,oBAAoB,CAAC,CAAC,CAAC;YAC3B,CAAC;iBAAM,CAAC;gBACN,SAAS,GAAG,KAAK,CAAC;YACpB,CAAC;QACH,CAAC;aAAM,IAAI,cAAc,KAAK,IAAI,EAAE,CAAC;YACnC,sEAAsE;YACtE,gEAAgE;YAChE,SAAS,GAAG,MAAM,CAAC;QACrB,CAAC;QAED,MAAM,KAAK,GAAG,EAAE,CAAC,mBAAmB,CAAC,CAAC;QACtC,IAAI,KAAK,KAAK,SAAS,EAAE,CAAC;YACxB,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,EAAE,CAAC;gBACxB,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,gBAAgB,EACpC,WAAW,SAAS,YAAY,IAAI,oCAAoC,MAAM,CAAC,KAAK,CAAC,KAAK;oBAC1F,4DAA4D,CAAC,CAAC,CAAC;YACnE,CAAC;iBAAM,CAAC;gBACN,gBAAgB,GAAG,KAAK,CAAC;YAC3B,CAAC;QACH,CAAC;QAED,sEAAsE;QACtE,sEAAsE;QACtE,iCAAiC;QACjC,IAAI,cAAc,KAAK,IAAI,IAAI,gBAAgB,KAAK,IAAI,EAAE,CAAC;YACzD,IAAI,gBAAgB,CAAC,gBAAgB,EAAE,cAAc,CAAC,GAAG,CAAC,EAAE,CAAC;gBAC3D,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,gBAAgB,EACpC,WAAW,SAAS,YAAY,IAAI,4BAA4B,gBAAgB,eAAe;oBAC/F,oBAAoB,cAAc,+CAA+C,CAAC,CAAC,CAAC;YACxF,CAAC;QACH,CAAC;IACH,CAAC;SAAM,CAAC;QACN,mDAAmD;QACnD,KAAK,MAAM,CAAC,IAAI,CAAC,iBAAiB,EAAE,YAAY,EAAE,mBAAmB,CAAC,EAAE,CAAC;YACvE,IAAI,EAAE,CAAC,CAAC,CAAC,KAAK,SAAS,EAAE,CAAC;gBACxB,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,gBAAgB,EACpC,WAAW,SAAS,YAAY,IAAI,cAAc,SAAS,qBAAqB,CAAC,+BAA+B,CAAC,CAAC,CAAC;YACvH,CAAC;QACH,CAAC;IACH,CAAC;IAED,IAAI,MAAM,CAAC,MAAM,GAAG,CAAC;QAAE,OAAO,GAAG,CAAC,MAAM,CAAC,CAAC;IAE1C,OAAO,EAAE,CAAC;QACR,IAAI;QACJ,IAAI,EAAE,SAAS;QACf,KAAK;QACL,IAAI;QACJ,MAAM;QACN,MAAM;QACN,MAAM;QACN,YAAY;QACZ,QAAQ;QACR,cAAc;QACd,SAAS;QACT,gBAAgB;KACjB,CAAC,CAAC;AACL,CAAC;AAED,SAAS,mBAAmB,CAAC,GAAc;IACzC,MAAM,KAAK,GAAG,WAAW,CAAC,IAAI,CAAC,GAAa,CAAC,CAAC;IAC9C,OAAO,KAAK,CAAC,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAE,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AAC7C,CAAC"}
1
+ {"version":3,"file":"loader.js","sourceRoot":"","sources":["../../src/schema/loader.ts"],"names":[],"mappings":"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"}