@zudojs/docs 0.1.0 → 1.0.1

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 (127) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +32 -9
  3. package/dist/docsTypes/index.d.ts +1 -1
  4. package/dist/document/documentBuilder.core.d.ts +15 -5
  5. package/dist/document/documentBuilder.core.js +27 -15
  6. package/dist/document/index.d.ts +1 -1
  7. package/dist/errors/index.d.ts +16 -0
  8. package/dist/errors/index.js +18 -0
  9. package/dist/examples/examples.core.d.ts +4 -0
  10. package/dist/examples/examples.core.js +16 -7
  11. package/dist/frontmatter/frontmatter.core.d.ts +1 -1
  12. package/dist/frontmatter/frontmatter.parser.d.ts +15 -2
  13. package/dist/frontmatter/frontmatter.parser.js +202 -39
  14. package/dist/frontmatter/frontmatter.serializer.d.ts +13 -1
  15. package/dist/frontmatter/frontmatter.serializer.js +89 -4
  16. package/dist/frontmatter/frontmatter.types.d.ts +10 -1
  17. package/dist/frontmatter/index.d.ts +1 -1
  18. package/dist/generator/generator.types.d.ts +18 -0
  19. package/dist/generator/generatorJson.core.d.ts +8 -3
  20. package/dist/generator/generatorJson.core.js +16 -4
  21. package/dist/generator/generatorMarkdown.core.d.ts +4 -0
  22. package/dist/generator/generatorMarkdown.core.js +32 -13
  23. package/dist/generator/generatorMarkdownNodes.d.ts +20 -0
  24. package/dist/generator/generatorMarkdownNodes.js +91 -17
  25. package/dist/generator/index.d.ts +2 -2
  26. package/dist/generator/index.js +1 -1
  27. package/dist/index.d.ts +1 -0
  28. package/dist/index.js +2 -0
  29. package/dist/navigation/index.d.ts +1 -1
  30. package/dist/navigation/index.js +1 -1
  31. package/dist/navigation/navigation.core.d.ts +25 -6
  32. package/dist/navigation/navigation.core.js +93 -25
  33. package/dist/registry/index.d.ts +2 -1
  34. package/dist/registry/index.js +1 -1
  35. package/dist/registry/registry.core.d.ts +29 -3
  36. package/dist/registry/registry.core.js +32 -6
  37. package/dist/utils/index.d.ts +2 -1
  38. package/dist/utils/index.js +2 -1
  39. package/dist/utils/utils.freeze.d.ts +17 -0
  40. package/dist/utils/utils.freeze.js +77 -0
  41. package/dist/utils/utils.helper.d.ts +27 -4
  42. package/dist/utils/utils.helper.js +108 -21
  43. package/dist/validator/index.d.ts +4 -1
  44. package/dist/validator/index.js +2 -1
  45. package/dist/validator/validator.types.d.ts +8 -0
  46. package/dist/validator/validator.types.js +10 -1
  47. package/dist/validator/validatorAll/validatorAll.core.d.ts +11 -2
  48. package/dist/validator/validatorAll/validatorAll.core.js +19 -7
  49. package/dist/validator/validatorAll/validatorNavigation.core.d.ts +8 -1
  50. package/dist/validator/validatorAll/validatorNavigation.core.js +68 -11
  51. package/dist/validator/validatorDocument.core.d.ts +3 -2
  52. package/dist/validator/validatorDocument.core.js +197 -15
  53. package/dist/validator/validatorDuplicates.core.d.ts +1 -1
  54. package/dist/validator/validatorDuplicates.core.js +4 -6
  55. package/dist/validator/validatorLinks.core.d.ts +22 -4
  56. package/dist/validator/validatorLinks.core.js +80 -44
  57. package/package.json +28 -15
  58. package/dist/docsTypes/documentationContent.d.ts.map +0 -1
  59. package/dist/docsTypes/documentationContent.js.map +0 -1
  60. package/dist/docsTypes/documentationDocument.d.ts.map +0 -1
  61. package/dist/docsTypes/documentationDocument.js.map +0 -1
  62. package/dist/docsTypes/documentationMetadata.d.ts.map +0 -1
  63. package/dist/docsTypes/documentationMetadata.js.map +0 -1
  64. package/dist/docsTypes/documentationNavigation.d.ts.map +0 -1
  65. package/dist/docsTypes/documentationNavigation.js.map +0 -1
  66. package/dist/docsTypes/documentationProvider.d.ts.map +0 -1
  67. package/dist/docsTypes/documentationProvider.js.map +0 -1
  68. package/dist/docsTypes/index.d.ts.map +0 -1
  69. package/dist/docsTypes/index.js.map +0 -1
  70. package/dist/document/documentBuilder.core.d.ts.map +0 -1
  71. package/dist/document/documentBuilder.core.js.map +0 -1
  72. package/dist/document/index.d.ts.map +0 -1
  73. package/dist/document/index.js.map +0 -1
  74. package/dist/examples/examples.core.d.ts.map +0 -1
  75. package/dist/examples/examples.core.js.map +0 -1
  76. package/dist/examples/index.d.ts.map +0 -1
  77. package/dist/examples/index.js.map +0 -1
  78. package/dist/frontmatter/frontmatter.core.d.ts.map +0 -1
  79. package/dist/frontmatter/frontmatter.core.js.map +0 -1
  80. package/dist/frontmatter/frontmatter.parser.d.ts.map +0 -1
  81. package/dist/frontmatter/frontmatter.parser.js.map +0 -1
  82. package/dist/frontmatter/frontmatter.serializer.d.ts.map +0 -1
  83. package/dist/frontmatter/frontmatter.serializer.js.map +0 -1
  84. package/dist/frontmatter/frontmatter.types.d.ts.map +0 -1
  85. package/dist/frontmatter/frontmatter.types.js.map +0 -1
  86. package/dist/frontmatter/index.d.ts.map +0 -1
  87. package/dist/frontmatter/index.js.map +0 -1
  88. package/dist/generator/generator.types.d.ts.map +0 -1
  89. package/dist/generator/generator.types.js.map +0 -1
  90. package/dist/generator/generatorJson.core.d.ts.map +0 -1
  91. package/dist/generator/generatorJson.core.js.map +0 -1
  92. package/dist/generator/generatorMarkdown.core.d.ts.map +0 -1
  93. package/dist/generator/generatorMarkdown.core.js.map +0 -1
  94. package/dist/generator/generatorMarkdownNodes.d.ts.map +0 -1
  95. package/dist/generator/generatorMarkdownNodes.js.map +0 -1
  96. package/dist/generator/index.d.ts.map +0 -1
  97. package/dist/generator/index.js.map +0 -1
  98. package/dist/index.d.ts.map +0 -1
  99. package/dist/index.js.map +0 -1
  100. package/dist/navigation/index.d.ts.map +0 -1
  101. package/dist/navigation/index.js.map +0 -1
  102. package/dist/navigation/navigation.core.d.ts.map +0 -1
  103. package/dist/navigation/navigation.core.js.map +0 -1
  104. package/dist/registry/index.d.ts.map +0 -1
  105. package/dist/registry/index.js.map +0 -1
  106. package/dist/registry/registry.core.d.ts.map +0 -1
  107. package/dist/registry/registry.core.js.map +0 -1
  108. package/dist/utils/index.d.ts.map +0 -1
  109. package/dist/utils/index.js.map +0 -1
  110. package/dist/utils/utils.helper.d.ts.map +0 -1
  111. package/dist/utils/utils.helper.js.map +0 -1
  112. package/dist/validator/index.d.ts.map +0 -1
  113. package/dist/validator/index.js.map +0 -1
  114. package/dist/validator/validator.types.d.ts.map +0 -1
  115. package/dist/validator/validator.types.js.map +0 -1
  116. package/dist/validator/validatorAll/index.d.ts.map +0 -1
  117. package/dist/validator/validatorAll/index.js.map +0 -1
  118. package/dist/validator/validatorAll/validatorAll.core.d.ts.map +0 -1
  119. package/dist/validator/validatorAll/validatorAll.core.js.map +0 -1
  120. package/dist/validator/validatorAll/validatorNavigation.core.d.ts.map +0 -1
  121. package/dist/validator/validatorAll/validatorNavigation.core.js.map +0 -1
  122. package/dist/validator/validatorDocument.core.d.ts.map +0 -1
  123. package/dist/validator/validatorDocument.core.js.map +0 -1
  124. package/dist/validator/validatorDuplicates.core.d.ts.map +0 -1
  125. package/dist/validator/validatorDuplicates.core.js.map +0 -1
  126. package/dist/validator/validatorLinks.core.d.ts.map +0 -1
  127. package/dist/validator/validatorLinks.core.js.map +0 -1
