@jasonbelmonti/markdown-engine 0.1.0 → 2.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 (350) hide show
  1. package/CHANGELOG.md +53 -4
  2. package/README.md +138 -10
  3. package/SECURITY.md +5 -3
  4. package/dist/api/annotation-source-range.d.ts +7 -0
  5. package/dist/api/annotation-source-range.d.ts.map +1 -0
  6. package/dist/api/annotation-source-range.js +103 -0
  7. package/dist/api/annotation-source-range.js.map +1 -0
  8. package/dist/api/annotation-target-candidate.d.ts +10 -0
  9. package/dist/api/annotation-target-candidate.d.ts.map +1 -0
  10. package/dist/api/annotation-target-candidate.js +14 -0
  11. package/dist/api/annotation-target-candidate.js.map +1 -0
  12. package/dist/api/annotation-target-cloning.d.ts +5 -0
  13. package/dist/api/annotation-target-cloning.d.ts.map +1 -0
  14. package/dist/api/annotation-target-cloning.js +122 -0
  15. package/dist/api/annotation-target-cloning.js.map +1 -0
  16. package/dist/api/annotation-target-diagnostics.d.ts +8 -0
  17. package/dist/api/annotation-target-diagnostics.d.ts.map +1 -0
  18. package/dist/api/annotation-target-diagnostics.js +57 -0
  19. package/dist/api/annotation-target-diagnostics.js.map +1 -0
  20. package/dist/api/annotation-target-runtime.d.ts +30 -0
  21. package/dist/api/annotation-target-runtime.d.ts.map +1 -0
  22. package/dist/api/annotation-target-runtime.js +161 -0
  23. package/dist/api/annotation-target-runtime.js.map +1 -0
  24. package/dist/api/annotation-target-validation.d.ts +4 -0
  25. package/dist/api/annotation-target-validation.d.ts.map +1 -0
  26. package/dist/api/annotation-target-validation.js +147 -0
  27. package/dist/api/annotation-target-validation.js.map +1 -0
  28. package/dist/api/annotations.d.ts +4 -0
  29. package/dist/api/annotations.d.ts.map +1 -0
  30. package/dist/api/annotations.js +16 -0
  31. package/dist/api/annotations.js.map +1 -0
  32. package/dist/api/compatibility.d.ts +15 -0
  33. package/dist/api/compatibility.d.ts.map +1 -0
  34. package/dist/api/compatibility.js +57 -0
  35. package/dist/api/compatibility.js.map +1 -0
  36. package/dist/api/contracts.d.ts +4 -1
  37. package/dist/api/contracts.d.ts.map +1 -1
  38. package/dist/api/contracts.js +3 -0
  39. package/dist/api/contracts.js.map +1 -1
  40. package/dist/api/declarative-validation.d.ts +13 -0
  41. package/dist/api/declarative-validation.d.ts.map +1 -0
  42. package/dist/api/declarative-validation.js +63 -0
  43. package/dist/api/declarative-validation.js.map +1 -0
  44. package/dist/api/document-queries.d.ts +3 -0
  45. package/dist/api/document-queries.d.ts.map +1 -0
  46. package/dist/api/document-queries.js +160 -0
  47. package/dist/api/document-queries.js.map +1 -0
  48. package/dist/api/document.d.ts +179 -2
  49. package/dist/api/document.d.ts.map +1 -1
  50. package/dist/api/engine-node-attributes.d.ts +15 -0
  51. package/dist/api/engine-node-attributes.d.ts.map +1 -0
  52. package/dist/api/engine-node-attributes.js +99 -0
  53. package/dist/api/engine-node-attributes.js.map +1 -0
  54. package/dist/api/normalize.d.ts +2 -1
  55. package/dist/api/normalize.d.ts.map +1 -1
  56. package/dist/api/normalize.js +22 -1
  57. package/dist/api/normalize.js.map +1 -1
  58. package/dist/api/serialize.d.ts +5 -1
  59. package/dist/api/serialize.d.ts.map +1 -1
  60. package/dist/api/serialize.js +7 -14
  61. package/dist/api/serialize.js.map +1 -1
  62. package/dist/cli/args.d.ts +18 -0
  63. package/dist/cli/args.d.ts.map +1 -0
  64. package/dist/cli/args.js +109 -0
  65. package/dist/cli/args.js.map +1 -0
  66. package/dist/cli/declarative-validation.d.ts +18 -0
  67. package/dist/cli/declarative-validation.d.ts.map +1 -0
  68. package/dist/cli/declarative-validation.js +131 -0
  69. package/dist/cli/declarative-validation.js.map +1 -0
  70. package/dist/cli/document-version.d.ts +14 -0
  71. package/dist/cli/document-version.d.ts.map +1 -0
  72. package/dist/cli/document-version.js +32 -0
  73. package/dist/cli/document-version.js.map +1 -0
  74. package/dist/cli/files.d.ts +6 -0
  75. package/dist/cli/files.d.ts.map +1 -0
  76. package/dist/cli/files.js +33 -0
  77. package/dist/cli/files.js.map +1 -0
  78. package/dist/cli/index.d.ts +3 -0
  79. package/dist/cli/index.d.ts.map +1 -0
  80. package/dist/cli/index.js +9 -0
  81. package/dist/cli/index.js.map +1 -0
  82. package/dist/cli/normalize-markdown.d.ts +8 -0
  83. package/dist/cli/normalize-markdown.d.ts.map +1 -0
  84. package/dist/cli/normalize-markdown.js +10 -0
  85. package/dist/cli/normalize-markdown.js.map +1 -0
  86. package/dist/cli/run.d.ts +11 -0
  87. package/dist/cli/run.d.ts.map +1 -0
  88. package/dist/cli/run.js +52 -0
  89. package/dist/cli/run.js.map +1 -0
  90. package/dist/cli/validate-args.d.ts +18 -0
  91. package/dist/cli/validate-args.d.ts.map +1 -0
  92. package/dist/cli/validate-args.js +131 -0
  93. package/dist/cli/validate-args.js.map +1 -0
  94. package/dist/declarative-validation/assertions/context.d.ts +8 -0
  95. package/dist/declarative-validation/assertions/context.d.ts.map +1 -0
  96. package/dist/declarative-validation/assertions/context.js +2 -0
  97. package/dist/declarative-validation/assertions/context.js.map +1 -0
  98. package/dist/declarative-validation/assertions/diagnostics.d.ts +22 -0
  99. package/dist/declarative-validation/assertions/diagnostics.d.ts.map +1 -0
  100. package/dist/declarative-validation/assertions/diagnostics.js +71 -0
  101. package/dist/declarative-validation/assertions/diagnostics.js.map +1 -0
  102. package/dist/declarative-validation/assertions/document-text-offsets.d.ts +3 -0
  103. package/dist/declarative-validation/assertions/document-text-offsets.d.ts.map +1 -0
  104. package/dist/declarative-validation/assertions/document-text-offsets.js +32 -0
  105. package/dist/declarative-validation/assertions/document-text-offsets.js.map +1 -0
  106. package/dist/declarative-validation/assertions/evaluator.d.ts +5 -0
  107. package/dist/declarative-validation/assertions/evaluator.d.ts.map +1 -0
  108. package/dist/declarative-validation/assertions/evaluator.js +46 -0
  109. package/dist/declarative-validation/assertions/evaluator.js.map +1 -0
  110. package/dist/declarative-validation/assertions/exists.d.ts +4 -0
  111. package/dist/declarative-validation/assertions/exists.d.ts.map +1 -0
  112. package/dist/declarative-validation/assertions/exists.js +8 -0
  113. package/dist/declarative-validation/assertions/exists.js.map +1 -0
  114. package/dist/declarative-validation/assertions/frontmatter-required.d.ts +9 -0
  115. package/dist/declarative-validation/assertions/frontmatter-required.d.ts.map +1 -0
  116. package/dist/declarative-validation/assertions/frontmatter-required.js +15 -0
  117. package/dist/declarative-validation/assertions/frontmatter-required.js.map +1 -0
  118. package/dist/declarative-validation/assertions/id-targets.d.ts +29 -0
  119. package/dist/declarative-validation/assertions/id-targets.d.ts.map +1 -0
  120. package/dist/declarative-validation/assertions/id-targets.js +428 -0
  121. package/dist/declarative-validation/assertions/id-targets.js.map +1 -0
  122. package/dist/declarative-validation/assertions/id-tokens.d.ts +15 -0
  123. package/dist/declarative-validation/assertions/id-tokens.d.ts.map +1 -0
  124. package/dist/declarative-validation/assertions/id-tokens.js +27 -0
  125. package/dist/declarative-validation/assertions/id-tokens.js.map +1 -0
  126. package/dist/declarative-validation/assertions/ids.d.ts +9 -0
  127. package/dist/declarative-validation/assertions/ids.d.ts.map +1 -0
  128. package/dist/declarative-validation/assertions/ids.js +42 -0
  129. package/dist/declarative-validation/assertions/ids.js.map +1 -0
  130. package/dist/declarative-validation/assertions/index.d.ts +3 -0
  131. package/dist/declarative-validation/assertions/index.d.ts.map +1 -0
  132. package/dist/declarative-validation/assertions/index.js +3 -0
  133. package/dist/declarative-validation/assertions/index.js.map +1 -0
  134. package/dist/declarative-validation/assertions/literal-text.d.ts +2 -0
  135. package/dist/declarative-validation/assertions/literal-text.d.ts.map +1 -0
  136. package/dist/declarative-validation/assertions/literal-text.js +14 -0
  137. package/dist/declarative-validation/assertions/literal-text.js.map +1 -0
  138. package/dist/declarative-validation/assertions/normalized-source-ranges.d.ts +3 -0
  139. package/dist/declarative-validation/assertions/normalized-source-ranges.d.ts.map +1 -0
  140. package/dist/declarative-validation/assertions/normalized-source-ranges.js +105 -0
  141. package/dist/declarative-validation/assertions/normalized-source-ranges.js.map +1 -0
  142. package/dist/declarative-validation/assertions/ordering.d.ts +6 -0
  143. package/dist/declarative-validation/assertions/ordering.d.ts.map +1 -0
  144. package/dist/declarative-validation/assertions/ordering.js +71 -0
  145. package/dist/declarative-validation/assertions/ordering.js.map +1 -0
  146. package/dist/declarative-validation/assertions/references.d.ts +9 -0
  147. package/dist/declarative-validation/assertions/references.d.ts.map +1 -0
  148. package/dist/declarative-validation/assertions/references.js +354 -0
  149. package/dist/declarative-validation/assertions/references.js.map +1 -0
  150. package/dist/declarative-validation/assertions/sections-required.d.ts +9 -0
  151. package/dist/declarative-validation/assertions/sections-required.d.ts.map +1 -0
  152. package/dist/declarative-validation/assertions/sections-required.js +49 -0
  153. package/dist/declarative-validation/assertions/sections-required.js.map +1 -0
  154. package/dist/declarative-validation/assertions/table-columns-required.d.ts +9 -0
  155. package/dist/declarative-validation/assertions/table-columns-required.d.ts.map +1 -0
  156. package/dist/declarative-validation/assertions/table-columns-required.js +31 -0
  157. package/dist/declarative-validation/assertions/table-columns-required.js.map +1 -0
  158. package/dist/declarative-validation/assertions/text-length.d.ts +9 -0
  159. package/dist/declarative-validation/assertions/text-length.d.ts.map +1 -0
  160. package/dist/declarative-validation/assertions/text-length.js +40 -0
  161. package/dist/declarative-validation/assertions/text-length.js.map +1 -0
  162. package/dist/declarative-validation/assertions/text-occurrence-count.d.ts +9 -0
  163. package/dist/declarative-validation/assertions/text-occurrence-count.d.ts.map +1 -0
  164. package/dist/declarative-validation/assertions/text-occurrence-count.js +22 -0
  165. package/dist/declarative-validation/assertions/text-occurrence-count.js.map +1 -0
  166. package/dist/declarative-validation/assertions/text.d.ts +9 -0
  167. package/dist/declarative-validation/assertions/text.d.ts.map +1 -0
  168. package/dist/declarative-validation/assertions/text.js +32 -0
  169. package/dist/declarative-validation/assertions/text.js.map +1 -0
  170. package/dist/declarative-validation/compiler/assertion-builders.d.ts +6 -0
  171. package/dist/declarative-validation/compiler/assertion-builders.d.ts.map +1 -0
  172. package/dist/declarative-validation/compiler/assertion-builders.js +199 -0
  173. package/dist/declarative-validation/compiler/assertion-builders.js.map +1 -0
  174. package/dist/declarative-validation/compiler/assertion-shapes.d.ts +18 -0
  175. package/dist/declarative-validation/compiler/assertion-shapes.d.ts.map +1 -0
  176. package/dist/declarative-validation/compiler/assertion-shapes.js +129 -0
  177. package/dist/declarative-validation/compiler/assertion-shapes.js.map +1 -0
  178. package/dist/declarative-validation/compiler/assertions.d.ts +5 -0
  179. package/dist/declarative-validation/compiler/assertions.d.ts.map +1 -0
  180. package/dist/declarative-validation/compiler/assertions.js +25 -0
  181. package/dist/declarative-validation/compiler/assertions.js.map +1 -0
  182. package/dist/declarative-validation/compiler/compatibility.d.ts +4 -0
  183. package/dist/declarative-validation/compiler/compatibility.d.ts.map +1 -0
  184. package/dist/declarative-validation/compiler/compatibility.js +28 -0
  185. package/dist/declarative-validation/compiler/compatibility.js.map +1 -0
  186. package/dist/declarative-validation/compiler/diagnostics.d.ts +3 -0
  187. package/dist/declarative-validation/compiler/diagnostics.d.ts.map +1 -0
  188. package/dist/declarative-validation/compiler/diagnostics.js +9 -0
  189. package/dist/declarative-validation/compiler/diagnostics.js.map +1 -0
  190. package/dist/declarative-validation/compiler/index.d.ts +5 -0
  191. package/dist/declarative-validation/compiler/index.d.ts.map +1 -0
  192. package/dist/declarative-validation/compiler/index.js +164 -0
  193. package/dist/declarative-validation/compiler/index.js.map +1 -0
  194. package/dist/declarative-validation/compiler/plan.d.ts +58 -0
  195. package/dist/declarative-validation/compiler/plan.d.ts.map +1 -0
  196. package/dist/declarative-validation/compiler/plan.js +2 -0
  197. package/dist/declarative-validation/compiler/plan.js.map +1 -0
  198. package/dist/declarative-validation/diagnostics/index.d.ts +7 -0
  199. package/dist/declarative-validation/diagnostics/index.d.ts.map +1 -0
  200. package/dist/declarative-validation/diagnostics/index.js +2 -0
  201. package/dist/declarative-validation/diagnostics/index.js.map +1 -0
  202. package/dist/declarative-validation/diagnostics/profile-config-diagnostics.d.ts +11 -0
  203. package/dist/declarative-validation/diagnostics/profile-config-diagnostics.d.ts.map +1 -0
  204. package/dist/declarative-validation/diagnostics/profile-config-diagnostics.js +45 -0
  205. package/dist/declarative-validation/diagnostics/profile-config-diagnostics.js.map +1 -0
  206. package/dist/declarative-validation/evidence/index.d.ts +14 -0
  207. package/dist/declarative-validation/evidence/index.d.ts.map +1 -0
  208. package/dist/declarative-validation/evidence/index.js +38 -0
  209. package/dist/declarative-validation/evidence/index.js.map +1 -0
  210. package/dist/declarative-validation/profile/assertion-schema.d.ts +4 -0
  211. package/dist/declarative-validation/profile/assertion-schema.d.ts.map +1 -0
  212. package/dist/declarative-validation/profile/assertion-schema.js +285 -0
  213. package/dist/declarative-validation/profile/assertion-schema.js.map +1 -0
  214. package/dist/declarative-validation/profile/data-closure.d.ts +6 -0
  215. package/dist/declarative-validation/profile/data-closure.d.ts.map +1 -0
  216. package/dist/declarative-validation/profile/data-closure.js +167 -0
  217. package/dist/declarative-validation/profile/data-closure.js.map +1 -0
  218. package/dist/declarative-validation/profile/direct-profile-diagnostics.d.ts +5 -0
  219. package/dist/declarative-validation/profile/direct-profile-diagnostics.d.ts.map +1 -0
  220. package/dist/declarative-validation/profile/direct-profile-diagnostics.js +73 -0
  221. package/dist/declarative-validation/profile/direct-profile-diagnostics.js.map +1 -0
  222. package/dist/declarative-validation/profile/index.d.ts +113 -0
  223. package/dist/declarative-validation/profile/index.d.ts.map +1 -0
  224. package/dist/declarative-validation/profile/index.js +2 -0
  225. package/dist/declarative-validation/profile/index.js.map +1 -0
  226. package/dist/declarative-validation/profile/materialization.d.ts +9 -0
  227. package/dist/declarative-validation/profile/materialization.d.ts.map +1 -0
  228. package/dist/declarative-validation/profile/materialization.js +109 -0
  229. package/dist/declarative-validation/profile/materialization.js.map +1 -0
  230. package/dist/declarative-validation/profile/parse.d.ts +3 -0
  231. package/dist/declarative-validation/profile/parse.d.ts.map +1 -0
  232. package/dist/declarative-validation/profile/parse.js +89 -0
  233. package/dist/declarative-validation/profile/parse.js.map +1 -0
  234. package/dist/declarative-validation/profile/schema-values.d.ts +14 -0
  235. package/dist/declarative-validation/profile/schema-values.d.ts.map +1 -0
  236. package/dist/declarative-validation/profile/schema-values.js +81 -0
  237. package/dist/declarative-validation/profile/schema-values.js.map +1 -0
  238. package/dist/declarative-validation/profile/schema.d.ts +9 -0
  239. package/dist/declarative-validation/profile/schema.d.ts.map +1 -0
  240. package/dist/declarative-validation/profile/schema.js +98 -0
  241. package/dist/declarative-validation/profile/schema.js.map +1 -0
  242. package/dist/declarative-validation/profile/selector-schema.d.ts +4 -0
  243. package/dist/declarative-validation/profile/selector-schema.d.ts.map +1 -0
  244. package/dist/declarative-validation/profile/selector-schema.js +145 -0
  245. package/dist/declarative-validation/profile/selector-schema.js.map +1 -0
  246. package/dist/declarative-validation/results/index.d.ts +26 -0
  247. package/dist/declarative-validation/results/index.d.ts.map +1 -0
  248. package/dist/declarative-validation/results/index.js +2 -0
  249. package/dist/declarative-validation/results/index.js.map +1 -0
  250. package/dist/declarative-validation/selectors/index.d.ts +57 -0
  251. package/dist/declarative-validation/selectors/index.d.ts.map +1 -0
  252. package/dist/declarative-validation/selectors/index.js +149 -0
  253. package/dist/declarative-validation/selectors/index.js.map +1 -0
  254. package/dist/declarative-validation/selectors/source.d.ts +8 -0
  255. package/dist/declarative-validation/selectors/source.d.ts.map +1 -0
  256. package/dist/declarative-validation/selectors/source.js +57 -0
  257. package/dist/declarative-validation/selectors/source.js.map +1 -0
  258. package/dist/declarative-validation/selectors/table-targets.d.ts +13 -0
  259. package/dist/declarative-validation/selectors/table-targets.d.ts.map +1 -0
  260. package/dist/declarative-validation/selectors/table-targets.js +106 -0
  261. package/dist/declarative-validation/selectors/table-targets.js.map +1 -0
  262. package/dist/declarative-validation/selectors/table-text.d.ts +4 -0
  263. package/dist/declarative-validation/selectors/table-text.d.ts.map +1 -0
  264. package/dist/declarative-validation/selectors/table-text.js +16 -0
  265. package/dist/declarative-validation/selectors/table-text.js.map +1 -0
  266. package/dist/internal/document-node-walk.d.ts +10 -0
  267. package/dist/internal/document-node-walk.d.ts.map +1 -0
  268. package/dist/internal/document-node-walk.js +36 -0
  269. package/dist/internal/document-node-walk.js.map +1 -0
  270. package/dist/internal/stable-json.d.ts +3 -0
  271. package/dist/internal/stable-json.d.ts.map +1 -0
  272. package/dist/internal/stable-json.js +17 -0
  273. package/dist/internal/stable-json.js.map +1 -0
  274. package/dist/ir/document-derived-views.d.ts +4 -0
  275. package/dist/ir/document-derived-views.d.ts.map +1 -0
  276. package/dist/ir/document-derived-views.js +27 -0
  277. package/dist/ir/document-derived-views.js.map +1 -0
  278. package/dist/ir/document-link-reference-views.d.ts +3 -0
  279. package/dist/ir/document-link-reference-views.d.ts.map +1 -0
  280. package/dist/ir/document-link-reference-views.js +150 -0
  281. package/dist/ir/document-link-reference-views.js.map +1 -0
  282. package/dist/ir/document-link-views.d.ts +3 -0
  283. package/dist/ir/document-link-views.d.ts.map +1 -0
  284. package/dist/ir/document-link-views.js +23 -0
  285. package/dist/ir/document-link-views.js.map +1 -0
  286. package/dist/ir/document-list-views.d.ts +3 -0
  287. package/dist/ir/document-list-views.d.ts.map +1 -0
  288. package/dist/ir/document-list-views.js +39 -0
  289. package/dist/ir/document-list-views.js.map +1 -0
  290. package/dist/ir/document-sections.d.ts +3 -0
  291. package/dist/ir/document-sections.d.ts.map +1 -0
  292. package/dist/ir/document-sections.js +55 -0
  293. package/dist/ir/document-sections.js.map +1 -0
  294. package/dist/ir/document-table-views.d.ts +3 -0
  295. package/dist/ir/document-table-views.d.ts.map +1 -0
  296. package/dist/ir/document-table-views.js +31 -0
  297. package/dist/ir/document-table-views.js.map +1 -0
  298. package/dist/ir/document-targets.d.ts +10 -0
  299. package/dist/ir/document-targets.d.ts.map +1 -0
  300. package/dist/ir/document-targets.js +44 -0
  301. package/dist/ir/document-targets.js.map +1 -0
  302. package/dist/ir/document-text-spans.d.ts +3 -0
  303. package/dist/ir/document-text-spans.d.ts.map +1 -0
  304. package/dist/ir/document-text-spans.js +18 -0
  305. package/dist/ir/document-text-spans.js.map +1 -0
  306. package/dist/ir/document.d.ts +2 -3
  307. package/dist/ir/document.d.ts.map +1 -1
  308. package/dist/ir/document.js +12 -8
  309. package/dist/ir/document.js.map +1 -1
  310. package/dist/ir/index.d.ts +1 -0
  311. package/dist/ir/index.d.ts.map +1 -1
  312. package/dist/ir/normalization-input.d.ts +12 -0
  313. package/dist/ir/normalization-input.d.ts.map +1 -0
  314. package/dist/ir/normalization-input.js +2 -0
  315. package/dist/ir/normalization-input.js.map +1 -0
  316. package/dist/ir/source-ranges.d.ts +8 -0
  317. package/dist/ir/source-ranges.d.ts.map +1 -0
  318. package/dist/ir/source-ranges.js +21 -0
  319. package/dist/ir/source-ranges.js.map +1 -0
  320. package/dist/rules/code-fence-languages.d.ts.map +1 -1
  321. package/dist/rules/code-fence-languages.js +4 -6
  322. package/dist/rules/code-fence-languages.js.map +1 -1
  323. package/dist/rules/document-query.d.ts +0 -2
  324. package/dist/rules/document-query.d.ts.map +1 -1
  325. package/dist/rules/document-query.js +1 -17
  326. package/dist/rules/document-query.js.map +1 -1
  327. package/dist/rules/index.d.ts +2 -6
  328. package/dist/rules/index.d.ts.map +1 -1
  329. package/dist/rules/index.js +3 -37
  330. package/dist/rules/index.js.map +1 -1
  331. package/dist/rules/links-allowed-schemes.d.ts.map +1 -1
  332. package/dist/rules/links-allowed-schemes.js +3 -2
  333. package/dist/rules/links-allowed-schemes.js.map +1 -1
  334. package/dist/rules/registry.d.ts +12 -0
  335. package/dist/rules/registry.d.ts.map +1 -0
  336. package/dist/rules/registry.js +61 -0
  337. package/dist/rules/registry.js.map +1 -0
  338. package/docs/contracts/api.md +661 -0
  339. package/docs/contracts/declarative-validation.md +559 -0
  340. package/docs/contracts/frontmatter.md +122 -0
  341. package/fixtures/declarative-validation/examples/operational-spec/fail.md +32 -0
  342. package/fixtures/declarative-validation/examples/operational-spec/pass.md +34 -0
  343. package/fixtures/declarative-validation/examples/operational-spec/profile.yaml +131 -0
  344. package/fixtures/declarative-validation/examples/release-checklist/fail.md +22 -0
  345. package/fixtures/declarative-validation/examples/release-checklist/pass.md +22 -0
  346. package/fixtures/declarative-validation/examples/release-checklist/profile.yaml +96 -0
  347. package/fixtures/declarative-validation/examples/requirements-traceability/fail.md +27 -0
  348. package/fixtures/declarative-validation/examples/requirements-traceability/pass.md +27 -0
  349. package/fixtures/declarative-validation/examples/requirements-traceability/profile.yaml +119 -0
  350. package/package.json +37 -4
