glossarist 0.4.50 → 0.4.51

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 (700) hide show
  1. package/dist/compiled-format.d.ts +43 -0
  2. package/dist/compiled-format.d.ts.map +1 -0
  3. package/{src/compiled-format.ts → dist/compiled-format.js} +28 -46
  4. package/dist/compiled-format.js.map +1 -0
  5. package/dist/concept-collection.d.ts +39 -0
  6. package/dist/concept-collection.d.ts.map +1 -0
  7. package/dist/concept-collection.js +127 -0
  8. package/dist/concept-collection.js.map +1 -0
  9. package/dist/concept-diff.d.ts +14 -0
  10. package/dist/concept-diff.d.ts.map +1 -0
  11. package/{src/concept-diff.ts → dist/concept-diff.js} +2 -20
  12. package/dist/concept-diff.js.map +1 -0
  13. package/dist/concept-parser.d.ts +11 -0
  14. package/dist/concept-parser.d.ts.map +1 -0
  15. package/dist/concept-parser.js +209 -0
  16. package/dist/concept-parser.js.map +1 -0
  17. package/dist/concept-reader.d.ts +55 -0
  18. package/dist/concept-reader.d.ts.map +1 -0
  19. package/{src/concept-reader.ts → dist/concept-reader.js} +70 -76
  20. package/dist/concept-reader.js.map +1 -0
  21. package/dist/concept-serializer.d.ts +9 -0
  22. package/dist/concept-serializer.d.ts.map +1 -0
  23. package/dist/concept-serializer.js +87 -0
  24. package/dist/concept-serializer.js.map +1 -0
  25. package/dist/concept-writer.d.ts +10 -0
  26. package/dist/concept-writer.d.ts.map +1 -0
  27. package/dist/concept-writer.js +28 -0
  28. package/dist/concept-writer.js.map +1 -0
  29. package/dist/dataset-asset.d.ts +49 -0
  30. package/dist/dataset-asset.d.ts.map +1 -0
  31. package/{src/dataset-asset.ts → dist/dataset-asset.js} +16 -33
  32. package/dist/dataset-asset.js.map +1 -0
  33. package/dist/diff/canonical-json.d.ts +7 -0
  34. package/dist/diff/canonical-json.d.ts.map +1 -0
  35. package/dist/diff/canonical-json.js +28 -0
  36. package/dist/diff/canonical-json.js.map +1 -0
  37. package/dist/diff/change.d.ts +67 -0
  38. package/dist/diff/change.d.ts.map +1 -0
  39. package/dist/diff/change.js +131 -0
  40. package/dist/diff/change.js.map +1 -0
  41. package/dist/diff/collection-diff.d.ts +50 -0
  42. package/dist/diff/collection-diff.d.ts.map +1 -0
  43. package/dist/diff/collection-diff.js +182 -0
  44. package/dist/diff/collection-diff.js.map +1 -0
  45. package/dist/diff/concept-diff.d.ts +188 -0
  46. package/dist/diff/concept-diff.d.ts.map +1 -0
  47. package/dist/diff/concept-diff.js +624 -0
  48. package/dist/diff/concept-diff.js.map +1 -0
  49. package/dist/diff/diff-patch.d.ts +7 -0
  50. package/dist/diff/diff-patch.d.ts.map +1 -0
  51. package/dist/diff/diff-patch.js +225 -0
  52. package/dist/diff/diff-patch.js.map +1 -0
  53. package/dist/diff/diff-renderer.d.ts +44 -0
  54. package/dist/diff/diff-renderer.d.ts.map +1 -0
  55. package/dist/diff/diff-renderer.js +263 -0
  56. package/dist/diff/diff-renderer.js.map +1 -0
  57. package/dist/diff/identity.d.ts +2 -0
  58. package/dist/diff/identity.d.ts.map +1 -0
  59. package/dist/diff/identity.js +29 -0
  60. package/dist/diff/identity.js.map +1 -0
  61. package/dist/diff/index.d.ts +8 -0
  62. package/dist/diff/index.d.ts.map +1 -0
  63. package/dist/diff/index.js +8 -0
  64. package/dist/diff/index.js.map +1 -0
  65. package/dist/diff/list-diff.d.ts +36 -0
  66. package/dist/diff/list-diff.d.ts.map +1 -0
  67. package/dist/diff/list-diff.js +185 -0
  68. package/dist/diff/list-diff.js.map +1 -0
  69. package/dist/diff/similarity.d.ts +4 -0
  70. package/dist/diff/similarity.d.ts.map +1 -0
  71. package/dist/diff/similarity.js +20 -0
  72. package/dist/diff/similarity.js.map +1 -0
  73. package/dist/diff/text-diff.d.ts +42 -0
  74. package/dist/diff/text-diff.d.ts.map +1 -0
  75. package/dist/diff/text-diff.js +134 -0
  76. package/dist/diff/text-diff.js.map +1 -0
  77. package/dist/entity-directory.d.ts +13 -0
  78. package/dist/entity-directory.d.ts.map +1 -0
  79. package/dist/entity-directory.js +35 -0
  80. package/dist/entity-directory.js.map +1 -0
  81. package/dist/errors.d.ts +15 -0
  82. package/dist/errors.d.ts.map +1 -0
  83. package/dist/errors.js +23 -0
  84. package/dist/errors.js.map +1 -0
  85. package/dist/gcr-reader.d.ts +57 -0
  86. package/dist/gcr-reader.d.ts.map +1 -0
  87. package/dist/gcr-reader.js +264 -0
  88. package/dist/gcr-reader.js.map +1 -0
  89. package/dist/gcr-writer.d.ts +23 -0
  90. package/dist/gcr-writer.d.ts.map +1 -0
  91. package/dist/gcr-writer.js +84 -0
  92. package/dist/gcr-writer.js.map +1 -0
  93. package/dist/index.d.ts +21 -0
  94. package/dist/index.d.ts.map +1 -0
  95. package/{src/index.ts → dist/index.js} +6 -66
  96. package/dist/index.js.map +1 -0
  97. package/dist/managed-concept-collection.d.ts +31 -0
  98. package/dist/managed-concept-collection.d.ts.map +1 -0
  99. package/dist/managed-concept-collection.js +87 -0
  100. package/dist/managed-concept-collection.js.map +1 -0
  101. package/dist/migration/hyperedge-migrator.d.ts +33 -0
  102. package/dist/migration/hyperedge-migrator.d.ts.map +1 -0
  103. package/dist/migration/hyperedge-migrator.js +70 -0
  104. package/dist/migration/hyperedge-migrator.js.map +1 -0
  105. package/dist/models/abstract-hyperedge.d.ts +35 -0
  106. package/dist/models/abstract-hyperedge.d.ts.map +1 -0
  107. package/dist/models/abstract-hyperedge.js +112 -0
  108. package/dist/models/abstract-hyperedge.js.map +1 -0
  109. package/dist/models/base.d.ts +58 -0
  110. package/dist/models/base.d.ts.map +1 -0
  111. package/dist/models/base.js +77 -0
  112. package/dist/models/base.js.map +1 -0
  113. package/dist/models/bibliography-data.d.ts +20 -0
  114. package/dist/models/bibliography-data.d.ts.map +1 -0
  115. package/dist/models/bibliography-data.js +43 -0
  116. package/dist/models/bibliography-data.js.map +1 -0
  117. package/dist/models/bibliography-entry.d.ts +19 -0
  118. package/dist/models/bibliography-entry.d.ts.map +1 -0
  119. package/dist/models/bibliography-entry.js +34 -0
  120. package/dist/models/bibliography-entry.js.map +1 -0
  121. package/dist/models/citation.d.ts +40 -0
  122. package/dist/models/citation.d.ts.map +1 -0
  123. package/dist/models/citation.js +82 -0
  124. package/dist/models/citation.js.map +1 -0
  125. package/dist/models/completeness.d.ts +9 -0
  126. package/dist/models/completeness.d.ts.map +1 -0
  127. package/{src/models/completeness.ts → dist/models/completeness.js} +4 -9
  128. package/dist/models/completeness.js.map +1 -0
  129. package/dist/models/concept-date.d.ts +20 -0
  130. package/dist/models/concept-date.d.ts.map +1 -0
  131. package/dist/models/concept-date.js +36 -0
  132. package/dist/models/concept-date.js.map +1 -0
  133. package/dist/models/concept-ref.d.ts +32 -0
  134. package/dist/models/concept-ref.d.ts.map +1 -0
  135. package/dist/models/concept-ref.js +53 -0
  136. package/dist/models/concept-ref.js.map +1 -0
  137. package/dist/models/concept-reference.d.ts +22 -0
  138. package/dist/models/concept-reference.d.ts.map +1 -0
  139. package/dist/models/concept-reference.js +39 -0
  140. package/dist/models/concept-reference.js.map +1 -0
  141. package/dist/models/concept-source.d.ts +53 -0
  142. package/dist/models/concept-source.d.ts.map +1 -0
  143. package/dist/models/concept-source.js +66 -0
  144. package/dist/models/concept-source.js.map +1 -0
  145. package/dist/models/concept-system-type.d.ts +6 -0
  146. package/dist/models/concept-system-type.d.ts.map +1 -0
  147. package/dist/models/concept-system-type.js +22 -0
  148. package/dist/models/concept-system-type.js.map +1 -0
  149. package/dist/models/concept-system.d.ts +44 -0
  150. package/dist/models/concept-system.d.ts.map +1 -0
  151. package/dist/models/concept-system.js +115 -0
  152. package/dist/models/concept-system.js.map +1 -0
  153. package/dist/models/concept-type.d.ts +7 -0
  154. package/dist/models/concept-type.d.ts.map +1 -0
  155. package/{src/models/concept-type.ts → dist/models/concept-type.js} +8 -19
  156. package/dist/models/concept-type.js.map +1 -0
  157. package/dist/models/concept.d.ts +94 -0
  158. package/dist/models/concept.d.ts.map +1 -0
  159. package/dist/models/concept.js +368 -0
  160. package/dist/models/concept.js.map +1 -0
  161. package/dist/models/dataset-color.d.ts +28 -0
  162. package/dist/models/dataset-color.d.ts.map +1 -0
  163. package/dist/models/dataset-color.js +74 -0
  164. package/dist/models/dataset-color.js.map +1 -0
  165. package/dist/models/definition-type.d.ts +9 -0
  166. package/dist/models/definition-type.d.ts.map +1 -0
  167. package/{src/models/definition-type.ts → dist/models/definition-type.js} +6 -15
  168. package/dist/models/definition-type.js.map +1 -0
  169. package/dist/models/designation-relationship.d.ts +17 -0
  170. package/dist/models/designation-relationship.d.ts.map +1 -0
  171. package/dist/models/designation-relationship.js +30 -0
  172. package/dist/models/designation-relationship.js.map +1 -0
  173. package/dist/models/designation.d.ts +110 -0
  174. package/dist/models/designation.d.ts.map +1 -0
  175. package/dist/models/designation.js +224 -0
  176. package/dist/models/designation.js.map +1 -0
  177. package/dist/models/detailed-definition.d.ts +34 -0
  178. package/dist/models/detailed-definition.d.ts.map +1 -0
  179. package/dist/models/detailed-definition.js +63 -0
  180. package/dist/models/detailed-definition.js.map +1 -0
  181. package/dist/models/enum.d.ts +21 -0
  182. package/dist/models/enum.d.ts.map +1 -0
  183. package/dist/models/enum.js +39 -0
  184. package/dist/models/enum.js.map +1 -0
  185. package/dist/models/equivalence-degree.d.ts +7 -0
  186. package/dist/models/equivalence-degree.d.ts.map +1 -0
  187. package/dist/models/equivalence-degree.js +20 -0
  188. package/dist/models/equivalence-degree.js.map +1 -0
  189. package/dist/models/figure.d.ts +40 -0
  190. package/dist/models/figure.d.ts.map +1 -0
  191. package/dist/models/figure.js +82 -0
  192. package/dist/models/figure.js.map +1 -0
  193. package/dist/models/formula.d.ts +15 -0
  194. package/dist/models/formula.d.ts.map +1 -0
  195. package/dist/models/formula.js +27 -0
  196. package/dist/models/formula.js.map +1 -0
  197. package/dist/models/gcr-metadata.d.ts +62 -0
  198. package/dist/models/gcr-metadata.d.ts.map +1 -0
  199. package/dist/models/gcr-metadata.js +102 -0
  200. package/dist/models/gcr-metadata.js.map +1 -0
  201. package/dist/models/gcr-statistics.d.ts +30 -0
  202. package/dist/models/gcr-statistics.d.ts.map +1 -0
  203. package/dist/models/gcr-statistics.js +53 -0
  204. package/dist/models/gcr-statistics.js.map +1 -0
  205. package/dist/models/generic-hyperedge.d.ts +32 -0
  206. package/dist/models/generic-hyperedge.d.ts.map +1 -0
  207. package/dist/models/generic-hyperedge.js +51 -0
  208. package/dist/models/generic-hyperedge.js.map +1 -0
  209. package/dist/models/generic-member.d.ts +14 -0
  210. package/dist/models/generic-member.d.ts.map +1 -0
  211. package/dist/models/generic-member.js +51 -0
  212. package/dist/models/generic-member.js.map +1 -0
  213. package/dist/models/grammar-info.d.ts +34 -0
  214. package/dist/models/grammar-info.d.ts.map +1 -0
  215. package/dist/models/grammar-info.js +59 -0
  216. package/dist/models/grammar-info.js.map +1 -0
  217. package/dist/models/hyperedge-colors.d.ts +19 -0
  218. package/dist/models/hyperedge-colors.d.ts.map +1 -0
  219. package/dist/models/hyperedge-colors.js +61 -0
  220. package/dist/models/hyperedge-colors.js.map +1 -0
  221. package/dist/models/hyperedge-index.d.ts +34 -0
  222. package/dist/models/hyperedge-index.d.ts.map +1 -0
  223. package/dist/models/hyperedge-index.js +85 -0
  224. package/dist/models/hyperedge-index.js.map +1 -0
  225. package/dist/models/hyperedge-member.d.ts +28 -0
  226. package/dist/models/hyperedge-member.d.ts.map +1 -0
  227. package/dist/models/hyperedge-member.js +92 -0
  228. package/dist/models/hyperedge-member.js.map +1 -0
  229. package/dist/models/hyperedge-registry.d.ts +47 -0
  230. package/dist/models/hyperedge-registry.d.ts.map +1 -0
  231. package/dist/models/hyperedge-registry.js +118 -0
  232. package/dist/models/hyperedge-registry.js.map +1 -0
  233. package/dist/models/index.d.ts +53 -0
  234. package/dist/models/index.d.ts.map +1 -0
  235. package/{src/models/index.ts → dist/models/index.js} +11 -63
  236. package/dist/models/index.js.map +1 -0
  237. package/dist/models/locality.d.ts +17 -0
  238. package/dist/models/locality.d.ts.map +1 -0
  239. package/dist/models/locality.js +26 -0
  240. package/dist/models/locality.js.map +1 -0
  241. package/dist/models/localized-concept.d.ts +102 -0
  242. package/dist/models/localized-concept.d.ts.map +1 -0
  243. package/dist/models/localized-concept.js +195 -0
  244. package/dist/models/localized-concept.js.map +1 -0
  245. package/dist/models/localized-string.d.ts +5 -0
  246. package/dist/models/localized-string.d.ts.map +1 -0
  247. package/dist/models/localized-string.js +20 -0
  248. package/dist/models/localized-string.js.map +1 -0
  249. package/dist/models/multiplicity.d.ts +42 -0
  250. package/dist/models/multiplicity.d.ts.map +1 -0
  251. package/dist/models/multiplicity.js +84 -0
  252. package/dist/models/multiplicity.js.map +1 -0
  253. package/dist/models/non-verb-rep.d.ts +20 -0
  254. package/dist/models/non-verb-rep.d.ts.map +1 -0
  255. package/dist/models/non-verb-rep.js +32 -0
  256. package/dist/models/non-verb-rep.js.map +1 -0
  257. package/dist/models/non-verbal-entity.d.ts +30 -0
  258. package/dist/models/non-verbal-entity.d.ts.map +1 -0
  259. package/dist/models/non-verbal-entity.js +48 -0
  260. package/dist/models/non-verbal-entity.js.map +1 -0
  261. package/dist/models/non-verbal-reference.d.ts +23 -0
  262. package/dist/models/non-verbal-reference.d.ts.map +1 -0
  263. package/dist/models/non-verbal-reference.js +44 -0
  264. package/dist/models/non-verbal-reference.js.map +1 -0
  265. package/dist/models/non-verbal-references.d.ts +12 -0
  266. package/dist/models/non-verbal-references.d.ts.map +1 -0
  267. package/dist/models/non-verbal-references.js +20 -0
  268. package/dist/models/non-verbal-references.js.map +1 -0
  269. package/dist/models/partitive-count.d.ts +10 -0
  270. package/dist/models/partitive-count.d.ts.map +1 -0
  271. package/{src/models/partitive-count.ts → dist/models/partitive-count.js} +5 -9
  272. package/dist/models/partitive-count.js.map +1 -0
  273. package/dist/models/partitive-enumeration.d.ts +5 -0
  274. package/dist/models/partitive-enumeration.d.ts.map +1 -0
  275. package/dist/models/partitive-enumeration.js +16 -0
  276. package/dist/models/partitive-enumeration.js.map +1 -0
  277. package/dist/models/partitive-hyperedge.d.ts +43 -0
  278. package/dist/models/partitive-hyperedge.d.ts.map +1 -0
  279. package/dist/models/partitive-hyperedge.js +63 -0
  280. package/dist/models/partitive-hyperedge.js.map +1 -0
  281. package/dist/models/partitive-member.d.ts +14 -0
  282. package/dist/models/partitive-member.d.ts.map +1 -0
  283. package/dist/models/partitive-member.js +44 -0
  284. package/dist/models/partitive-member.js.map +1 -0
  285. package/dist/models/partitive-presence.d.ts +9 -0
  286. package/dist/models/partitive-presence.d.ts.map +1 -0
  287. package/{src/models/partitive-presence.ts → dist/models/partitive-presence.js} +4 -8
  288. package/dist/models/partitive-presence.js.map +1 -0
  289. package/dist/models/plurality-marker.d.ts +5 -0
  290. package/dist/models/plurality-marker.d.ts.map +1 -0
  291. package/dist/models/plurality-marker.js +20 -0
  292. package/dist/models/plurality-marker.js.map +1 -0
  293. package/dist/models/pronunciation.d.ts +19 -0
  294. package/dist/models/pronunciation.d.ts.map +1 -0
  295. package/dist/models/pronunciation.js +34 -0
  296. package/dist/models/pronunciation.js.map +1 -0
  297. package/dist/models/register.d.ts +104 -0
  298. package/dist/models/register.d.ts.map +1 -0
  299. package/dist/models/register.js +297 -0
  300. package/dist/models/register.js.map +1 -0
  301. package/dist/models/registrable.d.ts +25 -0
  302. package/dist/models/registrable.d.ts.map +1 -0
  303. package/dist/models/registrable.js +23 -0
  304. package/dist/models/registrable.js.map +1 -0
  305. package/dist/models/related-concept.d.ts +33 -0
  306. package/dist/models/related-concept.d.ts.map +1 -0
  307. package/dist/models/related-concept.js +95 -0
  308. package/dist/models/related-concept.js.map +1 -0
  309. package/dist/models/relation-categories.d.ts +38 -0
  310. package/dist/models/relation-categories.d.ts.map +1 -0
  311. package/dist/models/relation-categories.js +135 -0
  312. package/dist/models/relation-categories.js.map +1 -0
  313. package/dist/models/relation-colors.d.ts +35 -0
  314. package/dist/models/relation-colors.d.ts.map +1 -0
  315. package/dist/models/relation-colors.js +68 -0
  316. package/dist/models/relation-colors.js.map +1 -0
  317. package/dist/models/relation-loader.d.ts +41 -0
  318. package/dist/models/relation-loader.d.ts.map +1 -0
  319. package/dist/models/relation-loader.js +101 -0
  320. package/dist/models/relation-loader.js.map +1 -0
  321. package/dist/models/section.d.ts +22 -0
  322. package/dist/models/section.d.ts.map +1 -0
  323. package/dist/models/section.js +47 -0
  324. package/dist/models/section.js.map +1 -0
  325. package/dist/models/sequential-hyperedge.d.ts +32 -0
  326. package/dist/models/sequential-hyperedge.d.ts.map +1 -0
  327. package/dist/models/sequential-hyperedge.js +49 -0
  328. package/dist/models/sequential-hyperedge.js.map +1 -0
  329. package/dist/models/sequential-member.d.ts +8 -0
  330. package/dist/models/sequential-member.d.ts.map +1 -0
  331. package/{src/models/sequential-member.ts → dist/models/sequential-member.js} +4 -9
  332. package/dist/models/sequential-member.js.map +1 -0
  333. package/dist/models/shared-non-verbal-entity.d.ts +16 -0
  334. package/dist/models/shared-non-verbal-entity.d.ts.map +1 -0
  335. package/dist/models/shared-non-verbal-entity.js +28 -0
  336. package/dist/models/shared-non-verbal-entity.js.map +1 -0
  337. package/dist/models/table.d.ts +15 -0
  338. package/dist/models/table.d.ts.map +1 -0
  339. package/dist/models/table.js +27 -0
  340. package/dist/models/table.js.map +1 -0
  341. package/dist/rdf/agents-emitter.d.ts +37 -0
  342. package/dist/rdf/agents-emitter.d.ts.map +1 -0
  343. package/dist/rdf/agents-emitter.js +107 -0
  344. package/dist/rdf/agents-emitter.js.map +1 -0
  345. package/dist/rdf/bibliography-emitter.d.ts +16 -0
  346. package/dist/rdf/bibliography-emitter.d.ts.map +1 -0
  347. package/dist/rdf/bibliography-emitter.js +84 -0
  348. package/dist/rdf/bibliography-emitter.js.map +1 -0
  349. package/dist/rdf/bnode-id.d.ts +2 -0
  350. package/dist/rdf/bnode-id.d.ts.map +1 -0
  351. package/dist/rdf/bnode-id.js +57 -0
  352. package/dist/rdf/bnode-id.js.map +1 -0
  353. package/dist/rdf/build-activity-emitter.d.ts +42 -0
  354. package/dist/rdf/build-activity-emitter.d.ts.map +1 -0
  355. package/dist/rdf/build-activity-emitter.js +103 -0
  356. package/dist/rdf/build-activity-emitter.js.map +1 -0
  357. package/dist/rdf/curie.d.ts +7 -0
  358. package/dist/rdf/curie.d.ts.map +1 -0
  359. package/dist/rdf/curie.js +45 -0
  360. package/dist/rdf/curie.js.map +1 -0
  361. package/dist/rdf/dataset-emitter.d.ts +37 -0
  362. package/dist/rdf/dataset-emitter.d.ts.map +1 -0
  363. package/dist/rdf/dataset-emitter.js +126 -0
  364. package/dist/rdf/dataset-emitter.js.map +1 -0
  365. package/dist/rdf/deterministic-id.d.ts +3 -0
  366. package/dist/rdf/deterministic-id.d.ts.map +1 -0
  367. package/dist/rdf/deterministic-id.js +68 -0
  368. package/dist/rdf/deterministic-id.js.map +1 -0
  369. package/dist/rdf/document-writer.d.ts +11 -0
  370. package/dist/rdf/document-writer.d.ts.map +1 -0
  371. package/dist/rdf/document-writer.js +77 -0
  372. package/dist/rdf/document-writer.js.map +1 -0
  373. package/dist/rdf/gloss-concept.d.ts +27 -0
  374. package/dist/rdf/gloss-concept.d.ts.map +1 -0
  375. package/dist/rdf/gloss-concept.js +95 -0
  376. package/dist/rdf/gloss-concept.js.map +1 -0
  377. package/dist/rdf/gloss-designation.d.ts +17 -0
  378. package/dist/rdf/gloss-designation.d.ts.map +1 -0
  379. package/dist/rdf/gloss-designation.js +46 -0
  380. package/dist/rdf/gloss-designation.js.map +1 -0
  381. package/dist/rdf/gloss-detailed-definition.d.ts +14 -0
  382. package/dist/rdf/gloss-detailed-definition.d.ts.map +1 -0
  383. package/dist/rdf/gloss-detailed-definition.js +53 -0
  384. package/dist/rdf/gloss-detailed-definition.js.map +1 -0
  385. package/dist/rdf/gloss-generic-hyperedge.d.ts +27 -0
  386. package/dist/rdf/gloss-generic-hyperedge.d.ts.map +1 -0
  387. package/{src/rdf/gloss-generic-hyperedge.ts → dist/rdf/gloss-generic-hyperedge.js} +36 -50
  388. package/dist/rdf/gloss-generic-hyperedge.js.map +1 -0
  389. package/dist/rdf/gloss-localized-concept.d.ts +24 -0
  390. package/dist/rdf/gloss-localized-concept.d.ts.map +1 -0
  391. package/dist/rdf/gloss-localized-concept.js +71 -0
  392. package/dist/rdf/gloss-localized-concept.js.map +1 -0
  393. package/dist/rdf/gloss-non-verbal-rep.d.ts +33 -0
  394. package/dist/rdf/gloss-non-verbal-rep.d.ts.map +1 -0
  395. package/dist/rdf/gloss-non-verbal-rep.js +163 -0
  396. package/dist/rdf/gloss-non-verbal-rep.js.map +1 -0
  397. package/dist/rdf/gloss-partitive-member.d.ts +8 -0
  398. package/dist/rdf/gloss-partitive-member.d.ts.map +1 -0
  399. package/{src/rdf/gloss-partitive-member.ts → dist/rdf/gloss-partitive-member.js} +23 -41
  400. package/dist/rdf/gloss-partitive-member.js.map +1 -0
  401. package/dist/rdf/gloss-partitive-relation.d.ts +26 -0
  402. package/dist/rdf/gloss-partitive-relation.d.ts.map +1 -0
  403. package/dist/rdf/gloss-partitive-relation.js +73 -0
  404. package/dist/rdf/gloss-partitive-relation.js.map +1 -0
  405. package/dist/rdf/gloss-source.d.ts +23 -0
  406. package/dist/rdf/gloss-source.d.ts.map +1 -0
  407. package/dist/rdf/gloss-source.js +52 -0
  408. package/dist/rdf/gloss-source.js.map +1 -0
  409. package/dist/rdf/group-emitter.d.ts +46 -0
  410. package/dist/rdf/group-emitter.d.ts.map +1 -0
  411. package/dist/rdf/group-emitter.js +107 -0
  412. package/dist/rdf/group-emitter.js.map +1 -0
  413. package/dist/rdf/image-variant-emitter.d.ts +12 -0
  414. package/dist/rdf/image-variant-emitter.d.ts.map +1 -0
  415. package/dist/rdf/image-variant-emitter.js +55 -0
  416. package/dist/rdf/image-variant-emitter.js.map +1 -0
  417. package/dist/rdf/index.d.ts +26 -0
  418. package/dist/rdf/index.d.ts.map +1 -0
  419. package/{src/rdf/index.ts → dist/rdf/index.js} +8 -37
  420. package/dist/rdf/index.js.map +1 -0
  421. package/dist/rdf/normalize-enum.d.ts +3 -0
  422. package/dist/rdf/normalize-enum.d.ts.map +1 -0
  423. package/{src/rdf/normalize-enum.ts → dist/rdf/normalize-enum.js} +11 -10
  424. package/dist/rdf/normalize-enum.js.map +1 -0
  425. package/dist/rdf/predicates.d.ts +277 -0
  426. package/dist/rdf/predicates.d.ts.map +1 -0
  427. package/dist/rdf/predicates.js +279 -0
  428. package/dist/rdf/predicates.js.map +1 -0
  429. package/dist/rdf/prefixes.d.ts +16 -0
  430. package/dist/rdf/prefixes.d.ts.map +1 -0
  431. package/{src/rdf/prefixes.ts → dist/rdf/prefixes.js} +10 -12
  432. package/dist/rdf/prefixes.js.map +1 -0
  433. package/dist/rdf/provenance-emitter.d.ts +28 -0
  434. package/dist/rdf/provenance-emitter.d.ts.map +1 -0
  435. package/dist/rdf/provenance-emitter.js +74 -0
  436. package/dist/rdf/provenance-emitter.js.map +1 -0
  437. package/dist/rdf/sections-builder.d.ts +17 -0
  438. package/dist/rdf/sections-builder.d.ts.map +1 -0
  439. package/dist/rdf/sections-builder.js +137 -0
  440. package/dist/rdf/sections-builder.js.map +1 -0
  441. package/dist/rdf/shacl-entry.d.ts +2 -0
  442. package/dist/rdf/shacl-entry.d.ts.map +1 -0
  443. package/{src/rdf/shacl-entry.ts → dist/rdf/shacl-entry.js} +1 -1
  444. package/dist/rdf/shacl-entry.js.map +1 -0
  445. package/dist/rdf/shacl.d.ts +10 -0
  446. package/dist/rdf/shacl.d.ts.map +1 -0
  447. package/{src/rdf/shacl.ts → dist/rdf/shacl.js} +38 -57
  448. package/dist/rdf/shacl.js.map +1 -0
  449. package/dist/rdf/terms.d.ts +10 -0
  450. package/dist/rdf/terms.d.ts.map +1 -0
  451. package/{src/rdf/terms.ts → dist/rdf/terms.js} +6 -3
  452. package/dist/rdf/terms.js.map +1 -0
  453. package/dist/rdf/version-emitter.d.ts +57 -0
  454. package/dist/rdf/version-emitter.d.ts.map +1 -0
  455. package/dist/rdf/version-emitter.js +68 -0
  456. package/dist/rdf/version-emitter.js.map +1 -0
  457. package/dist/rdf/vocabulary-emitter.d.ts +32 -0
  458. package/dist/rdf/vocabulary-emitter.d.ts.map +1 -0
  459. package/dist/rdf/vocabulary-emitter.js +46 -0
  460. package/dist/rdf/vocabulary-emitter.js.map +1 -0
  461. package/dist/rdf/write-turtle-sync.d.ts +7 -0
  462. package/dist/rdf/write-turtle-sync.d.ts.map +1 -0
  463. package/dist/rdf/write-turtle-sync.js +130 -0
  464. package/dist/rdf/write-turtle-sync.js.map +1 -0
  465. package/dist/reference-mention.d.ts +49 -0
  466. package/dist/reference-mention.d.ts.map +1 -0
  467. package/dist/reference-mention.js +98 -0
  468. package/dist/reference-mention.js.map +1 -0
  469. package/dist/reference-resolver.d.ts +52 -0
  470. package/dist/reference-resolver.d.ts.map +1 -0
  471. package/dist/reference-resolver.js +311 -0
  472. package/dist/reference-resolver.js.map +1 -0
  473. package/dist/render-classification.d.ts +19 -0
  474. package/dist/render-classification.d.ts.map +1 -0
  475. package/dist/render-classification.js +82 -0
  476. package/dist/render-classification.js.map +1 -0
  477. package/dist/sort.d.ts +5 -0
  478. package/dist/sort.d.ts.map +1 -0
  479. package/dist/sort.js +25 -0
  480. package/dist/sort.js.map +1 -0
  481. package/dist/transforms/concept-to-gloss.transform.d.ts +32 -0
  482. package/dist/transforms/concept-to-gloss.transform.d.ts.map +1 -0
  483. package/dist/transforms/concept-to-gloss.transform.js +60 -0
  484. package/dist/transforms/concept-to-gloss.transform.js.map +1 -0
  485. package/dist/transforms/index.d.ts +2 -0
  486. package/dist/transforms/index.d.ts.map +1 -0
  487. package/{src/transforms/index.ts → dist/transforms/index.js} +1 -0
  488. package/dist/transforms/index.js.map +1 -0
  489. package/dist/utils/assertions.d.ts +4 -0
  490. package/dist/utils/assertions.d.ts.map +1 -0
  491. package/dist/utils/assertions.js +17 -0
  492. package/dist/utils/assertions.js.map +1 -0
  493. package/dist/uuid.d.ts +4 -0
  494. package/dist/uuid.d.ts.map +1 -0
  495. package/dist/uuid.js +23 -0
  496. package/dist/uuid.js.map +1 -0
  497. package/dist/v1-reader.d.ts +8 -0
  498. package/dist/v1-reader.d.ts.map +1 -0
  499. package/dist/v1-reader.js +56 -0
  500. package/dist/v1-reader.js.map +1 -0
  501. package/dist/validators/asset-index.d.ts +23 -0
  502. package/dist/validators/asset-index.d.ts.map +1 -0
  503. package/dist/validators/asset-index.js +58 -0
  504. package/dist/validators/asset-index.js.map +1 -0
  505. package/dist/validators/binary-has-part-redundancy-rule.d.ts +8 -0
  506. package/dist/validators/binary-has-part-redundancy-rule.d.ts.map +1 -0
  507. package/dist/validators/binary-has-part-redundancy-rule.js +57 -0
  508. package/dist/validators/binary-has-part-redundancy-rule.js.map +1 -0
  509. package/dist/validators/concept-validator.d.ts +21 -0
  510. package/dist/validators/concept-validator.d.ts.map +1 -0
  511. package/dist/validators/concept-validator.js +76 -0
  512. package/dist/validators/concept-validator.js.map +1 -0
  513. package/dist/validators/delimiting-coherence-rule.d.ts +8 -0
  514. package/dist/validators/delimiting-coherence-rule.d.ts.map +1 -0
  515. package/dist/validators/delimiting-coherence-rule.js +72 -0
  516. package/dist/validators/delimiting-coherence-rule.js.map +1 -0
  517. package/dist/validators/external-concept-shape-rule.d.ts +8 -0
  518. package/dist/validators/external-concept-shape-rule.d.ts.map +1 -0
  519. package/dist/validators/external-concept-shape-rule.js +48 -0
  520. package/dist/validators/external-concept-shape-rule.js.map +1 -0
  521. package/dist/validators/gcr-validator.d.ts +11 -0
  522. package/dist/validators/gcr-validator.d.ts.map +1 -0
  523. package/dist/validators/gcr-validator.js +76 -0
  524. package/dist/validators/gcr-validator.js.map +1 -0
  525. package/dist/validators/hyperedge-coherence-rule.d.ts +9 -0
  526. package/dist/validators/hyperedge-coherence-rule.d.ts.map +1 -0
  527. package/dist/validators/hyperedge-coherence-rule.js +78 -0
  528. package/dist/validators/hyperedge-coherence-rule.js.map +1 -0
  529. package/dist/validators/index.d.ts +21 -0
  530. package/dist/validators/index.d.ts.map +1 -0
  531. package/{src/validators/index.ts → dist/validators/index.js} +25 -51
  532. package/dist/validators/index.js.map +1 -0
  533. package/dist/validators/partitive-relation-coherence-rule.d.ts +2 -0
  534. package/dist/validators/partitive-relation-coherence-rule.d.ts.map +1 -0
  535. package/{src/validators/partitive-relation-coherence-rule.ts → dist/validators/partitive-relation-coherence-rule.js} +1 -1
  536. package/dist/validators/partitive-relation-coherence-rule.js.map +1 -0
  537. package/dist/validators/ref-keys.d.ts +8 -0
  538. package/dist/validators/ref-keys.d.ts.map +1 -0
  539. package/dist/validators/ref-keys.js +27 -0
  540. package/dist/validators/ref-keys.js.map +1 -0
  541. package/dist/validators/register-validator.d.ts +10 -0
  542. package/dist/validators/register-validator.d.ts.map +1 -0
  543. package/dist/validators/register-validator.js +18 -0
  544. package/dist/validators/register-validator.js.map +1 -0
  545. package/dist/validators/relationship-type-rule.d.ts +13 -0
  546. package/dist/validators/relationship-type-rule.d.ts.map +1 -0
  547. package/dist/validators/relationship-type-rule.js +34 -0
  548. package/dist/validators/relationship-type-rule.js.map +1 -0
  549. package/dist/validators/sourced-from-locality-rule.d.ts +8 -0
  550. package/dist/validators/sourced-from-locality-rule.d.ts.map +1 -0
  551. package/dist/validators/sourced-from-locality-rule.js +37 -0
  552. package/dist/validators/sourced-from-locality-rule.js.map +1 -0
  553. package/dist/validators/v3-rules.d.ts +60 -0
  554. package/dist/validators/v3-rules.d.ts.map +1 -0
  555. package/dist/validators/v3-rules.js +327 -0
  556. package/dist/validators/v3-rules.js.map +1 -0
  557. package/dist/validators/validation-error.d.ts +13 -0
  558. package/dist/validators/validation-error.d.ts.map +1 -0
  559. package/dist/validators/validation-error.js +17 -0
  560. package/dist/validators/validation-error.js.map +1 -0
  561. package/dist/validators/validation-result.d.ts +17 -0
  562. package/dist/validators/validation-result.d.ts.map +1 -0
  563. package/dist/validators/validation-result.js +47 -0
  564. package/dist/validators/validation-result.js.map +1 -0
  565. package/dist/validators/validation-rule.d.ts +10 -0
  566. package/dist/validators/validation-rule.d.ts.map +1 -0
  567. package/dist/validators/validation-rule.js +17 -0
  568. package/dist/validators/validation-rule.js.map +1 -0
  569. package/package.json +37 -42
  570. package/src/concept-collection.ts +0 -172
  571. package/src/concept-parser.ts +0 -235
  572. package/src/concept-reader.d.ts +0 -13
  573. package/src/concept-serializer.ts +0 -110
  574. package/src/concept-writer.d.ts +0 -7
  575. package/src/concept-writer.ts +0 -47
  576. package/src/diff/canonical-json.ts +0 -29
  577. package/src/diff/change.ts +0 -175
  578. package/src/diff/collection-diff.ts +0 -245
  579. package/src/diff/concept-diff.ts +0 -853
  580. package/src/diff/diff-patch.ts +0 -276
  581. package/src/diff/diff-renderer.ts +0 -348
  582. package/src/diff/identity.ts +0 -33
  583. package/src/diff/index.d.ts +0 -242
  584. package/src/diff/index.ts +0 -50
  585. package/src/diff/list-diff.ts +0 -231
  586. package/src/diff/similarity.ts +0 -20
  587. package/src/diff/text-diff.ts +0 -167
  588. package/src/entity-directory.ts +0 -43
  589. package/src/errors.d.ts +0 -11
  590. package/src/errors.ts +0 -24
  591. package/src/gcr-reader.d.ts +0 -65
  592. package/src/gcr-reader.ts +0 -512
  593. package/src/gcr-writer.d.ts +0 -22
  594. package/src/gcr-writer.ts +0 -99
  595. package/src/index.d.ts +0 -124
  596. package/src/managed-concept-collection.ts +0 -130
  597. package/src/migration/hyperedge-migrator.ts +0 -104
  598. package/src/models/abstract-hyperedge.ts +0 -164
  599. package/src/models/base.ts +0 -110
  600. package/src/models/bibliography-data.ts +0 -64
  601. package/src/models/bibliography-entry.ts +0 -40
  602. package/src/models/citation.ts +0 -98
  603. package/src/models/concept-date.ts +0 -48
  604. package/src/models/concept-ref.ts +0 -64
  605. package/src/models/concept-reference.ts +0 -50
  606. package/src/models/concept-source.ts +0 -96
  607. package/src/models/concept-system-type.ts +0 -39
  608. package/src/models/concept-system.ts +0 -152
  609. package/src/models/concept.ts +0 -499
  610. package/src/models/dataset-color.ts +0 -88
  611. package/src/models/designation-relationship.ts +0 -39
  612. package/src/models/designation.ts +0 -297
  613. package/src/models/detailed-definition.ts +0 -92
  614. package/src/models/enum.ts +0 -60
  615. package/src/models/equivalence-degree.ts +0 -34
  616. package/src/models/figure.ts +0 -110
  617. package/src/models/formula.ts +0 -36
  618. package/src/models/gcr-metadata.ts +0 -118
  619. package/src/models/gcr-statistics.ts +0 -76
  620. package/src/models/generic-hyperedge.ts +0 -72
  621. package/src/models/generic-member.ts +0 -80
  622. package/src/models/grammar-info.ts +0 -78
  623. package/src/models/hyperedge-colors.ts +0 -87
  624. package/src/models/hyperedge-index.ts +0 -101
  625. package/src/models/hyperedge-member.ts +0 -121
  626. package/src/models/hyperedge-registry.ts +0 -145
  627. package/src/models/index.d.ts +0 -586
  628. package/src/models/locality.ts +0 -34
  629. package/src/models/localized-concept.ts +0 -284
  630. package/src/models/localized-string.ts +0 -32
  631. package/src/models/multiplicity.ts +0 -134
  632. package/src/models/non-verb-rep.ts +0 -48
  633. package/src/models/non-verbal-entity.ts +0 -65
  634. package/src/models/non-verbal-reference.ts +0 -73
  635. package/src/models/non-verbal-references.ts +0 -29
  636. package/src/models/partitive-enumeration.ts +0 -27
  637. package/src/models/partitive-hyperedge.ts +0 -90
  638. package/src/models/partitive-member.ts +0 -56
  639. package/src/models/plurality-marker.ts +0 -31
  640. package/src/models/pronunciation.ts +0 -40
  641. package/src/models/register.ts +0 -315
  642. package/src/models/registrable.ts +0 -48
  643. package/src/models/related-concept.ts +0 -117
  644. package/src/models/relation-categories.ts +0 -167
  645. package/src/models/relation-colors.ts +0 -90
  646. package/src/models/relation-loader.ts +0 -115
  647. package/src/models/section.ts +0 -61
  648. package/src/models/sequential-hyperedge.ts +0 -70
  649. package/src/models/shared-non-verbal-entity.ts +0 -36
  650. package/src/models/table.ts +0 -36
  651. package/src/rdf/agents-emitter.ts +0 -137
  652. package/src/rdf/bibliography-emitter.ts +0 -126
  653. package/src/rdf/bnode-id.ts +0 -55
  654. package/src/rdf/build-activity-emitter.ts +0 -129
  655. package/src/rdf/curie.ts +0 -46
  656. package/src/rdf/dataset-emitter.ts +0 -170
  657. package/src/rdf/deterministic-id.ts +0 -69
  658. package/src/rdf/document-writer.ts +0 -87
  659. package/src/rdf/gloss-concept.ts +0 -115
  660. package/src/rdf/gloss-designation.ts +0 -72
  661. package/src/rdf/gloss-detailed-definition.ts +0 -69
  662. package/src/rdf/gloss-localized-concept.ts +0 -79
  663. package/src/rdf/gloss-non-verbal-rep.ts +0 -202
  664. package/src/rdf/gloss-partitive-relation.ts +0 -89
  665. package/src/rdf/gloss-source.ts +0 -56
  666. package/src/rdf/group-emitter.ts +0 -133
  667. package/src/rdf/image-variant-emitter.ts +0 -80
  668. package/src/rdf/index.d.ts +0 -371
  669. package/src/rdf/predicates.d.ts +0 -527
  670. package/src/rdf/predicates.ts +0 -287
  671. package/src/rdf/provenance-emitter.ts +0 -87
  672. package/src/rdf/sections-builder.ts +0 -190
  673. package/src/rdf/shacl-entry.d.ts +0 -6
  674. package/src/rdf/version-emitter.ts +0 -97
  675. package/src/rdf/vocabulary-emitter.ts +0 -67
  676. package/src/rdf/write-turtle-sync.ts +0 -179
  677. package/src/reference-mention.ts +0 -114
  678. package/src/reference-resolver.ts +0 -361
  679. package/src/render-classification.ts +0 -85
  680. package/src/sort.ts +0 -22
  681. package/src/transforms/concept-to-gloss.transform.ts +0 -81
  682. package/src/transforms/index.d.ts +0 -26
  683. package/src/uuid.ts +0 -32
  684. package/src/v1-reader.ts +0 -66
  685. package/src/validators/asset-index.ts +0 -72
  686. package/src/validators/binary-has-part-redundancy-rule.ts +0 -67
  687. package/src/validators/concept-validator.ts +0 -93
  688. package/src/validators/delimiting-coherence-rule.ts +0 -105
  689. package/src/validators/external-concept-shape-rule.ts +0 -60
  690. package/src/validators/gcr-validator.ts +0 -76
  691. package/src/validators/hyperedge-coherence-rule.ts +0 -98
  692. package/src/validators/index.d.ts +0 -43
  693. package/src/validators/ref-keys.ts +0 -31
  694. package/src/validators/register-validator.ts +0 -18
  695. package/src/validators/relationship-type-rule.ts +0 -39
  696. package/src/validators/sourced-from-locality-rule.ts +0 -53
  697. package/src/validators/v3-rules.ts +0 -382
  698. package/src/validators/validation-error.ts +0 -19
  699. package/src/validators/validation-result.ts +0 -52
  700. package/src/validators/validation-rule.ts +0 -21
