@jasonbelmonti/markdown-engine 0.1.0 → 1.0.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 (99) hide show
  1. package/CHANGELOG.md +30 -4
  2. package/README.md +87 -8
  3. package/dist/api/annotation-target-runtime.d.ts +30 -0
  4. package/dist/api/annotation-target-runtime.d.ts.map +1 -0
  5. package/dist/api/annotation-target-runtime.js +161 -0
  6. package/dist/api/annotation-target-runtime.js.map +1 -0
  7. package/dist/api/annotation-target-validation.d.ts +4 -0
  8. package/dist/api/annotation-target-validation.d.ts.map +1 -0
  9. package/dist/api/annotation-target-validation.js +414 -0
  10. package/dist/api/annotation-target-validation.js.map +1 -0
  11. package/dist/api/annotations.d.ts +4 -0
  12. package/dist/api/annotations.d.ts.map +1 -0
  13. package/dist/api/annotations.js +16 -0
  14. package/dist/api/annotations.js.map +1 -0
  15. package/dist/api/compatibility.d.ts +15 -0
  16. package/dist/api/compatibility.d.ts.map +1 -0
  17. package/dist/api/compatibility.js +57 -0
  18. package/dist/api/compatibility.js.map +1 -0
  19. package/dist/api/contracts.d.ts +3 -1
  20. package/dist/api/contracts.d.ts.map +1 -1
  21. package/dist/api/contracts.js +2 -0
  22. package/dist/api/contracts.js.map +1 -1
  23. package/dist/api/document-queries.d.ts +3 -0
  24. package/dist/api/document-queries.d.ts.map +1 -0
  25. package/dist/api/document-queries.js +89 -0
  26. package/dist/api/document-queries.js.map +1 -0
  27. package/dist/api/document.d.ts +135 -2
  28. package/dist/api/document.d.ts.map +1 -1
  29. package/dist/api/normalize.d.ts +2 -1
  30. package/dist/api/normalize.d.ts.map +1 -1
  31. package/dist/api/normalize.js.map +1 -1
  32. package/dist/api/serialize.d.ts +5 -1
  33. package/dist/api/serialize.d.ts.map +1 -1
  34. package/dist/api/serialize.js +5 -0
  35. package/dist/api/serialize.js.map +1 -1
  36. package/dist/cli/args.d.ts +14 -0
  37. package/dist/cli/args.d.ts.map +1 -0
  38. package/dist/cli/args.js +101 -0
  39. package/dist/cli/args.js.map +1 -0
  40. package/dist/cli/document-version.d.ts +14 -0
  41. package/dist/cli/document-version.d.ts.map +1 -0
  42. package/dist/cli/document-version.js +32 -0
  43. package/dist/cli/document-version.js.map +1 -0
  44. package/dist/cli/files.d.ts +5 -0
  45. package/dist/cli/files.d.ts.map +1 -0
  46. package/dist/cli/files.js +30 -0
  47. package/dist/cli/files.js.map +1 -0
  48. package/dist/cli/index.d.ts +3 -0
  49. package/dist/cli/index.d.ts.map +1 -0
  50. package/dist/cli/index.js +9 -0
  51. package/dist/cli/index.js.map +1 -0
  52. package/dist/cli/normalize-markdown.d.ts +8 -0
  53. package/dist/cli/normalize-markdown.d.ts.map +1 -0
  54. package/dist/cli/normalize-markdown.js +10 -0
  55. package/dist/cli/normalize-markdown.js.map +1 -0
  56. package/dist/cli/run.d.ts +11 -0
  57. package/dist/cli/run.d.ts.map +1 -0
  58. package/dist/cli/run.js +37 -0
  59. package/dist/cli/run.js.map +1 -0
  60. package/dist/ir/document-derived-views.d.ts +4 -0
  61. package/dist/ir/document-derived-views.d.ts.map +1 -0
  62. package/dist/ir/document-derived-views.js +25 -0
  63. package/dist/ir/document-derived-views.js.map +1 -0
  64. package/dist/ir/document-link-views.d.ts +3 -0
  65. package/dist/ir/document-link-views.d.ts.map +1 -0
  66. package/dist/ir/document-link-views.js +24 -0
  67. package/dist/ir/document-link-views.js.map +1 -0
  68. package/dist/ir/document-list-views.d.ts +3 -0
  69. package/dist/ir/document-list-views.d.ts.map +1 -0
  70. package/dist/ir/document-list-views.js +38 -0
  71. package/dist/ir/document-list-views.js.map +1 -0
  72. package/dist/ir/document-node-walk.d.ts +5 -0
  73. package/dist/ir/document-node-walk.d.ts.map +1 -0
  74. package/dist/ir/document-node-walk.js +16 -0
  75. package/dist/ir/document-node-walk.js.map +1 -0
  76. package/dist/ir/document-sections.d.ts +3 -0
  77. package/dist/ir/document-sections.d.ts.map +1 -0
  78. package/dist/ir/document-sections.js +57 -0
  79. package/dist/ir/document-sections.js.map +1 -0
  80. package/dist/ir/document-table-views.d.ts +3 -0
  81. package/dist/ir/document-table-views.d.ts.map +1 -0
  82. package/dist/ir/document-table-views.js +31 -0
  83. package/dist/ir/document-table-views.js.map +1 -0
  84. package/dist/ir/document-targets.d.ts +10 -0
  85. package/dist/ir/document-targets.d.ts.map +1 -0
  86. package/dist/ir/document-targets.js +44 -0
  87. package/dist/ir/document-targets.js.map +1 -0
  88. package/dist/ir/document-text-spans.d.ts +3 -0
  89. package/dist/ir/document-text-spans.d.ts.map +1 -0
  90. package/dist/ir/document-text-spans.js +18 -0
  91. package/dist/ir/document-text-spans.js.map +1 -0
  92. package/dist/ir/document.d.ts.map +1 -1
  93. package/dist/ir/document.js +12 -8
  94. package/dist/ir/document.js.map +1 -1
  95. package/dist/ir/source-ranges.d.ts +8 -0
  96. package/dist/ir/source-ranges.d.ts.map +1 -0
  97. package/dist/ir/source-ranges.js +21 -0
  98. package/dist/ir/source-ranges.js.map +1 -0
  99. package/package.json +20 -2