package/CHANGELOG.md CHANGED
@@ -1,8 +1,57 @@
1
1
  # Changelog
2
2
 
3
+ ## Unreleased
4
+
5
+ ### Added
6
+
7
+ - Added a GitHub Pages consumer site under `docs/` with value proposition,
8
+ workflow examples, and quickstart material for package 2.0 users.
9
+
10
+ ## 2.0.0 - 2026-05-13
11
+
12
+ ### Changed
13
+
14
+ - Promoted package metadata to `@jasonbelmonti/markdown-engine@2.0.0` while
15
+ retaining the serialized rich IR document contract at
16
+ `documentVersion: "1.0.0"`.
17
+ - Changed `normalize(parsed)` to default to the rich IR `1.0.0` document shape.
18
+ Callers that still need the retained `0.1.0`-compatible shape must pass
19
+ `documentVersion: "0.0.0"` explicitly.
20
+ - Added `docs/contracts/**` to the npm package artifact and included the rich
21
+ IR contract documentation gate in `release:verify`.
22
+
23
+ ### Fixed
24
+
25
+ - Closed the direct-object `parseValidationProfile(...)` ingestion path before
26
+ schema traversal so unsafe accessors, proxies, cyclic values, sparse arrays,
27
+ functions, non-finite numbers, explicit `undefined`, and `__proto__` payloads
28
+ are rejected as inert profile data instead of being read by schema logic.
29
+
30
+ ## 1.0.0 - 2026-05-07
31
+
32
+ ### Added
33
+
34
+ - Added the 1.0 rich IR document contract with deterministic targets,
35
+ structural views, source slices, query helpers, table/list/link models, and
36
+ caller-owned annotation target validation.
37
+ - Added compatibility gates for final `1.0.0` document-bearing results and the
38
+ retained `0.1.0`-compatible `0.0.0` document shape.
39
+ - Added CLI `--document-version` selection with final `1.0.0` output by default
40
+ and explicit `0.0.0` legacy output.
41
+ - Added release-readiness, downstream exercise, repeatability, and audit
42
+ evidence for the 1.0 release lane.
43
+
44
+ ### Changed
45
+
46
+ - Promoted package metadata to `@jasonbelmonti/markdown-engine@1.0.0`.
47
+ - Promoted the public rich IR document version from the implementation-lane
48
+ draft selector to final `1.0.0`.
49
+ - Classified the CLI default JSON output change as a breaking 1.0 behavior;
50
+ consumers that need the legacy shape must pass `--document-version 0.0.0`.
51
+
3
52
  ## 0.1.0 - 2026-05-01