@@ -0,0 +1 @@
1
+ {"version":3,"file":"validation-error.d.ts","sourceRoot":"","sources":["../../src/validators/validation-error.ts"],"names":[],"mappings":"AAAA,qBAAa,eAAe;IAC1B,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,QAAQ,EAAE,OAAO,GAAG,SAAS,CAAC;gBAE3B,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,QAAQ,GAAE,OAAO,GAAG,SAAmB;IAMlF,QAAQ,IAAI,MAAM;IAIlB,MAAM,IAAI;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAC;QAAC,QAAQ,EAAE,MAAM,CAAA;KAAE;CAG9D"}
@@ -0,0 +1,17 @@
1
+ export class ValidationError {
2
+ path;
3
+ message;
4
+ severity;
5
+ constructor(path, message, severity = 'error') {
6
+ this.path = path;
7
+ this.message = message;
8
+ this.severity = severity;
9
+ }
10
+ toString() {
11
+ return `[${this.severity.toUpperCase()}] ${this.path}: ${this.message}`;
12
+ }
13
+ toJSON() {
14
+ return { path: this.path, message: this.message, severity: this.severity };
15
+ }
16
+ }
17
+ //# sourceMappingURL=validation-error.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"validation-error.js","sourceRoot":"","sources":["../../src/validators/validation-error.ts"],"names":[],"mappings":"AAAA,MAAM,OAAO,eAAe;IACjB,IAAI,CAAS;IACb,OAAO,CAAS;IAChB,QAAQ,CAAsB;IAEvC,YAAY,IAAY,EAAE,OAAe,EAAE,WAAgC,OAAO;QAChF,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;QACjB,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;QACvB,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC;IAC3B,CAAC;IAED,QAAQ;QACN,OAAO,IAAI,IAAI,CAAC,QAAQ,CAAC,WAAW,EAAE,KAAK,IAAI,CAAC,IAAI,KAAK,IAAI,CAAC,OAAO,EAAE,CAAC;IAC1E,CAAC;IAED,MAAM;QACJ,OAAO,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,OAAO,EAAE,IAAI,CAAC,OAAO,EAAE,QAAQ,EAAE,IAAI,CAAC,QAAQ,EAAE,CAAC;IAC7E,CAAC;CACF"}
@@ -0,0 +1,17 @@
1
+ import { ValidationError } from './validation-error.js';
2
+ export declare class ValidationResult {
3
+ private readonly _issues;
4
+ constructor();
5
+ get valid(): boolean;
6
+ get errors(): ReadonlyArray<ValidationError>;
7
+ get warnings(): ReadonlyArray<ValidationError>;
8
+ addError(path: string, message?: string): this;
9
+ addWarning(path: string, message?: string): this;
10
+ merge(other: ValidationResult): this;
11
+ toJSON(): {
12
+ valid: boolean;
13
+ errors: unknown[];
14
+ warnings: unknown[];
15
+ };
16
+ }
17
+ //# sourceMappingURL=validation-result.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"validation-result.d.ts","sourceRoot":"","sources":["../../src/validators/validation-result.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AAExD,qBAAa,gBAAgB;IAC3B,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAyB;;IAIjD,IAAI,KAAK,IAAI,OAAO,CAEnB;IAED,IAAI,MAAM,IAAI,aAAa,CAAC,eAAe,CAAC,CAE3C;IAED,IAAI,QAAQ,IAAI,aAAa,CAAC,eAAe,CAAC,CAE7C;IAED,QAAQ,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,MAAM,GAAG,IAAI;IAS9C,UAAU,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,MAAM,GAAG,IAAI;IAShD,KAAK,CAAC,KAAK,EAAE,gBAAgB,GAAG,IAAI;IAOpC,MAAM,IAAI;QAAE,KAAK,EAAE,OAAO,CAAC;QAAC,MAAM,EAAE,OAAO,EAAE,CAAC;QAAC,QAAQ,EAAE,OAAO,EAAE,CAAA;KAAE;CAOrE"}
@@ -0,0 +1,47 @@
1
+ import { ValidationError } from './validation-error.js';
2
+ export class ValidationResult {
3
+ _issues = [];
4
+ constructor() { }
5
+ get valid() {
6
+ return this._issues.filter(e => e.severity === 'error').length === 0;
7
+ }
8
+ get errors() {
9
+ return this._issues.filter(e => e.severity === 'error');
10
+ }
11
+ get warnings() {
12
+ return this._issues.filter(e => e.severity === 'warning');
13
+ }
14
+ addError(path, message) {
15
+ if (message === undefined) {
16
+ this._issues.push(new ValidationError('', path, 'error'));
17
+ }
18
+ else {
19
+ this._issues.push(new ValidationError(path, message, 'error'));
20
+ }
21
+ return this;
22
+ }
23
+ addWarning(path, message) {
24
+ if (message === undefined) {
25
+ this._issues.push(new ValidationError('', path, 'warning'));
26
+ }
27
+ else {
28
+ this._issues.push(new ValidationError(path, message, 'warning'));
29
+ }
30
+ return this;
31
+ }
32
+ merge(other) {
33
+ if (other instanceof ValidationResult) {
34
+ for (const issue of other._issues)
35
+ this._issues.push(issue);
36
+ }
37
+ return this;
38
+ }
39
+ toJSON() {
40
+ return {
41
+ valid: this.valid,
42
+ errors: this.errors.map(e => typeof e.toJSON === 'function' ? e.toJSON() : e),
43
+ warnings: this.warnings.map(e => typeof e.toJSON === 'function' ? e.toJSON() : e),
44
+ };
45
+ }
46
+ }
47
+ //# sourceMappingURL=validation-result.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"validation-result.js","sourceRoot":"","sources":["../../src/validators/validation-result.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AAExD,MAAM,OAAO,gBAAgB;IACV,OAAO,GAAsB,EAAE,CAAC;IAEjD,gBAAe,CAAC;IAEhB,IAAI,KAAK;QACP,OAAO,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,QAAQ,KAAK,OAAO,CAAC,CAAC,MAAM,KAAK,CAAC,CAAC;IACvE,CAAC;IAED,IAAI,MAAM;QACR,OAAO,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,QAAQ,KAAK,OAAO,CAAC,CAAC;IAC1D,CAAC;IAED,IAAI,QAAQ;QACV,OAAO,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,QAAQ,KAAK,SAAS,CAAC,CAAC;IAC5D,CAAC;IAED,QAAQ,CAAC,IAAY,EAAE,OAAgB;QACrC,IAAI,OAAO,KAAK,SAAS,EAAE,CAAC;YAC1B,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,eAAe,CAAC,EAAE,EAAE,IAAI,EAAE,OAAO,CAAC,CAAC,CAAC;QAC5D,CAAC;aAAM,CAAC;YACN,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,eAAe,CAAC,IAAI,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC,CAAC;QACjE,CAAC;QACD,OAAO,IAAI,CAAC;IACd,CAAC;IAED,UAAU,CAAC,IAAY,EAAE,OAAgB;QACvC,IAAI,OAAO,KAAK,SAAS,EAAE,CAAC;YAC1B,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,eAAe,CAAC,EAAE,EAAE,IAAI,EAAE,SAAS,CAAC,CAAC,CAAC;QAC9D,CAAC;aAAM,CAAC;YACN,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,eAAe,CAAC,IAAI,EAAE,OAAO,EAAE,SAAS,CAAC,CAAC,CAAC;QACnE,CAAC;QACD,OAAO,IAAI,CAAC;IACd,CAAC;IAED,KAAK,CAAC,KAAuB;QAC3B,IAAI,KAAK,YAAY,gBAAgB,EAAE,CAAC;YACtC,KAAK,MAAM,KAAK,IAAI,KAAK,CAAC,OAAO;gBAAE,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QAC9D,CAAC;QACD,OAAO,IAAI,CAAC;IACd,CAAC;IAED,MAAM;QACJ,OAAO;YACL,KAAK,EAAE,IAAI,CAAC,KAAK;YACjB,MAAM,EAAE,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,OAAO,CAAC,CAAC,MAAM,KAAK,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;YAC7E,QAAQ,EAAE,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,OAAO,CAAC,CAAC,MAAM,KAAK,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;SAClF,CAAC;IACJ,CAAC;CACF"}
@@ -0,0 +1,10 @@
1
+ import type { ValidationResult } from './validation-result.js';
2
+ import type { Concept } from '../models/concept.js';
3
+ export declare abstract class ValidationRule {
4
+ readonly name: string;
5
+ readonly severity: 'error' | 'warning';
6
+ constructor(name: string, severity?: 'error' | 'warning');
7
+ abstract validate(concept: Concept, path: string, result: ValidationResult): void;
8
+ addIssue(result: ValidationResult, path: string, message: string): void;
9
+ }
10
+ //# sourceMappingURL=validation-rule.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"validation-rule.d.ts","sourceRoot":"","sources":["../../src/validators/validation-rule.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;AAC/D,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,sBAAsB,CAAC;AAEpD,8BAAsB,cAAc;IAClC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,QAAQ,EAAE,OAAO,GAAG,SAAS,CAAC;gBAE3B,IAAI,EAAE,MAAM,EAAE,QAAQ,GAAE,OAAO,GAAG,SAAmB;IAKjE,QAAQ,CAAC,QAAQ,CAAC,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,gBAAgB,GAAG,IAAI;IAEjF,QAAQ,CAAC,MAAM,EAAE,gBAAgB,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,IAAI;CAOxE"}
@@ -0,0 +1,17 @@
1
+ export class ValidationRule {
2
+ name;
3
+ severity;
4
+ constructor(name, severity = 'error') {
5
+ this.name = name;
6
+ this.severity = severity;
7
+ }
8
+ addIssue(result, path, message) {
9
+ if (this.severity === 'warning') {
10
+ result.addWarning(path, message);
11
+ }
12
+ else {
13
+ result.addError(path, message);
14
+ }
15
+ }
16
+ }
17
+ //# sourceMappingURL=validation-rule.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"validation-rule.js","sourceRoot":"","sources":["../../src/validators/validation-rule.ts"],"names":[],"mappings":"AAGA,MAAM,OAAgB,cAAc;IACzB,IAAI,CAAS;IACb,QAAQ,CAAsB;IAEvC,YAAY,IAAY,EAAE,WAAgC,OAAO;QAC/D,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;QACjB,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC;IAC3B,CAAC;IAID,QAAQ,CAAC,MAAwB,EAAE,IAAY,EAAE,OAAe;QAC9D,IAAI,IAAI,CAAC,QAAQ,KAAK,SAAS,EAAE,CAAC;YAChC,MAAM,CAAC,UAAU,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;QACnC,CAAC;aAAM,CAAC;YACN,MAAM,CAAC,QAAQ,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;QACjC,CAAC;IACH,CAAC;CACF"}
package/package.json CHANGED
@@ -1,80 +1,72 @@
1
1
  {
2
2
  "name": "glossarist",
3
- "version": "0.4.50",
3
+ "version": "0.4.51",
4
4
  "description": "JavaScript SDK for Glossarist GCR packages — read, write, validate, and manage terminology concepts",
5
5
  "type": "module",
6
- "main": "src/index.js",
7
- "types": "src/index.d.ts",
6
+ "main": "dist/index.js",
7
+ "types": "dist/index.d.ts",
8
8
  "sideEffects": false,
9
9
  "files": [
10
- "src",
10
+ "dist",
11
11
  "data/concept-model/shapes/glossarist.shacl.ttl",
12
12
  "data/concept-model/README.md"
13
13
  ],
14
14
  "exports": {
15
15
  ".": {
16
- "types": "./src/index.d.ts",
17
- "import": "./src/index.js",
18
- "default": "./src/index.js"
16
+ "types": "./dist/index.d.ts",
17
+ "import": "./dist/index.js"
19
18
  },
20
19
  "./gcr": {
21
- "types": "./src/gcr-reader.d.ts",
22
- "import": "./src/gcr-reader.js",
23
- "default": "./src/gcr-reader.js"
20
+ "types": "./dist/gcr-reader.d.ts",
21
+ "import": "./dist/gcr-reader.js"
24
22
  },
25
23
  "./concept": {
26
- "types": "./src/concept-reader.d.ts",
27
- "import": "./src/concept-reader.js",
28
- "default": "./src/concept-reader.js"
24
+ "types": "./dist/concept-reader.d.ts",
25
+ "import": "./dist/concept-reader.js"
29
26
  },
30
27
  "./models": {
31
- "types": "./src/models/index.d.ts",
32
- "import": "./src/models/index.js",
33
- "default": "./src/models/index.js"
28
+ "types": "./dist/models/index.d.ts",
29
+ "import": "./dist/models/index.js"
34
30
  },
35
31
  "./validators": {
36
- "types": "./src/validators/index.d.ts",
37
- "import": "./src/validators/index.js",
38
- "default": "./src/validators/index.js"
32
+ "types": "./dist/validators/index.d.ts",
33
+ "import": "./dist/validators/index.js"
39
34
  },
40
35
  "./diff": {
41
- "types": "./src/diff/index.d.ts",
42
- "import": "./src/diff/index.js",
43
- "default": "./src/diff/index.js"
36
+ "types": "./dist/diff/index.d.ts",
37
+ "import": "./dist/diff/index.js"
44
38
  },
45
39
  "./rdf": {
46
- "types": "./src/rdf/index.d.ts",
47
- "import": "./src/rdf/index.js",
48
- "default": "./src/rdf/index.js"
40
+ "types": "./dist/rdf/index.d.ts",
41
+ "import": "./dist/rdf/index.js"
49
42
  },
50
43
  "./rdf/shacl": {
51
- "types": "./src/rdf/shacl-entry.d.ts",
52
- "import": "./src/rdf/shacl-entry.js",
53
- "default": "./src/rdf/shacl-entry.js"
44
+ "types": "./dist/rdf/shacl-entry.d.ts",
45
+ "import": "./dist/rdf/shacl-entry.js"
54
46
  },
55
47
  "./rdf/prefixes": {
56
- "types": "./src/rdf/predicates.d.ts",
57
- "import": "./src/rdf/predicates.js",
58
- "default": "./src/rdf/predicates.js"
48
+ "types": "./dist/rdf/predicates.d.ts",
49
+ "import": "./dist/rdf/predicates.js"
59
50
  },
60
51
  "./transforms": {
61
- "types": "./src/transforms/index.d.ts",
62
- "import": "./src/transforms/index.js",
63
- "default": "./src/transforms/index.js"
64
- }
52
+ "types": "./dist/transforms/index.d.ts",
53
+ "import": "./dist/transforms/index.js"
54
+ },
55
+ "./package.json": "./package.json"
65
56
  },