@@ -0,0 +1,414 @@
1
+ import { documentQueries } from "./document-queries.js";
2
+ import { arrayLength, FUNCTION_PLACEHOLDER, isArray, isPlainObject, MAX_NORMALIZED_ARRAY_LENGTH, normalizeRuntimeValue, ownDataProperty, ownRuntimeProperty, UNAVAILABLE_PLACEHOLDER, } from "./annotation-target-runtime.js";
3
+ export function annotationTargetDiagnostics(document, annotations) {
4
+ const validTargetIds = documentTargetIds(document);
5
+ const documentSourceRange = document.sourceRange !== undefined
6
+ ? cloneSourceRangeCandidate(document.sourceRange)
7
+ : undefined;
8
+ return annotations
9
+ .flatMap((annotation, order) => diagnosticsForAnnotation(annotation.target, validTargetIds, documentSourceRange, order))
10
+ .sort(compareSortableDiagnostics)
11
+ .map(({ diagnostic }) => diagnostic);
12
+ }
13
+ function documentTargetIds(document) {
14
+ return new Set([
15
+ ...(document.target !== undefined ? [document.target.id] : []),
16
+ ...(document.sections ?? []).map((section) => section.target.id),
17
+ ...documentQueries
18
+ .nodes(document)
19
+ .map((node) => node.target?.id)
20
+ .filter((id) => id !== undefined),
21
+ ]);
22
+ }
23
+ function diagnosticsForAnnotation(target, validTargetIds, documentSourceRange, order) {
24
+ if (!isAnnotationTargetCandidate(target)) {
25
+ return [
26
+ sortableDiagnostic({
27
+ code: "annotation.target.invalidKind",
28
+ message: "Annotation target kind must be 'node' or 'source'.",
29
+ severity: "error",
30
+ target,
31
+ }, order),
32
+ ];
33
+ }
34
+ const kind = annotationTargetKind(target);
35
+ if (kind === "node") {
36
+ return nodeTargetDiagnostics(target, validTargetIds, documentSourceRange, order);
37
+ }
38
+ if (kind === "source") {
39
+ return sourceTargetDiagnostics(target, documentSourceRange, order);
40
+ }
41
+ return [
42
+ sortableDiagnostic({
43
+ code: "annotation.target.invalidKind",
44
+ message: "Annotation target kind must be 'node' or 'source'.",
45
+ severity: "error",
46
+ target,
47
+ }, order),
48
+ ];
49
+ }
50
+ function nodeTargetDiagnostics(target, validTargetIds, documentSourceRange, order) {
51
+ const nodeTarget = cloneEngineTargetCandidate(annotationNodeTarget(target));
52
+ if (nodeTarget === undefined) {
53
+ return [
54
+ sortableDiagnostic({
55
+ code: "annotation.target.invalidKind",
56
+ message: "Annotation node target must reference an engine node target.",
57
+ severity: "error",
58
+ target,
59
+ }, order),
60
+ ];
61
+ }
62
+ const sourceRangeDiagnostic = nodeTargetSourceRangeDiagnostic(target, nodeTarget, documentSourceRange, order);
63
+ if (sourceRangeDiagnostic !== undefined) {
64
+ return [sourceRangeDiagnostic];
65
+ }
66
+ if (validTargetIds.has(nodeTarget.id)) {
67
+ return [];
68
+ }
69
+ return [
70
+ sortableDiagnostic({
71
+ code: "annotation.target.unknown",
72
+ message: `Annotation target '${nodeTarget.id}' does not exist in the document.`,
73
+ severity: "error",
74
+ ...(nodeTarget.sourceRange !== undefined
75
+ ? { sourceRange: cloneSourceRange(nodeTarget.sourceRange) }
76
+ : {}),
77
+ target,
78
+ }, order),
79
+ ];
80
+ }
81
+ function nodeTargetSourceRangeDiagnostic(target, nodeTarget, documentSourceRange, order) {
82
+ if (nodeTarget.sourceRange === undefined) {
83
+ return undefined;
84
+ }
85
+ if (sourceRangeIsInvalid(nodeTarget.sourceRange)) {
86
+ return sortableDiagnostic({
87
+ code: "annotation.target.invalidRange",
88
+ message: "Annotation node target source range ends before it starts.",
89
+ severity: "error",
90
+ sourceRange: cloneSourceRange(nodeTarget.sourceRange),
91
+ target,
92
+ }, order);
93
+ }
94
+ if (documentSourceRange !== undefined &&
95
+ !sourceRangeContains(documentSourceRange, nodeTarget.sourceRange)) {
96
+ return sortableDiagnostic({
97
+ code: "annotation.target.outOfBounds",
98
+ message: "Annotation node target source range must be contained by the document source range.",
99
+ severity: "error",
100
+ sourceRange: cloneSourceRange(nodeTarget.sourceRange),
101
+ target,
102
+ }, order);
103
+ }
104
+ return undefined;
105
+ }
106
+ function sourceTargetDiagnostics(target, documentSourceRange, order) {
107
+ const range = cloneSourceRangeCandidate(annotationSourceRange(target));
108
+ if (range === undefined) {
109
+ return [
110
+ sortableDiagnostic({
111
+ code: "annotation.target.invalidRange",
112
+ message: "Annotation source target range must include start and end positions.",
113
+ severity: "error",
114
+ target,
115
+ }, order),
116
+ ];
117
+ }
118
+ if (sourceRangeIsInvalid(range)) {
119
+ return [
120
+ sortableDiagnostic({
121
+ code: "annotation.target.invalidRange",
122
+ message: "Annotation source target range ends before it starts.",
123
+ severity: "error",
124
+ sourceRange: cloneSourceRange(range),
125
+ target,
126
+ }, order),
127
+ ];
128
+ }
129
+ if (documentSourceRange !== undefined &&
130
+ !sourceRangeContains(documentSourceRange, range)) {
131
+ return [
132
+ sortableDiagnostic({
133
+ code: "annotation.target.outOfBounds",
134
+ message: "Annotation source target range must be contained by the document source range.",
135
+ severity: "error",
136
+ sourceRange: cloneSourceRange(range),
137
+ target,
138
+ }, order),
139
+ ];
140
+ }
141
+ return [];
142
+ }
143
+ function sortableDiagnostic(diagnostic, order) {
144
+ return {
145
+ diagnostic: {
146
+ ...diagnostic,
147
+ target: cloneDiagnosticTarget(diagnostic.target),
148
+ },
149
+ order,
150
+ };
151
+ }
152
+ function compareSortableDiagnostics(left, right) {
153
+ return (compareOptionalSourceRange(left.diagnostic.sourceRange, right.diagnostic.sourceRange) ||
154
+ compareStrings(left.diagnostic.code, right.diagnostic.code) ||
155
+ compareStrings(left.diagnostic.message, right.diagnostic.message) ||
156
+ compareStrings(targetSortKey(left.diagnostic.target), targetSortKey(right.diagnostic.target)) ||
157
+ left.order - right.order);
158
+ }
159
+ function compareOptionalSourceRange(left, right) {
160
+ if (left === undefined && right === undefined) {
161
+ return 0;
162
+ }
163
+ if (left === undefined) {
164
+ return 1;
165
+ }
166
+ if (right === undefined) {
167
+ return -1;
168
+ }
169
+ return (compareSourcePositions(left.start, right.start) ||
170
+ compareSourcePositions(left.end, right.end));
171
+ }
172
+ function compareSourcePositions(left, right) {
173
+ return (left.line - right.line ||
174
+ left.column - right.column ||
175
+ compareOptionalOffsets(left.offset, right.offset));
176
+ }
177
+ function compareOptionalOffsets(left, right) {
178
+ if (left === undefined && right === undefined) {
179
+ return 0;
180
+ }
181
+ if (left === undefined) {
182
+ return 1;
183
+ }
184
+ if (right === undefined) {
185
+ return -1;
186
+ }
187
+ return left - right;
188
+ }
189
+ function compareStrings(left, right) {
190
+ if (left < right) {
191
+ return -1;
192
+ }
193
+ if (left > right) {
194
+ return 1;
195
+ }
196
+ return 0;
197
+ }
198
+ function targetSortKey(target) {
199
+ try {
200
+ const serialized = JSON.stringify(normalizeRuntimeValue(target));
201
+ return serialized ?? String(target);
202
+ }
203
+ catch {
204
+ if (typeof target === "function") {
205
+ return FUNCTION_PLACEHOLDER;
206
+ }
207
+ if (typeof target === "object" && target !== null) {
208
+ return UNAVAILABLE_PLACEHOLDER;
209
+ }
210
+ return String(target);
211
+ }
212
+ }
213
+ function serializableTarget(target) {
214
+ return normalizeRuntimeValue(target);
215
+ }
216
+ function annotationTargetKind(target) {
217
+ return ownDataProperty(target, "kind");
218
+ }
219
+ function annotationNodeTarget(target) {
220
+ return ownDataProperty(target, "nodeTarget");
221
+ }
222
+ function annotationSourceRange(target) {
223
+ return ownDataProperty(target, "sourceRange");
224
+ }
225
+ export function cloneAnnotationTarget(target) {
226
+ if (isAnnotationTargetCandidate(target)) {
227
+ const clonedTarget = cloneKnownAnnotationTarget(target);
228
+ if (clonedTarget !== undefined) {
229
+ return clonedTarget;
230
+ }
231
+ }
232
+ return serializableTarget(target);
233
+ }
234
+ function cloneDiagnosticTarget(target) {
235
+ if (isAnnotationTargetCandidate(target)) {
236
+ const clonedTarget = cloneKnownAnnotationTarget(target);
237
+ if (clonedTarget !== undefined) {
238
+ return clonedTarget;
239
+ }
240
+ }
241
+ return serializableTarget(target);
242
+ }
243
+ function cloneKnownAnnotationTarget(target) {
244
+ const kind = annotationTargetKind(target);
245
+ if (kind === "node") {
246
+ const nodeTarget = cloneEngineTargetCandidate(annotationNodeTarget(target));
247
+ if (nodeTarget === undefined) {
248
+ return undefined;
249
+ }
250
+ return {
251
+ kind: "node",
252
+ nodeTarget,
253
+ };
254
+ }
255
+ if (kind === "source") {
256
+ const sourceRange = cloneSourceRangeCandidate(annotationSourceRange(target));
257
+ if (sourceRange === undefined) {
258
+ return undefined;
259
+ }
260
+ return {
261
+ kind: "source",
262
+ sourceRange,
263
+ };
264
+ }
265
+ return undefined;
266
+ }
267
+ function cloneEngineTargetCandidate(target) {
268
+ if (!isPlainObject(target)) {
269
+ return undefined;
270
+ }
271
+ const kind = ownDataProperty(target, "kind");
272
+ const id = ownDataProperty(target, "id");
273
+ const pathProperty = ownRuntimeProperty(target, "path");
274
+ const nodeTypeProperty = ownRuntimeProperty(target, "nodeType");
275
+ const sourceRangeProperty = ownRuntimeProperty(target, "sourceRange");
276
+ const path = optionalDataPropertyValue(pathProperty);
277
+ const nodeType = optionalDataPropertyValue(nodeTypeProperty);
278
+ const sourceRange = optionalDataPropertyValue(sourceRangeProperty);
279
+ if (kind !== "node" || typeof id !== "string") {
280
+ return undefined;
281
+ }
282
+ const pathClone = path !== undefined ? cloneTargetPathCandidate(path) : undefined;
283
+ const clonedSourceRange = sourceRange !== undefined ? cloneSourceRangeCandidate(sourceRange) : undefined;
284
+ if (pathProperty.kind === "accessor" ||
285
+ optionalDataPropertyIsInvalid(nodeTypeProperty) ||
286
+ optionalDataPropertyIsInvalid(sourceRangeProperty) ||
287
+ pathClone?.kind === "invalid" ||
288
+ (nodeType !== undefined && typeof nodeType !== "string") ||
289
+ (sourceRange !== undefined && clonedSourceRange === undefined)) {
290
+ return undefined;
291
+ }
292
+ return {
293
+ kind,
294
+ id,
295
+ ...(pathClone?.kind === "cloned" ? { path: pathClone.path } : {}),
296
+ ...(typeof nodeType === "string" ? { nodeType } : {}),
297
+ ...(clonedSourceRange !== undefined ? { sourceRange: clonedSourceRange } : {}),
298
+ };
299
+ }
300
+ function cloneTargetPathCandidate(path) {
301
+ if (!isArray(path)) {
302
+ return { kind: "invalid" };
303
+ }
304
+ const length = arrayLength(path);
305
+ if (length === undefined) {
306
+ return { kind: "unavailable" };
307
+ }
308
+ if (length > MAX_NORMALIZED_ARRAY_LENGTH) {
309
+ return { kind: "unavailable" };
310
+ }
311
+ const clonedPath = [];
312
+ for (let index = 0; index < length; index += 1) {
313
+ const segmentProperty = ownRuntimeProperty(path, String(index));
314
+ if (segmentProperty.kind === "unavailable") {
315
+ return { kind: "unavailable" };
316
+ }
317
+ if (segmentProperty.kind !== "data") {
318
+ return { kind: "invalid" };
319
+ }
320
+ if (!isNonNegativeInteger(segmentProperty.value)) {
321
+ return { kind: "invalid" };
322
+ }
323
+ clonedPath.push(segmentProperty.value);
324
+ }
325
+ return { kind: "cloned", path: clonedPath };
326
+ }
327
+ function cloneSourceRangeCandidate(range) {
328
+ if (!isPlainObject(range)) {
329
+ return undefined;
330
+ }
331
+ const start = cloneSourcePositionCandidate(ownDataProperty(range, "start"));
332
+ const end = cloneSourcePositionCandidate(ownDataProperty(range, "end"));
333
+ if (start === undefined || end === undefined) {
334
+ return undefined;
335
+ }
336
+ return { start, end };
337
+ }
338
+ function cloneSourceRange(sourceRange) {
339
+ return {
340
+ start: cloneSourcePosition(sourceRange.start),
341
+ end: cloneSourcePosition(sourceRange.end),
342
+ };
343
+ }
344
+ function cloneSourcePosition(position) {
345
+ return {
346
+ line: position.line,
347
+ column: position.column,
348
+ ...(position.offset !== undefined ? { offset: position.offset } : {}),
349
+ };
350
+ }
351
+ function cloneSourcePositionCandidate(position) {
352
+ if (!isPlainObject(position)) {
353
+ return undefined;
354
+ }
355
+ const line = ownDataProperty(position, "line");
356
+ const column = ownDataProperty(position, "column");
357
+ const offsetProperty = ownRuntimeProperty(position, "offset");
358
+ const offset = optionalDataPropertyValue(offsetProperty);
359
+ if (!isPositiveInteger(line) ||
360
+ !isPositiveInteger(column) ||
361
+ optionalDataPropertyIsInvalid(offsetProperty) ||
362
+ (offset !== undefined && !isNonNegativeInteger(offset))) {
363
+ return undefined;
364
+ }
365
+ return {
366
+ line,
367
+ column,
368
+ ...(offset !== undefined ? { offset } : {}),
369
+ };
370
+ }
371
+ function isAnnotationTargetCandidate(target) {
372
+ return typeof target === "object" && target !== null && !isArray(target);
373
+ }
374
+ function optionalDataPropertyValue(property) {
375
+ return property.kind === "data" ? property.value : undefined;
376
+ }
377
+ function optionalDataPropertyIsInvalid(property) {
378
+ return property.kind === "accessor" || property.kind === "unavailable";
379
+ }
380
+ function isPositiveInteger(value) {
381
+ return typeof value === "number" && Number.isInteger(value) && value >= 1;
382
+ }
383
+ function isNonNegativeInteger(value) {
384
+ return typeof value === "number" && Number.isInteger(value) && value >= 0;
385
+ }
386
+ function sourceRangeIsInvalid(range) {
387
+ return (compareLineAndColumn(range.end, range.start) < 0 ||
388
+ sourceOffsetsAreInvalid(range));
389
+ }
390
+ function sourceRangeContains(container, target) {
391
+ return (compareLineAndColumn(container.start, target.start) <= 0 &&
392
+ compareLineAndColumn(target.end, container.end) <= 0 &&
393
+ sourceOffsetsAreContained(container, target));
394
+ }
395
+ function compareLineAndColumn(left, right) {
396
+ return left.line - right.line || left.column - right.column;
397
+ }
398
+ function sourceOffsetsAreInvalid(range) {
399
+ return (range.start.offset !== undefined &&
400
+ range.end.offset !== undefined &&
401
+ range.end.offset < range.start.offset);
402
+ }
403
+ function sourceOffsetsAreContained(container, target) {
404
+ return (sourceOffsetIsContained(container, target.start.offset) &&
405
+ sourceOffsetIsContained(container, target.end.offset));
406
+ }
407
+ function sourceOffsetIsContained(container, offset) {
408
+ if (offset === undefined) {
409
+ return true;
410
+ }
411
+ return ((container.start.offset === undefined || container.start.offset <= offset) &&
412
+ (container.end.offset === undefined || offset <= container.end.offset));
413
+ }
414
+ //# sourceMappingURL=annotation-target-validation.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"annotation-target-validation.js","sourceRoot":"","sources":["../../src/api/annotation-target-validation.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,4 @@
1
+ import type { AnnotationValidationResult, EngineAnnotation, EngineDocument } from "./document.js";
2
+ export type ValidateAnnotationsFunction = (document: EngineDocument, annotations: readonly EngineAnnotation[]) => AnnotationValidationResult;
3
+ export declare const validateAnnotations: ValidateAnnotationsFunction;
4
+ //# sourceMappingURL=annotations.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"annotations.d.ts","sourceRoot":"","sources":["../../src/api/annotations.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,0BAA0B,EAC1B,gBAAgB,EAChB,cAAc,EACf,MAAM,eAAe,CAAC;AAMvB,MAAM,MAAM,2BAA2B,GAAG,CACxC,QAAQ,EAAE,cAAc,EACxB,WAAW,EAAE,SAAS,gBAAgB,EAAE,KACrC,0BAA0B,CAAC;AAEhC,eAAO,MAAM,mBAAmB,EAAE,2BAWjC,CAAC"}
@@ -0,0 +1,16 @@
1
+ import { annotationTargetDiagnostics, cloneAnnotationTarget, } from "./annotation-target-validation.js";
2
+ export const validateAnnotations = (document, annotations) => {
3
+ const diagnostics = annotationTargetDiagnostics(document, annotations);
4
+ return {
5
+ valid: diagnostics.length === 0,
6
+ annotations: annotations.map((annotation) => cloneAnnotation(annotation)),
7
+ diagnostics,
8
+ };
9
+ };
10
+ function cloneAnnotation(annotation) {
11
+ return {
12
+ ...annotation,
13
+ target: cloneAnnotationTarget(annotation.target),
14
+ };
15
+ }
16
+ //# sourceMappingURL=annotations.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"annotations.js","sourceRoot":"","sources":["../../src/api/annotations.ts"],"names":[],"mappings":"AAKA,OAAO,EACL,2BAA2B,EAC3B,qBAAqB,GACtB,MAAM,mCAAmC,CAAC;AAO3C,MAAM,CAAC,MAAM,mBAAmB,GAAgC,CAC9D,QAAQ,EACR,WAAW,EACX,EAAE;IACF,MAAM,WAAW,GAAG,2BAA2B,CAAC,QAAQ,EAAE,WAAW,CAAC,CAAC;IAEvE,OAAO;QACL,KAAK,EAAE,WAAW,CAAC,MAAM,KAAK,CAAC;QAC/B,WAAW,EAAE,WAAW,CAAC,GAAG,CAAC,CAAC,UAAU,EAAE,EAAE,CAAC,eAAe,CAAC,UAAU,CAAC,CAAC;QACzE,WAAW;KACZ,CAAC;AACJ,CAAC,CAAC;AAEF,SAAS,eAAe,CACtB,UAAsC;IAEtC,OAAO;QACL,GAAG,UAAU;QACb,MAAM,EAAE,qBAAqB,CAAC,UAAU,CAAC,MAAM,CAAC;KACjD,CAAC;AACJ,CAAC"}
@@ -0,0 +1,15 @@
1
+ import type { EngineDocumentVersion } from "./document.js";
2
+ export type EngineCompatibilityMode = "default" | "legacy-0.1";
3
+ export declare class EngineCompatibilityError extends Error {
4
+ readonly code = "engine.compatibility.versionMismatch";
5
+ readonly requestedMode: EngineCompatibilityMode;
6
+ readonly expectedVersion: EngineDocumentVersion;
7
+ readonly actualVersion: string;
8
+ constructor(details: {
9
+ requestedMode: EngineCompatibilityMode;
10
+ expectedVersion: EngineDocumentVersion;
11
+ actualVersion: string;
12
+ });
13
+ }
14
+ export declare function assertCompatibleResultVersion(result: unknown, requestedMode: EngineCompatibilityMode): void;
15
+ //# sourceMappingURL=compatibility.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"compatibility.d.ts","sourceRoot":"","sources":["../../src/api/compatibility.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,eAAe,CAAC;AAK3D,MAAM,MAAM,uBAAuB,GAAG,SAAS,GAAG,YAAY,CAAC;AAE/D,qBAAa,wBAAyB,SAAQ,KAAK;IACjD,QAAQ,CAAC,IAAI,0CAA0C;IACvD,QAAQ,CAAC,aAAa,EAAE,uBAAuB,CAAC;IAChD,QAAQ,CAAC,eAAe,EAAE,qBAAqB,CAAC;IAChD,QAAQ,CAAC,aAAa,EAAE,MAAM,CAAC;gBAEnB,OAAO,EAAE;QACnB,aAAa,EAAE,uBAAuB,CAAC;QACvC,eAAe,EAAE,qBAAqB,CAAC;QACvC,aAAa,EAAE,MAAM,CAAC;KACvB;CASF;AAOD,wBAAgB,6BAA6B,CAC3C,MAAM,EAAE,OAAO,EACf,aAAa,EAAE,uBAAuB,GACrC,IAAI,CAgBN"}
@@ -0,0 +1,57 @@
1
+ import { isPlainRecord } from "../internal/plain-record.js";
2
+ export class EngineCompatibilityError extends Error {
3
+ code = "engine.compatibility.versionMismatch";
4
+ requestedMode;
5
+ expectedVersion;
6
+ actualVersion;
7
+ constructor(details) {
8
+ super(`Compatibility mode "${details.requestedMode}" expects document version "${details.expectedVersion}" but received "${details.actualVersion}".`);
9
+ this.name = "EngineCompatibilityError";
10
+ this.requestedMode = details.requestedMode;
11
+ this.expectedVersion = details.expectedVersion;
12
+ this.actualVersion = details.actualVersion;
13
+ }
14
+ }
15
+ const expectedVersionByCompatibilityMode = {
16
+ default: "1.0.0",
17
+ "legacy-0.1": "0.0.0",
18
+ };
19
+ export function assertCompatibleResultVersion(result, requestedMode) {
20
+ const actualVersion = documentVersionFromPublicResult(result);
21
+ if (actualVersion === undefined) {
22
+ return;
23
+ }
24
+ const expectedVersion = expectedVersionByCompatibilityMode[requestedMode];
25
+ if (actualVersion !== expectedVersion) {
26
+ throw new EngineCompatibilityError({
27
+ requestedMode,
28
+ expectedVersion,
29
+ actualVersion,
30
+ });
31
+ }
32
+ }
33
+ function documentVersionFromPublicResult(value) {
34
+ const rootDocumentVersion = documentVersionFromPublicDocument(value);
35
+ if (rootDocumentVersion !== undefined) {
36
+ return rootDocumentVersion;
37
+ }
38
+ return versionFromNormalizeResult(value) ?? versionFromParseResult(value);
39
+ }
40
+ function versionFromNormalizeResult(value) {
41
+ const result = value;
42
+ return documentVersionFromPublicDocument(result.document);
43
+ }
44
+ function versionFromParseResult(value) {
45
+ const result = value;
46
+ if (!isPlainRecord(result.parsed)) {
47
+ return undefined;
48
+ }
49
+ return documentVersionFromPublicDocument(result.parsed.document);
50
+ }
51
+ function documentVersionFromPublicDocument(value) {
52
+ if (!isPlainRecord(value) || value.kind !== "markdown-document") {
53
+ return undefined;
54
+ }
55
+ return typeof value.version === "string" ? value.version : undefined;
56
+ }
57
+ //# sourceMappingURL=compatibility.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"compatibility.js","sourceRoot":"","sources":["../../src/api/compatibility.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,aAAa,EAAE,MAAM,6BAA6B,CAAC;AAI5D,MAAM,OAAO,wBAAyB,SAAQ,KAAK;IACxC,IAAI,GAAG,sCAAsC,CAAC;IAC9C,aAAa,CAA0B;IACvC,eAAe,CAAwB;IACvC,aAAa,CAAS;IAE/B,YAAY,OAIX;QACC,KAAK,CACH,uBAAuB,OAAO,CAAC,aAAa,+BAA+B,OAAO,CAAC,eAAe,mBAAmB,OAAO,CAAC,aAAa,IAAI,CAC/I,CAAC;QACF,IAAI,CAAC,IAAI,GAAG,0BAA0B,CAAC;QACvC,IAAI,CAAC,aAAa,GAAG,OAAO,CAAC,aAAa,CAAC;QAC3C,IAAI,CAAC,eAAe,GAAG,OAAO,CAAC,eAAe,CAAC;QAC/C,IAAI,CAAC,aAAa,GAAG,OAAO,CAAC,aAAa,CAAC;IAC7C,CAAC;CACF;AAED,MAAM,kCAAkC,GAAG;IACzC,OAAO,EAAE,OAAO;IAChB,YAAY,EAAE,OAAO;CAC2C,CAAC;AAEnE,MAAM,UAAU,6BAA6B,CAC3C,MAAe,EACf,aAAsC;IAEtC,MAAM,aAAa,GAAG,+BAA+B,CAAC,MAAM,CAAC,CAAC;IAE9D,IAAI,aAAa,KAAK,SAAS,EAAE,CAAC;QAChC,OAAO;IACT,CAAC;IAED,MAAM,eAAe,GAAG,kCAAkC,CAAC,aAAa,CAAC,CAAC;IAE1E,IAAI,aAAa,KAAK,eAAe,EAAE,CAAC;QACtC,MAAM,IAAI,wBAAwB,CAAC;YACjC,aAAa;YACb,eAAe;YACf,aAAa;SACd,CAAC,CAAC;IACL,CAAC;AACH,CAAC;AAED,SAAS,+BAA+B,CAAC,KAAc;IACrD,MAAM,mBAAmB,GAAG,iCAAiC,CAAC,KAAK,CAAC,CAAC;IAErE,IAAI,mBAAmB,KAAK,SAAS,EAAE,CAAC;QACtC,OAAO,mBAAmB,CAAC;IAC7B,CAAC;IAED,OAAO,0BAA0B,CAAC,KAAK,CAAC,IAAI,sBAAsB,CAAC,KAAK,CAAC,CAAC;AAC5E,CAAC;AAED,SAAS,0BAA0B,CAAC,KAAc;IAChD,MAAM,MAAM,GAAG,KAAiC,CAAC;IAEjD,OAAO,iCAAiC,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;AAC5D,CAAC;AAED,SAAS,sBAAsB,CAAC,KAAc;IAC5C,MAAM,MAAM,GAAG,KAA6B,CAAC;IAE7C,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,CAAC;QAClC,OAAO,SAAS,CAAC;IACnB,CAAC;IAED,OAAO,iCAAiC,CAAC,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;AACnE,CAAC;AAED,SAAS,iCAAiC,CAAC,KAAc;IACvD,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC,IAAI,KAAK,CAAC,IAAI,KAAK,mBAAmB,EAAE,CAAC;QAChE,OAAO,SAAS,CAAC;IACnB,CAAC;IAED,OAAO,OAAO,KAAK,CAAC,OAAO,KAAK,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,SAAS,CAAC;AACvE,CAAC"}
@@ -1,6 +1,8 @@
1
- export type MarkdownEngineApiName = "parse" | "normalize" | "validate" | "serialize";
1
+ export type MarkdownEngineApiName = "parse" | "normalize" | "validate" | "serialize" | "documentQueries" | "validateAnnotations";
2
+ export * from "./annotations.js";
2
3
  export * from "./diagnostics.js";