4
53
 
5
- Initial public release candidate for `@jasonbelmonti/markdown-engine`.
54
+ Initial public release for `@jasonbelmonti/markdown-engine`.
6
55
 
7
56
  ### Added
8
57
 
@@ -24,6 +73,6 @@ Initial public release candidate for `@jasonbelmonti/markdown-engine`.
24
73
 
25
74
  ### Release Status
26
75
 
27
- This version is prepared as the first public package version. Publication still
28
- requires MS-3 approval, downstream confirmation or owner waiver, final
29
- release-candidate validation, and npm publish verification.
76
+ This version is the first published npm package version. The next planned
77
+ release target is `1.0.0` with the feature-complete rich IR contract described
78
+ in `docs/design/markdown-engine-1.0-rich-ir-operational-design-spec.md`.
package/README.md CHANGED
@@ -3,12 +3,16 @@
3
3
  Deterministic Markdown parsing and validation engine package for downstream
4
4
  profile and runtime work.
5
5
 
6
- Current release candidate:
6
+ Current package release:
7
7
 
8
8
  - package name: `@jasonbelmonti/markdown-engine`
9
- - version: `0.1.0`
10
- - release status: package metadata is public-release-ready; package tag and
11
- npm publication still require MS-3 approval
9
+ - version: `2.0.0`
10
+ - website: <https://jasonbelmonti.github.io/markdown-engine/>
11
+ - release focus: package-level 2.0 hardening with the existing
12
+ `documentVersion: "1.0.0"` rich IR contract as the default API and CLI
13
+ document shape
14
+ - design reference:
15
+ [Markdown Engine 1.0 Rich IR design](docs/design/markdown-engine-1.0-rich-ir-operational-design-spec.md)
12
16
 