66
57
  "scripts": {
67
- "lint": "eslint src/ test/",
68
- "typecheck": "tsc --noEmit",
69
- "build": "tsc",
70
- "sync:model": "node scripts/sync-concept-model.mjs",
58
+ "build": "tsc -p tsconfig.build.json",
71
59
  "gen:predicates": "node scripts/gen-predicates.mjs",
60
+ "lint": "eslint src/ test/",
72
61
  "prebuild": "npm run gen:predicates",
73
- "pretest": "node test/fixtures/build-fixtures.js",
62
+ "prepublishOnly": "npm run build && npm run typecheck && npm test",
63
+ "pretest": "node test/fixtures/build-fixtures.mjs",
64
+ "sync:model": "node scripts/sync-concept-model.mjs",
74
65
  "test": "find test \\( -name '*.test.js' -o -name '*.test.ts' \\) | sort | xargs node --import tsx --test",
75
- "test:verbose": "find test \\( -name '*.test.js' -o -name '*.test.ts' \\) | sort | xargs node --import tsx --test --test-reporter spec",
76
66
  "test:coverage": "find test \\( -name '*.test.js' -o -name '*.test.ts' \\) | sort | xargs node --import tsx --test --experimental-test-coverage",
77
- "prepublishOnly": "npm run typecheck && npm test"
67
+ "test:verbose": "find test \\( -name '*.test.js' -o -name '*.test.ts' \\) | sort | xargs node --import tsx --test --test-reporter spec",
68
+ "typecheck": "tsc --noEmit",
69
+ "typecheck:test": "tsc -p tsconfig.test.json --noEmit"
78
70
  },
