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.
- package/dist/compiled-format.d.ts +43 -0
- package/dist/compiled-format.d.ts.map +1 -0
- package/{src/compiled-format.ts → dist/compiled-format.js} +28 -46
- package/dist/compiled-format.js.map +1 -0
- package/dist/concept-collection.d.ts +39 -0
- package/dist/concept-collection.d.ts.map +1 -0
- package/dist/concept-collection.js +127 -0
- package/dist/concept-collection.js.map +1 -0
- package/dist/concept-diff.d.ts +14 -0
- package/dist/concept-diff.d.ts.map +1 -0
- package/{src/concept-diff.ts → dist/concept-diff.js} +2 -20
- package/dist/concept-diff.js.map +1 -0
- package/dist/concept-parser.d.ts +11 -0
- package/dist/concept-parser.d.ts.map +1 -0
- package/dist/concept-parser.js +209 -0
- package/dist/concept-parser.js.map +1 -0
- package/dist/concept-reader.d.ts +55 -0
- package/dist/concept-reader.d.ts.map +1 -0
- package/{src/concept-reader.ts → dist/concept-reader.js} +70 -76
- package/dist/concept-reader.js.map +1 -0
- package/dist/concept-serializer.d.ts +9 -0
- package/dist/concept-serializer.d.ts.map +1 -0
- package/dist/concept-serializer.js +87 -0
- package/dist/concept-serializer.js.map +1 -0
- package/dist/concept-writer.d.ts +10 -0
- package/dist/concept-writer.d.ts.map +1 -0
- package/dist/concept-writer.js +28 -0
- package/dist/concept-writer.js.map +1 -0
- package/dist/dataset-asset.d.ts +49 -0
- package/dist/dataset-asset.d.ts.map +1 -0
- package/{src/dataset-asset.ts → dist/dataset-asset.js} +16 -33
- package/dist/dataset-asset.js.map +1 -0
- package/dist/diff/canonical-json.d.ts +7 -0
- package/dist/diff/canonical-json.d.ts.map +1 -0
- package/dist/diff/canonical-json.js +28 -0
- package/dist/diff/canonical-json.js.map +1 -0
- package/dist/diff/change.d.ts +67 -0
- package/dist/diff/change.d.ts.map +1 -0
- package/dist/diff/change.js +131 -0
- package/dist/diff/change.js.map +1 -0
- package/dist/diff/collection-diff.d.ts +50 -0
- package/dist/diff/collection-diff.d.ts.map +1 -0
- package/dist/diff/collection-diff.js +182 -0
- package/dist/diff/collection-diff.js.map +1 -0
- package/dist/diff/concept-diff.d.ts +188 -0
- package/dist/diff/concept-diff.d.ts.map +1 -0
- package/dist/diff/concept-diff.js +624 -0
- package/dist/diff/concept-diff.js.map +1 -0
- package/dist/diff/diff-patch.d.ts +7 -0
- package/dist/diff/diff-patch.d.ts.map +1 -0
- package/dist/diff/diff-patch.js +225 -0
- package/dist/diff/diff-patch.js.map +1 -0
- package/dist/diff/diff-renderer.d.ts +44 -0
- package/dist/diff/diff-renderer.d.ts.map +1 -0
- package/dist/diff/diff-renderer.js +263 -0
- package/dist/diff/diff-renderer.js.map +1 -0
- package/dist/diff/identity.d.ts +2 -0
- package/dist/diff/identity.d.ts.map +1 -0
- package/dist/diff/identity.js +29 -0
- package/dist/diff/identity.js.map +1 -0
- package/dist/diff/index.d.ts +8 -0
- package/dist/diff/index.d.ts.map +1 -0
- package/dist/diff/index.js +8 -0
- package/dist/diff/index.js.map +1 -0
- package/dist/diff/list-diff.d.ts +36 -0
- package/dist/diff/list-diff.d.ts.map +1 -0
- package/dist/diff/list-diff.js +185 -0
- package/dist/diff/list-diff.js.map +1 -0
- package/dist/diff/similarity.d.ts +4 -0
- package/dist/diff/similarity.d.ts.map +1 -0
- package/dist/diff/similarity.js +20 -0
- package/dist/diff/similarity.js.map +1 -0
- package/dist/diff/text-diff.d.ts +42 -0
- package/dist/diff/text-diff.d.ts.map +1 -0
- package/dist/diff/text-diff.js +134 -0
- package/dist/diff/text-diff.js.map +1 -0
- package/dist/entity-directory.d.ts +13 -0
- package/dist/entity-directory.d.ts.map +1 -0
- package/dist/entity-directory.js +35 -0
- package/dist/entity-directory.js.map +1 -0
- package/dist/errors.d.ts +15 -0
- package/dist/errors.d.ts.map +1 -0
- package/dist/errors.js +23 -0
- package/dist/errors.js.map +1 -0
- package/dist/gcr-reader.d.ts +57 -0
- package/dist/gcr-reader.d.ts.map +1 -0
- package/dist/gcr-reader.js +264 -0
- package/dist/gcr-reader.js.map +1 -0
- package/dist/gcr-writer.d.ts +23 -0
- package/dist/gcr-writer.d.ts.map +1 -0
- package/dist/gcr-writer.js +84 -0
- package/dist/gcr-writer.js.map +1 -0
- package/dist/index.d.ts +21 -0
- package/dist/index.d.ts.map +1 -0
- package/{src/index.ts → dist/index.js} +6 -66
- package/dist/index.js.map +1 -0
- package/dist/managed-concept-collection.d.ts +31 -0
- package/dist/managed-concept-collection.d.ts.map +1 -0
- package/dist/managed-concept-collection.js +87 -0
- package/dist/managed-concept-collection.js.map +1 -0
- package/dist/migration/hyperedge-migrator.d.ts +33 -0
- package/dist/migration/hyperedge-migrator.d.ts.map +1 -0
- package/dist/migration/hyperedge-migrator.js +70 -0
- package/dist/migration/hyperedge-migrator.js.map +1 -0
- package/dist/models/abstract-hyperedge.d.ts +35 -0
- package/dist/models/abstract-hyperedge.d.ts.map +1 -0
- package/dist/models/abstract-hyperedge.js +112 -0
- package/dist/models/abstract-hyperedge.js.map +1 -0
- package/dist/models/base.d.ts +58 -0
- package/dist/models/base.d.ts.map +1 -0
- package/dist/models/base.js +77 -0
- package/dist/models/base.js.map +1 -0
- package/dist/models/bibliography-data.d.ts +20 -0
- package/dist/models/bibliography-data.d.ts.map +1 -0
- package/dist/models/bibliography-data.js +43 -0
- package/dist/models/bibliography-data.js.map +1 -0
- package/dist/models/bibliography-entry.d.ts +19 -0
- package/dist/models/bibliography-entry.d.ts.map +1 -0
- package/dist/models/bibliography-entry.js +34 -0
- package/dist/models/bibliography-entry.js.map +1 -0
- package/dist/models/citation.d.ts +40 -0
- package/dist/models/citation.d.ts.map +1 -0
- package/dist/models/citation.js +82 -0
- package/dist/models/citation.js.map +1 -0
- package/dist/models/completeness.d.ts +9 -0
- package/dist/models/completeness.d.ts.map +1 -0
- package/{src/models/completeness.ts → dist/models/completeness.js} +4 -9
- package/dist/models/completeness.js.map +1 -0
- package/dist/models/concept-date.d.ts +20 -0
- package/dist/models/concept-date.d.ts.map +1 -0
- package/dist/models/concept-date.js +36 -0
- package/dist/models/concept-date.js.map +1 -0
- package/dist/models/concept-ref.d.ts +32 -0
- package/dist/models/concept-ref.d.ts.map +1 -0
- package/dist/models/concept-ref.js +53 -0
- package/dist/models/concept-ref.js.map +1 -0
- package/dist/models/concept-reference.d.ts +22 -0
- package/dist/models/concept-reference.d.ts.map +1 -0
- package/dist/models/concept-reference.js +39 -0
- package/dist/models/concept-reference.js.map +1 -0
- package/dist/models/concept-source.d.ts +53 -0
- package/dist/models/concept-source.d.ts.map +1 -0
- package/dist/models/concept-source.js +66 -0
- package/dist/models/concept-source.js.map +1 -0
- package/dist/models/concept-system-type.d.ts +6 -0
- package/dist/models/concept-system-type.d.ts.map +1 -0
- package/dist/models/concept-system-type.js +22 -0
- package/dist/models/concept-system-type.js.map +1 -0
- package/dist/models/concept-system.d.ts +44 -0
- package/dist/models/concept-system.d.ts.map +1 -0
- package/dist/models/concept-system.js +115 -0
- package/dist/models/concept-system.js.map +1 -0
- package/dist/models/concept-type.d.ts +7 -0
- package/dist/models/concept-type.d.ts.map +1 -0
- package/{src/models/concept-type.ts → dist/models/concept-type.js} +8 -19
- package/dist/models/concept-type.js.map +1 -0
- package/dist/models/concept.d.ts +94 -0
- package/dist/models/concept.d.ts.map +1 -0
- package/dist/models/concept.js +368 -0
- package/dist/models/concept.js.map +1 -0
- package/dist/models/dataset-color.d.ts +28 -0
- package/dist/models/dataset-color.d.ts.map +1 -0
- package/dist/models/dataset-color.js +74 -0
- package/dist/models/dataset-color.js.map +1 -0
- package/dist/models/definition-type.d.ts +9 -0
- package/dist/models/definition-type.d.ts.map +1 -0
- package/{src/models/definition-type.ts → dist/models/definition-type.js} +6 -15
- package/dist/models/definition-type.js.map +1 -0
- package/dist/models/designation-relationship.d.ts +17 -0
- package/dist/models/designation-relationship.d.ts.map +1 -0
- package/dist/models/designation-relationship.js +30 -0
- package/dist/models/designation-relationship.js.map +1 -0
- package/dist/models/designation.d.ts +110 -0
- package/dist/models/designation.d.ts.map +1 -0
- package/dist/models/designation.js +224 -0
- package/dist/models/designation.js.map +1 -0
- package/dist/models/detailed-definition.d.ts +34 -0
- package/dist/models/detailed-definition.d.ts.map +1 -0
- package/dist/models/detailed-definition.js +63 -0
- package/dist/models/detailed-definition.js.map +1 -0
- package/dist/models/enum.d.ts +21 -0
- package/dist/models/enum.d.ts.map +1 -0
- package/dist/models/enum.js +39 -0
- package/dist/models/enum.js.map +1 -0
- package/dist/models/equivalence-degree.d.ts +7 -0
- package/dist/models/equivalence-degree.d.ts.map +1 -0
- package/dist/models/equivalence-degree.js +20 -0
- package/dist/models/equivalence-degree.js.map +1 -0
- package/dist/models/figure.d.ts +40 -0
- package/dist/models/figure.d.ts.map +1 -0
- package/dist/models/figure.js +82 -0
- package/dist/models/figure.js.map +1 -0
- package/dist/models/formula.d.ts +15 -0
- package/dist/models/formula.d.ts.map +1 -0
- package/dist/models/formula.js +27 -0
- package/dist/models/formula.js.map +1 -0
- package/dist/models/gcr-metadata.d.ts +62 -0
- package/dist/models/gcr-metadata.d.ts.map +1 -0
- package/dist/models/gcr-metadata.js +102 -0
- package/dist/models/gcr-metadata.js.map +1 -0
- package/dist/models/gcr-statistics.d.ts +30 -0
- package/dist/models/gcr-statistics.d.ts.map +1 -0
- package/dist/models/gcr-statistics.js +53 -0
- package/dist/models/gcr-statistics.js.map +1 -0
- package/dist/models/generic-hyperedge.d.ts +32 -0
- package/dist/models/generic-hyperedge.d.ts.map +1 -0
- package/dist/models/generic-hyperedge.js +51 -0
- package/dist/models/generic-hyperedge.js.map +1 -0
- package/dist/models/generic-member.d.ts +14 -0
- package/dist/models/generic-member.d.ts.map +1 -0
- package/dist/models/generic-member.js +51 -0
- package/dist/models/generic-member.js.map +1 -0
- package/dist/models/grammar-info.d.ts +34 -0
- package/dist/models/grammar-info.d.ts.map +1 -0
- package/dist/models/grammar-info.js +59 -0
- package/dist/models/grammar-info.js.map +1 -0
- package/dist/models/hyperedge-colors.d.ts +19 -0
- package/dist/models/hyperedge-colors.d.ts.map +1 -0
- package/dist/models/hyperedge-colors.js +61 -0
- package/dist/models/hyperedge-colors.js.map +1 -0
- package/dist/models/hyperedge-index.d.ts +34 -0
- package/dist/models/hyperedge-index.d.ts.map +1 -0
- package/dist/models/hyperedge-index.js +85 -0
- package/dist/models/hyperedge-index.js.map +1 -0
- package/dist/models/hyperedge-member.d.ts +28 -0
- package/dist/models/hyperedge-member.d.ts.map +1 -0
- package/dist/models/hyperedge-member.js +92 -0
- package/dist/models/hyperedge-member.js.map +1 -0
- package/dist/models/hyperedge-registry.d.ts +47 -0
- package/dist/models/hyperedge-registry.d.ts.map +1 -0
- package/dist/models/hyperedge-registry.js +118 -0
- package/dist/models/hyperedge-registry.js.map +1 -0
- package/dist/models/index.d.ts +53 -0
- package/dist/models/index.d.ts.map +1 -0
- package/{src/models/index.ts → dist/models/index.js} +11 -63
- package/dist/models/index.js.map +1 -0
- package/dist/models/locality.d.ts +17 -0
- package/dist/models/locality.d.ts.map +1 -0
- package/dist/models/locality.js +26 -0
- package/dist/models/locality.js.map +1 -0
- package/dist/models/localized-concept.d.ts +102 -0
- package/dist/models/localized-concept.d.ts.map +1 -0
- package/dist/models/localized-concept.js +195 -0
- package/dist/models/localized-concept.js.map +1 -0
- package/dist/models/localized-string.d.ts +5 -0
- package/dist/models/localized-string.d.ts.map +1 -0
- package/dist/models/localized-string.js +20 -0
- package/dist/models/localized-string.js.map +1 -0
- package/dist/models/multiplicity.d.ts +42 -0
- package/dist/models/multiplicity.d.ts.map +1 -0
- package/dist/models/multiplicity.js +84 -0
- package/dist/models/multiplicity.js.map +1 -0
- package/dist/models/non-verb-rep.d.ts +20 -0
- package/dist/models/non-verb-rep.d.ts.map +1 -0
- package/dist/models/non-verb-rep.js +32 -0
- package/dist/models/non-verb-rep.js.map +1 -0
- package/dist/models/non-verbal-entity.d.ts +30 -0
- package/dist/models/non-verbal-entity.d.ts.map +1 -0
- package/dist/models/non-verbal-entity.js +48 -0
- package/dist/models/non-verbal-entity.js.map +1 -0
- package/dist/models/non-verbal-reference.d.ts +23 -0
- package/dist/models/non-verbal-reference.d.ts.map +1 -0
- package/dist/models/non-verbal-reference.js +44 -0
- package/dist/models/non-verbal-reference.js.map +1 -0
- package/dist/models/non-verbal-references.d.ts +12 -0
- package/dist/models/non-verbal-references.d.ts.map +1 -0
- package/dist/models/non-verbal-references.js +20 -0
- package/dist/models/non-verbal-references.js.map +1 -0
- package/dist/models/partitive-count.d.ts +10 -0
- package/dist/models/partitive-count.d.ts.map +1 -0
- package/{src/models/partitive-count.ts → dist/models/partitive-count.js} +5 -9
- package/dist/models/partitive-count.js.map +1 -0
- package/dist/models/partitive-enumeration.d.ts +5 -0
- package/dist/models/partitive-enumeration.d.ts.map +1 -0
- package/dist/models/partitive-enumeration.js +16 -0
- package/dist/models/partitive-enumeration.js.map +1 -0
- package/dist/models/partitive-hyperedge.d.ts +43 -0
- package/dist/models/partitive-hyperedge.d.ts.map +1 -0
- package/dist/models/partitive-hyperedge.js +63 -0
- package/dist/models/partitive-hyperedge.js.map +1 -0
- package/dist/models/partitive-member.d.ts +14 -0
- package/dist/models/partitive-member.d.ts.map +1 -0
- package/dist/models/partitive-member.js +44 -0
- package/dist/models/partitive-member.js.map +1 -0
- package/dist/models/partitive-presence.d.ts +9 -0
- package/dist/models/partitive-presence.d.ts.map +1 -0
- package/{src/models/partitive-presence.ts → dist/models/partitive-presence.js} +4 -8
- package/dist/models/partitive-presence.js.map +1 -0
- package/dist/models/plurality-marker.d.ts +5 -0
- package/dist/models/plurality-marker.d.ts.map +1 -0
- package/dist/models/plurality-marker.js +20 -0
- package/dist/models/plurality-marker.js.map +1 -0
- package/dist/models/pronunciation.d.ts +19 -0
- package/dist/models/pronunciation.d.ts.map +1 -0
- package/dist/models/pronunciation.js +34 -0
- package/dist/models/pronunciation.js.map +1 -0
- package/dist/models/register.d.ts +104 -0
- package/dist/models/register.d.ts.map +1 -0
- package/dist/models/register.js +297 -0
- package/dist/models/register.js.map +1 -0
- package/dist/models/registrable.d.ts +25 -0
- package/dist/models/registrable.d.ts.map +1 -0
- package/dist/models/registrable.js +23 -0
- package/dist/models/registrable.js.map +1 -0
- package/dist/models/related-concept.d.ts +33 -0
- package/dist/models/related-concept.d.ts.map +1 -0
- package/dist/models/related-concept.js +95 -0
- package/dist/models/related-concept.js.map +1 -0
- package/dist/models/relation-categories.d.ts +38 -0
- package/dist/models/relation-categories.d.ts.map +1 -0
- package/dist/models/relation-categories.js +135 -0
- package/dist/models/relation-categories.js.map +1 -0
- package/dist/models/relation-colors.d.ts +35 -0
- package/dist/models/relation-colors.d.ts.map +1 -0
- package/dist/models/relation-colors.js +68 -0
- package/dist/models/relation-colors.js.map +1 -0
- package/dist/models/relation-loader.d.ts +41 -0
- package/dist/models/relation-loader.d.ts.map +1 -0
- package/dist/models/relation-loader.js +101 -0
- package/dist/models/relation-loader.js.map +1 -0
- package/dist/models/section.d.ts +22 -0
- package/dist/models/section.d.ts.map +1 -0
- package/dist/models/section.js +47 -0
- package/dist/models/section.js.map +1 -0
- package/dist/models/sequential-hyperedge.d.ts +32 -0
- package/dist/models/sequential-hyperedge.d.ts.map +1 -0
- package/dist/models/sequential-hyperedge.js +49 -0
- package/dist/models/sequential-hyperedge.js.map +1 -0
- package/dist/models/sequential-member.d.ts +8 -0
- package/dist/models/sequential-member.d.ts.map +1 -0
- package/{src/models/sequential-member.ts → dist/models/sequential-member.js} +4 -9
- package/dist/models/sequential-member.js.map +1 -0
- package/dist/models/shared-non-verbal-entity.d.ts +16 -0
- package/dist/models/shared-non-verbal-entity.d.ts.map +1 -0
- package/dist/models/shared-non-verbal-entity.js +28 -0
- package/dist/models/shared-non-verbal-entity.js.map +1 -0
- package/dist/models/table.d.ts +15 -0
- package/dist/models/table.d.ts.map +1 -0
- package/dist/models/table.js +27 -0
- package/dist/models/table.js.map +1 -0
- package/dist/rdf/agents-emitter.d.ts +37 -0
- package/dist/rdf/agents-emitter.d.ts.map +1 -0
- package/dist/rdf/agents-emitter.js +107 -0
- package/dist/rdf/agents-emitter.js.map +1 -0
- package/dist/rdf/bibliography-emitter.d.ts +16 -0
- package/dist/rdf/bibliography-emitter.d.ts.map +1 -0
- package/dist/rdf/bibliography-emitter.js +84 -0
- package/dist/rdf/bibliography-emitter.js.map +1 -0
- package/dist/rdf/bnode-id.d.ts +2 -0
- package/dist/rdf/bnode-id.d.ts.map +1 -0
- package/dist/rdf/bnode-id.js +57 -0
- package/dist/rdf/bnode-id.js.map +1 -0
- package/dist/rdf/build-activity-emitter.d.ts +42 -0
- package/dist/rdf/build-activity-emitter.d.ts.map +1 -0
- package/dist/rdf/build-activity-emitter.js +103 -0
- package/dist/rdf/build-activity-emitter.js.map +1 -0
- package/dist/rdf/curie.d.ts +7 -0
- package/dist/rdf/curie.d.ts.map +1 -0
- package/dist/rdf/curie.js +45 -0
- package/dist/rdf/curie.js.map +1 -0
- package/dist/rdf/dataset-emitter.d.ts +37 -0
- package/dist/rdf/dataset-emitter.d.ts.map +1 -0
- package/dist/rdf/dataset-emitter.js +126 -0
- package/dist/rdf/dataset-emitter.js.map +1 -0
- package/dist/rdf/deterministic-id.d.ts +3 -0
- package/dist/rdf/deterministic-id.d.ts.map +1 -0
- package/dist/rdf/deterministic-id.js +68 -0
- package/dist/rdf/deterministic-id.js.map +1 -0
- package/dist/rdf/document-writer.d.ts +11 -0
- package/dist/rdf/document-writer.d.ts.map +1 -0
- package/dist/rdf/document-writer.js +77 -0
- package/dist/rdf/document-writer.js.map +1 -0
- package/dist/rdf/gloss-concept.d.ts +27 -0
- package/dist/rdf/gloss-concept.d.ts.map +1 -0
- package/dist/rdf/gloss-concept.js +95 -0
- package/dist/rdf/gloss-concept.js.map +1 -0
- package/dist/rdf/gloss-designation.d.ts +17 -0
- package/dist/rdf/gloss-designation.d.ts.map +1 -0
- package/dist/rdf/gloss-designation.js +46 -0
- package/dist/rdf/gloss-designation.js.map +1 -0
- package/dist/rdf/gloss-detailed-definition.d.ts +14 -0
- package/dist/rdf/gloss-detailed-definition.d.ts.map +1 -0
- package/dist/rdf/gloss-detailed-definition.js +53 -0
- package/dist/rdf/gloss-detailed-definition.js.map +1 -0
- package/dist/rdf/gloss-generic-hyperedge.d.ts +27 -0
- package/dist/rdf/gloss-generic-hyperedge.d.ts.map +1 -0
- package/{src/rdf/gloss-generic-hyperedge.ts → dist/rdf/gloss-generic-hyperedge.js} +36 -50
- package/dist/rdf/gloss-generic-hyperedge.js.map +1 -0
- package/dist/rdf/gloss-localized-concept.d.ts +24 -0
- package/dist/rdf/gloss-localized-concept.d.ts.map +1 -0
- package/dist/rdf/gloss-localized-concept.js +71 -0
- package/dist/rdf/gloss-localized-concept.js.map +1 -0
- package/dist/rdf/gloss-non-verbal-rep.d.ts +33 -0
- package/dist/rdf/gloss-non-verbal-rep.d.ts.map +1 -0
- package/dist/rdf/gloss-non-verbal-rep.js +163 -0
- package/dist/rdf/gloss-non-verbal-rep.js.map +1 -0
- package/dist/rdf/gloss-partitive-member.d.ts +8 -0
- package/dist/rdf/gloss-partitive-member.d.ts.map +1 -0
- package/{src/rdf/gloss-partitive-member.ts → dist/rdf/gloss-partitive-member.js} +23 -41
- package/dist/rdf/gloss-partitive-member.js.map +1 -0
- package/dist/rdf/gloss-partitive-relation.d.ts +26 -0
- package/dist/rdf/gloss-partitive-relation.d.ts.map +1 -0
- package/dist/rdf/gloss-partitive-relation.js +73 -0
- package/dist/rdf/gloss-partitive-relation.js.map +1 -0
- package/dist/rdf/gloss-source.d.ts +23 -0
- package/dist/rdf/gloss-source.d.ts.map +1 -0
- package/dist/rdf/gloss-source.js +52 -0
- package/dist/rdf/gloss-source.js.map +1 -0
- package/dist/rdf/group-emitter.d.ts +46 -0
- package/dist/rdf/group-emitter.d.ts.map +1 -0
- package/dist/rdf/group-emitter.js +107 -0
- package/dist/rdf/group-emitter.js.map +1 -0
- package/dist/rdf/image-variant-emitter.d.ts +12 -0
- package/dist/rdf/image-variant-emitter.d.ts.map +1 -0
- package/dist/rdf/image-variant-emitter.js +55 -0
- package/dist/rdf/image-variant-emitter.js.map +1 -0
- package/dist/rdf/index.d.ts +26 -0
- package/dist/rdf/index.d.ts.map +1 -0
- package/{src/rdf/index.ts → dist/rdf/index.js} +8 -37
- package/dist/rdf/index.js.map +1 -0
- package/dist/rdf/normalize-enum.d.ts +3 -0
- package/dist/rdf/normalize-enum.d.ts.map +1 -0
- package/{src/rdf/normalize-enum.ts → dist/rdf/normalize-enum.js} +11 -10
- package/dist/rdf/normalize-enum.js.map +1 -0
- package/dist/rdf/predicates.d.ts +277 -0
- package/dist/rdf/predicates.d.ts.map +1 -0
- package/dist/rdf/predicates.js +279 -0
- package/dist/rdf/predicates.js.map +1 -0
- package/dist/rdf/prefixes.d.ts +16 -0
- package/dist/rdf/prefixes.d.ts.map +1 -0
- package/{src/rdf/prefixes.ts → dist/rdf/prefixes.js} +10 -12
- package/dist/rdf/prefixes.js.map +1 -0
- package/dist/rdf/provenance-emitter.d.ts +28 -0
- package/dist/rdf/provenance-emitter.d.ts.map +1 -0
- package/dist/rdf/provenance-emitter.js +74 -0
- package/dist/rdf/provenance-emitter.js.map +1 -0
- package/dist/rdf/sections-builder.d.ts +17 -0
- package/dist/rdf/sections-builder.d.ts.map +1 -0
- package/dist/rdf/sections-builder.js +137 -0
- package/dist/rdf/sections-builder.js.map +1 -0
- package/dist/rdf/shacl-entry.d.ts +2 -0
- package/dist/rdf/shacl-entry.d.ts.map +1 -0
- package/{src/rdf/shacl-entry.ts → dist/rdf/shacl-entry.js} +1 -1
- package/dist/rdf/shacl-entry.js.map +1 -0
- package/dist/rdf/shacl.d.ts +10 -0
- package/dist/rdf/shacl.d.ts.map +1 -0
- package/{src/rdf/shacl.ts → dist/rdf/shacl.js} +38 -57
- package/dist/rdf/shacl.js.map +1 -0
- package/dist/rdf/terms.d.ts +10 -0
- package/dist/rdf/terms.d.ts.map +1 -0
- package/{src/rdf/terms.ts → dist/rdf/terms.js} +6 -3
- package/dist/rdf/terms.js.map +1 -0
- package/dist/rdf/version-emitter.d.ts +57 -0
- package/dist/rdf/version-emitter.d.ts.map +1 -0
- package/dist/rdf/version-emitter.js +68 -0
- package/dist/rdf/version-emitter.js.map +1 -0
- package/dist/rdf/vocabulary-emitter.d.ts +32 -0
- package/dist/rdf/vocabulary-emitter.d.ts.map +1 -0
- package/dist/rdf/vocabulary-emitter.js +46 -0
- package/dist/rdf/vocabulary-emitter.js.map +1 -0
- package/dist/rdf/write-turtle-sync.d.ts +7 -0
- package/dist/rdf/write-turtle-sync.d.ts.map +1 -0
- package/dist/rdf/write-turtle-sync.js +130 -0
- package/dist/rdf/write-turtle-sync.js.map +1 -0
- package/dist/reference-mention.d.ts +49 -0
- package/dist/reference-mention.d.ts.map +1 -0
- package/dist/reference-mention.js +98 -0
- package/dist/reference-mention.js.map +1 -0
- package/dist/reference-resolver.d.ts +52 -0
- package/dist/reference-resolver.d.ts.map +1 -0
- package/dist/reference-resolver.js +311 -0
- package/dist/reference-resolver.js.map +1 -0
- package/dist/render-classification.d.ts +19 -0
- package/dist/render-classification.d.ts.map +1 -0
- package/dist/render-classification.js +82 -0
- package/dist/render-classification.js.map +1 -0
- package/dist/sort.d.ts +5 -0
- package/dist/sort.d.ts.map +1 -0
- package/dist/sort.js +25 -0
- package/dist/sort.js.map +1 -0
- package/dist/transforms/concept-to-gloss.transform.d.ts +32 -0
- package/dist/transforms/concept-to-gloss.transform.d.ts.map +1 -0
- package/dist/transforms/concept-to-gloss.transform.js +60 -0
- package/dist/transforms/concept-to-gloss.transform.js.map +1 -0
- package/dist/transforms/index.d.ts +2 -0
- package/dist/transforms/index.d.ts.map +1 -0
- package/{src/transforms/index.ts → dist/transforms/index.js} +1 -0
- package/dist/transforms/index.js.map +1 -0
- package/dist/utils/assertions.d.ts +4 -0
- package/dist/utils/assertions.d.ts.map +1 -0
- package/dist/utils/assertions.js +17 -0
- package/dist/utils/assertions.js.map +1 -0
- package/dist/uuid.d.ts +4 -0
- package/dist/uuid.d.ts.map +1 -0
- package/dist/uuid.js +23 -0
- package/dist/uuid.js.map +1 -0
- package/dist/v1-reader.d.ts +8 -0
- package/dist/v1-reader.d.ts.map +1 -0
- package/dist/v1-reader.js +56 -0
- package/dist/v1-reader.js.map +1 -0
- package/dist/validators/asset-index.d.ts +23 -0
- package/dist/validators/asset-index.d.ts.map +1 -0
- package/dist/validators/asset-index.js +58 -0
- package/dist/validators/asset-index.js.map +1 -0
- package/dist/validators/binary-has-part-redundancy-rule.d.ts +8 -0
- package/dist/validators/binary-has-part-redundancy-rule.d.ts.map +1 -0
- package/dist/validators/binary-has-part-redundancy-rule.js +57 -0
- package/dist/validators/binary-has-part-redundancy-rule.js.map +1 -0
- package/dist/validators/concept-validator.d.ts +21 -0
- package/dist/validators/concept-validator.d.ts.map +1 -0
- package/dist/validators/concept-validator.js +76 -0
- package/dist/validators/concept-validator.js.map +1 -0
- package/dist/validators/delimiting-coherence-rule.d.ts +8 -0
- package/dist/validators/delimiting-coherence-rule.d.ts.map +1 -0
- package/dist/validators/delimiting-coherence-rule.js +72 -0
- package/dist/validators/delimiting-coherence-rule.js.map +1 -0
- package/dist/validators/external-concept-shape-rule.d.ts +8 -0
- package/dist/validators/external-concept-shape-rule.d.ts.map +1 -0
- package/dist/validators/external-concept-shape-rule.js +48 -0
- package/dist/validators/external-concept-shape-rule.js.map +1 -0
- package/dist/validators/gcr-validator.d.ts +11 -0
- package/dist/validators/gcr-validator.d.ts.map +1 -0
- package/dist/validators/gcr-validator.js +76 -0
- package/dist/validators/gcr-validator.js.map +1 -0
- package/dist/validators/hyperedge-coherence-rule.d.ts +9 -0
- package/dist/validators/hyperedge-coherence-rule.d.ts.map +1 -0
- package/dist/validators/hyperedge-coherence-rule.js +78 -0
- package/dist/validators/hyperedge-coherence-rule.js.map +1 -0
- package/dist/validators/index.d.ts +21 -0
- package/dist/validators/index.d.ts.map +1 -0
- package/{src/validators/index.ts → dist/validators/index.js} +25 -51
- package/dist/validators/index.js.map +1 -0
- package/dist/validators/partitive-relation-coherence-rule.d.ts +2 -0
- package/dist/validators/partitive-relation-coherence-rule.d.ts.map +1 -0
- package/{src/validators/partitive-relation-coherence-rule.ts → dist/validators/partitive-relation-coherence-rule.js} +1 -1
- package/dist/validators/partitive-relation-coherence-rule.js.map +1 -0
- package/dist/validators/ref-keys.d.ts +8 -0
- package/dist/validators/ref-keys.d.ts.map +1 -0
- package/dist/validators/ref-keys.js +27 -0
- package/dist/validators/ref-keys.js.map +1 -0
- package/dist/validators/register-validator.d.ts +10 -0
- package/dist/validators/register-validator.d.ts.map +1 -0
- package/dist/validators/register-validator.js +18 -0
- package/dist/validators/register-validator.js.map +1 -0
- package/dist/validators/relationship-type-rule.d.ts +13 -0
- package/dist/validators/relationship-type-rule.d.ts.map +1 -0
- package/dist/validators/relationship-type-rule.js +34 -0
- package/dist/validators/relationship-type-rule.js.map +1 -0
- package/dist/validators/sourced-from-locality-rule.d.ts +8 -0
- package/dist/validators/sourced-from-locality-rule.d.ts.map +1 -0
- package/dist/validators/sourced-from-locality-rule.js +37 -0
- package/dist/validators/sourced-from-locality-rule.js.map +1 -0
- package/dist/validators/v3-rules.d.ts +60 -0
- package/dist/validators/v3-rules.d.ts.map +1 -0
- package/dist/validators/v3-rules.js +327 -0
- package/dist/validators/v3-rules.js.map +1 -0
- package/dist/validators/validation-error.d.ts +13 -0
- package/dist/validators/validation-error.d.ts.map +1 -0
- package/dist/validators/validation-error.js +17 -0
- package/dist/validators/validation-error.js.map +1 -0
- package/dist/validators/validation-result.d.ts +17 -0
- package/dist/validators/validation-result.d.ts.map +1 -0
- package/dist/validators/validation-result.js +47 -0
- package/dist/validators/validation-result.js.map +1 -0
- package/dist/validators/validation-rule.d.ts +10 -0
- package/dist/validators/validation-rule.d.ts.map +1 -0
- package/dist/validators/validation-rule.js +17 -0
- package/dist/validators/validation-rule.js.map +1 -0
- package/package.json +37 -42
- package/src/concept-collection.ts +0 -172
- package/src/concept-parser.ts +0 -235
- package/src/concept-reader.d.ts +0 -13
- package/src/concept-serializer.ts +0 -110
- package/src/concept-writer.d.ts +0 -7
- package/src/concept-writer.ts +0 -47
- package/src/diff/canonical-json.ts +0 -29
- package/src/diff/change.ts +0 -175
- package/src/diff/collection-diff.ts +0 -245
- package/src/diff/concept-diff.ts +0 -853
- package/src/diff/diff-patch.ts +0 -276
- package/src/diff/diff-renderer.ts +0 -348
- package/src/diff/identity.ts +0 -33
- package/src/diff/index.d.ts +0 -242
- package/src/diff/index.ts +0 -50
- package/src/diff/list-diff.ts +0 -231
- package/src/diff/similarity.ts +0 -20
- package/src/diff/text-diff.ts +0 -167
- package/src/entity-directory.ts +0 -43
- package/src/errors.d.ts +0 -11
- package/src/errors.ts +0 -24
- package/src/gcr-reader.d.ts +0 -65
- package/src/gcr-reader.ts +0 -512
- package/src/gcr-writer.d.ts +0 -22
- package/src/gcr-writer.ts +0 -99
- package/src/index.d.ts +0 -124
- package/src/managed-concept-collection.ts +0 -130
- package/src/migration/hyperedge-migrator.ts +0 -104
- package/src/models/abstract-hyperedge.ts +0 -164
- package/src/models/base.ts +0 -110
- package/src/models/bibliography-data.ts +0 -64
- package/src/models/bibliography-entry.ts +0 -40
- package/src/models/citation.ts +0 -98
- package/src/models/concept-date.ts +0 -48
- package/src/models/concept-ref.ts +0 -64
- package/src/models/concept-reference.ts +0 -50
- package/src/models/concept-source.ts +0 -96
- package/src/models/concept-system-type.ts +0 -39
- package/src/models/concept-system.ts +0 -152
- package/src/models/concept.ts +0 -499
- package/src/models/dataset-color.ts +0 -88
- package/src/models/designation-relationship.ts +0 -39
- package/src/models/designation.ts +0 -297
- package/src/models/detailed-definition.ts +0 -92
- package/src/models/enum.ts +0 -60
- package/src/models/equivalence-degree.ts +0 -34
- package/src/models/figure.ts +0 -110
- package/src/models/formula.ts +0 -36
- package/src/models/gcr-metadata.ts +0 -118
- package/src/models/gcr-statistics.ts +0 -76
- package/src/models/generic-hyperedge.ts +0 -72
- package/src/models/generic-member.ts +0 -80
- package/src/models/grammar-info.ts +0 -78
- package/src/models/hyperedge-colors.ts +0 -87
- package/src/models/hyperedge-index.ts +0 -101
- package/src/models/hyperedge-member.ts +0 -121
- package/src/models/hyperedge-registry.ts +0 -145
- package/src/models/index.d.ts +0 -586
- package/src/models/locality.ts +0 -34
- package/src/models/localized-concept.ts +0 -284
- package/src/models/localized-string.ts +0 -32
- package/src/models/multiplicity.ts +0 -134
- package/src/models/non-verb-rep.ts +0 -48
- package/src/models/non-verbal-entity.ts +0 -65
- package/src/models/non-verbal-reference.ts +0 -73
- package/src/models/non-verbal-references.ts +0 -29
- package/src/models/partitive-enumeration.ts +0 -27
- package/src/models/partitive-hyperedge.ts +0 -90
- package/src/models/partitive-member.ts +0 -56
- package/src/models/plurality-marker.ts +0 -31
- package/src/models/pronunciation.ts +0 -40
- package/src/models/register.ts +0 -315
- package/src/models/registrable.ts +0 -48
- package/src/models/related-concept.ts +0 -117
- package/src/models/relation-categories.ts +0 -167
- package/src/models/relation-colors.ts +0 -90
- package/src/models/relation-loader.ts +0 -115
- package/src/models/section.ts +0 -61
- package/src/models/sequential-hyperedge.ts +0 -70
- package/src/models/shared-non-verbal-entity.ts +0 -36
- package/src/models/table.ts +0 -36
- package/src/rdf/agents-emitter.ts +0 -137
- package/src/rdf/bibliography-emitter.ts +0 -126
- package/src/rdf/bnode-id.ts +0 -55
- package/src/rdf/build-activity-emitter.ts +0 -129
- package/src/rdf/curie.ts +0 -46
- package/src/rdf/dataset-emitter.ts +0 -170
- package/src/rdf/deterministic-id.ts +0 -69
- package/src/rdf/document-writer.ts +0 -87
- package/src/rdf/gloss-concept.ts +0 -115
- package/src/rdf/gloss-designation.ts +0 -72
- package/src/rdf/gloss-detailed-definition.ts +0 -69
- package/src/rdf/gloss-localized-concept.ts +0 -79
- package/src/rdf/gloss-non-verbal-rep.ts +0 -202
- package/src/rdf/gloss-partitive-relation.ts +0 -89
- package/src/rdf/gloss-source.ts +0 -56
- package/src/rdf/group-emitter.ts +0 -133
- package/src/rdf/image-variant-emitter.ts +0 -80
- package/src/rdf/index.d.ts +0 -371
- package/src/rdf/predicates.d.ts +0 -527
- package/src/rdf/predicates.ts +0 -287
- package/src/rdf/provenance-emitter.ts +0 -87
- package/src/rdf/sections-builder.ts +0 -190
- package/src/rdf/shacl-entry.d.ts +0 -6
- package/src/rdf/version-emitter.ts +0 -97
- package/src/rdf/vocabulary-emitter.ts +0 -67
- package/src/rdf/write-turtle-sync.ts +0 -179
- package/src/reference-mention.ts +0 -114
- package/src/reference-resolver.ts +0 -361
- package/src/render-classification.ts +0 -85
- package/src/sort.ts +0 -22
- package/src/transforms/concept-to-gloss.transform.ts +0 -81
- package/src/transforms/index.d.ts +0 -26
- package/src/uuid.ts +0 -32
- package/src/v1-reader.ts +0 -66
- package/src/validators/asset-index.ts +0 -72
- package/src/validators/binary-has-part-redundancy-rule.ts +0 -67
- package/src/validators/concept-validator.ts +0 -93
- package/src/validators/delimiting-coherence-rule.ts +0 -105
- package/src/validators/external-concept-shape-rule.ts +0 -60
- package/src/validators/gcr-validator.ts +0 -76
- package/src/validators/hyperedge-coherence-rule.ts +0 -98
- package/src/validators/index.d.ts +0 -43
- package/src/validators/ref-keys.ts +0 -31
- package/src/validators/register-validator.ts +0 -18
- package/src/validators/relationship-type-rule.ts +0 -39
- package/src/validators/sourced-from-locality-rule.ts +0 -53
- package/src/validators/v3-rules.ts +0 -382
- package/src/validators/validation-error.ts +0 -19
- package/src/validators/validation-result.ts +0 -52
- package/src/validators/validation-rule.ts +0 -21
|
@@ -1,90 +0,0 @@
|
|
|
1
|
-
// PartitiveHyperedge — an ISO 704:2022 / ISO 1087-1 / ISO 12620
|
|
2
|
-
// partitive relation connecting a comprehensive concept
|
|
3
|
-
// (superordinate concept partitive) to two or more partitive
|
|
4
|
-
// concepts (subordinate concepts partitive) which fitted together
|
|
5
|
-
// constitute the comprehensive.
|
|
6
|
-
//
|
|
7
|
-
// Extends AbstractHyperedge; the leaf-specific concern is the
|
|
8
|
-
// PartitiveMember type for `members`. The wire-level field name
|
|
9
|
-
// stays `partitives` for v1/v2 backward compat.
|
|
10
|
-
|
|
11
|
-
import { AbstractHyperedge } from './abstract-hyperedge.js';
|
|
12
|
-
import type { AbstractHyperedgeJson } from './abstract-hyperedge.js';
|
|
13
|
-
import { PartitiveMember } from './partitive-member.js';
|
|
14
|
-
import type { PartitiveMemberJson } from './partitive-member.js';
|
|
15
|
-
import { HyperedgeRegistry } from './hyperedge-registry.js';
|
|
16
|
-
|
|
17
|
-
export interface PartitiveHyperedgeJson extends AbstractHyperedgeJson {
|
|
18
|
-
members: ReadonlyArray<PartitiveMemberJson | PartitiveMember>;
|
|
19
|
-
/** PartitiveHyperedge wire alias of `members`. Both emitted for
|
|
20
|
-
* backward compat with consumers that read `partitives`. */
|
|
21
|
-
partitives?: ReadonlyArray<PartitiveMemberJson | PartitiveMember>;
|
|
22
|
-
}
|
|
23
|
-
|
|
24
|
-
export class PartitiveHyperedge extends AbstractHyperedge {
|
|
25
|
-
// Per-class metadata block — the OCP contract. External systems
|
|
26
|
-
// (parser, serializer, diff, RDF emitter, validators) read from
|
|
27
|
-
// these statics and the HyperedgeRegistry. Adding a new hyperedge
|
|
28
|
-
// type = declaring these fields on a new subclass + registering
|
|
29
|
-
// it. Nothing else in the codebase changes.
|
|
30
|
-
static wireKey = 'partitive_relations' as const;
|
|
31
|
-
static typeTag = 'partitive_relation' as const;
|
|
32
|
-
static rdfType = 'gloss:PartitiveRelation' as const;
|
|
33
|
-
static memberClass = PartitiveMember;
|
|
34
|
-
static v1WireKeys = ['partitive_hyperedges'];
|
|
35
|
-
static kindLabel = 'PART';
|
|
36
|
-
|
|
37
|
-
declare readonly members: ReadonlyArray<PartitiveMember>;
|
|
38
|
-
|
|
39
|
-
constructor(data: Partial<PartitiveHyperedgeJson> = {}) {
|
|
40
|
-
const memberSource = data.members ?? data.partitives;
|
|
41
|
-
const normalized: AbstractHyperedgeJson = {
|
|
42
|
-
comprehensive: data.comprehensive ?? {},
|
|
43
|
-
members: memberSource ?? [],
|
|
44
|
-
completeness: data.completeness ?? 'complete',
|
|
45
|
-
criterion: data.criterion,
|
|
46
|
-
sources: data.sources,
|
|
47
|
-
notes: data.notes,
|
|
48
|
-
status: data.status,
|
|
49
|
-
};
|
|
50
|
-
super(normalized);
|
|
51
|
-
this.members = (Array.isArray(memberSource) ? memberSource : []).map((m) =>
|
|
52
|
-
m instanceof PartitiveMember ? m : new PartitiveMember(m as PartitiveMemberJson),
|
|
53
|
-
);
|
|
54
|
-
}
|
|
55
|
-
|
|
56
|
-
get partitives(): ReadonlyArray<PartitiveMember> { return this.members; }
|
|
57
|
-
|
|
58
|
-
override toJSON(): PartitiveHyperedgeJson {
|
|
59
|
-
const base = super.toJSON() as Omit<PartitiveHyperedgeJson, 'partitives'>;
|
|
60
|
-
const { members, ...rest } = base;
|
|
61
|
-
return { ...rest, members: members as ReadonlyArray<PartitiveMemberJson | PartitiveMember>, partitives: members };
|
|
62
|
-
}
|
|
63
|
-
|
|
64
|
-
static identityOf(
|
|
65
|
-
value: {
|
|
66
|
-
comprehensive?: { source?: string | null; id?: string | null } | null;
|
|
67
|
-
partitives?: ReadonlyArray<{ ref?: { source?: string | null; id?: string | null } | null } | null>;
|
|
68
|
-
members?: ReadonlyArray<{ ref?: { source?: string | null; id?: string | null } | null } | null>;
|
|
69
|
-
} | null | undefined,
|
|
70
|
-
): string {
|
|
71
|
-
const v = value ?? {};
|
|
72
|
-
const c = v.comprehensive ?? {};
|
|
73
|
-
const source = v.partitives ?? v.members ?? [];
|
|
74
|
-
const partKeys = source
|
|
75
|
-
.map((p) => {
|
|
76
|
-
const r = p?.ref ?? (p as { source?: string; id?: string } | null) ?? {};
|
|
77
|
-
return `${r.source ?? ''}:${r.id ?? ''}`;
|
|
78
|
-
})
|
|
79
|
-
.sort();
|
|
80
|
-
return `${c.source ?? ''}:${c.id ?? ''}|${partKeys.join('|')}`;
|
|
81
|
-
}
|
|
82
|
-
|
|
83
|
-
static override fromJSON(data: PartitiveHyperedgeJson): PartitiveHyperedge {
|
|
84
|
-
return new PartitiveHyperedge(data);
|
|
85
|
-
}
|
|
86
|
-
}
|
|
87
|
-
|
|
88
|
-
export default PartitiveHyperedge;
|
|
89
|
-
|
|
90
|
-
HyperedgeRegistry.register(PartitiveHyperedge);
|
|
@@ -1,56 +0,0 @@
|
|
|
1
|
-
// PartitiveMember — one member of a PartitiveHyperedge.
|
|
2
|
-
//
|
|
3
|
-
// Adds to HyperedgeMember the partitive-specific `is_delimiting` flag
|
|
4
|
-
// from ISO 704:2022 §5.5.4.2.2 (rake diagram semantics):
|
|
5
|
-
//
|
|
6
|
-
// "Delimiting" parts (bold/3x-width line in source diagrams) behave
|
|
7
|
-
// like delimiting characteristics — they distinguish the comprehensive
|
|
8
|
-
// from coordinate concepts. Whether a part is delimiting depends on
|
|
9
|
-
// the concept system, the coordinate concepts, the inheritance
|
|
10
|
-
// principle, and the criterion of subdivision used.
|
|
11
|
-
//
|
|
12
|
-
// `is_delimiting` lives here on PartitiveMember, not on the base
|
|
13
|
-
// HyperedgeMember, because it is partitive-specific. GenericMember
|
|
14
|
-
// carries `delimitingCharacteristic` instead (the intension-difference
|
|
15
|
-
// value per §5.5.4.2.1, which always applies to every generic member).
|
|
16
|
-
|
|
17
|
-
import { HyperedgeMember } from './hyperedge-member.js';
|
|
18
|
-
import type { HyperedgeMemberJson } from './hyperedge-member.js';
|
|
19
|
-
|
|
20
|
-
export interface PartitiveMemberJson extends HyperedgeMemberJson {
|
|
21
|
-
is_delimiting?: boolean;
|
|
22
|
-
}
|
|
23
|
-
|
|
24
|
-
export class PartitiveMember extends HyperedgeMember {
|
|
25
|
-
readonly is_delimiting: boolean;
|
|
26
|
-
|
|
27
|
-
constructor(data: PartitiveMemberJson = { ref: {} }) {
|
|
28
|
-
super(data);
|
|
29
|
-
this.is_delimiting = _resolveDelimiting(data.is_delimiting);
|
|
30
|
-
}
|
|
31
|
-
|
|
32
|
-
get isDelimiting(): boolean { return this.is_delimiting === true; }
|
|
33
|
-
|
|
34
|
-
override toJSON(): PartitiveMemberJson {
|
|
35
|
-
const base = super.toJSON();
|
|
36
|
-
const out: PartitiveMemberJson = { ...base };
|
|
37
|
-
if (this.is_delimiting) out.is_delimiting = true;
|
|
38
|
-
return out;
|
|
39
|
-
}
|
|
40
|
-
|
|
41
|
-
static override fromJSON(data: PartitiveMemberJson): PartitiveMember {
|
|
42
|
-
return new PartitiveMember(data);
|
|
43
|
-
}
|
|
44
|
-
}
|
|
45
|
-
|
|
46
|
-
function _resolveDelimiting(value: boolean | null | undefined): boolean {
|
|
47
|
-
if (value == null) return false;
|
|
48
|
-
if (typeof value !== 'boolean') {
|
|
49
|
-
throw new Error(
|
|
50
|
-
`PartitiveMember.is_delimiting must be boolean; got ${typeof value}`,
|
|
51
|
-
);
|
|
52
|
-
}
|
|
53
|
-
return value;
|
|
54
|
-
}
|
|
55
|
-
|
|
56
|
-
export default PartitiveMember;
|
|
@@ -1,31 +0,0 @@
|
|
|
1
|
-
// PluralityMarker — diagram notation flags from VIM concept-relationship
|
|
2
|
-
// diagrams. Travels with a PartitiveHyperedge so the rendering layer
|
|
3
|
-
// can reproduce the source diagram's notation.
|
|
4
|
-
//
|
|
5
|
-
// double — close-set double line at the receiver end. Several
|
|
6
|
-
// partitive concepts of the same type are involved.
|
|
7
|
-
// dashed — broken/dashed line. Plurality is uncertain.
|
|
8
|
-
//
|
|
9
|
-
// Orthogonal to PartitiveEnumeration — both may be set on the same
|
|
10
|
-
// hyperedge.
|
|
11
|
-
|
|
12
|
-
export type PluralityMarker = 'double' | 'dashed';
|
|
13
|
-
|
|
14
|
-
export const PLURALITY_MARKER: Readonly<
|
|
15
|
-
Record<'DOUBLE' | 'DASHED', PluralityMarker>
|
|
16
|
-
> = Object.freeze({
|
|
17
|
-
DOUBLE: 'double',
|
|
18
|
-
DASHED: 'dashed',
|
|
19
|
-
});
|
|
20
|
-
|
|
21
|
-
export const PLURALITY_MARKER_VALUES: ReadonlyArray<PluralityMarker> =
|
|
22
|
-
Object.freeze([PLURALITY_MARKER.DOUBLE, PLURALITY_MARKER.DASHED]);
|
|
23
|
-
|
|
24
|
-
export function isValidPluralityMarker(
|
|
25
|
-
value: unknown,
|
|
26
|
-
): value is PluralityMarker {
|
|
27
|
-
return (
|
|
28
|
-
typeof value === 'string' &&
|
|
29
|
-
(PLURALITY_MARKER_VALUES as readonly string[]).includes(value)
|
|
30
|
-
);
|
|
31
|
-
}
|
|
@@ -1,40 +0,0 @@
|
|
|
1
|
-
import { GlossaristModel } from './base.js';
|
|
2
|
-
|
|
3
|
-
export interface PronunciationJson {
|
|
4
|
-
content?: string | null;
|
|
5
|
-
language?: string | null;
|
|
6
|
-
script?: string | null;
|
|
7
|
-
system?: string | null;
|
|
8
|
-
country?: string | null;
|
|
9
|
-
}
|
|
10
|
-
|
|
11
|
-
export class Pronunciation extends GlossaristModel {
|
|
12
|
-
readonly content: string | null;
|
|
13
|
-
readonly language: string | null;
|
|
14
|
-
readonly script: string | null;
|
|
15
|
-
readonly system: string | null;
|
|
16
|
-
readonly country: string | null;
|
|
17
|
-
|
|
18
|
-
constructor(data: PronunciationJson = {}) {
|
|
19
|
-
super();
|
|
20
|
-
this.content = data.content ?? null;
|
|
21
|
-
this.language = data.language ?? null;
|
|
22
|
-
this.script = data.script ?? null;
|
|
23
|
-
this.system = data.system ?? null;
|
|
24
|
-
this.country = data.country ?? null;
|
|
25
|
-
}
|
|
26
|
-
|
|
27
|
-
override toJSON(): PronunciationJson {
|
|
28
|
-
const obj: PronunciationJson = {};
|
|
29
|
-
if (this.content != null) obj.content = this.content;
|
|
30
|
-
if (this.language != null) obj.language = this.language;
|
|
31
|
-
if (this.script != null) obj.script = this.script;
|
|
32
|
-
if (this.system != null) obj.system = this.system;
|
|
33
|
-
if (this.country != null) obj.country = this.country;
|
|
34
|
-
return obj;
|
|
35
|
-
}
|
|
36
|
-
|
|
37
|
-
static override fromJSON(data: PronunciationJson): Pronunciation {
|
|
38
|
-
return new Pronunciation(data);
|
|
39
|
-
}
|
|
40
|
-
}
|
package/src/models/register.ts
DELETED
|
@@ -1,315 +0,0 @@
|
|
|
1
|
-
import { GlossaristModel } from './base.js';
|
|
2
|
-
import { Section } from './section.js';
|
|
3
|
-
import type { SectionJson } from './section.js';
|
|
4
|
-
import { resolveColor } from './dataset-color.js';
|
|
5
|
-
import type { DatasetColor } from './dataset-color.js';
|
|
6
|
-
import type { LocalizedString } from './generic-member.js';
|
|
7
|
-
|
|
8
|
-
export const REGISTER_STATUSES: ReadonlyArray<string> = Object.freeze([
|
|
9
|
-
'current',
|
|
10
|
-
'superseded',
|
|
11
|
-
'withdrawn',
|
|
12
|
-
'draft',
|
|
13
|
-
]);
|
|
14
|
-
|
|
15
|
-
export interface RegisterJson {
|
|
16
|
-
schema_version?: string;
|
|
17
|
-
schemaVersion?: string;
|
|
18
|
-
id?: string | null;
|
|
19
|
-
name?: string | LocalizedString | null;
|
|
20
|
-
ref?: string | null;
|
|
21
|
-
refAliases?: ReadonlyArray<string>;
|
|
22
|
-
ref_aliases?: ReadonlyArray<string>;
|
|
23
|
-
year?: number | string | null;
|
|
24
|
-
urn?: string | null;
|
|
25
|
-
urnAliases?: ReadonlyArray<string>;
|
|
26
|
-
urn_aliases?: ReadonlyArray<string>;
|
|
27
|
-
status?: string | null;
|
|
28
|
-
supersedes?: string | null;
|
|
29
|
-
owner?: string | null;
|
|
30
|
-
sourceRepo?: string | null;
|
|
31
|
-
source_repo?: string | null;
|
|
32
|
-
tags?: ReadonlyArray<string>;
|
|
33
|
-
languages?: ReadonlyArray<string>;
|
|
34
|
-
languageOrder?: ReadonlyArray<string>;
|
|
35
|
-
language_order?: ReadonlyArray<string>;
|
|
36
|
-
ordering?: string | null;
|
|
37
|
-
logo?: Record<string, unknown> | null;
|
|
38
|
-
color?: DatasetColor | null;
|
|
39
|
-
description?: LocalizedString;
|
|
40
|
-
about?: LocalizedString;
|
|
41
|
-
provenance?: ReadonlyArray<Record<string, unknown>>;
|
|
42
|
-
contributors?: ReadonlyArray<Record<string, unknown>>;
|
|
43
|
-
sections?: ReadonlyArray<SectionJson | Section>;
|
|
44
|
-
[key: string]: unknown;
|
|
45
|
-
}
|
|
46
|
-
|
|
47
|
-
export class Register extends GlossaristModel {
|
|
48
|
-
readonly schemaVersion: string;
|
|
49
|
-
readonly id: string | null;
|
|
50
|
-
readonly name: string | LocalizedString | null;
|
|
51
|
-
readonly ref: string | null;
|
|
52
|
-
readonly refAliases: ReadonlyArray<string>;
|
|
53
|
-
readonly year: number | string | null;
|
|
54
|
-
readonly urn: string | null;
|
|
55
|
-
readonly urnAliases: ReadonlyArray<string>;
|
|
56
|
-
readonly status: string | null;
|
|
57
|
-
readonly supersedes: string | null;
|
|
58
|
-
readonly owner: string | null;
|
|
59
|
-
readonly sourceRepo: string | null;
|
|
60
|
-
readonly tags: ReadonlyArray<string>;
|
|
61
|
-
readonly languages: ReadonlyArray<string>;
|
|
62
|
-
readonly languageOrder: ReadonlyArray<string>;
|
|
63
|
-
readonly ordering: string | null;
|
|
64
|
-
readonly logo: Record<string, unknown> | null;
|
|
65
|
-
readonly color: DatasetColor | null;
|
|
66
|
-
readonly description: LocalizedString;
|
|
67
|
-
readonly about: LocalizedString;
|
|
68
|
-
readonly provenance: ReadonlyArray<Record<string, unknown>>;
|
|
69
|
-
readonly contributors: ReadonlyArray<Record<string, unknown>>;
|
|
70
|
-
readonly sections: ReadonlyArray<Section>;
|
|
71
|
-
private readonly _raw: Record<string, unknown>;
|
|
72
|
-
|
|
73
|
-
constructor(data: RegisterJson = {}) {
|
|
74
|
-
super();
|
|
75
|
-
this.schemaVersion = data.schema_version ?? data.schemaVersion ?? '3';
|
|
76
|
-
this.id = data.id ?? null;
|
|
77
|
-
this.name = (data.name as string | LocalizedString | null) ?? null;
|
|
78
|
-
this.ref = data.ref ?? null;
|
|
79
|
-
this.refAliases = data.refAliases ?? data.ref_aliases ?? [];
|
|
80
|
-
this.year = (data.year as number | string | null) ?? null;
|
|
81
|
-
this.urn = data.urn ?? null;
|
|
82
|
-
this.urnAliases = data.urnAliases ?? data.urn_aliases ?? [];
|
|
83
|
-
this.status = data.status ?? null;
|
|
84
|
-
this.supersedes = data.supersedes ?? null;
|
|
85
|
-
this.owner = data.owner ?? null;
|
|
86
|
-
this.sourceRepo = data.sourceRepo ?? data.source_repo ?? null;
|
|
87
|
-
this.tags = (data.tags as ReadonlyArray<string>) ?? [];
|
|
88
|
-
this.languages = (data.languages as ReadonlyArray<string>) ?? [];
|
|
89
|
-
this.languageOrder = data.languageOrder ?? data.language_order ?? [];
|
|
90
|
-
this.ordering = data.ordering ?? null;
|
|
91
|
-
this.logo = (data.logo as Record<string, unknown> | null) ?? null;
|
|
92
|
-
this.color = (data.color as DatasetColor | null) ?? null;
|
|
93
|
-
this.description = (data.description as LocalizedString) ?? {};
|
|
94
|
-
this.about = (data.about as LocalizedString) ?? {};
|
|
95
|
-
this.provenance = (data.provenance as ReadonlyArray<Record<string, unknown>>) ?? [];
|
|
96
|
-
this.contributors = (data.contributors as ReadonlyArray<Record<string, unknown>>) ?? [];
|
|
97
|
-
this.sections = (data.sections ?? []).map((s) =>
|
|
98
|
-
s instanceof Section ? s : new Section(s as SectionJson),
|
|
99
|
-
);
|
|
100
|
-
this._raw = this._extractRaw(data);
|
|
101
|
-
}
|
|
102
|
-
|
|
103
|
-
private _extractRaw(data: RegisterJson): Record<string, unknown> {
|
|
104
|
-
const known = new Set([
|
|
105
|
-
'schema_version', 'schemaVersion',
|
|
106
|
-
'id', 'name', 'ref', 'refAliases', 'ref_aliases',
|
|
107
|
-
'year', 'urn', 'urnAliases', 'urn_aliases',
|
|
108
|
-
'status', 'supersedes', 'owner',
|
|
109
|
-
'sourceRepo', 'source_repo', 'tags',
|
|
110
|
-
'languages', 'languageOrder', 'language_order',
|
|
111
|
-
'ordering', 'logo', 'color', 'description', 'about',
|
|
112
|
-
'provenance', 'contributors', 'sections',
|
|
113
|
-
]);
|
|
114
|
-
const extra: Record<string, unknown> = {};
|
|
115
|
-
for (const [k, v] of Object.entries(data)) {
|
|
116
|
-
if (!known.has(k)) extra[k] = v;
|
|
117
|
-
}
|
|
118
|
-
return extra;
|
|
119
|
-
}
|
|
120
|
-
|
|
121
|
-
sectionById(id: string): Section | null {
|
|
122
|
-
for (const section of this.sections) {
|
|
123
|
-
if (section.id === id) return section;
|
|
124
|
-
const found = section.descendantById(id);
|
|
125
|
-
if (found) return found;
|
|
126
|
-
}
|
|
127
|
-
return null;
|
|
128
|
-
}
|
|
129
|
-
|
|
130
|
-
/**
|
|
131
|
-
* Walks the section tree upward from `sectionId`, returning the
|
|
132
|
-
* ancestor chain in immediate-parent-first order. The returned array
|
|
133
|
-
* does NOT include sectionId itself. Returns [] when sectionId is
|
|
134
|
-
* unknown or is a top-level section.
|
|
135
|
-
*/
|
|
136
|
-
sectionAncestorIds(sectionId: string | null | undefined): string[] {
|
|
137
|
-
if (!sectionId) return [];
|
|
138
|
-
for (const root of this.sections) {
|
|
139
|
-
const chain = _ancestorChain(root, sectionId);
|
|
140
|
-
if (chain) return chain;
|
|
141
|
-
}
|
|
142
|
-
return [];
|
|
143
|
-
}
|
|
144
|
-
|
|
145
|
-
/**
|
|
146
|
-
* Returns the closure of `sectionId`: the section plus all of its
|
|
147
|
-
* ancestors. Concept-section membership tests should intersect the
|
|
148
|
-
* concept's section list with this closure.
|
|
149
|
-
*/
|
|
150
|
-
sectionClosure(sectionId: string | null | undefined): string[] {
|
|
151
|
-
return sectionId ? [sectionId, ...this.sectionAncestorIds(sectionId)] : [];
|
|
152
|
-
}
|
|
153
|
-
|
|
154
|
-
/**
|
|
155
|
-
* Walks the section tree DOWNWARD from `sectionId`, returning all
|
|
156
|
-
* descendant section IDs in pre-order.
|
|
157
|
-
*/
|
|
158
|
-
sectionDescendantIds(sectionId: string | null | undefined): string[] {
|
|
159
|
-
if (!sectionId) return [];
|
|
160
|
-
const section = this.sectionById(sectionId);
|
|
161
|
-
if (!section) return [];
|
|
162
|
-
const out: string[] = [];
|
|
163
|
-
for (const child of section.children) {
|
|
164
|
-
if (child.id) out.push(child.id);
|
|
165
|
-
out.push(...this.sectionDescendantIds(child.id));
|
|
166
|
-
}
|
|
167
|
-
return out;
|
|
168
|
-
}
|
|
169
|
-
|
|
170
|
-
sectionDescendantClosure(sectionId: string | null | undefined): string[] {
|
|
171
|
-
return sectionId ? [sectionId, ...this.sectionDescendantIds(sectionId)] : [];
|
|
172
|
-
}
|
|
173
|
-
|
|
174
|
-
/**
|
|
175
|
-
* Returns all section IDs the concept belongs to: the concept's own
|
|
176
|
-
* sections plus every ancestor of each.
|
|
177
|
-
*/
|
|
178
|
-
conceptSectionIds(concept: { sections?: unknown; groups?: unknown }): string[] {
|
|
179
|
-
const own = conceptSectionIdList(concept);
|
|
180
|
-
if (own.length === 0) return [];
|
|
181
|
-
const closure = new Set<string>();
|
|
182
|
-
for (const id of own) {
|
|
183
|
-
for (const ancestor of this.sectionClosure(id)) closure.add(ancestor);
|
|
184
|
-
}
|
|
185
|
-
return [...closure];
|
|
186
|
-
}
|
|
187
|
-
|
|
188
|
-
sectionName(sectionId: string, lang: string): string | null {
|
|
189
|
-
const section = this.sectionById(sectionId);
|
|
190
|
-
return section ? section.name(lang) : null;
|
|
191
|
-
}
|
|
192
|
-
|
|
193
|
-
/**
|
|
194
|
-
* Localized display name. Returns the best-matching name string for
|
|
195
|
-
* the requested language, falling back to English, then to the first
|
|
196
|
-
* available language, then to null.
|
|
197
|
-
*/
|
|
198
|
-
displayName(lang: string): string | null {
|
|
199
|
-
if (this.name == null) return null;
|
|
200
|
-
if (typeof this.name === 'string') return this.name;
|
|
201
|
-
if (typeof this.name === 'object') {
|
|
202
|
-
return (
|
|
203
|
-
this.name[lang] ??
|
|
204
|
-
this.name['eng'] ??
|
|
205
|
-
(Object.values(this.name)[0] as string | undefined) ??
|
|
206
|
-
null
|
|
207
|
-
);
|
|
208
|
-
}
|
|
209
|
-
return null;
|
|
210
|
-
}
|
|
211
|
-
|
|
212
|
-
resolvedColor(mode: 'light' | 'dark'): string | null {
|
|
213
|
-
return resolveColor(this.color, mode);
|
|
214
|
-
}
|
|
215
|
-
|
|
216
|
-
override toJSON(): RegisterJson {
|
|
217
|
-
const obj = { ...this._raw, schema_version: this.schemaVersion } as RegisterJson;
|
|
218
|
-
if (this.id != null) obj.id = this.id;
|
|
219
|
-
if (this.name != null) obj.name = this.name;
|
|
220
|
-
if (this.ref != null) obj.ref = this.ref;
|
|
221
|
-
if (this.refAliases.length > 0) obj.refAliases = [...this.refAliases];
|
|
222
|
-
if (this.year != null) obj.year = this.year;
|
|
223
|
-
if (this.urn != null) obj.urn = this.urn;
|
|
224
|
-
if (this.urnAliases.length > 0) obj.urnAliases = [...this.urnAliases];
|
|
225
|
-
if (this.status != null) obj.status = this.status;
|
|
226
|
-
if (this.supersedes != null) obj.supersedes = this.supersedes;
|
|
227
|
-
if (this.owner != null) obj.owner = this.owner;
|
|
228
|
-
if (this.sourceRepo != null) obj.sourceRepo = this.sourceRepo;
|
|
229
|
-
if (this.tags.length > 0) obj.tags = [...this.tags];
|
|
230
|
-
if (this.languages.length > 0) obj.languages = [...this.languages];
|
|
231
|
-
if (this.languageOrder.length > 0) obj.languageOrder = [...this.languageOrder];
|
|
232
|
-
if (this.ordering != null) obj.ordering = this.ordering;
|
|
233
|
-
if (this.logo != null) obj.logo = { ...this.logo };
|
|
234
|
-
if (this.color != null) {
|
|
235
|
-
obj.color =
|
|
236
|
-
typeof this.color === 'object' && this.color !== null
|
|
237
|
-
? { ...this.color }
|
|
238
|
-
: this.color;
|
|
239
|
-
}
|
|
240
|
-
if (Object.keys(this.description).length > 0) obj.description = { ...this.description };
|
|
241
|
-
if (Object.keys(this.about).length > 0) obj.about = { ...this.about };
|
|
242
|
-
if (this.provenance.length > 0) obj.provenance = this.provenance.map((p) => ({ ...p }));
|
|
243
|
-
if (this.contributors.length > 0) obj.contributors = this.contributors.map((c) => ({ ...c }));
|
|
244
|
-
if (this.sections.length > 0) obj.sections = this.sections.map((s) => s.toJSON());
|
|
245
|
-
return obj;
|
|
246
|
-
}
|
|
247
|
-
|
|
248
|
-
static override fromJSON(data: RegisterJson): Register {
|
|
249
|
-
const instance = new Register(data);
|
|
250
|
-
const snakeToCamel = (k: string): string =>
|
|
251
|
-
k.replace(/_([a-z])/g, (_, c: string) => c.toUpperCase());
|
|
252
|
-
return new Proxy(instance, {
|
|
253
|
-
get(target: Register, prop: string | symbol): unknown {
|
|
254
|
-
if (typeof prop === 'string') {
|
|
255
|
-
if (prop in target) return (target as unknown as Record<string, unknown>)[prop];
|
|
256
|
-
if (prop in target._raw) return target._raw[prop];
|
|
257
|
-
const camel = snakeToCamel(prop);
|
|
258
|
-
if (camel in target) return (target as unknown as Record<string, unknown>)[camel];
|
|
259
|
-
}
|
|
260
|
-
return undefined;
|
|
261
|
-
},
|
|
262
|
-
});
|
|
263
|
-
}
|
|
264
|
-
}
|
|
265
|
-
|
|
266
|
-
/**
|
|
267
|
-
* Recursive walk: returns the ancestor chain of `targetId` within the
|
|
268
|
-
* subtree rooted at `section`, or null if targetId is not in this
|
|
269
|
-
* subtree.
|
|
270
|
-
*/
|
|
271
|
-
function _ancestorChain(
|
|
272
|
-
section: Section,
|
|
273
|
-
targetId: string,
|
|
274
|
-
ancestors: string[] = [],
|
|
275
|
-
): string[] | null {
|
|
276
|
-
if (section.id === targetId) return [...ancestors].reverse();
|
|
277
|
-
for (const child of section.children) {
|
|
278
|
-
const childId = child.id;
|
|
279
|
-
if (childId == null) continue;
|
|
280
|
-
const nextAncestors = section.id != null ? [...ancestors, section.id] : [...ancestors];
|
|
281
|
-
const found = _ancestorChain(child, targetId, nextAncestors);
|
|
282
|
-
if (found) return found;
|
|
283
|
-
}
|
|
284
|
-
return null;
|
|
285
|
-
}
|
|
286
|
-
|
|
287
|
-
/**
|
|
288
|
-
* Returns the list of section IDs a concept claims membership in.
|
|
289
|
-
* Concepts may carry section IDs via either `sections` (preferred) or
|
|
290
|
-
* `groups` (legacy). Each entry may be a string or an object with an
|
|
291
|
-
* `id` field; both forms are flattened to a string list.
|
|
292
|
-
*/
|
|
293
|
-
function conceptSectionIdList(concept: { sections?: unknown; groups?: unknown }): string[] {
|
|
294
|
-
if (!concept) return [];
|
|
295
|
-
const fromSections = concept.sections
|
|
296
|
-
? _flattenSectionIds(concept.sections)
|
|
297
|
-
: [];
|
|
298
|
-
const fromGroups = concept.groups ? _flattenSectionIds(concept.groups) : [];
|
|
299
|
-
return [...fromSections, ...fromGroups];
|
|
300
|
-
}
|
|
301
|
-
|
|
302
|
-
function _flattenSectionIds(value: unknown): string[] {
|
|
303
|
-
if (!Array.isArray(value)) return [];
|
|
304
|
-
const out: string[] = [];
|
|
305
|
-
for (const entry of value) {
|
|
306
|
-
if (typeof entry === 'string') {
|
|
307
|
-
out.push(entry);
|
|
308
|
-
} else if (entry && typeof entry === 'object') {
|
|
309
|
-
const e = entry as { id?: string; sectionId?: string; ref?: { id?: string } };
|
|
310
|
-
const id = e.id ?? e.sectionId ?? e.ref?.id;
|
|
311
|
-
if (id) out.push(String(id));
|
|
312
|
-
}
|
|
313
|
-
}
|
|
314
|
-
return out;
|
|
315
|
-
}
|
|
@@ -1,48 +0,0 @@
|
|
|
1
|
-
import { GlossaristModel } from './base.js';
|
|
2
|
-
|
|
3
|
-
/**
|
|
4
|
-
* Per-class registry of named subtypes. The registry is keyed by
|
|
5
|
-
* `type` discriminator and maps to the constructor function. Used by
|
|
6
|
-
* NonVerbalEntity (Figure/Table/Formula), NonVerbalReference
|
|
7
|
-
* (Figure/Table/Formula references), and any future RegistrableModel
|
|
8
|
-
* subclass that needs polymorphic dispatch on a string discriminator.
|
|
9
|
-
*
|
|
10
|
-
* Stored as a WeakMap keyed by the base class function, so each base
|
|
11
|
-
* gets its own namespace (NonVerbalEntity.register does not collide
|
|
12
|
-
* with NonVerbalReference.register).
|
|
13
|
-
*
|
|
14
|
-
* The registry stores constructors as `Function` because TS's strict
|
|
15
|
-
* variance on constructor params makes a typed constraint reject
|
|
16
|
-
* subclasses with narrower param types. The dispatch site casts the
|
|
17
|
-
* result back to the specific subclass.
|
|
18
|
-
*/
|
|
19
|
-
|
|
20
|
-
// eslint-disable-next-line @typescript-eslint/no-explicit-any -- see docstring.
|
|
21
|
-
type AnyCtor = new (...args: any[]) => any;
|
|
22
|
-
|
|
23
|
-
const _registries = new WeakMap<object, Map<string, AnyCtor>>();
|
|
24
|
-
|
|
25
|
-
export class RegistrableModel extends GlossaristModel {
|
|
26
|
-
static _registry(): Map<string, AnyCtor> {
|
|
27
|
-
const existing = _registries.get(this) ?? new Map();
|
|
28
|
-
if (!_registries.has(this)) _registries.set(this, existing);
|
|
29
|
-
return existing;
|
|
30
|
-
}
|
|
31
|
-
|
|
32
|
-
static register(type: string, cls: AnyCtor): void {
|
|
33
|
-
this._registry().set(type, cls);
|
|
34
|
-
}
|
|
35
|
-
|
|
36
|
-
static fromData<T extends RegistrableModel>(
|
|
37
|
-
// eslint-disable-next-line @typescript-eslint/no-explicit-any -- any ctor signature accepted.
|
|
38
|
-
this: new (...args: any[]) => T,
|
|
39
|
-
data: unknown,
|
|
40
|
-
): T {
|
|
41
|
-
if (data instanceof this) return data;
|
|
42
|
-
const type = (data as { type?: string } | null)?.type;
|
|
43
|
-
const Self = this as unknown as { _registry(): Map<string, AnyCtor> };
|
|
44
|
-
const registry = Self._registry();
|
|
45
|
-
const Cls = type ? (registry.get(type) ?? (this as AnyCtor)) : (this as AnyCtor);
|
|
46
|
-
return new (Cls as new (data: unknown) => T)(data);
|
|
47
|
-
}
|
|
48
|
-
}
|