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
package/src/diff/concept-diff.ts
DELETED
|
@@ -1,853 +0,0 @@
|
|
|
1
|
-
import { GlossaristModel } from '../models/base.js';
|
|
2
|
-
import { PartitiveHyperedge } from '../models/partitive-hyperedge.js';
|
|
3
|
-
import { GenericHyperedge } from '../models/generic-hyperedge.js';
|
|
4
|
-
import { Added, Removed, Changed } from './change.js';
|
|
5
|
-
import { ListDiff, diffList, diffSet } from './list-diff.js';
|
|
6
|
-
import { identityOf } from './identity.js';
|
|
7
|
-
import { canonicalJson } from './canonical-json.js';
|
|
8
|
-
import { computeSimilarity } from './similarity.js';
|
|
9
|
-
|
|
10
|
-
// Metadata field lists for the diff layer.
|
|
11
|
-
//
|
|
12
|
-
// Concept and LocalizedConcept also expose static DIFF_FIELDS that
|
|
13
|
-
// mirror these arrays. The duplication is intentional: concept-diff.js
|
|
14
|
-
// cannot import Concept (Concept imports diffConcepts from this module,
|
|
15
|
-
// creating a cycle). Instead, a spec (test/diff/field-sync.test.js)
|
|
16
|
-
// asserts the two stay in sync. Adding a new scalar metadata field
|
|
17
|
-
// requires editing both sites; forgetting one fails the test loudly.
|
|
18
|
-
//
|
|
19
|
-
// (Invariant N2 — TODO.hyperedges-v2/07.)
|
|
20
|
-
const CONCEPT_METADATA_FIELDS = Object.freeze([
|
|
21
|
-
'status', 'term', 'uri', 'schemaVersion',
|
|
22
|
-
]);
|
|
23
|
-
|
|
24
|
-
const LOCALIZATION_METADATA_FIELDS = Object.freeze([
|
|
25
|
-
'entryStatus', 'classification', 'reviewType', 'domain', 'release',
|
|
26
|
-
'lineageSourceSimilarity', 'script', 'system',
|
|
27
|
-
'reviewDate', 'reviewDecisionDate', 'reviewDecisionEvent',
|
|
28
|
-
'reviewStatus', 'reviewDecision', 'reviewDecisionNotes',
|
|
29
|
-
]);
|
|
30
|
-
|
|
31
|
-
// Metadata field lists are sourced from the models per invariant N2.
|
|
32
|
-
// (See file-top comment about why they're duplicated rather than imported.)
|
|
33
|
-
|
|
34
|
-
export class DiffStats extends GlossaristModel {
|
|
35
|
-
constructor(data: Record<string, unknown> = {}) {
|
|
36
|
-
super();
|
|
37
|
-
// @ts-expect-error TODO(Phase 2e): type this fully
|
|
38
|
-
this._added = data.added ?? 0;
|
|
39
|
-
// @ts-expect-error TODO(Phase 2e): type this fully
|
|
40
|
-
this._removed = data.removed ?? 0;
|
|
41
|
-
// @ts-expect-error TODO(Phase 2e): type this fully
|
|
42
|
-
this._changed = data.changed ?? 0;
|
|
43
|
-
}
|
|
44
|
-
|
|
45
|
-
// @ts-expect-error TODO(Phase 2e): type this fully
|
|
46
|
-
get added() { return this._added; }
|
|
47
|
-
// @ts-expect-error TODO(Phase 2e): type this fully
|
|
48
|
-
get removed() { return this._removed; }
|
|
49
|
-
// @ts-expect-error TODO(Phase 2e): type this fully
|
|
50
|
-
get changed() { return this._changed; }
|
|
51
|
-
// @ts-expect-error TODO(Phase 2e): type this fully
|
|
52
|
-
get total() { return this._added + this._removed + this._changed; }
|
|
53
|
-
|
|
54
|
-
toJSON() {
|
|
55
|
-
// @ts-expect-error TODO(Phase 2e): type this fully
|
|
56
|
-
return { added: this._added, removed: this._removed, changed: this._changed };
|
|
57
|
-
}
|
|
58
|
-
|
|
59
|
-
static fromJSON(data) {
|
|
60
|
-
return new DiffStats(data ?? {});
|
|
61
|
-
}
|
|
62
|
-
}
|
|
63
|
-
|
|
64
|
-
export class MetadataDiff extends GlossaristModel {
|
|
65
|
-
constructor(data: Record<string, unknown> = {}) {
|
|
66
|
-
super();
|
|
67
|
-
// @ts-expect-error TODO(Phase 2e): type this fully
|
|
68
|
-
this._changes = {};
|
|
69
|
-
const raw = data.changes ?? data ?? {};
|
|
70
|
-
for (const [field, change] of Object.entries(raw)) {
|
|
71
|
-
// @ts-expect-error TODO(Phase 2e): type this fully
|
|
72
|
-
this._changes[field] = change instanceof Changed ? change : Changed.fromJSON(change);
|
|
73
|
-
}
|
|
74
|
-
}
|
|
75
|
-
|
|
76
|
-
get changes() {
|
|
77
|
-
// @ts-expect-error TODO(Phase 2e): type this fully
|
|
78
|
-
return this._changes;
|
|
79
|
-
}
|
|
80
|
-
|
|
81
|
-
get hasChanges() {
|
|
82
|
-
// @ts-expect-error TODO(Phase 2e): type this fully
|
|
83
|
-
return Object.keys(this._changes).length > 0;
|
|
84
|
-
}
|
|
85
|
-
|
|
86
|
-
get count() {
|
|
87
|
-
// @ts-expect-error TODO(Phase 2e): type this fully
|
|
88
|
-
return Object.keys(this._changes).length;
|
|
89
|
-
}
|
|
90
|
-
|
|
91
|
-
*walk(section) {
|
|
92
|
-
// @ts-expect-error TODO(Phase 2e): type this fully
|
|
93
|
-
for (const [field, change] of Object.entries(this._changes)) {
|
|
94
|
-
const path = section ? `${section}.${field}` : field;
|
|
95
|
-
yield { path, change };
|
|
96
|
-
}
|
|
97
|
-
}
|
|
98
|
-
|
|
99
|
-
toJSON() {
|
|
100
|
-
const obj = {};
|
|
101
|
-
// @ts-expect-error TODO(Phase 2e): type this fully
|
|
102
|
-
for (const [field, change] of Object.entries(this._changes)) {
|
|
103
|
-
// @ts-expect-error TODO(Phase 2e): type this fully
|
|
104
|
-
obj[field] = change.toJSON();
|
|
105
|
-
}
|
|
106
|
-
return obj;
|
|
107
|
-
}
|
|
108
|
-
|
|
109
|
-
static fromJSON(data) {
|
|
110
|
-
return new MetadataDiff({ changes: data ?? {} });
|
|
111
|
-
}
|
|
112
|
-
}
|
|
113
|
-
|
|
114
|
-
export class ConceptLevelDiff extends GlossaristModel {
|
|
115
|
-
constructor(data: Record<string, unknown> = {}) {
|
|
116
|
-
super();
|
|
117
|
-
// @ts-expect-error TODO(Phase 2e): type this fully
|
|
118
|
-
this._sources = wrapListDiff(data.sources);
|
|
119
|
-
// @ts-expect-error TODO(Phase 2e): type this fully
|
|
120
|
-
this._dates = wrapListDiff(data.dates);
|
|
121
|
-
// @ts-expect-error TODO(Phase 2e): type this fully
|
|
122
|
-
this._relatedConcepts = wrapListDiff(data.relatedConcepts ?? data.related_concepts);
|
|
123
|
-
// Unified hyperedge diff. Accepts:
|
|
124
|
-
// - data.relations (new unified shape)
|
|
125
|
-
// - data.partitiveRelations /
|
|
126
|
-
// data.partitive_relations /
|
|
127
|
-
// data.partitiveHyperedges /
|
|
128
|
-
// data.partitive_hyperedges (legacy partitive-only shape)
|
|
129
|
-
// Old diffs only had partitive, so the legacy fallback treats them
|
|
130
|
-
// as a unified list with one type present.
|
|
131
|
-
// @ts-expect-error TODO(Phase 2e): type this fully
|
|
132
|
-
this._relations = wrapListDiff(
|
|
133
|
-
data.relations
|
|
134
|
-
?? data.partitiveRelations
|
|
135
|
-
?? data.partitive_relations
|
|
136
|
-
?? data.partitiveHyperedges
|
|
137
|
-
?? data.partitive_hyperedges,
|
|
138
|
-
);
|
|
139
|
-
// @ts-expect-error TODO(Phase 2e): type this fully
|
|
140
|
-
this._groups = wrapListDiff(data.groups);
|
|
141
|
-
// @ts-expect-error TODO(Phase 2e): type this fully
|
|
142
|
-
this._sections = wrapListDiff(data.sections);
|
|
143
|
-
// @ts-expect-error TODO(Phase 2e): type this fully
|
|
144
|
-
this._tags = wrapListDiff(data.tags);
|
|
145
|
-
// @ts-expect-error TODO(Phase 2e): type this fully
|
|
146
|
-
this._metadata = data.metadata instanceof MetadataDiff
|
|
147
|
-
? data.metadata
|
|
148
|
-
: MetadataDiff.fromJSON(data.metadata ?? {});
|
|
149
|
-
}
|
|
150
|
-
|
|
151
|
-
// @ts-expect-error TODO(Phase 2e): type this fully
|
|
152
|
-
get sources() { return this._sources; }
|
|
153
|
-
// @ts-expect-error TODO(Phase 2e): type this fully
|
|
154
|
-
get dates() { return this._dates; }
|
|
155
|
-
// @ts-expect-error TODO(Phase 2e): type this fully
|
|
156
|
-
get relatedConcepts() { return this._relatedConcepts; }
|
|
157
|
-
/** Unified hyperedge diff (PartitiveHyperedge + GenericHyperedge). */
|
|
158
|
-
// @ts-expect-error TODO(Phase 2e): type this fully
|
|
159
|
-
get relations() { return this._relations; }
|
|
160
|
-
/**
|
|
161
|
-
* Filtered view of `relations` containing only PartitiveHyperedge
|
|
162
|
-
* entries. Backward compat for callers that read .partitiveRelations
|
|
163
|
-
* directly on a ConceptLevelDiff.
|
|
164
|
-
*/
|
|
165
|
-
get partitiveRelations() {
|
|
166
|
-
// @ts-expect-error TODO(Phase 2e): type this fully
|
|
167
|
-
return filterListDiffByType(this._relations, PartitiveHyperedge);
|
|
168
|
-
}
|
|
169
|
-
/** @deprecated use .relations */ get partitiveHyperedges() { return this.partitiveRelations; }
|
|
170
|
-
/**
|
|
171
|
-
* Filtered view of `relations` containing only GenericHyperedge
|
|
172
|
-
* entries. Backward compat for callers that read .genericRelations
|
|
173
|
-
* directly on a ConceptLevelDiff.
|
|
174
|
-
*/
|
|
175
|
-
get genericRelations() {
|
|
176
|
-
// @ts-expect-error TODO(Phase 2e): type this fully
|
|
177
|
-
return filterListDiffByType(this._relations, GenericHyperedge);
|
|
178
|
-
}
|
|
179
|
-
// @ts-expect-error TODO(Phase 2e): type this fully
|
|
180
|
-
get groups() { return this._groups; }
|
|
181
|
-
// @ts-expect-error TODO(Phase 2e): type this fully
|
|
182
|
-
get sections() { return this._sections; }
|
|
183
|
-
// @ts-expect-error TODO(Phase 2e): type this fully
|
|
184
|
-
get tags() { return this._tags; }
|
|
185
|
-
// @ts-expect-error TODO(Phase 2e): type this fully
|
|
186
|
-
get metadata() { return this._metadata; }
|
|
187
|
-
|
|
188
|
-
get hasChanges() {
|
|
189
|
-
// @ts-expect-error TODO(Phase 2e): type this fully
|
|
190
|
-
return this._sources.hasChanges
|
|
191
|
-
// @ts-expect-error TODO(Phase 2e): type this fully
|
|
192
|
-
|| this._dates.hasChanges
|
|
193
|
-
// @ts-expect-error TODO(Phase 2e): type this fully
|
|
194
|
-
|| this._relatedConcepts.hasChanges
|
|
195
|
-
// @ts-expect-error TODO(Phase 2e): type this fully
|
|
196
|
-
|| this._relations.hasChanges
|
|
197
|
-
// @ts-expect-error TODO(Phase 2e): type this fully
|
|
198
|
-
|| this._groups.hasChanges
|
|
199
|
-
// @ts-expect-error TODO(Phase 2e): type this fully
|
|
200
|
-
|| this._sections.hasChanges
|
|
201
|
-
// @ts-expect-error TODO(Phase 2e): type this fully
|
|
202
|
-
|| this._tags.hasChanges
|
|
203
|
-
// @ts-expect-error TODO(Phase 2e): type this fully
|
|
204
|
-
|| this._metadata.hasChanges;
|
|
205
|
-
}
|
|
206
|
-
|
|
207
|
-
*walk() {
|
|
208
|
-
// @ts-expect-error TODO(Phase 2e): type this fully
|
|
209
|
-
yield* walkList('concept.sources', this._sources);
|
|
210
|
-
// @ts-expect-error TODO(Phase 2e): type this fully
|
|
211
|
-
yield* walkList('concept.dates', this._dates);
|
|
212
|
-
// @ts-expect-error TODO(Phase 2e): type this fully
|
|
213
|
-
yield* walkList('concept.relatedConcepts', this._relatedConcepts);
|
|
214
|
-
// @ts-expect-error TODO(Phase 2e): type this fully
|
|
215
|
-
yield* walkList('concept.relations', this._relations);
|
|
216
|
-
// @ts-expect-error TODO(Phase 2e): type this fully
|
|
217
|
-
yield* walkList('concept.groups', this._groups);
|
|
218
|
-
// @ts-expect-error TODO(Phase 2e): type this fully
|
|
219
|
-
yield* walkList('concept.sections', this._sections);
|
|
220
|
-
// @ts-expect-error TODO(Phase 2e): type this fully
|
|
221
|
-
yield* walkList('concept.tags', this._tags);
|
|
222
|
-
// @ts-expect-error TODO(Phase 2e): type this fully
|
|
223
|
-
yield* this._metadata.walk('concept.metadata');
|
|
224
|
-
}
|
|
225
|
-
|
|
226
|
-
toJSON() {
|
|
227
|
-
return {
|
|
228
|
-
// @ts-expect-error TODO(Phase 2e): type this fully
|
|
229
|
-
sources: this._sources.toJSON(),
|
|
230
|
-
// @ts-expect-error TODO(Phase 2e): type this fully
|
|
231
|
-
dates: this._dates.toJSON(),
|
|
232
|
-
// @ts-expect-error TODO(Phase 2e): type this fully
|
|
233
|
-
related_concepts: this._relatedConcepts.toJSON(),
|
|
234
|
-
// @ts-expect-error TODO(Phase 2e): type this fully
|
|
235
|
-
relations: this._relations.toJSON(),
|
|
236
|
-
// @ts-expect-error TODO(Phase 2e): type this fully
|
|
237
|
-
groups: this._groups.toJSON(),
|
|
238
|
-
// @ts-expect-error TODO(Phase 2e): type this fully
|
|
239
|
-
sections: this._sections.toJSON(),
|
|
240
|
-
// @ts-expect-error TODO(Phase 2e): type this fully
|
|
241
|
-
tags: this._tags.toJSON(),
|
|
242
|
-
// @ts-expect-error TODO(Phase 2e): type this fully
|
|
243
|
-
metadata: this._metadata.toJSON(),
|
|
244
|
-
};
|
|
245
|
-
}
|
|
246
|
-
|
|
247
|
-
static fromJSON(data) {
|
|
248
|
-
return new ConceptLevelDiff(data);
|
|
249
|
-
}
|
|
250
|
-
}
|
|
251
|
-
|
|
252
|
-
export class LocalizedConceptDiff extends GlossaristModel {
|
|
253
|
-
constructor(data: Record<string, unknown> = {}) {
|
|
254
|
-
super();
|
|
255
|
-
// @ts-expect-error TODO(Phase 2e): type this fully
|
|
256
|
-
this.languageCode = data.languageCode ?? data.language_code ?? null;
|
|
257
|
-
// @ts-expect-error TODO(Phase 2e): type this fully
|
|
258
|
-
this._designations = wrapListDiff(data.designations);
|
|
259
|
-
// @ts-expect-error TODO(Phase 2e): type this fully
|
|
260
|
-
this._definitions = wrapListDiff(data.definitions);
|
|
261
|
-
// @ts-expect-error TODO(Phase 2e): type this fully
|
|
262
|
-
this._notes = wrapListDiff(data.notes);
|
|
263
|
-
// @ts-expect-error TODO(Phase 2e): type this fully
|
|
264
|
-
this._examples = wrapListDiff(data.examples);
|
|
265
|
-
// @ts-expect-error TODO(Phase 2e): type this fully
|
|
266
|
-
this._sources = wrapListDiff(data.sources);
|
|
267
|
-
// @ts-expect-error TODO(Phase 2e): type this fully
|
|
268
|
-
this._dates = wrapListDiff(data.dates);
|
|
269
|
-
// @ts-expect-error TODO(Phase 2e): type this fully
|
|
270
|
-
this._related = wrapListDiff(data.related);
|
|
271
|
-
// @ts-expect-error TODO(Phase 2e): type this fully
|
|
272
|
-
this._metadata = data.metadata instanceof MetadataDiff
|
|
273
|
-
? data.metadata
|
|
274
|
-
: MetadataDiff.fromJSON(data.metadata ?? {});
|
|
275
|
-
// @ts-expect-error TODO(Phase 2e): type this fully
|
|
276
|
-
this._totalItems = data.totalItems ?? data.total_items ?? 0;
|
|
277
|
-
// @ts-expect-error TODO(Phase 2e): type this fully
|
|
278
|
-
this._statsCache = undefined;
|
|
279
|
-
// @ts-expect-error TODO(Phase 2e): type this fully
|
|
280
|
-
this._similarityCache = undefined;
|
|
281
|
-
}
|
|
282
|
-
|
|
283
|
-
// @ts-expect-error TODO(Phase 2e): type this fully
|
|
284
|
-
get designations() { return this._designations; }
|
|
285
|
-
// @ts-expect-error TODO(Phase 2e): type this fully
|
|
286
|
-
get definitions() { return this._definitions; }
|
|
287
|
-
// @ts-expect-error TODO(Phase 2e): type this fully
|
|
288
|
-
get notes() { return this._notes; }
|
|
289
|
-
// @ts-expect-error TODO(Phase 2e): type this fully
|
|
290
|
-
get examples() { return this._examples; }
|
|
291
|
-
// @ts-expect-error TODO(Phase 2e): type this fully
|
|
292
|
-
get sources() { return this._sources; }
|
|
293
|
-
// @ts-expect-error TODO(Phase 2e): type this fully
|
|
294
|
-
get dates() { return this._dates; }
|
|
295
|
-
// @ts-expect-error TODO(Phase 2e): type this fully
|
|
296
|
-
get related() { return this._related; }
|
|
297
|
-
// @ts-expect-error TODO(Phase 2e): type this fully
|
|
298
|
-
get metadata() { return this._metadata; }
|
|
299
|
-
// @ts-expect-error TODO(Phase 2e): type this fully
|
|
300
|
-
get totalItems() { return this._totalItems; }
|
|
301
|
-
|
|
302
|
-
get hasChanges() {
|
|
303
|
-
// @ts-expect-error TODO(Phase 2e): type this fully
|
|
304
|
-
return this._designations.hasChanges
|
|
305
|
-
// @ts-expect-error TODO(Phase 2e): type this fully
|
|
306
|
-
|| this._definitions.hasChanges
|
|
307
|
-
// @ts-expect-error TODO(Phase 2e): type this fully
|
|
308
|
-
|| this._notes.hasChanges
|
|
309
|
-
// @ts-expect-error TODO(Phase 2e): type this fully
|
|
310
|
-
|| this._examples.hasChanges
|
|
311
|
-
// @ts-expect-error TODO(Phase 2e): type this fully
|
|
312
|
-
|| this._sources.hasChanges
|
|
313
|
-
// @ts-expect-error TODO(Phase 2e): type this fully
|
|
314
|
-
|| this._dates.hasChanges
|
|
315
|
-
// @ts-expect-error TODO(Phase 2e): type this fully
|
|
316
|
-
|| this._related.hasChanges
|
|
317
|
-
// @ts-expect-error TODO(Phase 2e): type this fully
|
|
318
|
-
|| this._metadata.hasChanges;
|
|
319
|
-
}
|
|
320
|
-
|
|
321
|
-
get stats() {
|
|
322
|
-
// @ts-expect-error TODO(Phase 2e): type this fully
|
|
323
|
-
if (this._statsCache === undefined) {
|
|
324
|
-
// @ts-expect-error TODO(Phase 2e): type this fully
|
|
325
|
-
this._statsCache = collectStats(this.walk());
|
|
326
|
-
}
|
|
327
|
-
// @ts-expect-error TODO(Phase 2e): type this fully
|
|
328
|
-
return this._statsCache;
|
|
329
|
-
}
|
|
330
|
-
|
|
331
|
-
get similarity() {
|
|
332
|
-
// @ts-expect-error TODO(Phase 2e): type this fully
|
|
333
|
-
if (this._similarityCache === undefined) {
|
|
334
|
-
// @ts-expect-error TODO(Phase 2e): type this fully
|
|
335
|
-
this._similarityCache = computeSimilarity(this.stats.total, this._totalItems);
|
|
336
|
-
}
|
|
337
|
-
// @ts-expect-error TODO(Phase 2e): type this fully
|
|
338
|
-
return this._similarityCache;
|
|
339
|
-
}
|
|
340
|
-
|
|
341
|
-
*walk(prefix) {
|
|
342
|
-
const base = prefix ?? '';
|
|
343
|
-
// @ts-expect-error TODO(Phase 2e): type this fully
|
|
344
|
-
yield* walkList(`${base}.designations`, this._designations);
|
|
345
|
-
// @ts-expect-error TODO(Phase 2e): type this fully
|
|
346
|
-
yield* walkList(`${base}.definitions`, this._definitions);
|
|
347
|
-
// @ts-expect-error TODO(Phase 2e): type this fully
|
|
348
|
-
yield* walkList(`${base}.notes`, this._notes);
|
|
349
|
-
// @ts-expect-error TODO(Phase 2e): type this fully
|
|
350
|
-
yield* walkList(`${base}.examples`, this._examples);
|
|
351
|
-
// @ts-expect-error TODO(Phase 2e): type this fully
|
|
352
|
-
yield* walkList(`${base}.sources`, this._sources);
|
|
353
|
-
// @ts-expect-error TODO(Phase 2e): type this fully
|
|
354
|
-
yield* walkList(`${base}.dates`, this._dates);
|
|
355
|
-
// @ts-expect-error TODO(Phase 2e): type this fully
|
|
356
|
-
yield* walkList(`${base}.related`, this._related);
|
|
357
|
-
// @ts-expect-error TODO(Phase 2e): type this fully
|
|
358
|
-
yield* this._metadata.walk(`${base}.metadata`);
|
|
359
|
-
}
|
|
360
|
-
|
|
361
|
-
toJSON() {
|
|
362
|
-
const obj = {};
|
|
363
|
-
// @ts-expect-error TODO(Phase 2e): type this fully
|
|
364
|
-
if (this.languageCode != null) obj.language_code = this.languageCode;
|
|
365
|
-
// @ts-expect-error TODO(Phase 2e): type this fully
|
|
366
|
-
obj.designations = this._designations.toJSON();
|
|
367
|
-
// @ts-expect-error TODO(Phase 2e): type this fully
|
|
368
|
-
obj.definitions = this._definitions.toJSON();
|
|
369
|
-
// @ts-expect-error TODO(Phase 2e): type this fully
|
|
370
|
-
obj.notes = this._notes.toJSON();
|
|
371
|
-
// @ts-expect-error TODO(Phase 2e): type this fully
|
|
372
|
-
obj.examples = this._examples.toJSON();
|
|
373
|
-
// @ts-expect-error TODO(Phase 2e): type this fully
|
|
374
|
-
obj.sources = this._sources.toJSON();
|
|
375
|
-
// @ts-expect-error TODO(Phase 2e): type this fully
|
|
376
|
-
obj.dates = this._dates.toJSON();
|
|
377
|
-
// @ts-expect-error TODO(Phase 2e): type this fully
|
|
378
|
-
obj.related = this._related.toJSON();
|
|
379
|
-
// @ts-expect-error TODO(Phase 2e): type this fully
|
|
380
|
-
obj.metadata = this._metadata.toJSON();
|
|
381
|
-
// @ts-expect-error TODO(Phase 2e): type this fully
|
|
382
|
-
obj.total_items = this._totalItems;
|
|
383
|
-
return obj;
|
|
384
|
-
}
|
|
385
|
-
|
|
386
|
-
static fromJSON(data) {
|
|
387
|
-
return new LocalizedConceptDiff(data);
|
|
388
|
-
}
|
|
389
|
-
}
|
|
390
|
-
|
|
391
|
-
export class ConceptDiff extends GlossaristModel {
|
|
392
|
-
constructor(data: Record<string, unknown> = {}) {
|
|
393
|
-
super();
|
|
394
|
-
// @ts-expect-error TODO(Phase 2e): type this fully
|
|
395
|
-
this._oldId = data.oldId ?? data.old_id ?? null;
|
|
396
|
-
// @ts-expect-error TODO(Phase 2e): type this fully
|
|
397
|
-
this._newId = data.newId ?? data.new_id ?? null;
|
|
398
|
-
// @ts-expect-error TODO(Phase 2e): type this fully
|
|
399
|
-
this._concept = data.concept instanceof ConceptLevelDiff
|
|
400
|
-
? data.concept
|
|
401
|
-
: ConceptLevelDiff.fromJSON(data.concept ?? {});
|
|
402
|
-
// @ts-expect-error TODO(Phase 2e): type this fully
|
|
403
|
-
this._languages = wrapListDiff(data.languages);
|
|
404
|
-
// @ts-expect-error TODO(Phase 2e): type this fully
|
|
405
|
-
this._localizations = {};
|
|
406
|
-
const raw = data.localizations ?? {};
|
|
407
|
-
for (const [lang, lcDiff] of Object.entries(raw)) {
|
|
408
|
-
// @ts-expect-error TODO(Phase 2e): type this fully
|
|
409
|
-
this._localizations[lang] = lcDiff instanceof LocalizedConceptDiff
|
|
410
|
-
? lcDiff
|
|
411
|
-
: LocalizedConceptDiff.fromJSON(lcDiff);
|
|
412
|
-
}
|
|
413
|
-
// @ts-expect-error TODO(Phase 2e): type this fully
|
|
414
|
-
this._totalItems = data.totalItems ?? data.total_items ?? 0;
|
|
415
|
-
// @ts-expect-error TODO(Phase 2e): type this fully
|
|
416
|
-
this._statsCache = undefined;
|
|
417
|
-
// @ts-expect-error TODO(Phase 2e): type this fully
|
|
418
|
-
this._similarityCache = undefined;
|
|
419
|
-
}
|
|
420
|
-
|
|
421
|
-
// @ts-expect-error TODO(Phase 2e): type this fully
|
|
422
|
-
get oldId() { return this._oldId; }
|
|
423
|
-
// @ts-expect-error TODO(Phase 2e): type this fully
|
|
424
|
-
get newId() { return this._newId; }
|
|
425
|
-
// @ts-expect-error TODO(Phase 2e): type this fully
|
|
426
|
-
get concept() { return this._concept; }
|
|
427
|
-
// @ts-expect-error TODO(Phase 2e): type this fully
|
|
428
|
-
get languages() { return this._languages; }
|
|
429
|
-
// @ts-expect-error TODO(Phase 2e): type this fully
|
|
430
|
-
get localizations() { return this._localizations; }
|
|
431
|
-
// @ts-expect-error TODO(Phase 2e): type this fully
|
|
432
|
-
get totalItems() { return this._totalItems; }
|
|
433
|
-
|
|
434
|
-
get localizationLanguages() {
|
|
435
|
-
// @ts-expect-error TODO(Phase 2e): type this fully
|
|
436
|
-
return Object.keys(this._localizations);
|
|
437
|
-
}
|
|
438
|
-
|
|
439
|
-
get hasChanges() {
|
|
440
|
-
// @ts-expect-error TODO(Phase 2e): type this fully
|
|
441
|
-
return this._concept.hasChanges
|
|
442
|
-
// @ts-expect-error TODO(Phase 2e): type this fully
|
|
443
|
-
|| this._languages.hasChanges
|
|
444
|
-
// @ts-expect-error TODO(Phase 2e): type this fully
|
|
445
|
-
|| Object.values(this._localizations).some(lc => lc.hasChanges);
|
|
446
|
-
}
|
|
447
|
-
|
|
448
|
-
localization(lang) {
|
|
449
|
-
// @ts-expect-error TODO(Phase 2e): type this fully
|
|
450
|
-
return this._localizations[lang] ?? null;
|
|
451
|
-
}
|
|
452
|
-
|
|
453
|
-
get stats() {
|
|
454
|
-
// @ts-expect-error TODO(Phase 2e): type this fully
|
|
455
|
-
if (this._statsCache === undefined) {
|
|
456
|
-
// @ts-expect-error TODO(Phase 2e): type this fully
|
|
457
|
-
this._statsCache = collectStats(this.walk());
|
|
458
|
-
}
|
|
459
|
-
// @ts-expect-error TODO(Phase 2e): type this fully
|
|
460
|
-
return this._statsCache;
|
|
461
|
-
}
|
|
462
|
-
|
|
463
|
-
get similarity() {
|
|
464
|
-
// @ts-expect-error TODO(Phase 2e): type this fully
|
|
465
|
-
if (this._similarityCache === undefined) {
|
|
466
|
-
// @ts-expect-error TODO(Phase 2e): type this fully
|
|
467
|
-
this._similarityCache = computeSimilarity(this.stats.total, this._totalItems);
|
|
468
|
-
}
|
|
469
|
-
// @ts-expect-error TODO(Phase 2e): type this fully
|
|
470
|
-
return this._similarityCache;
|
|
471
|
-
}
|
|
472
|
-
|
|
473
|
-
*walk() {
|
|
474
|
-
// @ts-expect-error TODO(Phase 2e): type this fully
|
|
475
|
-
yield* this._concept.walk();
|
|
476
|
-
// @ts-expect-error TODO(Phase 2e): type this fully
|
|
477
|
-
yield* walkList('languages', this._languages);
|
|
478
|
-
// @ts-expect-error TODO(Phase 2e): type this fully
|
|
479
|
-
for (const [lang, lc] of Object.entries(this._localizations)) {
|
|
480
|
-
// @ts-expect-error TODO(Phase 2e): type this fully
|
|
481
|
-
for (const { path, change } of lc.walk(`localizations.${lang}`)) {
|
|
482
|
-
yield { path, change, language: lang };
|
|
483
|
-
}
|
|
484
|
-
}
|
|
485
|
-
}
|
|
486
|
-
|
|
487
|
-
toJSON() {
|
|
488
|
-
const obj = {};
|
|
489
|
-
// @ts-expect-error TODO(Phase 2e): type this fully
|
|
490
|
-
if (this._oldId != null) obj.old_id = this._oldId;
|
|
491
|
-
// @ts-expect-error TODO(Phase 2e): type this fully
|
|
492
|
-
if (this._newId != null) obj.new_id = this._newId;
|
|
493
|
-
// @ts-expect-error TODO(Phase 2e): type this fully
|
|
494
|
-
obj.concept = this._concept.toJSON();
|
|
495
|
-
// @ts-expect-error TODO(Phase 2e): type this fully
|
|
496
|
-
obj.languages = this._languages.toJSON();
|
|
497
|
-
// @ts-expect-error TODO(Phase 2e): type this fully
|
|
498
|
-
obj.localizations = {};
|
|
499
|
-
// @ts-expect-error TODO(Phase 2e): type this fully
|
|
500
|
-
for (const [lang, lc] of Object.entries(this._localizations)) {
|
|
501
|
-
// @ts-expect-error TODO(Phase 2e): type this fully
|
|
502
|
-
obj.localizations[lang] = lc.toJSON();
|
|
503
|
-
}
|
|
504
|
-
// @ts-expect-error TODO(Phase 2e): type this fully
|
|
505
|
-
obj.total_items = this._totalItems;
|
|
506
|
-
return obj;
|
|
507
|
-
}
|
|
508
|
-
|
|
509
|
-
static fromJSON(data) {
|
|
510
|
-
return new ConceptDiff(data);
|
|
511
|
-
}
|
|
512
|
-
}
|
|
513
|
-
|
|
514
|
-
export function diffConcepts(oldConcept, newConcept, language) {
|
|
515
|
-
if (!oldConcept && !newConcept) {
|
|
516
|
-
return new ConceptDiff({});
|
|
517
|
-
}
|
|
518
|
-
|
|
519
|
-
const oldId = oldConcept?.id ?? null;
|
|
520
|
-
const newId = newConcept?.id ?? null;
|
|
521
|
-
const oldLangs = oldConcept?.languages ?? [];
|
|
522
|
-
const newLangs = newConcept?.languages ?? [];
|
|
523
|
-
|
|
524
|
-
let langs;
|
|
525
|
-
if (language === 'all') {
|
|
526
|
-
langs = union(oldLangs, newLangs);
|
|
527
|
-
} else if (language) {
|
|
528
|
-
if (!oldLangs.includes(language) && !newLangs.includes(language)) {
|
|
529
|
-
throw new Error(
|
|
530
|
-
`diffConcepts: language '${language}' not present in either concept ` +
|
|
531
|
-
`(available: ${union(oldLangs, newLangs).join(', ') || 'none'})`,
|
|
532
|
-
);
|
|
533
|
-
}
|
|
534
|
-
langs = [language];
|
|
535
|
-
} else {
|
|
536
|
-
// No language specified: diff everything that exists. Avoids the
|
|
537
|
-
// silent 'eng' fallback that masked changes in concepts without an
|
|
538
|
-
// English localization.
|
|
539
|
-
langs = union(oldLangs, newLangs);
|
|
540
|
-
}
|
|
541
|
-
|
|
542
|
-
const conceptDiff = diffConceptLevel(oldConcept ?? null, newConcept ?? null);
|
|
543
|
-
const languageDiff = diffLanguageSets(oldLangs, newLangs);
|
|
544
|
-
const localizations = {};
|
|
545
|
-
for (const lang of langs) {
|
|
546
|
-
const oldLoc = oldConcept?.localization(lang) ?? null;
|
|
547
|
-
const newLoc = newConcept?.localization(lang) ?? null;
|
|
548
|
-
const lcDiff = diffLocalizedConcepts(oldLoc, newLoc);
|
|
549
|
-
localizations[lang] = lcDiff;
|
|
550
|
-
}
|
|
551
|
-
|
|
552
|
-
const totalItems = countConceptItems(oldConcept ?? null, newConcept ?? null, langs);
|
|
553
|
-
|
|
554
|
-
return new ConceptDiff({
|
|
555
|
-
oldId,
|
|
556
|
-
newId,
|
|
557
|
-
concept: conceptDiff,
|
|
558
|
-
languages: languageDiff,
|
|
559
|
-
localizations,
|
|
560
|
-
totalItems,
|
|
561
|
-
});
|
|
562
|
-
}
|
|
563
|
-
|
|
564
|
-
export function diffLocalizedConcepts(oldLoc, newLoc) {
|
|
565
|
-
if (!oldLoc && !newLoc) {
|
|
566
|
-
return new LocalizedConceptDiff({ languageCode: null });
|
|
567
|
-
}
|
|
568
|
-
|
|
569
|
-
const lang = newLoc?.languageCode ?? oldLoc?.languageCode ?? null;
|
|
570
|
-
|
|
571
|
-
if (!oldLoc) {
|
|
572
|
-
return fullyDiff(newLoc, lang, 'added');
|
|
573
|
-
}
|
|
574
|
-
if (!newLoc) {
|
|
575
|
-
return fullyDiff(oldLoc, lang, 'removed');
|
|
576
|
-
}
|
|
577
|
-
|
|
578
|
-
return new LocalizedConceptDiff({
|
|
579
|
-
languageCode: lang,
|
|
580
|
-
designations: diffDesignations(oldLoc.terms ?? [], newLoc.terms ?? []),
|
|
581
|
-
definitions: diffTextList(oldLoc.definitions ?? [], newLoc.definitions ?? []),
|
|
582
|
-
notes: diffTextList(oldLoc.notes ?? [], newLoc.notes ?? []),
|
|
583
|
-
examples: diffTextList(oldLoc.examples ?? [], newLoc.examples ?? []),
|
|
584
|
-
sources: diffSources(oldLoc.sources ?? [], newLoc.sources ?? []),
|
|
585
|
-
dates: diffDates(oldLoc.dates ?? [], newLoc.dates ?? []),
|
|
586
|
-
related: diffRelated(oldLoc.related ?? [], newLoc.related ?? []),
|
|
587
|
-
metadata: diffMetadata(oldLoc, newLoc, LOCALIZATION_METADATA_FIELDS),
|
|
588
|
-
totalItems: countLocalizedItems(oldLoc, newLoc),
|
|
589
|
-
});
|
|
590
|
-
}
|
|
591
|
-
|
|
592
|
-
function diffConceptLevel(oldConcept, newConcept) {
|
|
593
|
-
if (!oldConcept && !newConcept) {
|
|
594
|
-
return new ConceptLevelDiff({});
|
|
595
|
-
}
|
|
596
|
-
|
|
597
|
-
const Direction = !oldConcept ? 'added' : !newConcept ? 'removed' : null;
|
|
598
|
-
|
|
599
|
-
if (Direction) {
|
|
600
|
-
const c = (oldConcept ?? newConcept);
|
|
601
|
-
return new ConceptLevelDiff({
|
|
602
|
-
sources: fullListDiff(c.sources ?? [], Direction),
|
|
603
|
-
dates: fullListDiff(c.dates ?? [], Direction),
|
|
604
|
-
relatedConcepts: fullListDiff(c.relatedConcepts ?? [], Direction),
|
|
605
|
-
relations: fullListDiff(c.relations ?? [], Direction),
|
|
606
|
-
groups: fullListDiff(c.groups ?? [], Direction),
|
|
607
|
-
sections: fullListDiff(c.sections ?? [], Direction),
|
|
608
|
-
tags: fullListDiff(c.tags ?? [], Direction),
|
|
609
|
-
metadata: fullMetadataDiff(c, CONCEPT_METADATA_FIELDS, Direction),
|
|
610
|
-
});
|
|
611
|
-
}
|
|
612
|
-
|
|
613
|
-
return new ConceptLevelDiff({
|
|
614
|
-
sources: diffSources(oldConcept.sources ?? [], newConcept.sources ?? []),
|
|
615
|
-
dates: diffDates(oldConcept.dates ?? [], newConcept.dates ?? []),
|
|
616
|
-
relatedConcepts: diffRelatedConcepts(oldConcept.relatedConcepts ?? [], newConcept.relatedConcepts ?? []),
|
|
617
|
-
relations: diffHyperedges(
|
|
618
|
-
oldConcept.relations ?? [],
|
|
619
|
-
newConcept.relations ?? [],
|
|
620
|
-
),
|
|
621
|
-
groups: diffStringSet(oldConcept.groups ?? [], newConcept.groups ?? []),
|
|
622
|
-
sections: diffStringSet(oldConcept.sections ?? [], newConcept.sections ?? []),
|
|
623
|
-
tags: diffStringSet(oldConcept.tags ?? [], newConcept.tags ?? []),
|
|
624
|
-
metadata: diffMetadata(oldConcept, newConcept, CONCEPT_METADATA_FIELDS),
|
|
625
|
-
});
|
|
626
|
-
}
|
|
627
|
-
|
|
628
|
-
function diffLanguageSets(oldLangs, newLangs) {
|
|
629
|
-
const oldSet = new Set(oldLangs);
|
|
630
|
-
const newSet = new Set(newLangs);
|
|
631
|
-
const added = newLangs
|
|
632
|
-
.filter(l => !oldSet.has(l))
|
|
633
|
-
.sort()
|
|
634
|
-
.map(l => new Added({ value: l }));
|
|
635
|
-
const removed = oldLangs
|
|
636
|
-
.filter(l => !newSet.has(l))
|
|
637
|
-
.sort()
|
|
638
|
-
.map(l => new Removed({ value: l }));
|
|
639
|
-
return new ListDiff({ added, removed, changed: [] });
|
|
640
|
-
}
|
|
641
|
-
|
|
642
|
-
function fullyDiff(loc, lang, direction) {
|
|
643
|
-
const ChangeClass = direction === 'added' ? Added : Removed;
|
|
644
|
-
const key = direction;
|
|
645
|
-
const lc = new LocalizedConceptDiff({
|
|
646
|
-
languageCode: lang,
|
|
647
|
-
designations: new ListDiff({ [key]: (loc.terms ?? []).map(v => new ChangeClass({ value: v })) }),
|
|
648
|
-
definitions: new ListDiff({ [key]: (loc.definitions ?? []).map(v => new ChangeClass({ value: v })) }),
|
|
649
|
-
notes: new ListDiff({ [key]: (loc.notes ?? []).map(v => new ChangeClass({ value: v })) }),
|
|
650
|
-
examples: new ListDiff({ [key]: (loc.examples ?? []).map(v => new ChangeClass({ value: v })) }),
|
|
651
|
-
sources: new ListDiff({ [key]: (loc.sources ?? []).map(v => new ChangeClass({ value: v })) }),
|
|
652
|
-
dates: new ListDiff({ [key]: (loc.dates ?? []).map(v => new ChangeClass({ value: v })) }),
|
|
653
|
-
related: new ListDiff({ [key]: (loc.related ?? []).map(v => new ChangeClass({ value: v })) }),
|
|
654
|
-
metadata: fullMetadataDiff(loc, LOCALIZATION_METADATA_FIELDS, direction),
|
|
655
|
-
totalItems: countLocalizedItems(direction === 'added' ? null : loc, direction === 'added' ? loc : null),
|
|
656
|
-
});
|
|
657
|
-
return lc;
|
|
658
|
-
}
|
|
659
|
-
|
|
660
|
-
function fullListDiff(items, direction) {
|
|
661
|
-
const ChangeClass = direction === 'added' ? Added : Removed;
|
|
662
|
-
return new ListDiff({ [direction]: items.map(v => new ChangeClass({ value: v })) });
|
|
663
|
-
}
|
|
664
|
-
|
|
665
|
-
function fullMetadataDiff(obj, fields, direction) {
|
|
666
|
-
const changes = {};
|
|
667
|
-
for (const field of fields) {
|
|
668
|
-
const val = obj[field];
|
|
669
|
-
if (val != null) {
|
|
670
|
-
changes[field] = new Changed({
|
|
671
|
-
oldValue: direction === 'added' ? null : val,
|
|
672
|
-
newValue: direction === 'added' ? val : null,
|
|
673
|
-
});
|
|
674
|
-
}
|
|
675
|
-
}
|
|
676
|
-
return new MetadataDiff({ changes });
|
|
677
|
-
}
|
|
678
|
-
|
|
679
|
-
function diffDesignations(oldTerms, newTerms) {
|
|
680
|
-
return diffSet(oldTerms, newTerms, {
|
|
681
|
-
identityKey: identityOf,
|
|
682
|
-
// @ts-expect-error TODO(Phase 2e): type this fully
|
|
683
|
-
textKey: d => d?.designation ?? '',
|
|
684
|
-
});
|
|
685
|
-
}
|
|
686
|
-
|
|
687
|
-
function diffTextList(oldItems, newItems) {
|
|
688
|
-
return diffList(oldItems, newItems, {
|
|
689
|
-
// @ts-expect-error TODO(Phase 2e): type this fully
|
|
690
|
-
textKey: d => d?.content ?? '',
|
|
691
|
-
});
|
|
692
|
-
}
|
|
693
|
-
|
|
694
|
-
function diffSources(oldSources, newSources) {
|
|
695
|
-
return diffSet(oldSources, newSources, {
|
|
696
|
-
identityKey: identityOf,
|
|
697
|
-
});
|
|
698
|
-
}
|
|
699
|
-
|
|
700
|
-
function diffDates(oldDates, newDates) {
|
|
701
|
-
return diffSet(oldDates, newDates, {
|
|
702
|
-
identityKey: identityOf,
|
|
703
|
-
// @ts-expect-error TODO(Phase 2e): type this fully
|
|
704
|
-
textKey: d => d?.date ?? '',
|
|
705
|
-
});
|
|
706
|
-
}
|
|
707
|
-
|
|
708
|
-
function diffRelated(oldRelated, newRelated) {
|
|
709
|
-
return diffSet(oldRelated, newRelated, {
|
|
710
|
-
identityKey: identityOf,
|
|
711
|
-
});
|
|
712
|
-
}
|
|
713
|
-
|
|
714
|
-
function diffRelatedConcepts(oldRC, newRC) {
|
|
715
|
-
return diffSet(oldRC, newRC, {
|
|
716
|
-
identityKey: identityOf,
|
|
717
|
-
});
|
|
718
|
-
}
|
|
719
|
-
|
|
720
|
-
// Diff two unified hyperedge arrays. Identity is polymorphic —
|
|
721
|
-
// dispatches via value.constructor.identityOf so PartitiveHyperedge
|
|
722
|
-
// and GenericHyperedge (and any future hyperedge subclass) coexist in
|
|
723
|
-
// the same list. Cross-type entries with matching identity are still
|
|
724
|
-
// treated as different (because their constructor differs and they
|
|
725
|
-
// live under different wire keys).
|
|
726
|
-
function diffHyperedges(oldR, newR) {
|
|
727
|
-
return diffSet(oldR, newR, {
|
|
728
|
-
identityKey: relationIdentityOf,
|
|
729
|
-
textKey: relationText,
|
|
730
|
-
});
|
|
731
|
-
}
|
|
732
|
-
|
|
733
|
-
function relationIdentityOf(value) {
|
|
734
|
-
if (value == null) return '';
|
|
735
|
-
const Cls = value.constructor;
|
|
736
|
-
if (typeof Cls?.identityOf === 'function') {
|
|
737
|
-
const typed = Cls.identityOf(value);
|
|
738
|
-
return `${Cls.name}::${typed}`;
|
|
739
|
-
}
|
|
740
|
-
return identityOf(value);
|
|
741
|
-
}
|
|
742
|
-
|
|
743
|
-
function filterListDiffByType(listDiff, Cls) {
|
|
744
|
-
if (!listDiff) return listDiff;
|
|
745
|
-
return new ListDiff({
|
|
746
|
-
added: listDiff.added.filter(e => e.value instanceof Cls),
|
|
747
|
-
removed: listDiff.removed.filter(e => e.value instanceof Cls),
|
|
748
|
-
changed: listDiff.changed.filter(e =>
|
|
749
|
-
(e.oldValue == null || e.oldValue instanceof Cls) &&
|
|
750
|
-
(e.newValue == null || e.newValue instanceof Cls)),
|
|
751
|
-
});
|
|
752
|
-
}
|
|
753
|
-
|
|
754
|
-
function relationText(r) {
|
|
755
|
-
if (!r) return '';
|
|
756
|
-
return canonicalJson(typeof r.toJSON === 'function' ? r.toJSON() : r);
|
|
757
|
-
}
|
|
758
|
-
|
|
759
|
-
function diffStringSet(oldStrings, newStrings) {
|
|
760
|
-
return diffSet(oldStrings, newStrings, {
|
|
761
|
-
identityKey: identityOf,
|
|
762
|
-
});
|
|
763
|
-
}
|
|
764
|
-
|
|
765
|
-
function diffMetadata(oldObj, newObj, fields) {
|
|
766
|
-
const changes = {};
|
|
767
|
-
for (const field of fields) {
|
|
768
|
-
const oldVal = oldObj[field];
|
|
769
|
-
const newVal = newObj[field];
|
|
770
|
-
if (oldVal !== newVal) {
|
|
771
|
-
changes[field] = new Changed({ oldValue: oldVal, newValue: newVal });
|
|
772
|
-
}
|
|
773
|
-
}
|
|
774
|
-
return new MetadataDiff({ changes });
|
|
775
|
-
}
|
|
776
|
-
|
|
777
|
-
function wrapListDiff(data) {
|
|
778
|
-
if (data instanceof ListDiff) return data;
|
|
779
|
-
return ListDiff.fromJSON(data ?? {});
|
|
780
|
-
}
|
|
781
|
-
|
|
782
|
-
function collectStats(walker) {
|
|
783
|
-
let added = 0;
|
|
784
|
-
let removed = 0;
|
|
785
|
-
let changed = 0;
|
|
786
|
-
for (const { change } of walker) {
|
|
787
|
-
if (change.type === 'added') added++;
|
|
788
|
-
else if (change.type === 'removed') removed++;
|
|
789
|
-
else if (change.type === 'changed') changed++;
|
|
790
|
-
}
|
|
791
|
-
return new DiffStats({ added, removed, changed });
|
|
792
|
-
}
|
|
793
|
-
|
|
794
|
-
function maxOf(a, b) {
|
|
795
|
-
return Math.max(a ?? 0, b ?? 0);
|
|
796
|
-
}
|
|
797
|
-
|
|
798
|
-
function countConceptItems(oldConcept, newConcept, langs) {
|
|
799
|
-
let count = 0;
|
|
800
|
-
|
|
801
|
-
count += maxOf(oldConcept?.sources?.length, newConcept?.sources?.length);
|
|
802
|
-
count += maxOf(oldConcept?.dates?.length, newConcept?.dates?.length);
|
|
803
|
-
count += maxOf(oldConcept?.relatedConcepts?.length, newConcept?.relatedConcepts?.length);
|
|
804
|
-
count += maxOf(
|
|
805
|
-
oldConcept?.relations?.length,
|
|
806
|
-
newConcept?.relations?.length,
|
|
807
|
-
);
|
|
808
|
-
count += maxOf(oldConcept?.groups?.length, newConcept?.groups?.length);
|
|
809
|
-
count += maxOf(oldConcept?.sections?.length, newConcept?.sections?.length);
|
|
810
|
-
count += maxOf(oldConcept?.tags?.length, newConcept?.tags?.length);
|
|
811
|
-
count += CONCEPT_METADATA_FIELDS.length;
|
|
812
|
-
|
|
813
|
-
const oldLangs = oldConcept?.languages ?? [];
|
|
814
|
-
const newLangs = newConcept?.languages ?? [];
|
|
815
|
-
count += maxOf(oldLangs.length, newLangs.length);
|
|
816
|
-
|
|
817
|
-
for (const lang of langs) {
|
|
818
|
-
const oldLoc = oldConcept?.localization(lang) ?? null;
|
|
819
|
-
const newLoc = newConcept?.localization(lang) ?? null;
|
|
820
|
-
count += countLocalizedItems(oldLoc, newLoc);
|
|
821
|
-
}
|
|
822
|
-
|
|
823
|
-
return count;
|
|
824
|
-
}
|
|
825
|
-
|
|
826
|
-
function countLocalizedItems(oldLoc, newLoc) {
|
|
827
|
-
let count = 0;
|
|
828
|
-
count += maxOf(oldLoc?.terms?.length, newLoc?.terms?.length);
|
|
829
|
-
count += maxOf(oldLoc?.definitions?.length, newLoc?.definitions?.length);
|
|
830
|
-
count += maxOf(oldLoc?.notes?.length, newLoc?.notes?.length);
|
|
831
|
-
count += maxOf(oldLoc?.examples?.length, newLoc?.examples?.length);
|
|
832
|
-
count += maxOf(oldLoc?.sources?.length, newLoc?.sources?.length);
|
|
833
|
-
count += maxOf(oldLoc?.dates?.length, newLoc?.dates?.length);
|
|
834
|
-
count += maxOf(oldLoc?.related?.length, newLoc?.related?.length);
|
|
835
|
-
count += LOCALIZATION_METADATA_FIELDS.length;
|
|
836
|
-
return count;
|
|
837
|
-
}
|
|
838
|
-
|
|
839
|
-
function* walkList(section, listDiff) {
|
|
840
|
-
for (let i = 0; i < listDiff.added.length; i++) {
|
|
841
|
-
yield { path: `${section}.added[${i}]`, change: listDiff.added[i] };
|
|
842
|
-
}
|
|
843
|
-
for (let i = 0; i < listDiff.removed.length; i++) {
|
|
844
|
-
yield { path: `${section}.removed[${i}]`, change: listDiff.removed[i] };
|
|
845
|
-
}
|
|
846
|
-
for (let i = 0; i < listDiff.changed.length; i++) {
|
|
847
|
-
yield { path: `${section}.changed[${i}]`, change: listDiff.changed[i] };
|
|
848
|
-
}
|
|
849
|
-
}
|
|
850
|
-
|
|
851
|
-
function union(a, b) {
|
|
852
|
-
return [...new Set([...a, ...b])].sort();
|
|
853
|
-
}
|