79
71
  "keywords": [
80
72
  "glossarist",
@@ -111,8 +103,11 @@
111
103
  "devDependencies": {
112
104
  "@eslint/js": "^10.0.1",
113
105
  "@rdfjs/types": "^2.0.1",
106
+ "@types/jsonld": "^1.5.15",
114
107
  "@types/n3": "^1.26.1",
115
108
  "@types/node": "^26.1.2",
109
+ "@types/rdfjs__data-model": "^2.0.9",
110
+ "@types/rdfjs__dataset": "^2.0.7",
116
111
  "@typescript-eslint/eslint-plugin": "^8.65.0",
117
112
  "@typescript-eslint/parser": "^8.65.0",
118
113
  "eslint": "^10.3.0",
@@ -1,172 +0,0 @@
1
- import { naturalSort } from './sort.js';
2
-
3
- const _items = Symbol('items');
4
-
5
- export class ConceptCollection {
6
- constructor(concepts = []) {
7
- this[_items] = Array.from(concepts);
8
- }
9
-
10
- get length() { return this[_items].length; }
11
- [Symbol.iterator]() { return this[_items][Symbol.iterator](); }
12
-
13
- at(index) { return this[_items].at(index); }
14
- indexOf(item) { return this[_items].indexOf(item); }
15
- find(fn) { return this[_items].find(fn); }
16
- findIndex(fn) { return this[_items].findIndex(fn); }
17
- forEach(fn) { this[_items].forEach(fn); }
18
- map(fn) { return this[_items].map(fn); }
19
- reduce(fn, init) { return this[_items].reduce(fn, init); }
20
- includes(item) { return this[_items].includes(item); }
21
- push(...items) { return this[_items].push(...items); }
22
- splice(...args) { return this[_items].splice(...args); }
23
- set(index, item) { this[_items][index] = item; }
24
-
25
- toArray() { return [...this[_items]]; }
26
-
27
- byId(id) {
28
- return this[_items].find(c => c.id === id || c.termid === id);
29
- }
30
-
31
- /**
32
- * Find a concept by id and version.
33
- *
34
- * The version is matched against a top-level `version` field on
35
- * the concept instance (e.g. `concept.version`). The deployment
36
- * is responsible for setting this field on bibliographic records;
37
- * the data model does not enforce its presence or type.
38
- *
39
- * If `version` is null, the method falls back to `byId(id)`. This
40
- * supports the "version-agnostic" lookup for datasets where
41
- * version is not tracked.
42
- *
43
- * @param {string} id
44
- * @param {string | null} version
45
- * @returns {Concept | null}
46
- */
47
- byIdAnd(id, version) {
48
- if (version == null) return this.byId(id);
49
- return this[_items].find(c =>
50
- (c.id === id || c.termid === id) && c.version === version
51
- ) ?? null;
52
- }
53
-
54
- byPrefix(prefix) {
55
- return new ConceptCollection(this[_items].filter(c => c.id.startsWith(prefix)));
56
- }
57
-
58
- byLanguage(lang) {
59
- return new ConceptCollection(this[_items].filter(c => c.hasLocalization(lang)));
60
- }
61
-
62
- byStatus(status) {
63
- return new ConceptCollection(this[_items].filter(c => {
64
- return c.languages.some(lang => c.localization(lang)?.entryStatus === status);
65
- }));
66
- }
67
-
68
- /**
69
- * Cascading section membership filter. Returns concepts whose
70
- * section closure includes `sectionId`.
71
- *
72
- * A concept in section "3.1.1" matches `bySection('3.1')` and
73
- * `bySection('3')` because the section closure walks ancestors
74
- * transitively (mirrors owl:TransitiveProperty on
75
- * gloss:hasParentSection in the concept-model ontology).
76
- *
77
- * Two calling conventions:
78
- *
79
- * bySection('3.1', { register }) // register expands each concept's section closure
80
- * bySection(['3.1', '3']) // pre-expanded target set (any of these must match)
81
- *
82
- * Concept-side membership is read from `concept.sections` if set,
83
- * otherwise from `concept.groups` (a flat list of section IDs).
84
- */
85
- bySection(sectionId, options = {}) {
86
- if (Array.isArray(sectionId)) {
87
- const targetSet = new Set(sectionId);
88
- return new ConceptCollection(this[_items].filter(c => {
89
- // @ts-expect-error TODO(Phase 2e): type this fully
90
- const ids = options.register
91
- // @ts-expect-error TODO(Phase 2e): type this fully
92
- ? options.register.conceptSectionIds(c)
93
- : _flatConceptSectionIds(c);
94
- return ids.some(id => targetSet.has(id));
95
- }));
96
- }
97
- // @ts-expect-error TODO(Phase 2e): type this fully
98
- if (!options.register) {
99
- throw new Error('bySection(sectionId) requires { register } to expand the concept section closures');
100
- }
101
- const target = sectionId;
102
- return new ConceptCollection(this[_items].filter(c => {
103
- // @ts-expect-error TODO(Phase 2e): type this fully
104
- const ids = options.register.conceptSectionIds(c);
105
- return ids.includes(target);
106
- }));
107
- }
108
-
109
- index() {
110
- const map = new Map();
111
- for (const c of this[_items]) map.set(c.id, c);
112
- return map;
113
- }
114
-
115
- sorted() {
116
- const copy = [...this[_items]];
117
- copy.sort((a, b) => naturalSort(a.id, b.id));
118
- // @ts-expect-error TODO(Phase 2e): type this fully
119
- return new ConceptCollection(copy);
120
- }
121
-
122
- search(query) {
123
- const q = query.toLowerCase();
124
- return new ConceptCollection(this[_items].filter(c => {
125
- for (const lang of c.languages) {
126
- const lc = c.localization(lang);
127
- if (!lc) continue;
128
- for (const t of lc.terms) {
129
- if ((t.designation ?? '').toLowerCase().includes(q)) return true;
130
- }
131
- }
132
- for (const { text } of c.walkTexts()) {
133
- if (text.toLowerCase().includes(q)) return true;
134
- }
135
- return false;
136
- }));
137
- }
138
-
139
- allLanguages() {
140
- const set = new Set();
141
- for (const c of this[_items]) {
142
- for (const lang of c.languages) set.add(lang);
143
- }
144
- return [...set].sort();
145
- }
146
-
147
- filter(fn) { return new ConceptCollection(this[_items].filter(fn)); }
148
- slice(...args) { return new ConceptCollection(this[_items].slice(...args)); }
149
- concat(...args) { return new ConceptCollection(this[_items].concat(...args)); }
150
- }
151
-
152
- // Standalone helper for the array-closure case where no register is
153
- // available. Mirrors the lookup done inside Register#conceptSectionIds
154
- // but without ancestor expansion (the closure is already provided).
155
- function _flatConceptSectionIds(concept) {
156
- if (!concept) return [];
157
- const out = [];
158
- for (const source of [concept.sections, concept.groups]) {
159
- if (!Array.isArray(source)) continue;
160
- for (const entry of source) {
161
- if (typeof entry === 'string') {
162
- // @ts-expect-error TODO(Phase 2e): type this fully
163
- out.push(entry);
164
- } else if (entry && typeof entry === 'object') {
165
- const id = entry.id ?? entry.sectionId ?? entry.ref?.id;
166
- // @ts-expect-error TODO(Phase 2e): type this fully
167
- if (id) out.push(String(id));
168
- }
169
- }
170
- }
171
- return out;
172
- }
@@ -1,235 +0,0 @@
1
- import * as yaml from 'js-yaml';
2
- import { Concept } from './models/concept.js';
3
- import { RelatedConcept } from './models/related-concept.js';
4
- import { HyperedgeRegistry } from './models/hyperedge-registry.js';
5
- import { migrateHyperedgeToRelation } from './migration/hyperedge-migrator.js';
6
- import { InvalidInputError, YamlParseError } from './errors.js';
7
-
8
- // Structural keys are reserved at the concept level and excluded
9
- // from language localization discovery. The set is derived from
10
- // HyperedgeRegistry — every registered hyperedge class contributes
11
- // its wireKey and any v1WireKeys to the reserved set. Adding a new
12
- // hyperedge type means the parser reserves its wire key automatically;
13
- // no edits here.
14
- const STRUCTURAL_KEYS = new Set([
15
- 'termid', 'term', 'figures', 'tables', 'formulas',
16
- 'related', 'relatedConcepts',
17
- 'relations',
18
- ..._registryStructuralKeys(),
19
- ]);
20
-
21
- function _registryStructuralKeys() {
22
- const out = [];
23
- for (const cls of HyperedgeRegistry.allClasses()) {
24
- // @ts-expect-error TODO(Phase 2e): type this fully
25
- out.push(cls.wireKey);
26
- // @ts-expect-error TODO(Phase 2e): type this fully
27
- out.push(_camelCase(cls.wireKey));
28
- for (const k of cls.v1WireKeys ?? []) {
29
- // @ts-expect-error TODO(Phase 2e): type this fully
30
- out.push(k);
31
- // @ts-expect-error TODO(Phase 2e): type this fully
32
- out.push(_camelCase(k));
33
- }
34
- }
35
- return out;
36
- }
37
-
38
- function _camelCase(s) {
39
- if (typeof s !== 'string' || !s.includes('_')) return s;
40
- return s.replace(/_([a-z])/g, (_, c) => c.toUpperCase());
41
- }
42
-
43
- export class ConceptParser {
44
- parse(raw, context) {
45
- const label = context ?? 'concept';
46
-
47
- if (raw == null) {
48
- throw new InvalidInputError(
49
- `parseConceptYaml requires a non-empty YAML string (${label})`,
50
- 'non-null string',
51
- );
52
- }
53
- if (typeof raw !== 'string' || raw.trim() === '') {
54
- throw new InvalidInputError(
55
- `parseConceptYaml requires a non-empty YAML string (${label})`,
56
- 'non-empty string',
57
- );
58
- }
59
-
60
- let docs;
61
- try {
62
- // js-yaml 5.x dropped the explicit DEFAULT_SCHEMA export; the
63
- // default schema is applied automatically when no `schema`
64
- // option is passed. Passing CORE_SCHEMA reproduces the historical
65
- // behavior (yaml.org core schema).
66
- docs = yaml.loadAll(raw, { schema: yaml.CORE_SCHEMA ?? yaml.JSON_SCHEMA });
67
- } catch (err) {
68
- // @ts-expect-error TODO(Phase 2e): type this fully
69
- throw new YamlParseError(label, err);
70
- }
71
-
72
- return this._detectFormat(docs, label) === 'managed'
73
- ? this._parseManaged(docs)
74
- : this._parseCanonical(docs[0]);
75
- }
76
-
77
- _detectFormat(docs, label) {
78
- if (docs.length >= 1 && docs[0]?.data?.identifier !== undefined) return 'managed';
79
- if (docs[0] == null) throw new YamlParseError(label, new Error('YAML document is empty'));
80
- return 'canonical';
81
- }
82
-
83
- _parseCanonical(doc) {
84
- const localizations = {};
85
- for (const key of Object.keys(doc)) {
86
- if (!STRUCTURAL_KEYS.has(key) && typeof doc[key] === 'object' && doc[key] !== null) {
87
- localizations[key] = doc[key];
88
- }
89
- }
90
- return new Concept({
91
- id: String(doc.termid),
92
- term: doc.term || null,
93
- localizations,
94
- figures: doc.figures,
95
- tables: doc.tables,
96
- formulas: doc.formulas,
97
- relations: _resolveHyperedgeData(doc),
98
- raw: doc,
99
- });
100
- }
101
-
102
- _parseManaged(docs) {
103
- const mc = docs[0];
104
- const localizations = {};
105
-
106
- for (const doc of docs.slice(1)) {
107
- if (!doc?.data?.language_code) continue;
108
- const lang = doc.data.language_code;
109
- const lcData = { ...doc.data };
110
- delete lcData.language_code;
111
- localizations[lang] = lcData;
112
- }
113
-
114
- // The hyperedge wire keys are reserved at concept level (top-level
115
- // of the managed concept YAML), not under data:. Derive the list
116
- // from the registry so adding a type doesn't require an edit here.
117
- const conceptLevelOnlyKeys = [
118
- 'related',
119
- 'relations',
120
- ...HyperedgeRegistry.allWireAndLegacyKeys(),
121
- ];
122
-
123
- assertConceptLevelOnly(mc, conceptLevelOnlyKeys);
124
-
125
- return new Concept({
126
- id: String(mc.data.identifier),
127
- term: null,
128
- localizations,
129
- related: _normalizeRelated(mc.related),
130
- relations: _resolveHyperedgeData(mc),
131
- domains: mc.data.domains,
132
- groups: mc.data.groups,
133
- dates: mc.dates ?? mc.data?.dates,
134
- sources: mc.sources ?? mc.data?.sources,
135
- figures: mc.data?.figures,
136
- tables: mc.data?.tables,
137
- formulas: mc.data?.formulas,
138
- status: mc.status,
139
- schemaVersion: mc.schema_version,
140
- raw: mc,
141
- });
142
- }
143
- }
144
-
145
- function assertConceptLevelOnly(mc, keys) {
146
- const conceptId = mc?.data?.identifier ?? '<unknown>';
147
- for (const key of keys) {
148
- const camelKey = _camelCase(key);
149
- if (mc?.data?.[key] != null && mc[key] == null && mc[camelKey] == null) {
150
- throw new InvalidInputError(
151
- `'${key}' must live at concept level (top-level of the managed ` +
152
- `concept document), not under data:. Found data.${key} in concept ` +
153
- `${conceptId}. Move the key out of the data: block.`,
154
- 'concept-level ' + key,
155
- );
156
- }
157
- }
158
- }
159
-
160
- // Resolve hyperedge data from any input shape into a single unified
161
- // array. Iterates HyperedgeRegistry — for each registered class:
162
- // - read its wireKey from the container (e.g. partitive_relations)
163
- // - read any v1WireKeys (e.g. partitive_hyperedges) and migrate
164
- // - tag each entry with the class's typeTag
165
- //
166
- // Returns null when no relation data is present, so Concept's
167
- // `_resolveHyperedges` falls back to the empty-array default.
168
- //
169
- // Adding a new hyperedge type means: declare it on a class, register.
170
- // The parser picks it up automatically — no edits here.
171
- function _resolveHyperedgeData(container) {
172
- if (!container) return null;
173
-
174
- if (Array.isArray(container.relations)) {
175
- return container.relations;
176
- }
177
-
178
- const out = [];
179
-
180
- for (const cls of HyperedgeRegistry.allClasses()) {
181
- // v2 wire key (e.g. partitive_relations)
182
- const arr = container[cls.wireKey] ?? container[_camelCase(cls.wireKey)];
183
- if (Array.isArray(arr)) {
184
- for (const r of arr) {
185
- const tagged = _addTypeIfMissing(r, cls.typeTag);
186
- // @ts-expect-error TODO(Phase 2e): type this fully
187
- if (tagged != null) out.push(tagged);
188
- }
189
- }
190
-
191
- // v1 legacy wire keys (e.g. partitive_hyperedges) — migrated.
192
- // The migration helper produces a v2 hash; we tag it with the
193
- // typeTag so Concept's registry dispatch finds the right class.
194
- for (const v1Key of cls.v1WireKeys ?? []) {
195
- const v1Arr = container[v1Key] ?? container[_camelCase(v1Key)];
196
- if (!Array.isArray(v1Arr)) continue;
197
- for (const h of v1Arr) {
198
- const hash = h?.toJSON && typeof h.toJSON === 'function' ? h.toJSON() : h;
199
- const migrated = migrateHyperedgeToRelation(hash);
200
- // @ts-expect-error TODO(Phase 2e): type this fully
201
- if (migrated) out.push({ ...migrated, type: cls.typeTag });
202
- }
203
- }
204
- }
205
-
206
- return out.length > 0 ? out : null;
207
- }
208
-
209
- function _addTypeIfMissing(value, type) {
210
- if (value == null) return null;
211
- if (typeof value.toJSON === 'function') {
212
- const hash = value.toJSON();
213
- return hash.type ? hash : { ...hash, type };
214
- }
215
- if (typeof value === 'object') {
216
- return value.type ? value : { ...value, type };
217
- }
218
- return value;
219
- }
220
-
221
- function _normalizeRelated(arr) {
222
- if (!arr || !Array.isArray(arr)) return [];
223
- return arr.map(r => {
224
- if (r instanceof RelatedConcept) return r;
225
- if (r.ref != null && typeof r.ref !== 'object') {
226
- throw new InvalidInputError(
227
- `RelatedConcept.ref must be an object { source, id }, got: ${typeof r.ref}`,
228
- 'object',
229
- );
230
- }
231
- return new RelatedConcept(r);
232
- });
233
- }
234
-
235
- export const conceptParser = new ConceptParser();