3
4
  export * from "./document.js";
5
+ export * from "./document-queries.js";
4
6
  export * from "./normalize.js";
5
7
  export * from "./parse.js";
6
8
  export * from "./serialize.js";
@@ -1 +1 @@
1
- {"version":3,"file":"contracts.d.ts","sourceRoot":"","sources":["../../src/api/contracts.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,qBAAqB,GAAG,OAAO,GAAG,WAAW,GAAG,UAAU,GAAG,WAAW,CAAC;AAErF,cAAc,kBAAkB,CAAC;AACjC,cAAc,eAAe,CAAC;AAC9B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,YAAY,CAAC;AAC3B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,eAAe,CAAC"}
1
+ {"version":3,"file":"contracts.d.ts","sourceRoot":"","sources":["../../src/api/contracts.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,qBAAqB,GAC7B,OAAO,GACP,WAAW,GACX,UAAU,GACV,WAAW,GACX,iBAAiB,GACjB,qBAAqB,CAAC;AAE1B,cAAc,kBAAkB,CAAC;AACjC,cAAc,kBAAkB,CAAC;AACjC,cAAc,eAAe,CAAC;AAC9B,cAAc,uBAAuB,CAAC;AACtC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,YAAY,CAAC;AAC3B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,eAAe,CAAC"}
@@ -1,5 +1,7 @@
1
+ export * from "./annotations.js";
1
2
  export * from "./diagnostics.js";
2
3
  export * from "./document.js";
4
+ export * from "./document-queries.js";
3
5
  export * from "./normalize.js";
4
6
  export * from "./parse.js";
5
7
  export * from "./serialize.js";
@@ -1 +1 @@
1
- {"version":3,"file":"contracts.js","sourceRoot":"","sources":["../../src/api/contracts.ts"],"names":[],"mappings":"AAEA,cAAc,kBAAkB,CAAC;AACjC,cAAc,eAAe,CAAC;AAC9B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,YAAY,CAAC;AAC3B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,eAAe,CAAC"}
1
+ {"version":3,"file":"contracts.js","sourceRoot":"","sources":["../../src/api/contracts.ts"],"names":[],"mappings":"AAQA,cAAc,kBAAkB,CAAC;AACjC,cAAc,kBAAkB,CAAC;AACjC,cAAc,eAAe,CAAC;AAC9B,cAAc,uBAAuB,CAAC;AACtC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,YAAY,CAAC;AAC3B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,eAAe,CAAC"}
@@ -0,0 +1,3 @@
1
+ import type { EngineDocumentQueries } from "./document.js";
2
+ export declare const documentQueries: EngineDocumentQueries;
3
+ //# sourceMappingURL=document-queries.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"document-queries.d.ts","sourceRoot":"","sources":["../../src/api/document-queries.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAEV,qBAAqB,EAetB,MAAM,eAAe,CAAC;AAGvB,eAAO,MAAM,eAAe,EAAE,qBAQ7B,CAAC"}