glossarist 0.4.50 → 0.4.52

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 (709) 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 +25 -0
  94. package/dist/index.d.ts.map +1 -0
  95. package/dist/index.js +38 -0
  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/utils/external-detection.d.ts +38 -0
  494. package/dist/utils/external-detection.d.ts.map +1 -0
  495. package/dist/utils/external-detection.js +55 -0
  496. package/dist/utils/external-detection.js.map +1 -0
  497. package/dist/uuid.d.ts +4 -0
  498. package/dist/uuid.d.ts.map +1 -0
  499. package/dist/uuid.js +23 -0
  500. package/dist/uuid.js.map +1 -0
  501. package/dist/v1-reader.d.ts +8 -0
  502. package/dist/v1-reader.d.ts.map +1 -0
  503. package/dist/v1-reader.js +56 -0
  504. package/dist/v1-reader.js.map +1 -0
  505. package/dist/validators/asset-index.d.ts +23 -0
  506. package/dist/validators/asset-index.d.ts.map +1 -0
  507. package/dist/validators/asset-index.js +58 -0
  508. package/dist/validators/asset-index.js.map +1 -0
  509. package/dist/validators/binary-has-part-redundancy-rule.d.ts +8 -0
  510. package/dist/validators/binary-has-part-redundancy-rule.d.ts.map +1 -0
  511. package/dist/validators/binary-has-part-redundancy-rule.js +57 -0
  512. package/dist/validators/binary-has-part-redundancy-rule.js.map +1 -0
  513. package/dist/validators/concept-validator.d.ts +21 -0
  514. package/dist/validators/concept-validator.d.ts.map +1 -0
  515. package/dist/validators/concept-validator.js +76 -0
  516. package/dist/validators/concept-validator.js.map +1 -0
  517. package/dist/validators/delimiting-coherence-rule.d.ts +8 -0
  518. package/dist/validators/delimiting-coherence-rule.d.ts.map +1 -0
  519. package/dist/validators/delimiting-coherence-rule.js +72 -0
  520. package/dist/validators/delimiting-coherence-rule.js.map +1 -0
  521. package/dist/validators/extensional-completeness.d.ts +18 -0
  522. package/dist/validators/extensional-completeness.d.ts.map +1 -0
  523. package/dist/validators/extensional-completeness.js +41 -0
  524. package/dist/validators/extensional-completeness.js.map +1 -0
  525. package/dist/validators/external-concept-shape-rule.d.ts +8 -0
  526. package/dist/validators/external-concept-shape-rule.d.ts.map +1 -0
  527. package/dist/validators/external-concept-shape-rule.js +48 -0
  528. package/dist/validators/external-concept-shape-rule.js.map +1 -0
  529. package/dist/validators/gcr-validator.d.ts +11 -0
  530. package/dist/validators/gcr-validator.d.ts.map +1 -0
  531. package/dist/validators/gcr-validator.js +76 -0
  532. package/dist/validators/gcr-validator.js.map +1 -0
  533. package/dist/validators/hyperedge-coherence-rule.d.ts +9 -0
  534. package/dist/validators/hyperedge-coherence-rule.d.ts.map +1 -0
  535. package/dist/validators/hyperedge-coherence-rule.js +78 -0
  536. package/dist/validators/hyperedge-coherence-rule.js.map +1 -0
  537. package/dist/validators/index.d.ts +21 -0
  538. package/dist/validators/index.d.ts.map +1 -0
  539. package/{src/validators/index.ts → dist/validators/index.js} +25 -51
  540. package/dist/validators/index.js.map +1 -0
  541. package/dist/validators/partitive-relation-coherence-rule.d.ts +2 -0
  542. package/dist/validators/partitive-relation-coherence-rule.d.ts.map +1 -0
  543. package/{src/validators/partitive-relation-coherence-rule.ts → dist/validators/partitive-relation-coherence-rule.js} +1 -1
  544. package/dist/validators/partitive-relation-coherence-rule.js.map +1 -0
  545. package/dist/validators/ref-keys.d.ts +8 -0
  546. package/dist/validators/ref-keys.d.ts.map +1 -0
  547. package/dist/validators/ref-keys.js +27 -0
  548. package/dist/validators/ref-keys.js.map +1 -0
  549. package/dist/validators/register-validator.d.ts +10 -0
  550. package/dist/validators/register-validator.d.ts.map +1 -0
  551. package/dist/validators/register-validator.js +18 -0
  552. package/dist/validators/register-validator.js.map +1 -0
  553. package/dist/validators/relationship-type-rule.d.ts +13 -0
  554. package/dist/validators/relationship-type-rule.d.ts.map +1 -0
  555. package/dist/validators/relationship-type-rule.js +34 -0
  556. package/dist/validators/relationship-type-rule.js.map +1 -0
  557. package/dist/validators/sourced-from-locality-rule.d.ts +8 -0
  558. package/dist/validators/sourced-from-locality-rule.d.ts.map +1 -0
  559. package/dist/validators/sourced-from-locality-rule.js +37 -0
  560. package/dist/validators/sourced-from-locality-rule.js.map +1 -0
  561. package/dist/validators/v3-rules.d.ts +60 -0
  562. package/dist/validators/v3-rules.d.ts.map +1 -0
  563. package/dist/validators/v3-rules.js +327 -0
  564. package/dist/validators/v3-rules.js.map +1 -0
  565. package/dist/validators/validation-error.d.ts +13 -0
  566. package/dist/validators/validation-error.d.ts.map +1 -0
  567. package/dist/validators/validation-error.js +17 -0
  568. package/dist/validators/validation-error.js.map +1 -0
  569. package/dist/validators/validation-result.d.ts +17 -0
  570. package/dist/validators/validation-result.d.ts.map +1 -0
  571. package/dist/validators/validation-result.js +47 -0
  572. package/dist/validators/validation-result.js.map +1 -0
  573. package/dist/validators/validation-rule.d.ts +10 -0
  574. package/dist/validators/validation-rule.d.ts.map +1 -0
  575. package/dist/validators/validation-rule.js +17 -0
  576. package/dist/validators/validation-rule.js.map +1 -0
  577. package/package.json +37 -42
  578. package/src/concept-collection.ts +0 -172
  579. package/src/concept-parser.ts +0 -235
  580. package/src/concept-reader.d.ts +0 -13
  581. package/src/concept-serializer.ts +0 -110
  582. package/src/concept-writer.d.ts +0 -7
  583. package/src/concept-writer.ts +0 -47
  584. package/src/diff/canonical-json.ts +0 -29
  585. package/src/diff/change.ts +0 -175
  586. package/src/diff/collection-diff.ts +0 -245
  587. package/src/diff/concept-diff.ts +0 -853
  588. package/src/diff/diff-patch.ts +0 -276
  589. package/src/diff/diff-renderer.ts +0 -348
  590. package/src/diff/identity.ts +0 -33
  591. package/src/diff/index.d.ts +0 -242
  592. package/src/diff/index.ts +0 -50
  593. package/src/diff/list-diff.ts +0 -231
  594. package/src/diff/similarity.ts +0 -20
  595. package/src/diff/text-diff.ts +0 -167
  596. package/src/entity-directory.ts +0 -43
  597. package/src/errors.d.ts +0 -11
  598. package/src/errors.ts +0 -24
  599. package/src/gcr-reader.d.ts +0 -65
  600. package/src/gcr-reader.ts +0 -512
  601. package/src/gcr-writer.d.ts +0 -22
  602. package/src/gcr-writer.ts +0 -99
  603. package/src/index.d.ts +0 -124
  604. package/src/index.ts +0 -92
  605. package/src/managed-concept-collection.ts +0 -130
  606. package/src/migration/hyperedge-migrator.ts +0 -104
  607. package/src/models/abstract-hyperedge.ts +0 -164
  608. package/src/models/base.ts +0 -110
  609. package/src/models/bibliography-data.ts +0 -64
  610. package/src/models/bibliography-entry.ts +0 -40
  611. package/src/models/citation.ts +0 -98
  612. package/src/models/concept-date.ts +0 -48
  613. package/src/models/concept-ref.ts +0 -64
  614. package/src/models/concept-reference.ts +0 -50
  615. package/src/models/concept-source.ts +0 -96
  616. package/src/models/concept-system-type.ts +0 -39
  617. package/src/models/concept-system.ts +0 -152
  618. package/src/models/concept.ts +0 -499
  619. package/src/models/dataset-color.ts +0 -88
  620. package/src/models/designation-relationship.ts +0 -39
  621. package/src/models/designation.ts +0 -297
  622. package/src/models/detailed-definition.ts +0 -92
  623. package/src/models/enum.ts +0 -60
  624. package/src/models/equivalence-degree.ts +0 -34
  625. package/src/models/figure.ts +0 -110
  626. package/src/models/formula.ts +0 -36
  627. package/src/models/gcr-metadata.ts +0 -118
  628. package/src/models/gcr-statistics.ts +0 -76
  629. package/src/models/generic-hyperedge.ts +0 -72
  630. package/src/models/generic-member.ts +0 -80
  631. package/src/models/grammar-info.ts +0 -78
  632. package/src/models/hyperedge-colors.ts +0 -87
  633. package/src/models/hyperedge-index.ts +0 -101
  634. package/src/models/hyperedge-member.ts +0 -121
  635. package/src/models/hyperedge-registry.ts +0 -145
  636. package/src/models/index.d.ts +0 -586
  637. package/src/models/locality.ts +0 -34
  638. package/src/models/localized-concept.ts +0 -284
  639. package/src/models/localized-string.ts +0 -32
  640. package/src/models/multiplicity.ts +0 -134
  641. package/src/models/non-verb-rep.ts +0 -48
  642. package/src/models/non-verbal-entity.ts +0 -65
  643. package/src/models/non-verbal-reference.ts +0 -73
  644. package/src/models/non-verbal-references.ts +0 -29
  645. package/src/models/partitive-enumeration.ts +0 -27
  646. package/src/models/partitive-hyperedge.ts +0 -90
  647. package/src/models/partitive-member.ts +0 -56
  648. package/src/models/plurality-marker.ts +0 -31
  649. package/src/models/pronunciation.ts +0 -40
  650. package/src/models/register.ts +0 -315
  651. package/src/models/registrable.ts +0 -48
  652. package/src/models/related-concept.ts +0 -117
  653. package/src/models/relation-categories.ts +0 -167
  654. package/src/models/relation-colors.ts +0 -90
  655. package/src/models/relation-loader.ts +0 -115
  656. package/src/models/section.ts +0 -61
  657. package/src/models/sequential-hyperedge.ts +0 -70
  658. package/src/models/shared-non-verbal-entity.ts +0 -36
  659. package/src/models/table.ts +0 -36
  660. package/src/rdf/agents-emitter.ts +0 -137
  661. package/src/rdf/bibliography-emitter.ts +0 -126
  662. package/src/rdf/bnode-id.ts +0 -55
  663. package/src/rdf/build-activity-emitter.ts +0 -129
  664. package/src/rdf/curie.ts +0 -46
  665. package/src/rdf/dataset-emitter.ts +0 -170
  666. package/src/rdf/deterministic-id.ts +0 -69
  667. package/src/rdf/document-writer.ts +0 -87
  668. package/src/rdf/gloss-concept.ts +0 -115
  669. package/src/rdf/gloss-designation.ts +0 -72
  670. package/src/rdf/gloss-detailed-definition.ts +0 -69
  671. package/src/rdf/gloss-localized-concept.ts +0 -79
  672. package/src/rdf/gloss-non-verbal-rep.ts +0 -202
  673. package/src/rdf/gloss-partitive-relation.ts +0 -89
  674. package/src/rdf/gloss-source.ts +0 -56
  675. package/src/rdf/group-emitter.ts +0 -133
  676. package/src/rdf/image-variant-emitter.ts +0 -80
  677. package/src/rdf/index.d.ts +0 -371
  678. package/src/rdf/predicates.d.ts +0 -527
  679. package/src/rdf/predicates.ts +0 -287
  680. package/src/rdf/provenance-emitter.ts +0 -87
  681. package/src/rdf/sections-builder.ts +0 -190
  682. package/src/rdf/shacl-entry.d.ts +0 -6
  683. package/src/rdf/version-emitter.ts +0 -97
  684. package/src/rdf/vocabulary-emitter.ts +0 -67
  685. package/src/rdf/write-turtle-sync.ts +0 -179
  686. package/src/reference-mention.ts +0 -114
  687. package/src/reference-resolver.ts +0 -361
  688. package/src/render-classification.ts +0 -85
  689. package/src/sort.ts +0 -22
  690. package/src/transforms/concept-to-gloss.transform.ts +0 -81
  691. package/src/transforms/index.d.ts +0 -26
  692. package/src/uuid.ts +0 -32
  693. package/src/v1-reader.ts +0 -66
  694. package/src/validators/asset-index.ts +0 -72
  695. package/src/validators/binary-has-part-redundancy-rule.ts +0 -67
  696. package/src/validators/concept-validator.ts +0 -93
  697. package/src/validators/delimiting-coherence-rule.ts +0 -105
  698. package/src/validators/external-concept-shape-rule.ts +0 -60
  699. package/src/validators/gcr-validator.ts +0 -76
  700. package/src/validators/hyperedge-coherence-rule.ts +0 -98
  701. package/src/validators/index.d.ts +0 -43
  702. package/src/validators/ref-keys.ts +0 -31
  703. package/src/validators/register-validator.ts +0 -18
  704. package/src/validators/relationship-type-rule.ts +0 -39
  705. package/src/validators/sourced-from-locality-rule.ts +0 -53
  706. package/src/validators/v3-rules.ts +0 -382
  707. package/src/validators/validation-error.ts +0 -19
  708. package/src/validators/validation-result.ts +0 -52
  709. package/src/validators/validation-rule.ts +0 -21