13
17
  ## Scope
14
18
 
@@ -32,6 +36,10 @@ The package root exports:
32
36
  - `normalize(parsed, options?)`
33
37
  - `validate(document, config?, options?)`
34
38
  - `serialize(result, options?)`
39
+ - `documentQueries`
40
+ - `validateAnnotations(document, annotations)`
41
+ - `parseValidationProfile(input, options?)`
42
+ - `validateWithProfile(document, profile, options?)`
35
43
 
36
44
  Example:
37
45
 
@@ -72,10 +80,107 @@ console.log(validationResult.valid);
72
80
  console.log(serialize(validationResult, { pretty: true }));
73
81
  ```
74
82
 
83
+ Package 2.0 keeps the serialized document contract at
84
+ `documentVersion: "1.0.0"` and makes that rich IR path the default for
85
+ `normalize(parsed)`. Callers may still pass
86
+ `normalize(parsed, { documentVersion: "1.0.0" })` explicitly. That path adds
87
+ deterministic targets, structural views, source slices, query helpers, and
88
+ caller-owned annotation target validation. The retained `0.1.0`-compatible
89
+ document path remains selectable as `documentVersion: "0.0.0"` and
90
+ serialization gates can require it with `compatibilityMode: "legacy-0.1"`.
91
+
92
+ ## CLI
93
+
94
+ The package includes a minimal local CLI for experimenting with one Markdown
95
+ file at a time. The default command runs parse and normalization, then writes
96
+ the normalized result as pretty JSON. The `validate` subcommand runs one
97
+ declarative validation profile against one Markdown file and writes pretty JSON.
98
+
99
+ From the repository or package root after building, run:
100
+
101
+ ```sh
102
+ npm run build
103
+ node dist/cli/index.js --file fixtures/declarative-validation/examples/operational-spec/pass.md
104
+ ```
105
+
106
+ The package binary accepts `--file` or `--path` as aliases for a single file.
107
+ For an npm install in the current project, point at the bundled examples through
108
+ `node_modules/@jasonbelmonti/markdown-engine`:
109
+
110
+ ```sh
111
+ markdown-engine --path node_modules/@jasonbelmonti/markdown-engine/fixtures/declarative-validation/examples/operational-spec/pass.md
112
+ ```
113
+
114
+ By default, CLI output uses the 1.0 rich IR contract:
115
+
116
+ ```json
117
+ {
118
+ "document": {
119
+ "version": "1.0.0",
120
+ "target": { "kind": "node", "nodeType": "document" },
121
+ "sections": []
122
+ }
123
+ }
124
+ ```
125
+
126
+ Use `--document-version 0.0.0` when a caller still needs the legacy
127
+ `0.1.0`-compatible document shape without rich derived views:
128
+
129
+ ```sh
130
+ markdown-engine --document-version 0.0.0 --file node_modules/@jasonbelmonti/markdown-engine/fixtures/declarative-validation/examples/operational-spec/pass.md
131
+ ```
132
+
133
+ The selector accepts spaced or assignment-form syntax, such as
134
+ `--document-version 0.0.0` or `--document-version=0.0.0`. Supported selector
135
+ values are `1.0.0` and `0.0.0`. Missing, invalid, or repeated
136
+ `--document-version` selectors exit with code `2` and usage text; an empty
137
+ assignment-form selector is treated as missing. Directory traversal is not
138
+ supported by this CLI slice.
139
+
140
+ Declarative validation uses the 1.0 document contract and does not accept
141
+ `--document-version`:
142
+
143
+ ```sh
144
+ markdown-engine validate --file node_modules/@jasonbelmonti/markdown-engine/fixtures/declarative-validation/examples/operational-spec/pass.md --profile node_modules/@jasonbelmonti/markdown-engine/fixtures/declarative-validation/examples/operational-spec/profile.yaml
145
+ ```
146
+
147
+ `--format json` is accepted for validation, is the default, and is the only
148
+ supported format. The validation command reads and checks the profile before
149
+ reading the Markdown file. Profile parse/config/compile failures exit with code
150
+ `1` and emit JSON with `stage: "profile"`, empty `ruleResults`, no `profile`,
151
+ and no `evidence`. Markdown read errors and usage errors exit with code `2`.
152
+ Successful validation exits with code `0`; validation or normalization error
153
+ diagnostics exit with code `1`. Validation JSON includes `profile`,
154
+ `ruleResults`, `diagnostics`, and `evidence`.
155
+
156
+ Reader-facing declarative validation examples live under
157
+ `fixtures/declarative-validation/examples/**`. From the repository or package
158
+ root after building, run one passing and one intentionally failing example with:
159
+
160
+ ```sh
161
+ node dist/cli/index.js validate --file fixtures/declarative-validation/examples/operational-spec/pass.md --profile fixtures/declarative-validation/examples/operational-spec/profile.yaml
162
+ node dist/cli/index.js validate --file fixtures/declarative-validation/examples/operational-spec/fail.md --profile fixtures/declarative-validation/examples/operational-spec/profile.yaml
163
+ ```
164
+
165
+ The passing example exits `0`; the failing example exits `1` and prints JSON
166
+ diagnostics for review.
167
+
168
+ Package 2.0 classifies the API normalization default as breaking for consumers
169
+ that call `normalize(parsed)` and expect the legacy `0.0.0` shape. Migration is
170
+ to either consume the rich IR fields (`target`, `sections`, `textSpans`,
171
+ `tables`, `lists`, and `links`) or pin
172
+ `normalize(parsed, { documentVersion: "0.0.0" })` until the downstream consumer
173
+ is ready. The CLI already defaults to the rich IR document contract and keeps
174
+ `--document-version 0.0.0` for explicit legacy output.
175
+
75
176
  Contract references:
76
177
 
178
+ - [Consumer website](https://jasonbelmonti.github.io/markdown-engine/)
77
179
  - [Public API contract](docs/contracts/api.md)
180
+ - [Declarative validation contract](docs/contracts/declarative-validation.md)
78
181
  - [Frontmatter contract](docs/contracts/frontmatter.md)
182
+ - [Markdown Engine 1.0 Rich IR design](docs/design/markdown-engine-1.0-rich-ir-operational-design-spec.md)
183
+ - [Testing and snapshot operations](docs/testing.md)
79
184
  - [Changelog](CHANGELOG.md)
80
185
  - [Security policy](SECURITY.md)
81
186
 
@@ -84,29 +189,52 @@ Contract references:
84
189
  Run the release-readiness gates from the repository root:
85
190
 
86
191
  ```sh
192
+ npm run docs:rich-ir-contract
193
+ npm run docs:declarative-validation-contract
194
+ npm run audit:declarative-validation-boundary
87
195
  npm run release:verify
88
196
  npm pack --dry-run
89
197
  npm publish --dry-run --access public
90
198
  ```
91
199
 
92
- The WP-6 validation record is:
93
-
200
+ Validation records include:
201
+
202
+ - [EVD-6 rich IR contract docs](docs/evidence/wp-5-evd-6-rich-ir-contract.md)
203
+ - [EVD-6 declarative validation repeatability](docs/evidence/wp-5-evd-6-declarative-validation-repeatability.md)
204
+ - [EVD-7 declarative validation contract review](docs/evidence/wp-5-evd-7-declarative-validation-contract-review.md)
205
+ - [EVD-8 declarative validation boundary audit](docs/evidence/wp-5-evd-8-declarative-validation-boundary-audit.md)
206
+ - [BEL-986 declarative validation MS-2 approval](docs/evidence/bel-986-ms-2-approval.md)
207
+ - [EVD-8 compatibility and CLI impact](docs/evidence/wp-5-evd-8-compatibility-cli-impact.md)
208
+ - [EVD-9 1.0 downstream exercise](docs/evidence/wp-6-evd-9-downstream-exercise.md)
209
+ - [EVD-10 declarative validation release-readiness handoff](docs/evidence/wp-6-evd-10-declarative-validation-release-readiness.md)
210
+ - [EVD-10 1.0 release readiness](docs/evidence/wp-6-evd-10-release-readiness.md)
94
211
  - [EVD-7 release readiness](docs/evidence/wp-6-evd-7-release-readiness.md)
95
212
  - [EVD-9 merge readiness](docs/evidence/wp-6-evd-9-merge-readiness.md)
96
213
  - [EVD-10 rollback containment](docs/evidence/wp-6-evd-10-rollback-containment.md)
97
214
  - [EVD-11 downstream handoff](docs/evidence/wp-6-evd-11-downstream-handoff.md)
215
+ - [BEL-1025 declarative validation example suite](docs/evidence/bel-1025-declarative-validation-example-suite.md)
98
216
 
99
- ## Release Gate
217
+ Snapshot baseline updates are operational changes, not routine test-output
218
+ cleanup. Use the [testing and snapshot operations](docs/testing.md) guide before
219
+ updating files under `snapshots/**`.
100
220
 
101
- Do not tag or publish this package until MS-3 approval is recorded with:
221
+ ## 2.0 Release Gate
102
222
 
103
- - semver classification and package version decision
223
+ Do not tag or publish the 2.0 release until approval is recorded with:
224
+
225
+ - semver classification distinguishing package version `2.0.0` from document
226
+ contract version `1.0.0`
104
227
  - release/tag decision
105
228
  - rollback and containment notes
106
229
  - downstream profile/runtime consumer confirmation
107
230
  - complete evidence links from EVD-1 through EVD-11
108
231
 
109
- When MS-3 is approved, publish the package as:
232
+ Current release decision: package `2.0.0` retains the public rich IR document
233
+ contract at `documentVersion: "1.0.0"`, makes that contract the default API
234
+ normalization output, and hardens declarative profile ingestion. The `v2.0.0`
235
+ git tag must point only at a commit that passes the validation commands above.
236
+
237
+ When 2.0 is approved, publish the package as:
110
238
 
111
239
  ```sh
112
240
  npm publish --access public
package/SECURITY.md CHANGED
@@ -2,9 +2,11 @@
2
2
 
3
3
  ## Supported Versions
4
4
 
5
- `@jasonbelmonti/markdown-engine` is pre-1.0 software. Security fixes are
6
- expected to target the latest published minor version unless a release note
7
- states otherwise.
5
+ Security fixes target the latest published major version of
6
+ `@jasonbelmonti/markdown-engine`. As of the 2.0 release line, fixes are expected
7
+ to land on the latest `2.x` package unless a release note states otherwise.
8
+ Older `0.x` and `1.x` lines are not maintained unless an explicit backport is
9
+ announced.
8
10
 
9
11
  ## Reporting A Vulnerability
10
12
 
@@ -0,0 +1,7 @@
1
+ import type { SourcePosition, SourceRange } from "./diagnostics.js";
2
+ export declare function cloneSourceRangeCandidate(range: unknown): SourceRange | undefined;
3
+ export declare function cloneSourceRange(sourceRange: SourceRange): SourceRange;
4
+ export declare function sourceRangeIsInvalid(range: SourceRange): boolean;
5
+ export declare function sourceRangeContains(container: SourceRange, target: SourceRange): boolean;
6
+ export declare function compareSourcePositions(left: SourcePosition, right: SourcePosition): number;
7
+ //# sourceMappingURL=annotation-source-range.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"annotation-source-range.d.ts","sourceRoot":"","sources":["../../src/api/annotation-source-range.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAQpE,wBAAgB,yBAAyB,CACvC,KAAK,EAAE,OAAO,GACb,WAAW,GAAG,SAAS,CAazB;AAED,wBAAgB,gBAAgB,CAAC,WAAW,EAAE,WAAW,GAAG,WAAW,CAKtE;AAED,wBAAgB,oBAAoB,CAAC,KAAK,EAAE,WAAW,GAAG,OAAO,CAKhE;AAED,wBAAgB,mBAAmB,CACjC,SAAS,EAAE,WAAW,EACtB,MAAM,EAAE,WAAW,GAClB,OAAO,CAMT;AAED,wBAAgB,sBAAsB,CACpC,IAAI,EAAE,cAAc,EACpB,KAAK,EAAE,cAAc,GACpB,MAAM,CAMR"}
@@ -0,0 +1,103 @@
1
+ import { isPlainObject, ownDataProperty, ownRuntimeProperty, } from "./annotation-target-runtime.js";
2
+ export function cloneSourceRangeCandidate(range) {
3
+ if (!isPlainObject(range)) {
4
+ return undefined;
5
+ }
6
+ const start = cloneSourcePositionCandidate(ownDataProperty(range, "start"));
7
+ const end = cloneSourcePositionCandidate(ownDataProperty(range, "end"));
8
+ if (start === undefined || end === undefined) {
9
+ return undefined;
10
+ }
11
+ return { start, end };
12
+ }
13
+ export function cloneSourceRange(sourceRange) {
14
+ return {
15
+ start: cloneSourcePosition(sourceRange.start),
16
+ end: cloneSourcePosition(sourceRange.end),
17
+ };
18
+ }
19
+ export function sourceRangeIsInvalid(range) {
20
+ return (compareLineAndColumn(range.end, range.start) < 0 ||
21
+ sourceOffsetsAreInvalid(range));
22
+ }
23
+ export function sourceRangeContains(container, target) {
24
+ return (compareLineAndColumn(container.start, target.start) <= 0 &&
25
+ compareLineAndColumn(target.end, container.end) <= 0 &&
26
+ sourceOffsetsAreContained(container, target));
27
+ }
28
+ export function compareSourcePositions(left, right) {
29
+ return (left.line - right.line ||
30
+ left.column - right.column ||
31
+ compareOptionalOffsets(left.offset, right.offset));
32
+ }
33
+ function cloneSourcePosition(position) {
34
+ return {
35
+ line: position.line,
36
+ column: position.column,
37
+ ...(position.offset !== undefined ? { offset: position.offset } : {}),
38
+ };
39
+ }
40
+ function cloneSourcePositionCandidate(position) {
41
+ if (!isPlainObject(position)) {
42
+ return undefined;
43
+ }
44
+ const line = ownDataProperty(position, "line");
45
+ const column = ownDataProperty(position, "column");
46
+ const offsetProperty = ownRuntimeProperty(position, "offset");
47
+ const offset = optionalDataPropertyValue(offsetProperty);
48
+ if (!isPositiveInteger(line) ||
49
+ !isPositiveInteger(column) ||
50
+ optionalDataPropertyIsInvalid(offsetProperty) ||
51
+ (offset !== undefined && !isNonNegativeInteger(offset))) {
52
+ return undefined;
53
+ }
54
+ return {
55
+ line,
56
+ column,
57
+ ...(offset !== undefined ? { offset } : {}),
58
+ };
59
+ }
60
+ function optionalDataPropertyValue(property) {
61
+ return property.kind === "data" ? property.value : undefined;
62
+ }
63
+ function optionalDataPropertyIsInvalid(property) {
64
+ return property.kind === "accessor" || property.kind === "unavailable";
65
+ }
66
+ function isPositiveInteger(value) {
67
+ return typeof value === "number" && Number.isInteger(value) && value >= 1;
68
+ }
69
+ function isNonNegativeInteger(value) {
70
+ return typeof value === "number" && Number.isInteger(value) && value >= 0;
71
+ }
72
+ function compareLineAndColumn(left, right) {
73
+ return left.line - right.line || left.column - right.column;
74
+ }
75
+ function compareOptionalOffsets(left, right) {
76
+ if (left === undefined && right === undefined) {
77
+ return 0;
78
+ }
79
+ if (left === undefined) {
80
+ return 1;
81
+ }
82
+ if (right === undefined) {
83
+ return -1;
84
+ }
85
+ return left - right;
86
+ }
87
+ function sourceOffsetsAreInvalid(range) {
88
+ return (range.start.offset !== undefined &&
89
+ range.end.offset !== undefined &&
90
+ range.end.offset < range.start.offset);
91
+ }
92
+ function sourceOffsetsAreContained(container, target) {
93
+ return (sourceOffsetIsContained(container, target.start.offset) &&
94
+ sourceOffsetIsContained(container, target.end.offset));
95
+ }
96
+ function sourceOffsetIsContained(container, offset) {
97
+ if (offset === undefined) {
98
+ return true;
99
+ }
100
+ return ((container.start.offset === undefined || container.start.offset <= offset) &&
101
+ (container.end.offset === undefined || offset <= container.end.offset));
102
+ }
103
+ //# sourceMappingURL=annotation-source-range.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"annotation-source-range.js","sourceRoot":"","sources":["../../src/api/annotation-source-range.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,10 @@
1
+ export type AnnotationTargetCandidate = {
2
+ kind?: unknown;
3
+ nodeTarget?: unknown;
4
+ sourceRange?: unknown;
5
+ };
6
+ export declare function isAnnotationTargetCandidate(target: unknown): target is AnnotationTargetCandidate;
7
+ export declare function annotationTargetKind(target: AnnotationTargetCandidate): unknown;
8
+ export declare function annotationNodeTarget(target: AnnotationTargetCandidate): unknown;
9
+ export declare function annotationSourceRange(target: AnnotationTargetCandidate): unknown;
10
+ //# sourceMappingURL=annotation-target-candidate.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"annotation-target-candidate.d.ts","sourceRoot":"","sources":["../../src/api/annotation-target-candidate.ts"],"names":[],"mappings":"AAEA,MAAM,MAAM,yBAAyB,GAAG;IACtC,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,WAAW,CAAC,EAAE,OAAO,CAAC;CACvB,CAAC;AAEF,wBAAgB,2BAA2B,CACzC,MAAM,EAAE,OAAO,GACd,MAAM,IAAI,yBAAyB,CAErC;AAED,wBAAgB,oBAAoB,CAClC,MAAM,EAAE,yBAAyB,GAChC,OAAO,CAET;AAED,wBAAgB,oBAAoB,CAClC,MAAM,EAAE,yBAAyB,GAChC,OAAO,CAET;AAED,wBAAgB,qBAAqB,CACnC,MAAM,EAAE,yBAAyB,GAChC,OAAO,CAET"}
@@ -0,0 +1,14 @@
1
+ import { isArray, ownDataProperty } from "./annotation-target-runtime.js";
2
+ export function isAnnotationTargetCandidate(target) {
3
+ return typeof target === "object" && target !== null && !isArray(target);
4
+ }
5
+ export function annotationTargetKind(target) {
6
+ return ownDataProperty(target, "kind");
7
+ }
8
+ export function annotationNodeTarget(target) {
9
+ return ownDataProperty(target, "nodeTarget");
10
+ }
11
+ export function annotationSourceRange(target) {
12
+ return ownDataProperty(target, "sourceRange");
13
+ }
14
+ //# sourceMappingURL=annotation-target-candidate.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"annotation-target-candidate.js","sourceRoot":"","sources":["../../src/api/annotation-target-candidate.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,eAAe,EAAE,MAAM,gCAAgC,CAAC;AAQ1E,MAAM,UAAU,2BAA2B,CACzC,MAAe;IAEf,OAAO,OAAO,MAAM,KAAK,QAAQ,IAAI,MAAM,KAAK,IAAI,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;AAC3E,CAAC;AAED,MAAM,UAAU,oBAAoB,CAClC,MAAiC;IAEjC,OAAO,eAAe,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;AACzC,CAAC;AAED,MAAM,UAAU,oBAAoB,CAClC,MAAiC;IAEjC,OAAO,eAAe,CAAC,MAAM,EAAE,YAAY,CAAC,CAAC;AAC/C,CAAC;AAED,MAAM,UAAU,qBAAqB,CACnC,MAAiC;IAEjC,OAAO,eAAe,CAAC,MAAM,EAAE,aAAa,CAAC,CAAC;AAChD,CAAC"}
@@ -0,0 +1,5 @@
1
+ import type { EngineAnnotationTarget, EngineNodeTarget } from "./document.js";
2
+ export declare function cloneAnnotationTarget(target: EngineAnnotationTarget): EngineAnnotationTarget;
3
+ export declare function cloneDiagnosticTarget(target: unknown): unknown;
4
+ export declare function cloneEngineTargetCandidate(target: unknown): EngineNodeTarget | undefined;
5
+ //# sourceMappingURL=annotation-target-cloning.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"annotation-target-cloning.d.ts","sourceRoot":"","sources":["../../src/api/annotation-target-cloning.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,sBAAsB,EACtB,gBAAgB,EACjB,MAAM,eAAe,CAAC;AAwBvB,wBAAgB,qBAAqB,CACnC,MAAM,EAAE,sBAAsB,GAC7B,sBAAsB,CAUxB;AAED,wBAAgB,qBAAqB,CAAC,MAAM,EAAE,OAAO,GAAG,OAAO,CAU9D;AAED,wBAAgB,0BAA0B,CACxC,MAAM,EAAE,OAAO,GACd,gBAAgB,GAAG,SAAS,CAwC9B"}
@@ -0,0 +1,122 @@
1
+ import { arrayLength, isArray, isPlainObject, MAX_NORMALIZED_ARRAY_LENGTH, normalizeRuntimeValue, ownRuntimeProperty, } from "./annotation-target-runtime.js";
2
+ import { annotationNodeTarget, annotationSourceRange, annotationTargetKind, isAnnotationTargetCandidate, } from "./annotation-target-candidate.js";
3
+ import { cloneSourceRangeCandidate } from "./annotation-source-range.js";
4
+ export function cloneAnnotationTarget(target) {
5
+ if (isAnnotationTargetCandidate(target)) {
6
+ const clonedTarget = cloneKnownAnnotationTarget(target);
7
+ if (clonedTarget !== undefined) {
8
+ return clonedTarget;
9
+ }
10
+ }
11
+ return serializableTarget(target);
12
+ }
13
+ export function cloneDiagnosticTarget(target) {
14
+ if (isAnnotationTargetCandidate(target)) {
15
+ const clonedTarget = cloneKnownAnnotationTarget(target);
16
+ if (clonedTarget !== undefined) {
17
+ return clonedTarget;
18
+ }
19
+ }
20
+ return serializableTarget(target);
21
+ }
22
+ export function cloneEngineTargetCandidate(target) {
23
+ if (!isPlainObject(target)) {
24
+ return undefined;
25
+ }
26
+ const kind = ownDataProperty(target, "kind");
27
+ const id = ownDataProperty(target, "id");
28
+ const pathProperty = ownRuntimeProperty(target, "path");
29
+ const nodeTypeProperty = ownRuntimeProperty(target, "nodeType");
30
+ const sourceRangeProperty = ownRuntimeProperty(target, "sourceRange");
31
+ const path = optionalDataPropertyValue(pathProperty);
32
+ const nodeType = optionalDataPropertyValue(nodeTypeProperty);
33
+ const sourceRange = optionalDataPropertyValue(sourceRangeProperty);
34
+ if (kind !== "node" || typeof id !== "string") {
35
+ return undefined;
36
+ }
37
+ const pathClone = path !== undefined ? cloneTargetPathCandidate(path) : undefined;
38
+ const clonedSourceRange = sourceRange !== undefined ? cloneSourceRangeCandidate(sourceRange) : undefined;
39
+ if (pathProperty.kind === "accessor" ||
40
+ optionalDataPropertyIsInvalid(nodeTypeProperty) ||
41
+ optionalDataPropertyIsInvalid(sourceRangeProperty) ||
42
+ pathClone?.kind === "invalid" ||
43
+ (nodeType !== undefined && typeof nodeType !== "string") ||
44
+ (sourceRange !== undefined && clonedSourceRange === undefined)) {
45
+ return undefined;
46
+ }
47
+ return {
48
+ kind,
49
+ id,
50
+ ...(pathClone?.kind === "cloned" ? { path: pathClone.path } : {}),
51
+ ...(typeof nodeType === "string" ? { nodeType } : {}),
52
+ ...(clonedSourceRange !== undefined ? { sourceRange: clonedSourceRange } : {}),
53
+ };
54
+ }
55
+ function serializableTarget(target) {
56
+ return normalizeRuntimeValue(target);
57
+ }
58
+ function cloneKnownAnnotationTarget(target) {
59
+ const kind = annotationTargetKind(target);
60
+ if (kind === "node") {
61
+ const nodeTarget = cloneEngineTargetCandidate(annotationNodeTarget(target));
62
+ if (nodeTarget === undefined) {
63
+ return undefined;
64
+ }
65
+ return {
66
+ kind: "node",
67
+ nodeTarget,
68
+ };
69
+ }
70
+ if (kind === "source") {
71
+ const sourceRange = cloneSourceRangeCandidate(annotationSourceRange(target));
72
+ if (sourceRange === undefined) {
73
+ return undefined;
74
+ }
75
+ return {
76
+ kind: "source",
77
+ sourceRange,
78
+ };
79
+ }
80
+ return undefined;
81
+ }
82
+ function cloneTargetPathCandidate(path) {
83
+ if (!isArray(path)) {
84
+ return { kind: "invalid" };
85
+ }
86
+ const length = arrayLength(path);
87
+ if (length === undefined) {
88
+ return { kind: "unavailable" };
89
+ }
90
+ if (length > MAX_NORMALIZED_ARRAY_LENGTH) {
91
+ return { kind: "unavailable" };
92
+ }
93
+ const clonedPath = [];
94
+ for (let index = 0; index < length; index += 1) {
95
+ const segmentProperty = ownRuntimeProperty(path, String(index));
96
+ if (segmentProperty.kind === "unavailable") {
97
+ return { kind: "unavailable" };
98
+ }
99
+ if (segmentProperty.kind !== "data") {
100
+ return { kind: "invalid" };
101
+ }
102
+ if (!isNonNegativeInteger(segmentProperty.value)) {
103
+ return { kind: "invalid" };
104
+ }
105
+ clonedPath.push(segmentProperty.value);
106
+ }
107
+ return { kind: "cloned", path: clonedPath };
108
+ }
109
+ function ownDataProperty(value, key) {
110
+ const property = ownRuntimeProperty(value, key);
111
+ return property.kind === "data" ? property.value : undefined;
112
+ }
113
+ function optionalDataPropertyValue(property) {
114
+ return property.kind === "data" ? property.value : undefined;
115
+ }
116
+ function optionalDataPropertyIsInvalid(property) {
117
+ return property.kind === "accessor" || property.kind === "unavailable";
118
+ }
119
+ function isNonNegativeInteger(value) {
120
+ return typeof value === "number" && Number.isInteger(value) && value >= 0;
121
+ }
122
+ //# sourceMappingURL=annotation-target-cloning.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"annotation-target-cloning.js","sourceRoot":"","sources":["../../src/api/annotation-target-cloning.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,8 @@
1
+ import type { EngineTargetDiagnostic } from "./document.js";
2
+ export interface SortableTargetDiagnostic {
3
+ diagnostic: EngineTargetDiagnostic;
4
+ order: number;
5
+ }
6
+ export declare function sortableDiagnostic(diagnostic: EngineTargetDiagnostic, order: number): SortableTargetDiagnostic;
7
+ export declare function compareSortableDiagnostics(left: SortableTargetDiagnostic, right: SortableTargetDiagnostic): number;
8
+ //# sourceMappingURL=annotation-target-diagnostics.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"annotation-target-diagnostics.d.ts","sourceRoot":"","sources":["../../src/api/annotation-target-diagnostics.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,eAAe,CAAC;AAS5D,MAAM,WAAW,wBAAwB;IACvC,UAAU,EAAE,sBAAsB,CAAC;IACnC,KAAK,EAAE,MAAM,CAAC;CACf;AAED,wBAAgB,kBAAkB,CAChC,UAAU,EAAE,sBAAsB,EAClC,KAAK,EAAE,MAAM,GACZ,wBAAwB,CAQ1B;AAED,wBAAgB,0BAA0B,CACxC,IAAI,EAAE,wBAAwB,EAC9B,KAAK,EAAE,wBAAwB,GAC9B,MAAM,CAcR"}
@@ -0,0 +1,57 @@
1
+ import { FUNCTION_PLACEHOLDER, normalizeRuntimeValue, UNAVAILABLE_PLACEHOLDER, } from "./annotation-target-runtime.js";
2
+ import { cloneDiagnosticTarget } from "./annotation-target-cloning.js";
3
+ import { compareSourcePositions } from "./annotation-source-range.js";
4
+ export function sortableDiagnostic(diagnostic, order) {
5
+ return {
6
+ diagnostic: {
7
+ ...diagnostic,
8
+ target: cloneDiagnosticTarget(diagnostic.target),
9
+ },
10
+ order,
11
+ };
12
+ }
13
+ export function compareSortableDiagnostics(left, right) {
14
+ return (compareOptionalSourceRange(left.diagnostic.sourceRange, right.diagnostic.sourceRange) ||
15
+ compareStrings(left.diagnostic.code, right.diagnostic.code) ||
16
+ compareStrings(left.diagnostic.message, right.diagnostic.message) ||
17
+ compareStrings(targetSortKey(left.diagnostic.target), targetSortKey(right.diagnostic.target)) ||
18
+ left.order - right.order);
19
+ }
20
+ function compareOptionalSourceRange(left, right) {
21
+ if (left === undefined && right === undefined) {
22
+ return 0;
23
+ }
24
+ if (left === undefined) {
25
+ return 1;
26
+ }
27
+ if (right === undefined) {
28
+ return -1;
29
+ }
30
+ return (compareSourcePositions(left.start, right.start) ||
31
+ compareSourcePositions(left.end, right.end));
32
+ }
33
+ function compareStrings(left, right) {
34
+ if (left < right) {
35
+ return -1;
36
+ }
37
+ if (left > right) {
38
+ return 1;
39
+ }
40
+ return 0;
41
+ }
42
+ function targetSortKey(target) {
43
+ try {
44
+ const serialized = JSON.stringify(normalizeRuntimeValue(target));
45
+ return serialized ?? String(target);
46
+ }
47
+ catch {
48
+ if (typeof target === "function") {
49
+ return FUNCTION_PLACEHOLDER;
50
+ }
51
+ if (typeof target === "object" && target !== null) {
52
+ return UNAVAILABLE_PLACEHOLDER;
53
+ }
54
+ return String(target);
55
+ }
56
+ }
57
+ //# sourceMappingURL=annotation-target-diagnostics.js.map