@@ -1,45 +1,227 @@
1
1
  /**
2
2
  * Validates a single document for structural correctness.
3
3
  */
4
+ import { isValidDocumentId } from "../utils/utils.helper.js";
5
+ import { toValidationResult, } from "./validator.types.js";
6
+ const CONTENT_TYPES = new Set(["markdown", "mdx", "html", "structured"]);
7
+ const STATUSES = new Set([
8
+ "stable",
9
+ "experimental",
10
+ "beta",
11
+ "deprecated",
12
+ "internal",
13
+ ]);
14
+ const CATEGORIES = new Set([
15
+ "introduction",
16
+ "guide",
17
+ "tutorial",
18
+ "reference",
19
+ "api",
20
+ "architecture",
21
+ "configuration",
22
+ "deployment",
23
+ "security",
24
+ "migration",
25
+ "examples",
26
+ ]);
27
+ const VISIBILITIES = new Set(["SERVER", "CLIENT"]);
28
+ const NODE_TYPES = new Set([
29
+ "heading",
30
+ "paragraph",
31
+ "code",
32
+ "list",
33
+ "link",
34
+ "table",
35
+ "quote",
36
+ "callout",
37
+ ]);
38
+ const CALLOUT_KINDS = new Set(["note", "warning", "tip", "danger"]);
4
39
  /**
5
- * Validates a single document.
40
+ * Validates a single document: ID syntax, required fields, content
41
+ * shape (including structured nodes), and the metadata enums.
6
42
  */