@@ -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();
@@ -1,13 +0,0 @@
1
- import type { Concept, Register } from './models/index';
2
-
3
- /** Read all concept YAML files from a directory. */
4
- export function readConcepts(dir: string): Concept[];
5
-
6
- /** Read a single concept by ID from a directory. */
7
- export function readConcept(dir: string, id: string): Concept | null;
8
-
9
- /** List all concept IDs in a directory, optionally filtered by prefix. */
10
- export function listConceptIds(dir: string, prefix?: string): string[];
11
-
12
- /** Read register.yaml from a dataset directory (if present). */
13
- export function readRegister(dir: string): Register | null;
@@ -1,110 +0,0 @@
1
- import * as yaml from 'js-yaml';
2
- import { PartitiveHyperedge } from './models/partitive-hyperedge.js';
3
- import { GenericHyperedge } from './models/generic-hyperedge.js';
4
-
5
- const DUMP_OPTS = { lineWidth: -1, noRefs: true, sortKeys: false, skipInvalid: true };
6
-
7
- // Partition the unified relations array by concrete type and emit
8
- // each type under its own wire key. Concept.relations holds mixed
9
- // types; the wire format stays split for backward compat with
10
- // existing consumers and the JSON Schema in concept-model.
11
- function _emitTypedRelations(concept) {
12
- const partitiveRels = concept.relations.filter(r => r instanceof PartitiveHyperedge);
13
- const genericRels = concept.relations.filter(r => r instanceof GenericHyperedge);
14
- return {
15
- partitive: partitiveRels.map(r => r.toJSON()),
16
- generic: genericRels.map(r => r.toJSON()),
17
- };
18
- }
19
-
20
- export class ConceptSerializer {
21
- toCanonicalYaml(concept) {
22
- const doc = { termid: concept.id };
23
- // @ts-expect-error TODO(Phase 2e): type this fully
24
- if (concept.term) doc.term = concept.term;
25
-
26
- const { partitive, generic } = _emitTypedRelations(concept);
27
- // @ts-expect-error TODO(Phase 2e): type this fully
28
- if (partitive.length > 0) doc.partitive_relations = partitive;
29
- // @ts-expect-error TODO(Phase 2e): type this fully
30
- if (generic.length > 0) doc.generic_relations = generic;
31
-
32
- for (const lang of concept.languages) {
33
- const lc = concept.localization(lang);
34
- if (lc) {
35
- const lcObj = lc.toJSON();
36
- delete lcObj.language_code;
37
- doc[lang] = lcObj;
38
- }
39
- }
40
-
41
- return yaml.dump(doc, DUMP_OPTS);
42
- }
43
-
44
- toManagedYaml(concept, uuidFn) {
45
- const genId = uuidFn ?? (() => crypto.randomUUID());
46
- const localizedConcepts = {};
47
- const langDocs = [];
48
-
49
- for (const lang of concept.languages) {
50
- const lc = concept.localization(lang);
51
- if (!lc) continue;
52
- const lcId = genId();
53
- localizedConcepts[lang] = lcId;
54
-
55
- const lcObj = lc.toJSON();
56
- // @ts-expect-error TODO(Phase 2e): type this fully
57
- langDocs.push({ data: lcObj, id: lcId });
58
- }
59
-
60
- const mainDoc = {
61
- data: { identifier: concept.id, localized_concepts: localizedConcepts },
62
- id: genId(),
63
- };
64
-
65
- if (concept.domains.length > 0) {
66
- // @ts-expect-error TODO(Phase 2e): type this fully
67
- mainDoc.data.domains = concept.domains.map(d => d.toJSON());
68
- }
69
-
70
- if (concept.relatedConcepts.length > 0) {
71
- // @ts-expect-error TODO(Phase 2e): type this fully
72
- mainDoc.related = concept.relatedConcepts.map(rc => rc.toJSON());
73
- }
74
- const { partitive, generic } = _emitTypedRelations(concept);
75
- // @ts-expect-error TODO(Phase 2e): type this fully
76
- if (partitive.length > 0) mainDoc.partitive_relations = partitive;
77
- // @ts-expect-error TODO(Phase 2e): type this fully
78
- if (generic.length > 0) mainDoc.generic_relations = generic;
79
- if (concept.sources.length > 0) {
80
- // @ts-expect-error TODO(Phase 2e): type this fully
81
- mainDoc.sources = concept.sources.map(s => s.toJSON());
82
- }
83
- if (concept.dates.length > 0) {
84
- // @ts-expect-error TODO(Phase 2e): type this fully
85
- mainDoc.dates = concept.dates.map(d => d.toJSON());
86
- }
87
- // @ts-expect-error TODO(Phase 2e): type this fully
88
- if (concept.status) mainDoc.status = concept.status;
89
- // @ts-expect-error TODO(Phase 2e): type this fully
90
- if (concept.schemaVersion) mainDoc.schema_version = concept.schemaVersion;
91
-
92
- const parts = [
93
- '---\n' + yaml.dump(mainDoc, DUMP_OPTS),
94
- ...langDocs.map(d => '---\n' + yaml.dump(d, DUMP_OPTS)),
95
- ];
96
- return parts.join('');
97
- }
98
-
99
- toYaml(concept, uuidFn) {
100
- return concept.term
101
- ? this.toCanonicalYaml(concept)
102
- : this.toManagedYaml(concept, uuidFn);
103
- }
104
-
105
- toRegisterYaml(data) {
106
- return yaml.dump(data, DUMP_OPTS);
107
- }
108
- }
109
-
110
- export const conceptSerializer = new ConceptSerializer();
@@ -1,7 +0,0 @@
1
- import { Concept } from './models/index';
2
-
3
- export function writeConcept(dir: string, concept: Concept, format?: 'canonical' | 'managed' | 'auto'): void;
4
- export function writeConcepts(dir: string, concepts: Concept[], options?: {
5
- register?: Record<string, unknown>;
6
- format?: 'canonical' | 'managed' | 'auto';
7
- }): void;
@@ -1,47 +0,0 @@
1
- import fs from 'fs';
2
- import path from 'path';
3
- import { conceptSerializer } from './concept-serializer.js';
4
- import { InvalidInputError } from './errors.js';
5
-
6
- function assertDir(dir, fnName) {
7
- if (typeof dir !== 'string' || dir.trim() === '') {
8
- throw new InvalidInputError(`${fnName} requires a directory path`, 'non-empty string');
9
- }
10
- }
11
-
12
- export function writeConcept(dir, concept, format = 'auto') {
13
- assertDir(dir, 'writeConcept');
14
- if (!concept?.id) {
15
- throw new InvalidInputError('writeConcept requires a Concept with an id', 'Concept');
16
- }
17
-
18
- const y = format === 'canonical'
19
- ? conceptSerializer.toCanonicalYaml(concept)
20
- : format === 'managed'
21
- // @ts-expect-error TODO(Phase 2e): type this fully
22
- ? conceptSerializer.toManagedYaml(concept)
23
- // @ts-expect-error TODO(Phase 2e): type this fully
24
- : conceptSerializer.toYaml(concept);
25
-
26
- fs.writeFileSync(path.join(dir, `${concept.id}.yaml`), y, 'utf8');
27
- }
28
-
29
- export function writeConcepts(dir, concepts, options = {}) {
30
- assertDir(dir, 'writeConcepts');
31
- fs.mkdirSync(dir, { recursive: true });
32
-
33
- for (const concept of concepts) {
34
- // @ts-expect-error TODO(Phase 2e): type this fully
35
- writeConcept(dir, concept, options.format);
36
- }
37
-
38
- // @ts-expect-error TODO(Phase 2e): type this fully
39
- if (options.register) {
40
- fs.writeFileSync(
41
- path.join(dir, 'register.yaml'),
42
- // @ts-expect-error TODO(Phase 2e): type this fully
43
- conceptSerializer.toRegisterYaml(options.register),
44
- 'utf8',
45
- );
46
- }
47
- }
@@ -1,29 +0,0 @@
1
- // Canonical JSON for equality comparison.
2
- //
3
- // Sorts object keys recursively so two semantically-equal values produce
4
- // identical strings regardless of insertion order. Arrays preserve order
5
- // (they're ordered in domain semantics). Undefined values are dropped.
6
-
7
- type JsonInput = null | undefined | string | number | boolean | JsonInput[] | { [k: string]: JsonInput };
8
-
9
- export function canonicalJson(value: JsonInput | unknown): string {
10
- return JSON.stringify(toCanonical(value as JsonInput));
11
- }
12
-
13
- export function deepEqualCanonical(a: JsonInput | unknown, b: JsonInput | unknown): boolean {
14
- return canonicalJson(a) === canonicalJson(b);
15
- }
16
-
17
- function toCanonical(value: JsonInput): unknown {
18
- if (value == null) return null;
19
- if (Array.isArray(value)) return value.map(toCanonical);
20
- if (typeof value === 'object') {
21
- const out: Record<string, unknown> = {};
22
- for (const k of Object.keys(value).sort()) {
23
- const v = toCanonical((value as Record<string, JsonInput>)[k] as JsonInput);
24
- if (v !== undefined) out[k] = v;
25
- }
26
- return out;
27
- }
28
- return value;
29
- }