7
43
  export function validateDocument(document) {
8
44
  const issues = [];
9
- if (!document.id || document.id.trim().length === 0) {
45
+ const id = document.id;
46
+ if (typeof id !== "string" || id.trim().length === 0) {
10
47
  issues.push({
11
48
  severity: "error",
12
49
  code: "MISSING_ID",
13
50
  message: "Document ID is required.",
14
51
  });
15
52
  }
16
- if (!document.title || document.title.trim().length === 0) {
53
+ else if (!isValidDocumentId(id)) {
54
+ issues.push({
55
+ severity: "error",
56
+ code: "INVALID_ID",
57
+ message: `Document ID "${id}" is invalid. Use dot-separated segments of letters, digits, "_" and "-".`,
58
+ documentId: id,
59
+ });
60
+ }
61
+ if (typeof document.title !== "string" || document.title.trim().length === 0) {
17
62
  issues.push({
18
63
  severity: "error",
19
64
  code: "MISSING_TITLE",
20
- message: `Document "${document.id}" is missing a title.`,
21
- documentId: document.id,
65
+ message: `Document "${id}" is missing a title.`,
66
+ documentId: id,
22
67
  });
23
68
  }
24
- if (!document.content) {
69
+ validateContent(document, issues);
70
+ if (document.status !== undefined && !STATUSES.has(document.status)) {
25
71
  issues.push({
26
72
  severity: "error",
27
- code: "MISSING_CONTENT",
28
- message: `Document "${document.id}" is missing content.`,
29
- documentId: document.id,
73
+ code: "INVALID_STATUS",
74
+ message: `Document "${id}" has unknown status "${String(document.status)}".`,
75
+ documentId: id,
76
+ });
77
+ }
78
+ if (document.category !== undefined && !CATEGORIES.has(document.category)) {
79
+ issues.push({
80
+ severity: "error",
81
+ code: "INVALID_CATEGORY",
82
+ message: `Document "${id}" has unknown category "${String(document.category)}".`,
83
+ documentId: id,
84
+ });
85
+ }
86
+ if (document.visibility !== undefined &&
87
+ !VISIBILITIES.has(document.visibility)) {
88
+ issues.push({
89
+ severity: "error",
90
+ code: "INVALID_VISIBILITY",
91
+ message: `Document "${id}" has unknown visibility "${String(document.visibility)}".`,
92
+ documentId: id,
93
+ });
94
+ }
95
+ if (document.tags !== undefined &&
96
+ (!Array.isArray(document.tags) ||
97
+ document.tags.some((tag) => typeof tag !== "string" || tag.trim() === ""))) {
98
+ issues.push({
99
+ severity: "error",
100
+ code: "INVALID_TAGS",
101
+ message: `Document "${id}" has tags that are not non-empty strings.`,
102
+ documentId: id,
30
103
  });
31
104
  }
32
105
  if (document.deprecated && !document.deprecatedMessage) {
33
106
  issues.push({
34
107
  severity: "warning",
35
108
  code: "DEPRECATED_WITHOUT_MESSAGE",
36
- message: `Document "${document.id}" is deprecated but has no deprecation message.`,
37
- documentId: document.id,
109
+ message: `Document "${id}" is deprecated but has no deprecation message.`,
110
+ documentId: id,
111
+ });
112
+ }
113
+ if ((document.status === "deprecated") !== Boolean(document.deprecated) &&
114
+ (document.status === "deprecated" || document.deprecated)) {
115
+ issues.push({
116
+ severity: "warning",
117
+ code: "DEPRECATION_MISMATCH",
118
+ message: `Document "${id}" has status "${document.status ?? "unset"}" but deprecated=${String(Boolean(document.deprecated))}.`,
119
+ documentId: id,
120
+ });
121
+ }
122
+ return toValidationResult(issues);
123
+ }
124
+ function validateContent(document, issues) {
125
+ const id = document.id;
126
+ const content = document.content;
127
+ if (!content || typeof content !== "object") {
128
+ issues.push({
129
+ severity: "error",
130
+ code: "MISSING_CONTENT",
131
+ message: `Document "${id}" is missing content.`,
132
+ documentId: id,
133
+ });
134
+ return;
135
+ }
136
+ const type = content.type;
137
+ if (typeof type !== "string" || !CONTENT_TYPES.has(type)) {
138
+ issues.push({
139
+ severity: "error",
140
+ code: "INVALID_CONTENT_TYPE",
141
+ message: `Document "${id}" has unknown content type "${String(type)}".`,
142
+ documentId: id,
143
+ });
144
+ return;
145
+ }
146
+ if (type === "structured") {
147
+ const nodes = content.nodes;
148
+ if (!Array.isArray(nodes)) {
149
+ issues.push({
150
+ severity: "error",
151
+ code: "INVALID_NODE",
152
+ message: `Document "${id}" structured content must have a "nodes" array.`,
153
+ documentId: id,
154
+ });
155
+ return;
156
+ }
157
+ nodes.forEach((node, index) => {
158
+ const problem = describeNodeProblem(node);
159
+ if (problem) {
160
+ issues.push({
161
+ severity: "error",
162
+ code: "INVALID_NODE",
163
+ message: `Document "${id}" node ${index}: ${problem}`,
164
+ documentId: id,
165
+ });
166
+ }
167
+ });
168
+ return;
169
+ }
170
+ if (typeof content.value !== "string") {
171
+ issues.push({
172
+ severity: "error",
173
+ code: "INVALID_CONTENT_TYPE",
174
+ message: `Document "${id}" ${type} content must have a string "value".`,
175
+ documentId: id,
38
176
  });
39
177
  }
40
- return {
41
- valid: issues.filter((i) => i.severity === "error").length === 0,
42
- issues,
43
- };
178
+ }
179
+ /** Returns a description of what is wrong with a node, or undefined. */
180
+ function describeNodeProblem(node) {
181
+ if (!node || typeof node !== "object")
182
+ return "node is not an object.";
183
+ const n = node;
184
+ if (typeof n.type !== "string" || !NODE_TYPES.has(n.type)) {
185
+ return `unknown node type "${String(n.type)}".`;
186
+ }
187
+ const isString = (v) => typeof v === "string";
188
+ const isStringArray = (v) => Array.isArray(v) && v.every(isString);
189
+ switch (n.type) {
190
+ case "heading":
191
+ if (!Number.isInteger(n.level) || n.level < 1 || n.level > 6) {
192
+ return "heading level must be an integer from 1 to 6.";
193
+ }
194
+ return isString(n.value) ? undefined : "heading value must be a string.";
195
+ case "paragraph":
196
+ case "quote":
197
+ return isString(n.value) ? undefined : `${n.type} value must be a string.`;
198
+ case "code":
199
+ if (n.language !== undefined && !isString(n.language)) {
200
+ return "code language must be a string.";
201
+ }
202
+ return isString(n.value) ? undefined : "code value must be a string.";
203
+ case "list":
204
+ if (typeof n.ordered !== "boolean")
205
+ return "list ordered must be a boolean.";
206
+ return isStringArray(n.items) ? undefined : "list items must be strings.";
207
+ case "link":
208
+ if (!isString(n.href))
209
+ return "link href must be a string.";
210
+ return isString(n.value) ? undefined : "link value must be a string.";
211
+ case "table":
212
+ if (!isStringArray(n.headers))
213
+ return "table headers must be strings.";
214
+ if (!Array.isArray(n.rows) || !n.rows.every(isStringArray)) {
215
+ return "table rows must be arrays of strings.";
216
+ }
217
+ return undefined;
218
+ case "callout":
219
+ if (!isString(n.kind) || !CALLOUT_KINDS.has(n.kind)) {
220
+ return `unknown callout kind "${String(n.kind)}".`;
221
+ }
222
+ return isString(n.value) ? undefined : "callout value must be a string.";
223
+ default:
224
+ return undefined;
225
+ }
44
226
  }
45
227
  //# sourceMappingURL=validatorDocument.core.js.map
@@ -2,7 +2,7 @@
2
2
  * Validates that no documents share the same ID.
3
3
  */
4
4
  import type { DocumentationDocument } from "../docsTypes/index.js";
5
- import type { ValidationResult } from "./validator.types.js";
5
+ import { type ValidationResult } from "./validator.types.js";
6
6
  /**
7
7
  * Validates no duplicate IDs exist in a collection of documents.
8
8
  */
@@ -1,11 +1,12 @@
1
1
  /**
2
2
  * Validates that no documents share the same ID.
3
3
  */
4
+ import { toValidationResult, } from "./validator.types.js";
4
5
  /**
5
6
  * Validates no duplicate IDs exist in a collection of documents.
6
7
  */
7
8
  export function validateNoDuplicateIds(documents) {
8
- const seen = new Map();
9
+ const seen = new Set();
9
10
  const issues = [];
10
11
  for (const doc of documents) {
11
12
  if (seen.has(doc.id)) {
@@ -17,12 +18,9 @@ export function validateNoDuplicateIds(documents) {
17
18
  });
18
19
  }
19
20
  else {
20
- seen.set(doc.id, doc.title);
21
+ seen.add(doc.id);
21
22
  }
22
23
  }
23
- return {
24
- valid: issues.length === 0,
25
- issues,
26
- };
24
+ return toValidationResult(issues);
27
25
  }
28
26
  //# sourceMappingURL=validatorDuplicates.core.js.map
@@ -1,10 +1,28 @@
1
1
  /**
2
- * Validates internal links within markdown documentation.
2
+ * Validates internal links within markdown and structured documentation.
3
3
  */
4
4
  import type { DocumentationDocument } from "../docsTypes/index.js";
5
- import type { ValidationResult } from "./validator.types.js";
5
+ import { type ValidationResult } from "./validator.types.js";
6
+ /** Default maximum markdown length that is scanned for links. */
7
+ export declare const DEFAULT_MAX_LINK_SCAN_LENGTH = 100000;
8
+ /** Options for `validateLinks`. */
9
+ export interface ValidateLinksOptions {
10
+ /**
11
+ * Markdown longer than this (in characters) is not scanned; a
12
+ * `LINK_VALIDATION_SKIPPED` warning is reported instead.
13
+ * Defaults to {@link DEFAULT_MAX_LINK_SCAN_LENGTH}.
14
+ */
15
+ readonly maxContentLength?: number;
16
+ }
6
17
  /**
7
- * Validates internal links in a document's markdown content.
18
+ * Validates internal links in a document's markdown content and in
19
+ * structured `link` nodes.
20
+ *
21
+ * Skipped (never reported): images, anchors (`#…`), any target with a
22
+ * URL scheme or `//` prefix, links inside fenced or inline code.
23
+ * Relative targets (`./x`, `../x`, `/x`) are resolved against the
24
+ * document ID with `resolveDocumentLink`; bare targets are looked up
25
+ * both as-is and resolved.
8
26
  */
9
- export declare function validateLinks(document: DocumentationDocument, registeredIds: ReadonlySet<string>): ValidationResult;
27
+ export declare function validateLinks(document: DocumentationDocument, registeredIds: ReadonlySet<string>, options?: ValidateLinksOptions): ValidationResult;
10
28
  //# sourceMappingURL=validatorLinks.core.d.ts.map
@@ -1,56 +1,92 @@
1
1
  /**
2
- * Validates internal links within markdown documentation.
2
+ * Validates internal links within markdown and structured documentation.
3
3
  */
4
+ import { resolveDocumentLink, stripFencedCodeBlocks, stripLinkDecorations, } from "../utils/utils.helper.js";
5
+ import { toValidationResult, } from "./validator.types.js";
6
+ /** Default maximum markdown length that is scanned for links. */
7
+ export const DEFAULT_MAX_LINK_SCAN_LENGTH = 100_000;
4
8
  /**
5
- * Validates internal links in a document's markdown content.
9
+ * Matches `[text](target)` and `![alt](target)` links. Group 1 is the
10
+ * optional image bang, group 2 the target (optionally `<…>` wrapped
11
+ * and followed by a `"title"`).
6
12
  */
7
- export function validateLinks(document, registeredIds) {
13
+ const LINK_PATTERN = /(!?)\[[^\]\n]*\]\(\s*(<[^>\n]*>|[^)\s]*)(?:\s+(?:"[^"]*"|'[^']*'))?\s*\)/g;
14
+ /** `scheme:` (mailto:, ftp:, http:) or protocol-relative `//`. */
15
+ const EXTERNAL_PATTERN = /^([a-zA-Z][a-zA-Z0-9+.-]*:|\/\/)/;
16
+ /**
17
+ * Validates internal links in a document's markdown content and in
18
+ * structured `link` nodes.
19
+ *
20
+ * Skipped (never reported): images, anchors (`#…`), any target with a
21
+ * URL scheme or `//` prefix, links inside fenced or inline code.
22
+ * Relative targets (`./x`, `../x`, `/x`) are resolved against the
23
+ * document ID with `resolveDocumentLink`; bare targets are looked up
24
+ * both as-is and resolved.
25
+ */
26
+ export function validateLinks(document, registeredIds, options = {}) {
8
27
  const issues = [];
9
- if (document.content.type !== "markdown") {
10
- return { valid: true, issues: [] };
28
+ const content = document.content;
29
+ if (content.type === "structured") {
30
+ for (const node of content.nodes) {
31
+ if (node.type === "link") {
32
+ checkTarget(node.href, document, registeredIds, issues);
33
+ }
34
+ }
35
+ return toValidationResult(issues);
11
36
  }
12
- const content = document.content.value;
13
- if (content.length > 100_000) {
14
- return { valid: true, issues: [] };
37
+ if (content.type !== "markdown") {
38
+ return toValidationResult(issues);
15
39
  }
16
- let pos = 0;
17
- while (pos < content.length) {
18
- const openBracket = content.indexOf("[", pos);
19
- if (openBracket === -1)
20
- break;
21
- const closeBracket = content.indexOf("]", openBracket + 1);
22
- if (closeBracket === -1)
23
- break;
24
- if (content[closeBracket + 1] !== "(") {
25
- pos = closeBracket + 1;
26
- continue;
27
- }
28
- const closeParen = content.indexOf(")", closeBracket + 2);
29
- if (closeParen === -1)
30
- break;
31
- const target = content.slice(closeBracket + 2, closeParen);
32
- if (!target) {
33
- pos = closeParen + 1;
34
- continue;
35
- }
36
- if (target.startsWith("http://") || target.startsWith("https://")) {
37
- pos = closeParen + 1;
40
+ const maxLength = options.maxContentLength ?? DEFAULT_MAX_LINK_SCAN_LENGTH;
41
+ if (content.value.length > maxLength) {
42
+ issues.push({
43
+ severity: "warning",
44
+ code: "LINK_VALIDATION_SKIPPED",
45
+ message: `Document "${document.id}" content (${content.value.length} chars) exceeds the ${maxLength} char link-scan limit; links were not validated.`,
46
+ documentId: document.id,
47
+ });
48
+ return toValidationResult(issues);
49
+ }
50
+ const source = stripInlineCode(stripFencedCodeBlocks(content.value));
51
+ for (const match of source.matchAll(LINK_PATTERN)) {
52
+ const isImage = match[1] === "!";
53
+ let target = match[2] ?? "";
54
+ if (isImage)
38
55
  continue;
56
+ if (target.startsWith("<") && target.endsWith(">")) {
57
+ target = target.slice(1, -1);
39
58
  }
40
- const cleanTarget = target.replace(/\.md$/, "").replace(/^\.\//, "");
41
- if (!registeredIds.has(cleanTarget)) {
42
- issues.push({
43
- severity: "warning",
44
- code: "BROKEN_LINK",
45
- message: `Document "${document.id}" links to "${target}" which is not registered.`,
46
- documentId: document.id,
47
- });
48
- }
49
- pos = closeParen + 1;
59
+ checkTarget(target, document, registeredIds, issues);
50
60
  }
51
- return {
52
- valid: issues.length === 0,
53
- issues,
54
- };
61
+ return toValidationResult(issues);
62
+ }
63
+ function checkTarget(rawTarget, document, registeredIds, issues) {
64
+ const target = rawTarget.trim();
65
+ if (target === "" || target.startsWith("#"))
66
+ return;
67
+ if (EXTERNAL_PATTERN.test(target))
68
+ return;
69
+ const stripped = stripLinkDecorations(target);
70
+ if (stripped === "")
71
+ return;
72
+ const candidates = new Set([
73
+ stripped,
74
+ stripped.replace(/^\.\//, "").replace(/\//g, "."),
75
+ resolveDocumentLink(document.id, stripped),
76
+ ]);
77
+ for (const candidate of candidates) {
78
+ if (registeredIds.has(candidate))
79
+ return;
80
+ }
81
+ issues.push({
82
+ severity: "warning",
83
+ code: "BROKEN_LINK",
84
+ message: `Document "${document.id}" links to "${rawTarget}" which is not registered.`,
85
+ documentId: document.id,
86
+ });
87
+ }
88
+ /** Blanks out inline code spans so links inside them are ignored. */
89
+ function stripInlineCode(markdown) {
90
+ return markdown.replace(/(`+)[^`\n][\s\S]*?\1/g, (m) => " ".repeat(m.length));
55
91
  }
56
92
  //# sourceMappingURL=validatorLinks.core.js.map
package/package.json CHANGED
@@ -1,32 +1,33 @@
1
1
  {
2
2
  "name": "@zudojs/docs",
3
- "version": "0.1.0",
3
+ "version": "1.0.1",
4
4
  "description": "Documentation infrastructure with structured document model, registry, validation, navigation, and generation.",
5
5
  "main": "./dist/index.js",
6
6
  "types": "./dist/index.d.ts",
7
7
  "exports": {
8
8
  ".": {
9
- "import": "./dist/index.js",
10
- "types": "./dist/index.d.ts"
9
+ "types": "./dist/index.d.ts",
10
+ "import": "./dist/index.js"
11
11
  }
12
12
  },
13
- "scripts": {
14
- "build": "tsc -p tsconfig.json",
15
- "typecheck": "tsc -p tsconfig.json --noEmit",
16
- "test": "vitest run",
17
- "test:watch": "vitest"
18
- },
19
13
  "dependencies": {
20
- "@zudojs/errors": "0.1.0"
14
+ "@zudojs/errors": "1.0.1"
21
15
  },
22
16
  "devDependencies": {
23
- "typescript": "^5.7.0",
24
- "vitest": "^3.2.0"
17
+ "typescript": "7.0.2",
18
+ "vitest": "^4.1.11"
25
19
  },
26
20
  "license": "MIT",
21
+ "author": {
22
+ "name": "Oluwayemi Oyinlola",
23
+ "url": "https://github.com/oyinlola-tech"
24
+ },
27
25
  "type": "module",
28
26
  "files": [
29
- "dist"
27
+ "dist",
28
+ "!dist/**/*.map",
29
+ "!dist/**/*.tsbuildinfo",
30
+ "!dist/.tsbuildinfo"
30
31
  ],
31
32
  "publishConfig": {
32
33
  "access": "public"
@@ -42,8 +43,20 @@
42
43
  "markdown"
43
44
  ],
44
45
  "homepage": "https://github.com/oyinlola-tech/zudo#readme",
46
+ "bugs": {
47
+ "url": "https://github.com/oyinlola-tech/zudo/issues"
48
+ },
45
49
  "repository": {
46
50
  "type": "git",
47
- "url": "https://github.com/oyinlola-tech/zudo"
51
+ "url": "https://github.com/oyinlola-tech/zudo",
52
+ "directory": "packages/docs"
53
+ },
54
+ "sideEffects": false,
55
+ "scripts": {
56
+ "build": "tsc -p tsconfig.json",
57
+ "clean": "rm -rf dist",
58
+ "typecheck": "tsc -p tsconfig.json --noEmit && tsc -p tsconfig.test.json --noEmit",
59
+ "test": "vitest run",
60
+ "test:watch": "vitest"
48
61
  }
49
- }
62
+ }
@@ -1 +0,0 @@
1
- {"version":3,"file":"documentationContent.d.ts","sourceRoot":"","sources":["../../src/docsTypes/documentationContent.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,uDAAuD;AACvD,MAAM,MAAM,iBAAiB,GACzB,WAAW,GACX,aAAa,GACb,QAAQ,GACR,QAAQ,GACR,QAAQ,GACR,SAAS,GACT,SAAS,GACT,WAAW,CAAC;AAEhB,mCAAmC;AACnC,MAAM,WAAW,WAAW;IAC1B,QAAQ,CAAC,IAAI,EAAE,SAAS,CAAC;IACzB,QAAQ,CAAC,KAAK,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;IACtC,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;CACxB;AAED,sBAAsB;AACtB,MAAM,WAAW,aAAa;IAC5B,QAAQ,CAAC,IAAI,EAAE,WAAW,CAAC;IAC3B,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;CACxB;AAED,uBAAuB;AACvB,MAAM,WAAW,QAAQ;IACvB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;CACxB;AAED,wCAAwC;AACxC,MAAM,WAAW,QAAQ;IACvB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAC;IAC1B,QAAQ,CAAC,KAAK,EAAE,SAAS,MAAM,EAAE,CAAC;CACnC;AAED,iBAAiB;AACjB,MAAM,WAAW,QAAQ;IACvB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;CACxB;AAED,kBAAkB;AAClB,MAAM,WAAW,SAAS;IACxB,QAAQ,CAAC,IAAI,EAAE,OAAO,CAAC;IACvB,QAAQ,CAAC,OAAO,EAAE,SAAS,MAAM,EAAE,CAAC;IACpC,QAAQ,CAAC,IAAI,EAAE,SAAS,CAAC,SAAS,MAAM,EAAE,CAAC,EAAE,CAAC;CAC/C;AAED,uBAAuB;AACvB,MAAM,WAAW,SAAS;IACxB,QAAQ,CAAC,IAAI,EAAE,OAAO,CAAC;IACvB,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;CACxB;AAED,+BAA+B;AAC/B,MAAM,WAAW,WAAW;IAC1B,QAAQ,CAAC,IAAI,EAAE,SAAS,CAAC;IACzB,QAAQ,CAAC,IAAI,EAAE,MAAM,GAAG,SAAS,GAAG,KAAK,GAAG,QAAQ,CAAC;IACrD,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;CACxB;AAED,wBAAwB;AACxB,MAAM,WAAW,eAAe;IAC9B,QAAQ,CAAC,IAAI,EAAE,UAAU,CAAC;IAC1B,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;CACxB;AAED,mBAAmB;AACnB,MAAM,WAAW,UAAU;IACzB,QAAQ,CAAC,IAAI,EAAE,KAAK,CAAC;IACrB,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;CACxB;AAED,oBAAoB;AACpB,MAAM,WAAW,WAAW;IAC1B,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;CACxB;AAED,0CAA0C;AAC1C,MAAM,WAAW,iBAAiB;IAChC,QAAQ,CAAC,IAAI,EAAE,YAAY,CAAC;IAC5B,QAAQ,CAAC,KAAK,EAAE,SAAS,iBAAiB,EAAE,CAAC;CAC9C;AAED;;;GAGG;AACH,MAAM,MAAM,oBAAoB,GAC9B,eAAe,GAAG,UAAU,GAAG,WAAW,GAAG,iBAAiB,CAAC"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"documentationContent.js","sourceRoot":"","sources":["../../src/docsTypes/documentationContent.ts"],"names":[],"mappings":"AAAA;;;;;GAKG"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"documentationDocument.d.ts","sourceRoot":"","sources":["../../src/docsTypes/documentationDocument.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,2BAA2B,CAAC;AACtE,OAAO,KAAK,EACV,qBAAqB,EACrB,qBAAqB,EACrB,mBAAmB,EACpB,MAAM,4BAA4B,CAAC;AAEpC;;;;;GAKG;AACH,MAAM,WAAW,qBAAqB;IACpC,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,WAAW,CAAC,EAAE,MAAM,CAAC;IAC9B,QAAQ,CAAC,OAAO,EAAE,oBAAoB,CAAC;IACvC,QAAQ,CAAC,QAAQ,CAAC,EAAE,qBAAqB,CAAC;IAC1C,QAAQ,CAAC,IAAI,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;IAClC,QAAQ,CAAC,OAAO,CAAC,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,MAAM,CAAC,EAAE,mBAAmB,CAAC;IACtC,QAAQ,CAAC,QAAQ,CAAC,EAAE,qBAAqB,CAAC;IAC1C,QAAQ,CAAC,UAAU,CAAC,EAAE,OAAO,CAAC;IAC9B,QAAQ,CAAC,iBAAiB,CAAC,EAAE,MAAM,CAAC;IACpC,QAAQ,CAAC,UAAU,CAAC,EAAE,QAAQ,GAAG,QAAQ,CAAC;CAC3C"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"documentationDocument.js","sourceRoot":"","sources":["../../src/docsTypes/documentationDocument.ts"],"names":[],"mappings":"AAAA;;;;;GAKG"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"documentationMetadata.d.ts","sourceRoot":"","sources":["../../src/docsTypes/documentationMetadata.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,qDAAqD;AACrD,MAAM,MAAM,qBAAqB,GAC7B,cAAc,GACd,OAAO,GACP,UAAU,GACV,WAAW,GACX,KAAK,GACL,cAAc,GACd,eAAe,GACf,YAAY,GACZ,UAAU,GACV,WAAW,GACX,UAAU,CAAC;AAEf,sCAAsC;AACtC,MAAM,MAAM,mBAAmB,GAC7B,QAAQ,GAAG,cAAc,GAAG,MAAM,GAAG,YAAY,GAAG,UAAU,CAAC;AAEjE,qDAAqD;AACrD,MAAM,MAAM,aAAa,GACrB,UAAU,GACV,OAAO,GACP,WAAW,GACX,MAAM,GACN,MAAM,GACN,UAAU,GACV,WAAW,GACX,QAAQ,GACR,UAAU,CAAC;AAEf,yCAAyC;AACzC,MAAM,WAAW,cAAc;IAC7B,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC;CAC1B;AAED,gDAAgD;AAChD,MAAM,WAAW,SAAS;IACxB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,IAAI,EAAE,aAAa,CAAC;IAC7B,QAAQ,CAAC,WAAW,CAAC,EAAE,MAAM,CAAC;IAC9B,QAAQ,CAAC,MAAM,CAAC,EAAE,cAAc,CAAC;IACjC,QAAQ,CAAC,UAAU,CAAC,EAAE,OAAO,CAAC;IAC9B,QAAQ,CAAC,QAAQ,CAAC,EAAE,SAAS,UAAU,EAAE,CAAC;IAC1C,QAAQ,CAAC,UAAU,CAAC,EAAE,SAAS,YAAY,EAAE,CAAC;IAC9C,QAAQ,CAAC,UAAU,CAAC,EAAE,MAAM,CAAC;CAC9B;AAED,wCAAwC;AACxC,MAAM,WAAW,UAAU;IACzB,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,WAAW,CAAC,EAAE,MAAM,CAAC;CAC/B;AAED,mCAAmC;AACnC,MAAM,WAAW,YAAY;IAC3B,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,WAAW,CAAC,EAAE,MAAM,CAAC;IAC9B,QAAQ,CAAC,QAAQ,CAAC,EAAE,OAAO,CAAC;IAC5B,QAAQ,CAAC,YAAY,CAAC,EAAE,MAAM,CAAC;CAChC;AAED,qDAAqD;AACrD,MAAM,WAAW,qBAAqB;IACpC,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,SAAS,CAAC,EAAE,IAAI,CAAC;IAC1B,QAAQ,CAAC,SAAS,CAAC,EAAE,IAAI,CAAC;IAC1B,QAAQ,CAAC,OAAO,CAAC,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,IAAI,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;CACnC;AAED,mDAAmD;AACnD,MAAM,WAAW,oBAAoB;IACnC,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,UAAU,CAAC,EAAE,OAAO,CAAC;IAC9B,QAAQ,CAAC,MAAM,CAAC,EAAE,OAAO,CAAC;CAC3B"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"documentationMetadata.js","sourceRoot":"","sources":["../../src/docsTypes/documentationMetadata.ts"],"names":[],"mappings":"AAAA;;GAEG"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"documentationNavigation.d.ts","sourceRoot":"","sources":["../../src/docsTypes/documentationNavigation.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,0DAA0D;AAC1D,MAAM,WAAW,2BAA2B;IAC1C,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,UAAU,CAAC,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,QAAQ,CAAC,EAAE,SAAS,2BAA2B,EAAE,CAAC;CAC5D;AAED,uCAAuC;AACvC,MAAM,WAAW,uBAAuB;IACtC,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,UAAU,CAAC,EAAE,MAAM,CAAC;CAC9B;AAED,oCAAoC;AACpC,MAAM,WAAW,cAAc;IAC7B,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,IAAI,EAAE,SAAS,MAAM,EAAE,CAAC;IACjC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;CACvB;AAED,kDAAkD;AAClD,MAAM,WAAW,YAAY;IAC3B,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,OAAO,CAAC,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,CAAC;CACzB"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"documentationNavigation.js","sourceRoot":"","sources":["../../src/docsTypes/documentationNavigation.ts"],"names":[],"mappings":"AAAA;;;;;GAKG"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"documentationProvider.d.ts","sourceRoot":"","sources":["../../src/docsTypes/documentationProvider.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,4BAA4B,CAAC;AAExE,wDAAwD;AACxD,MAAM,WAAW,qBAAqB;IACpC,GAAG,CAAC,EAAE,EAAE,MAAM,GAAG,qBAAqB,GAAG,SAAS,CAAC;IACnD,MAAM,IAAI,SAAS,qBAAqB,EAAE,CAAC;CAC5C;AAED,iDAAiD;AACjD,MAAM,WAAW,yBAAyB;IACxC,IAAI,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC;CACvC;AAED,kDAAkD;AAClD,MAAM,WAAW,sBAAsB;IACrC,QAAQ,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CAAC;CACnC"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"documentationProvider.js","sourceRoot":"","sources":["../../src/docsTypes/documentationProvider.ts"],"names":[],"mappings":"AAAA;;;;;GAKG"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/docsTypes/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,YAAY,EACV,iBAAiB,EACjB,WAAW,EACX,aAAa,EACb,QAAQ,EACR,QAAQ,EACR,QAAQ,EACR,SAAS,EACT,SAAS,EACT,WAAW,EACX,eAAe,EACf,UAAU,EACV,WAAW,EACX,iBAAiB,EACjB,oBAAoB,GACrB,MAAM,2BAA2B,CAAC;AAEnC,YAAY,EACV,qBAAqB,EACrB,mBAAmB,EACnB,aAAa,EACb,cAAc,EACd,SAAS,EACT,YAAY,EACZ,qBAAqB,EACrB,oBAAoB,GACrB,MAAM,4BAA4B,CAAC;AAEpC,YAAY,EAAE,qBAAqB,EAAE,MAAM,4BAA4B,CAAC;AAExE,YAAY,EACV,2BAA2B,EAC3B,uBAAuB,EACvB,cAAc,EACd,YAAY,GACb,MAAM,8BAA8B,CAAC;AAEtC,YAAY,EACV,qBAAqB,EACrB,yBAAyB,EACzB,sBAAsB,GACvB,MAAM,4BAA4B,CAAC"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/docsTypes/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"documentBuilder.core.d.ts","sourceRoot":"","sources":["../../src/document/documentBuilder.core.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EACV,oBAAoB,EACpB,qBAAqB,EACrB,qBAAqB,EACrB,qBAAqB,EACrB,mBAAmB,EACpB,MAAM,uBAAuB,CAAC;AAE/B;;GAEG;AACH,MAAM,WAAW,sBAAsB;IACrC,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,WAAW,CAAC,EAAE,MAAM,CAAC;IAC9B,QAAQ,CAAC,OAAO,EAAE,oBAAoB,CAAC;IACvC,QAAQ,CAAC,QAAQ,CAAC,EAAE,qBAAqB,CAAC;IAC1C,QAAQ,CAAC,IAAI,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;IAClC,QAAQ,CAAC,OAAO,CAAC,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,MAAM,CAAC,EAAE,mBAAmB,CAAC;IACtC,QAAQ,CAAC,QAAQ,CAAC,EAAE,qBAAqB,CAAC;IAC1C,QAAQ,CAAC,UAAU,CAAC,EAAE,OAAO,CAAC;IAC9B,QAAQ,CAAC,iBAAiB,CAAC,EAAE,MAAM,CAAC;IACpC,QAAQ,CAAC,UAAU,CAAC,EAAE,QAAQ,GAAG,QAAQ,CAAC;CAC3C;AAED;;;;;;;;;;;;;GAaG;AACH,wBAAgB,cAAc,CAC5B,OAAO,EAAE,sBAAsB,GAC9B,qBAAqB,CAiBvB;AAoBD;;GAEG;AACH,wBAAgB,sBAAsB,CACpC,EAAE,EAAE,MAAM,EACV,KAAK,EAAE,MAAM,EACb,QAAQ,EAAE,MAAM,EAChB,OAAO,CAAC,EAAE,OAAO,CAAC,sBAAsB,CAAC,GACxC,qBAAqB,CAOvB;AAED;;GAEG;AACH,wBAAgB,wBAAwB,CACtC,EAAE,EAAE,MAAM,EACV,KAAK,EAAE,MAAM,EACb,KAAK,EAAE,oBAAoB,SAAS;IAAE,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC,CAAA;CAAE,GAAG,CAAC,GAAG,KAAK,EAC3E,OAAO,CAAC,EAAE,OAAO,CAAC,sBAAsB,CAAC,GACxC,qBAAqB,CAUvB"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"documentBuilder.core.js","sourceRoot":"","sources":["../../src/document/documentBuilder.core.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AA4BH;;;;;;;;;;;;;GAaG;AACH,MAAM,UAAU,cAAc,CAC5B,OAA+B;IAE/B,uBAAuB,CAAC,OAAO,CAAC,CAAC;IAEjC,OAAO,MAAM,CAAC,MAAM,CAAC;QACnB,EAAE,EAAE,OAAO,CAAC,EAAE;QACd,KAAK,EAAE,OAAO,CAAC,KAAK;QACpB,WAAW,EAAE,OAAO,CAAC,WAAW;QAChC,OAAO,EAAE,OAAO,CAAC,OAAO;QACxB,QAAQ,EAAE,OAAO,CAAC,QAAQ;QAC1B,IAAI,EAAE,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS;QACjE,OAAO,EAAE,OAAO,CAAC,OAAO;QACxB,MAAM,EAAE,OAAO,CAAC,MAAM;QACtB,QAAQ,EAAE,OAAO,CAAC,QAAQ;QAC1B,UAAU,EAAE,OAAO,CAAC,UAAU;QAC9B,iBAAiB,EAAE,OAAO,CAAC,iBAAiB;QAC5C,UAAU,EAAE,OAAO,CAAC,UAAU;KAC/B,CAAC,CAAC;AACL,CAAC;AAED;;;GAGG;AACH,SAAS,uBAAuB,CAAC,OAA+B;IAC9D,IAAI,CAAC,OAAO,CAAC,EAAE,IAAI,OAAO,CAAC,EAAE,CAAC,IAAI,EAAE,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAClD,MAAM,IAAI,KAAK,CAAC,0BAA0B,CAAC,CAAC;IAC9C,CAAC;IAED,IAAI,CAAC,OAAO,CAAC,KAAK,IAAI,OAAO,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACxD,MAAM,IAAI,KAAK,CAAC,6BAA6B,CAAC,CAAC;IACjD,CAAC;IAED,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE,CAAC;QACrB,MAAM,IAAI,KAAK,CAAC,+BAA+B,CAAC,CAAC;IACnD,CAAC;AACH,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,sBAAsB,CACpC,EAAU,EACV,KAAa,EACb,QAAgB,EAChB,OAAyC;IAEzC,OAAO,cAAc,CAAC;QACpB,EAAE;QACF,KAAK;QACL,OAAO,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,KAAK,EAAE,QAAQ,EAAE;QAC9C,GAAG,OAAO;KACX,CAAC,CAAC;AACL,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,wBAAwB,CACtC,EAAU,EACV,KAAa,EACb,KAA2E,EAC3E,OAAyC;IAEzC,OAAO,cAAc,CAAC;QACpB,EAAE;QACF,KAAK;QACL,OAAO,EAAE;YACP,IAAI,EAAE,YAAY;YAClB,KAAK,EAAE,KAAK;SACsB;QACpC,GAAG,OAAO;KACX,CAAC,CAAC;AACL,CAAC"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/document/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EACL,cAAc,EACd,sBAAsB,EACtB,wBAAwB,GACzB,MAAM,2BAA2B,CAAC;AAEnC,YAAY,EAAE,sBAAsB,EAAE,MAAM,2BAA2B,CAAC"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/document/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EACL,cAAc,EACd,sBAAsB,EACtB,wBAAwB,GACzB,MAAM,2BAA2B,CAAC"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"examples.core.d.ts","sourceRoot":"","sources":["../../src/examples/examples.core.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,uBAAuB,CAAC;AAEnE;;GAEG;AACH,MAAM,WAAW,oBAAoB;IACnC,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,WAAW,CAAC,EAAE,MAAM,CAAC;IAC9B,QAAQ,CAAC,QAAQ,CAAC,EAAE,qBAAqB,CAAC;CAC3C;AAED;;GAEG;AACH,MAAM,WAAW,uBAAuB;IACtC,QAAQ,CAAC,KAAK,EAAE,OAAO,CAAC;IACxB,QAAQ,CAAC,MAAM,EAAE,SAAS,MAAM,EAAE,CAAC;CACpC;AAED;;GAEG;AACH,wBAAgB,eAAe,CAC7B,OAAO,EAAE,oBAAoB,GAC5B,uBAAuB,CAmBzB;AAED;;GAEG;AACH,wBAAgB,qBAAqB,CAAC,OAAO,EAAE,oBAAoB,GAAG,MAAM,CAkB3E;AAED;;GAEG;AACH,wBAAgB,aAAa,CAC3B,OAAO,EAAE,oBAAoB,GAC5B,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAQzB"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"examples.core.js","sourceRoot":"","sources":["../../src/examples/examples.core.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAwBH;;GAEG;AACH,MAAM,UAAU,eAAe,CAC7B,OAA6B;IAE7B,MAAM,MAAM,GAAa,EAAE,CAAC;IAE5B,IAAI,CAAC,OAAO,CAAC,EAAE,IAAI,OAAO,CAAC,EAAE,CAAC,IAAI,EAAE,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAClD,MAAM,CAAC,IAAI,CAAC,yBAAyB,CAAC,CAAC;IACzC,CAAC;IAED,IAAI,CAAC,OAAO,CAAC,QAAQ,IAAI,OAAO,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC9D,MAAM,CAAC,IAAI,CAAC,YAAY,OAAO,CAAC,EAAE,wBAAwB,CAAC,CAAC;IAC9D,CAAC;IAED,IAAI,CAAC,OAAO,CAAC,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACtD,MAAM,CAAC,IAAI,CAAC,YAAY,OAAO,CAAC,EAAE,0BAA0B,CAAC,CAAC;IAChE,CAAC;IAED,OAAO;QACL,KAAK,EAAE,MAAM,CAAC,MAAM,KAAK,CAAC;QAC1B,MAAM;KACP,CAAC;AACJ,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,qBAAqB,CAAC,OAA6B;IACjE,MAAM,KAAK,GAAa,EAAE,CAAC;IAE3B,IAAI,OAAO,CAAC,KAAK,EAAE,CAAC;QAClB,KAAK,CAAC,IAAI,CAAC,OAAO,OAAO,CAAC,KAAK,EAAE,CAAC,CAAC;QACnC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IACjB,CAAC;IAED,IAAI,OAAO,CAAC,WAAW,EAAE,CAAC;QACxB,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC;QAChC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IACjB,CAAC;IAED,KAAK,CAAC,IAAI,CAAC,KAAK,GAAG,OAAO,CAAC,QAAQ,CAAC,CAAC;IACrC,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC;IAChC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IAElB,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAC1B,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,aAAa,CAC3B,OAA6B;IAE7B,OAAO;QACL,EAAE,EAAE,OAAO,CAAC,EAAE;QACd,KAAK,EAAE,OAAO,CAAC,KAAK;QACpB,QAAQ,EAAE,OAAO,CAAC,QAAQ;QAC1B,IAAI,EAAE,OAAO,CAAC,IAAI;QAClB,WAAW,EAAE,OAAO,CAAC,WAAW;KACjC,CAAC;AACJ,CAAC"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/examples/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EACL,eAAe,EACf,qBAAqB,EACrB,aAAa,GACd,MAAM,oBAAoB,CAAC;AAE5B,YAAY,EACV,oBAAoB,EACpB,uBAAuB,GACxB,MAAM,oBAAoB,CAAC"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/examples/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EACL,eAAe,EACf,qBAAqB,EACrB,aAAa,GACd,MAAM,oBAAoB,CAAC"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"frontmatter.core.d.ts","sourceRoot":"","sources":["../../src/frontmatter/frontmatter.core.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAC;AAC3D,OAAO,EAAE,oBAAoB,EAAE,MAAM,6BAA6B,CAAC;AACnE,YAAY,EACV,iBAAiB,EACjB,mBAAmB,GACpB,MAAM,wBAAwB,CAAC"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"frontmatter.core.js","sourceRoot":"","sources":["../../src/frontmatter/frontmatter.core.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAC;AAC3D,OAAO,EAAE,oBAAoB,EAAE,MAAM,6BAA6B,CAAC"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"frontmatter.parser.d.ts","sourceRoot":"","sources":["../../src/frontmatter/frontmatter.parser.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EACV,iBAAiB,EAElB,MAAM,wBAAwB,CAAC;AAIhC;;;;;GAKG;AACH,wBAAgB,gBAAgB,CAAC,GAAG,EAAE,MAAM,GAAG,iBAAiB,CAsB/D"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"frontmatter.parser.js","sourceRoot":"","sources":["../../src/frontmatter/frontmatter.parser.ts"],"names":[],"mappings":"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"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"frontmatter.serializer.d.ts","sourceRoot":"","sources":["../../src/frontmatter/frontmatter.serializer.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,wBAAwB,CAAC;AAIlE;;GAEG;AACH,wBAAgB,oBAAoB,CAClC,QAAQ,EAAE,mBAAmB,EAC7B,OAAO,EAAE,MAAM,GACd,MAAM,CAuBR"}