@party-stack/ontology 0.19.0 → 0.20.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/lib/OntologyPullConfig.d.ts +15 -13
- package/lib/OntologyPullConfig.d.ts.map +1 -1
- package/lib/OntologyPullConfig.js +0 -1
- package/lib/cli/format.d.ts +4 -0
- package/lib/cli/format.d.ts.map +1 -0
- package/lib/cli/format.js +19 -0
- package/lib/cli/format.js.map +1 -0
- package/lib/cli/generate.d.ts +6 -5
- package/lib/cli/generate.d.ts.map +1 -1
- package/lib/cli/generate.js +86 -110
- package/lib/cli/generate.js.map +1 -1
- package/lib/cli/index.d.ts +1 -3
- package/lib/cli/index.js +42 -59
- package/lib/cli/index.js.map +1 -1
- package/lib/cli/pull.d.ts +3 -1
- package/lib/cli/pull.d.ts.map +1 -1
- package/lib/cli/pull.js +42 -60
- package/lib/cli/pull.js.map +1 -1
- package/lib/examples/blog.d.ts +347 -345
- package/lib/examples/blog.d.ts.map +1 -1
- package/lib/examples/blog.js +350 -337
- package/lib/examples/blog.js.map +1 -1
- package/lib/examples/blog.live-queries.d.ts +8 -3
- package/lib/examples/blog.live-queries.d.ts.map +1 -1
- package/lib/examples/blog.live-queries.js +28 -44
- package/lib/examples/blog.live-queries.js.map +1 -1
- package/lib/examples/generated/constants.d.ts +1 -2
- package/lib/examples/generated/constants.js +0 -2
- package/lib/examples/generated/live.d.ts +5 -3
- package/lib/examples/generated/live.d.ts.map +1 -1
- package/lib/examples/generated/live.js +12 -8
- package/lib/examples/generated/live.js.map +1 -1
- package/lib/examples/generated/types.d.ts +52 -50
- package/lib/examples/generated/types.d.ts.map +1 -1
- package/lib/examples/generated/types.js +0 -2
- package/lib/generate/builders.d.ts +8 -5
- package/lib/generate/builders.d.ts.map +1 -1
- package/lib/generate/builders.js +53 -55
- package/lib/generate/builders.js.map +1 -1
- package/lib/generate/constants.d.ts +3 -1
- package/lib/generate/constants.d.ts.map +1 -1
- package/lib/generate/constants.js +23 -26
- package/lib/generate/constants.js.map +1 -1
- package/lib/generate/index.d.ts +6 -6
- package/lib/generate/index.js +6 -6
- package/lib/generate/live.d.ts +8 -6
- package/lib/generate/live.d.ts.map +1 -1
- package/lib/generate/live.js +43 -42
- package/lib/generate/live.js.map +1 -1
- package/lib/generate/ontology.d.ts +4 -2
- package/lib/generate/ontology.d.ts.map +1 -1
- package/lib/generate/ontology.js +453 -354
- package/lib/generate/ontology.js.map +1 -1
- package/lib/generate/types.d.ts +7 -5
- package/lib/generate/types.d.ts.map +1 -1
- package/lib/generate/types.js +190 -262
- package/lib/generate/types.js.map +1 -1
- package/lib/generate/utils/buildJsDocs.d.ts +7 -4
- package/lib/generate/utils/buildJsDocs.d.ts.map +1 -1
- package/lib/generate/utils/buildJsDocs.js +14 -10
- package/lib/generate/utils/buildJsDocs.js.map +1 -1
- package/lib/index.d.ts +30 -13
- package/lib/index.js +18 -10
- package/lib/infer.d.ts +129 -151
- package/lib/infer.d.ts.map +1 -1
- package/lib/infer.js +10 -6
- package/lib/infer.js.map +1 -1
- package/lib/installation/createMetaOntologyConfiguration.d.ts +6 -3
- package/lib/installation/createMetaOntologyConfiguration.d.ts.map +1 -1
- package/lib/installation/createMetaOntologyConfiguration.js +13 -11
- package/lib/installation/createMetaOntologyConfiguration.js.map +1 -1
- package/lib/installation/createOntologyBackendInstallation.d.ts +3 -1
- package/lib/installation/createOntologyBackendInstallation.d.ts.map +1 -1
- package/lib/installation/createOntologyBackendInstallation.js +205 -268
- package/lib/installation/createOntologyBackendInstallation.js.map +1 -1
- package/lib/installation/index.d.ts +4 -4
- package/lib/installation/index.js +3 -3
- package/lib/installation/types.d.ts +83 -80
- package/lib/installation/types.d.ts.map +1 -1
- package/lib/installation/types.js +0 -1
- package/lib/ir/generated/builders.d.ts +294 -382
- package/lib/ir/generated/builders.d.ts.map +1 -1
- package/lib/ir/generated/builders.js +180 -119
- package/lib/ir/generated/builders.js.map +1 -1
- package/lib/ir/generated/constants.d.ts +137 -135
- package/lib/ir/generated/constants.d.ts.map +1 -1
- package/lib/ir/generated/constants.js +162 -129
- package/lib/ir/generated/constants.js.map +1 -1
- package/lib/ir/generated/types.d.ts +236 -234
- package/lib/ir/generated/types.d.ts.map +1 -1
- package/lib/ir/generated/types.js +0 -2
- package/lib/ir/index.d.ts +4 -4
- package/lib/ir/index.js +3 -4
- package/lib/ir/schema.d.ts +2174 -2172
- package/lib/ir/schema.d.ts.map +1 -1
- package/lib/ir/schema.js +1184 -1343
- package/lib/ir/schema.js.map +1 -1
- package/lib/ir/validate.d.ts +5 -3
- package/lib/ir/validate.d.ts.map +1 -1
- package/lib/ir/validate.js +589 -707
- package/lib/ir/validate.js.map +1 -1
- package/lib/json/index.d.ts +10 -8
- package/lib/json/index.d.ts.map +1 -1
- package/lib/json/index.js +101 -135
- package/lib/json/index.js.map +1 -1
- package/lib/lenses.d.ts +7 -4
- package/lib/lenses.d.ts.map +1 -1
- package/lib/lenses.js +96 -132
- package/lib/lenses.js.map +1 -1
- package/lib/live/LiveOntology.d.ts +55 -60
- package/lib/live/LiveOntology.d.ts.map +1 -1
- package/lib/live/LiveOntology.js +98 -124
- package/lib/live/LiveOntology.js.map +1 -1
- package/lib/live/OntologyBackendAdapter.d.ts +84 -77
- package/lib/live/OntologyBackendAdapter.d.ts.map +1 -1
- package/lib/live/OntologyBackendAdapter.js +0 -1
- package/lib/live/actions/createLiveOntologyAction.d.ts +27 -24
- package/lib/live/actions/createLiveOntologyAction.d.ts.map +1 -1
- package/lib/live/actions/createLiveOntologyAction.js +24 -21
- package/lib/live/actions/createLiveOntologyAction.js.map +1 -1
- package/lib/live/actions/createLiveOntologyActions.d.ts +23 -20
- package/lib/live/actions/createLiveOntologyActions.d.ts.map +1 -1
- package/lib/live/actions/createLiveOntologyActions.js +131 -161
- package/lib/live/actions/createLiveOntologyActions.js.map +1 -1
- package/lib/live/actions/prepareActionParameters.d.ts +14 -11
- package/lib/live/actions/prepareActionParameters.d.ts.map +1 -1
- package/lib/live/actions/prepareActionParameters.js +190 -228
- package/lib/live/actions/prepareActionParameters.js.map +1 -1
- package/lib/live/attachments/attachmentSources.d.ts +7 -4
- package/lib/live/attachments/attachmentSources.d.ts.map +1 -1
- package/lib/live/attachments/attachmentSources.js +55 -71
- package/lib/live/attachments/attachmentSources.js.map +1 -1
- package/lib/live/attachments/createLiveOntologyAttachments.d.ts +47 -44
- package/lib/live/attachments/createLiveOntologyAttachments.d.ts.map +1 -1
- package/lib/live/attachments/createLiveOntologyAttachments.js +65 -83
- package/lib/live/attachments/createLiveOntologyAttachments.js.map +1 -1
- package/lib/live/attachments/types.d.ts +10 -8
- package/lib/live/attachments/types.d.ts.map +1 -1
- package/lib/live/attachments/types.js +0 -1
- package/lib/live/attachments/unsupportedOntologyAttachmentsAdapter.d.ts +3 -1
- package/lib/live/attachments/unsupportedOntologyAttachmentsAdapter.d.ts.map +1 -1
- package/lib/live/attachments/unsupportedOntologyAttachmentsAdapter.js +5 -3
- package/lib/live/attachments/unsupportedOntologyAttachmentsAdapter.js.map +1 -1
- package/lib/live/expression.d.ts +16 -13
- package/lib/live/expression.d.ts.map +1 -1
- package/lib/live/expression.js +142 -223
- package/lib/live/expression.js.map +1 -1
- package/lib/live/index.d.ts +12 -9
- package/lib/live/index.js +6 -8
- package/lib/live/mutators/OntologyEdits.d.ts +12 -9
- package/lib/live/mutators/OntologyEdits.d.ts.map +1 -1
- package/lib/live/mutators/OntologyEdits.js +57 -74
- package/lib/live/mutators/OntologyEdits.js.map +1 -1
- package/lib/live/mutators/createMutatorTx.d.ts +7 -5
- package/lib/live/mutators/createMutatorTx.d.ts.map +1 -1
- package/lib/live/mutators/createMutatorTx.js +53 -69
- package/lib/live/mutators/createMutatorTx.js.map +1 -1
- package/lib/live/mutators/runOptimisticAction.d.ts +16 -13
- package/lib/live/mutators/runOptimisticAction.d.ts.map +1 -1
- package/lib/live/mutators/runOptimisticAction.js +26 -26
- package/lib/live/mutators/runOptimisticAction.js.map +1 -1
- package/lib/live/mutators/types.d.ts +18 -16
- package/lib/live/mutators/types.d.ts.map +1 -1
- package/lib/live/mutators/types.js +0 -1
- package/lib/live/objects/OntologyObject.d.ts +2 -0
- package/lib/live/objects/OntologyObject.d.ts.map +1 -1
- package/lib/live/objects/OntologyObject.js +0 -1
- package/lib/live/objects/createLiveOntologyObjectCollection.d.ts +14 -11
- package/lib/live/objects/createLiveOntologyObjectCollection.d.ts.map +1 -1
- package/lib/live/objects/createLiveOntologyObjectCollection.js +62 -49
- package/lib/live/objects/createLiveOntologyObjectCollection.js.map +1 -1
- package/lib/live/objects/ontologyObjectCollectionId.d.ts +2 -0
- package/lib/live/objects/ontologyObjectCollectionId.d.ts.map +1 -1
- package/lib/live/objects/ontologyObjectCollectionId.js +6 -2
- package/lib/live/objects/ontologyObjectCollectionId.js.map +1 -1
- package/lib/live/outbox/createOntologyOutbox.d.ts +16 -14
- package/lib/live/outbox/createOntologyOutbox.d.ts.map +1 -1
- package/lib/live/outbox/createOntologyOutbox.js +275 -326
- package/lib/live/outbox/createOntologyOutbox.js.map +1 -1
- package/lib/live/outbox/leaderExecutor.d.ts +15 -13
- package/lib/live/outbox/leaderExecutor.d.ts.map +1 -1
- package/lib/live/outbox/leaderExecutor.js +114 -153
- package/lib/live/outbox/leaderExecutor.js.map +1 -1
- package/lib/live/outbox/outboxService.d.ts +4 -2
- package/lib/live/outbox/outboxService.d.ts.map +1 -1
- package/lib/live/outbox/outboxService.js +66 -71
- package/lib/live/outbox/outboxService.js.map +1 -1
- package/lib/live/outbox/projectionManager.d.ts +26 -24
- package/lib/live/outbox/projectionManager.d.ts.map +1 -1
- package/lib/live/outbox/projectionManager.js +121 -147
- package/lib/live/outbox/projectionManager.js.map +1 -1
- package/lib/live/outbox/repository.d.ts +27 -25
- package/lib/live/outbox/repository.d.ts.map +1 -1
- package/lib/live/outbox/repository.js +192 -241
- package/lib/live/outbox/repository.js.map +1 -1
- package/lib/live/outbox/service.d.ts +52 -50
- package/lib/live/outbox/service.d.ts.map +1 -1
- package/lib/live/outbox/service.js +5 -1
- package/lib/live/outbox/service.js.map +1 -1
- package/lib/live/outbox/types.d.ts +35 -33
- package/lib/live/outbox/types.d.ts.map +1 -1
- package/lib/live/outbox/types.js +10 -6
- package/lib/live/outbox/types.js.map +1 -1
- package/lib/live/waitForCollectionReady.d.ts +3 -1
- package/lib/live/waitForCollectionReady.d.ts.map +1 -1
- package/lib/live/waitForCollectionReady.js +44 -65
- package/lib/live/waitForCollectionReady.js.map +1 -1
- package/lib/meta/createLocalMetaOntologyBackendAdapter.d.ts +5 -2
- package/lib/meta/createLocalMetaOntologyBackendAdapter.d.ts.map +1 -1
- package/lib/meta/createLocalMetaOntologyBackendAdapter.js +37 -39
- package/lib/meta/createLocalMetaOntologyBackendAdapter.js.map +1 -1
- package/lib/meta/generated/constants.d.ts +137 -135
- package/lib/meta/generated/constants.d.ts.map +1 -1
- package/lib/meta/generated/constants.js +162 -129
- package/lib/meta/generated/constants.js.map +1 -1
- package/lib/meta/generated/live.d.ts +5 -2
- package/lib/meta/generated/live.d.ts.map +1 -1
- package/lib/meta/generated/live.js +12 -8
- package/lib/meta/generated/live.js.map +1 -1
- package/lib/meta/generated/types.d.ts +233 -231
- package/lib/meta/generated/types.d.ts.map +1 -1
- package/lib/meta/generated/types.js +0 -2
- package/lib/meta/ontology.d.ts +23 -21
- package/lib/meta/ontology.d.ts.map +1 -1
- package/lib/meta/ontology.js +100 -104
- package/lib/meta/ontology.js.map +1 -1
- package/lib/meta/pull.d.ts +8 -6
- package/lib/meta/pull.d.ts.map +1 -1
- package/lib/meta/pull.js +39 -52
- package/lib/meta/pull.js.map +1 -1
- package/lib/utils/index.d.ts +8 -8
- package/lib/utils/index.js +5 -6
- package/lib/utils/links.d.ts +34 -31
- package/lib/utils/links.d.ts.map +1 -1
- package/lib/utils/links.js +10 -17
- package/lib/utils/links.js.map +1 -1
- package/lib/utils/paths.d.ts +2 -0
- package/lib/utils/paths.d.ts.map +1 -1
- package/lib/utils/paths.js +32 -44
- package/lib/utils/paths.js.map +1 -1
- package/lib/utils/provide.d.ts +2 -0
- package/lib/utils/provide.d.ts.map +1 -1
- package/lib/utils/provide.js +7 -9
- package/lib/utils/provide.js.map +1 -1
- package/lib/utils/targets.d.ts +20 -18
- package/lib/utils/targets.d.ts.map +1 -1
- package/lib/utils/targets.js +0 -1
- package/lib/utils/typeNames.d.ts +10 -8
- package/lib/utils/typeNames.d.ts.map +1 -1
- package/lib/utils/typeNames.js +0 -1
- package/lib/utils/types.d.ts +6 -4
- package/lib/utils/types.d.ts.map +1 -1
- package/lib/utils/types.js +38 -38
- package/lib/utils/types.js.map +1 -1
- package/lib/utils/uncertain.d.ts +5 -3
- package/lib/utils/uncertain.d.ts.map +1 -1
- package/lib/utils/uncertain.js +11 -9
- package/lib/utils/uncertain.js.map +1 -1
- package/lib/utils/validation.d.ts +4 -2
- package/lib/utils/validation.d.ts.map +1 -1
- package/lib/utils/validation.js +0 -1
- package/lib/utils/values.d.ts +18 -18
- package/lib/utils/values.d.ts.map +1 -1
- package/lib/utils/values.js +0 -1
- package/package.json +22 -26
- package/lib/OntologyPullConfig.js.map +0 -1
- package/lib/cli/index.d.ts.map +0 -1
- package/lib/cli/index.test.d.ts +0 -2
- package/lib/cli/index.test.d.ts.map +0 -1
- package/lib/cli/index.test.js +0 -34
- package/lib/cli/index.test.js.map +0 -1
- package/lib/cli/pull.test.d.ts +0 -2
- package/lib/cli/pull.test.d.ts.map +0 -1
- package/lib/cli/pull.test.js +0 -125
- package/lib/cli/pull.test.js.map +0 -1
- package/lib/examples/generated/constants.d.ts.map +0 -1
- package/lib/examples/generated/constants.js.map +0 -1
- package/lib/examples/generated/types.js.map +0 -1
- package/lib/generate/builders.test.d.ts +0 -2
- package/lib/generate/builders.test.d.ts.map +0 -1
- package/lib/generate/builders.test.js +0 -49
- package/lib/generate/builders.test.js.map +0 -1
- package/lib/generate/index.d.ts.map +0 -1
- package/lib/generate/index.js.map +0 -1
- package/lib/generate/live.test.d.ts +0 -2
- package/lib/generate/live.test.d.ts.map +0 -1
- package/lib/generate/live.test.js +0 -22
- package/lib/generate/live.test.js.map +0 -1
- package/lib/generate/ontology.test.d.ts +0 -2
- package/lib/generate/ontology.test.d.ts.map +0 -1
- package/lib/generate/ontology.test.js +0 -157
- package/lib/generate/ontology.test.js.map +0 -1
- package/lib/generate/types.test.d.ts +0 -2
- package/lib/generate/types.test.d.ts.map +0 -1
- package/lib/generate/types.test.js +0 -304
- package/lib/generate/types.test.js.map +0 -1
- package/lib/index.d.ts.map +0 -1
- package/lib/index.js.map +0 -1
- package/lib/infer.test.d.ts +0 -2
- package/lib/infer.test.d.ts.map +0 -1
- package/lib/infer.test.js +0 -125
- package/lib/infer.test.js.map +0 -1
- package/lib/installation/createMetaOntologyConfiguration.test.d.ts +0 -2
- package/lib/installation/createMetaOntologyConfiguration.test.d.ts.map +0 -1
- package/lib/installation/createMetaOntologyConfiguration.test.js +0 -20
- package/lib/installation/createMetaOntologyConfiguration.test.js.map +0 -1
- package/lib/installation/createOntologyBackendInstallation.test.d.ts +0 -2
- package/lib/installation/createOntologyBackendInstallation.test.d.ts.map +0 -1
- package/lib/installation/createOntologyBackendInstallation.test.js +0 -320
- package/lib/installation/createOntologyBackendInstallation.test.js.map +0 -1
- package/lib/installation/index.d.ts.map +0 -1
- package/lib/installation/index.js.map +0 -1
- package/lib/installation/types.js.map +0 -1
- package/lib/ir/generated/types.js.map +0 -1
- package/lib/ir/index.d.ts.map +0 -1
- package/lib/ir/index.js.map +0 -1
- package/lib/ir/validate.test.d.ts +0 -2
- package/lib/ir/validate.test.d.ts.map +0 -1
- package/lib/ir/validate.test.js +0 -1061
- package/lib/ir/validate.test.js.map +0 -1
- package/lib/json/index.test.d.ts +0 -2
- package/lib/json/index.test.d.ts.map +0 -1
- package/lib/json/index.test.js +0 -142
- package/lib/json/index.test.js.map +0 -1
- package/lib/lenses.test.d.ts +0 -2
- package/lib/lenses.test.d.ts.map +0 -1
- package/lib/lenses.test.js +0 -80
- package/lib/lenses.test.js.map +0 -1
- package/lib/live/LiveOntology.test.d.ts +0 -2
- package/lib/live/LiveOntology.test.d.ts.map +0 -1
- package/lib/live/LiveOntology.test.js +0 -507
- package/lib/live/LiveOntology.test.js.map +0 -1
- package/lib/live/OntologyBackendAdapter.js.map +0 -1
- package/lib/live/actions/createLiveOntologyAction.test.d.ts +0 -2
- package/lib/live/actions/createLiveOntologyAction.test.d.ts.map +0 -1
- package/lib/live/actions/createLiveOntologyAction.test.js +0 -232
- package/lib/live/actions/createLiveOntologyAction.test.js.map +0 -1
- package/lib/live/actions/prepareActionParameters.test.d.ts +0 -2
- package/lib/live/actions/prepareActionParameters.test.d.ts.map +0 -1
- package/lib/live/actions/prepareActionParameters.test.js +0 -165
- package/lib/live/actions/prepareActionParameters.test.js.map +0 -1
- package/lib/live/attachments/attachmentMetadata.test.d.ts +0 -2
- package/lib/live/attachments/attachmentMetadata.test.d.ts.map +0 -1
- package/lib/live/attachments/attachmentMetadata.test.js +0 -73
- package/lib/live/attachments/attachmentMetadata.test.js.map +0 -1
- package/lib/live/attachments/createLiveOntologyAttachments.test.d.ts +0 -2
- package/lib/live/attachments/createLiveOntologyAttachments.test.d.ts.map +0 -1
- package/lib/live/attachments/createLiveOntologyAttachments.test.js +0 -363
- package/lib/live/attachments/createLiveOntologyAttachments.test.js.map +0 -1
- package/lib/live/attachments/types.js.map +0 -1
- package/lib/live/expression.test.d.ts +0 -2
- package/lib/live/expression.test.d.ts.map +0 -1
- package/lib/live/expression.test.js +0 -311
- package/lib/live/expression.test.js.map +0 -1
- package/lib/live/index.d.ts.map +0 -1
- package/lib/live/index.js.map +0 -1
- package/lib/live/mutators/OntologyEdits.test.d.ts +0 -2
- package/lib/live/mutators/OntologyEdits.test.d.ts.map +0 -1
- package/lib/live/mutators/OntologyEdits.test.js +0 -85
- package/lib/live/mutators/OntologyEdits.test.js.map +0 -1
- package/lib/live/mutators/createMutatorTx.test.d.ts +0 -2
- package/lib/live/mutators/createMutatorTx.test.d.ts.map +0 -1
- package/lib/live/mutators/createMutatorTx.test.js +0 -180
- package/lib/live/mutators/createMutatorTx.test.js.map +0 -1
- package/lib/live/mutators/types.js.map +0 -1
- package/lib/live/objects/OntologyObject.js.map +0 -1
- package/lib/live/objects/createLiveOntologyObjectCollection.test.d.ts +0 -2
- package/lib/live/objects/createLiveOntologyObjectCollection.test.d.ts.map +0 -1
- package/lib/live/objects/createLiveOntologyObjectCollection.test.js +0 -310
- package/lib/live/objects/createLiveOntologyObjectCollection.test.js.map +0 -1
- package/lib/live/outbox/createOntologyOutbox.test.d.ts +0 -2
- package/lib/live/outbox/createOntologyOutbox.test.d.ts.map +0 -1
- package/lib/live/outbox/createOntologyOutbox.test.js +0 -1030
- package/lib/live/outbox/createOntologyOutbox.test.js.map +0 -1
- package/lib/meta/generated/types.js.map +0 -1
- package/lib/meta/ontology.test.d.ts +0 -2
- package/lib/meta/ontology.test.d.ts.map +0 -1
- package/lib/meta/ontology.test.js +0 -84
- package/lib/meta/ontology.test.js.map +0 -1
- package/lib/utils/index.d.ts.map +0 -1
- package/lib/utils/index.js.map +0 -1
- package/lib/utils/links.test.d.ts +0 -2
- package/lib/utils/links.test.d.ts.map +0 -1
- package/lib/utils/links.test.js +0 -109
- package/lib/utils/links.test.js.map +0 -1
- package/lib/utils/paths.test.d.ts +0 -2
- package/lib/utils/paths.test.d.ts.map +0 -1
- package/lib/utils/paths.test.js +0 -33
- package/lib/utils/paths.test.js.map +0 -1
- package/lib/utils/targets.js.map +0 -1
- package/lib/utils/typeNames.js.map +0 -1
- package/lib/utils/types.test.d.ts +0 -2
- package/lib/utils/types.test.d.ts.map +0 -1
- package/lib/utils/types.test.js +0 -157
- package/lib/utils/types.test.js.map +0 -1
- package/lib/utils/uncertain.test.d.ts +0 -2
- package/lib/utils/uncertain.test.d.ts.map +0 -1
- package/lib/utils/uncertain.test.js +0 -14
- package/lib/utils/uncertain.test.js.map +0 -1
- package/lib/utils/validation.js.map +0 -1
- package/lib/utils/values.js.map +0 -1
|
@@ -1,284 +1,221 @@
|
|
|
1
|
-
import { createConnectionManager, createConnectionMonitor } from "@party-stack/connections";
|
|
2
|
-
import { createLocalCollection } from "@party-stack/runtime";
|
|
3
1
|
import { createLiveOntology } from "../live/LiveOntology.js";
|
|
4
2
|
import { createMetaOntologyConfiguration } from "./createMetaOntologyConfiguration.js";
|
|
3
|
+
import { createLocalCollection } from "@party-stack/runtime";
|
|
4
|
+
import { createConnectionManager, createConnectionMonitor } from "@party-stack/connections";
|
|
5
|
+
//#region src/installation/createOntologyBackendInstallation.ts
|
|
5
6
|
function scope(value) {
|
|
6
|
-
|
|
7
|
+
return encodeURIComponent(value);
|
|
7
8
|
}
|
|
8
9
|
function ontologyKey(userId, ontologyId) {
|
|
9
|
-
|
|
10
|
+
return `${scope(userId)}:${scope(ontologyId)}`;
|
|
10
11
|
}
|
|
11
12
|
function metaOntologyKey(userId, ontologyId) {
|
|
12
|
-
|
|
13
|
+
return `${ontologyKey(userId, ontologyId)}:meta`;
|
|
13
14
|
}
|
|
14
15
|
function liveOntologyNamespace(installationId, ontologyId) {
|
|
15
|
-
|
|
16
|
+
return `${scope(installationId)}:${scope(ontologyId)}`;
|
|
16
17
|
}
|
|
17
18
|
function isActiveConnection(connection) {
|
|
18
|
-
|
|
19
|
+
return connection?.state.status === "active";
|
|
19
20
|
}
|
|
20
21
|
function routeFor(routes, ontologyId) {
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
? `No ontology route matched "${ontologyId}".`
|
|
25
|
-
: `Multiple ontology routes matched "${ontologyId}".`);
|
|
26
|
-
}
|
|
27
|
-
return matching[0];
|
|
22
|
+
const matching = routes.filter((route) => route.matches(ontologyId));
|
|
23
|
+
if (matching.length !== 1) throw new Error(matching.length === 0 ? `No ontology route matched "${ontologyId}".` : `Multiple ontology routes matched "${ontologyId}".`);
|
|
24
|
+
return matching[0];
|
|
28
25
|
}
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
|
|
200
|
-
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
|
|
204
|
-
|
|
205
|
-
|
|
206
|
-
|
|
207
|
-
|
|
208
|
-
|
|
209
|
-
|
|
210
|
-
|
|
211
|
-
|
|
212
|
-
|
|
213
|
-
|
|
214
|
-
|
|
215
|
-
|
|
216
|
-
|
|
217
|
-
|
|
218
|
-
|
|
219
|
-
|
|
220
|
-
installationId: options.installationId,
|
|
221
|
-
get connections() {
|
|
222
|
-
return connectionManager.connections;
|
|
223
|
-
},
|
|
224
|
-
get authentication() {
|
|
225
|
-
return connectionManager.authentication;
|
|
226
|
-
},
|
|
227
|
-
async disconnect(userId) {
|
|
228
|
-
await closeUserOntologies(userId);
|
|
229
|
-
await connectionManager.disconnect(userId);
|
|
230
|
-
},
|
|
231
|
-
async forget(userId) {
|
|
232
|
-
const results = await Promise.allSettled([
|
|
233
|
-
destroyUserPartitions(userId),
|
|
234
|
-
connectionManager.forget(userId),
|
|
235
|
-
]);
|
|
236
|
-
const errors = [];
|
|
237
|
-
for (const result of results) {
|
|
238
|
-
if (result.status === "rejected") {
|
|
239
|
-
errors.push(result.reason);
|
|
240
|
-
}
|
|
241
|
-
}
|
|
242
|
-
if (errors.length > 0) {
|
|
243
|
-
throw new AggregateError(errors, `Failed to forget user "${userId}" from backend installation "${options.installationId}".`);
|
|
244
|
-
}
|
|
245
|
-
},
|
|
246
|
-
async openOntology({ userId, ontologyId, }) {
|
|
247
|
-
return openConfiguredOntology({
|
|
248
|
-
userId,
|
|
249
|
-
ontologyId,
|
|
250
|
-
meta: false,
|
|
251
|
-
});
|
|
252
|
-
},
|
|
253
|
-
async openMetaOntology({ userId, ontologyId }) {
|
|
254
|
-
return openConfiguredOntology({
|
|
255
|
-
userId,
|
|
256
|
-
ontologyId,
|
|
257
|
-
meta: true,
|
|
258
|
-
});
|
|
259
|
-
},
|
|
260
|
-
closeOntology: ({ userId, ontologyId }) => close(userId, ontologyId),
|
|
261
|
-
closeMetaOntology: ({ userId, ontologyId }) => closeKey(metaOntologyKey(userId, ontologyId)),
|
|
262
|
-
cleanup() {
|
|
263
|
-
cleanupPromise ??= (async () => {
|
|
264
|
-
disposed = true;
|
|
265
|
-
try {
|
|
266
|
-
await Promise.allSettled(opening.values());
|
|
267
|
-
await Promise.all([...live.values()].map((ontology) => ontology.cleanup()));
|
|
268
|
-
}
|
|
269
|
-
finally {
|
|
270
|
-
live.clear();
|
|
271
|
-
try {
|
|
272
|
-
await Promise.all([connectionManager.cleanup(), partitions.cleanup()]);
|
|
273
|
-
}
|
|
274
|
-
finally {
|
|
275
|
-
await installationRuntime.cleanup?.();
|
|
276
|
-
}
|
|
277
|
-
}
|
|
278
|
-
})();
|
|
279
|
-
return cleanupPromise;
|
|
280
|
-
},
|
|
281
|
-
};
|
|
282
|
-
return installation;
|
|
26
|
+
async function createOntologyBackendInstallation(options) {
|
|
27
|
+
const installationRuntime = await options.runtime("installation", scope(options.installationId));
|
|
28
|
+
let connectionManager;
|
|
29
|
+
try {
|
|
30
|
+
connectionManager = await createConnectionManager({
|
|
31
|
+
installationId: options.installationId,
|
|
32
|
+
runtime: installationRuntime,
|
|
33
|
+
adapter: options.connections
|
|
34
|
+
});
|
|
35
|
+
} catch (error) {
|
|
36
|
+
await installationRuntime.cleanup?.();
|
|
37
|
+
throw error;
|
|
38
|
+
}
|
|
39
|
+
const partitions = createLocalCollection({
|
|
40
|
+
name: "ontology-partitions",
|
|
41
|
+
getKey: (partition) => partition.id,
|
|
42
|
+
runtime: installationRuntime,
|
|
43
|
+
schemaVersion: 1
|
|
44
|
+
});
|
|
45
|
+
try {
|
|
46
|
+
await partitions.preload();
|
|
47
|
+
} catch (error) {
|
|
48
|
+
await partitions.cleanup();
|
|
49
|
+
await connectionManager.cleanup();
|
|
50
|
+
await installationRuntime.cleanup?.();
|
|
51
|
+
throw error;
|
|
52
|
+
}
|
|
53
|
+
const live = /* @__PURE__ */ new Map();
|
|
54
|
+
const opening = /* @__PURE__ */ new Map();
|
|
55
|
+
let disposed = false;
|
|
56
|
+
let cleanupPromise;
|
|
57
|
+
const closeKey = async (key) => {
|
|
58
|
+
const pending = opening.get(key);
|
|
59
|
+
if (pending) await pending.catch(() => void 0);
|
|
60
|
+
const ontology = live.get(key);
|
|
61
|
+
if (!ontology) return;
|
|
62
|
+
live.delete(key);
|
|
63
|
+
await ontology.cleanup();
|
|
64
|
+
};
|
|
65
|
+
const close = (userId, ontologyId) => closeKey(ontologyKey(userId, ontologyId));
|
|
66
|
+
const recordPartition = async (partition) => {
|
|
67
|
+
await (partitions.get(partition.id) ? partitions.update(partition.id, { optimistic: false }, (draft) => {
|
|
68
|
+
Object.assign(draft, partition);
|
|
69
|
+
}) : partitions.insert(partition, { optimistic: false })).isPersisted.promise;
|
|
70
|
+
};
|
|
71
|
+
const removePartitionRecord = async (id) => {
|
|
72
|
+
if (!partitions.get(id)) return;
|
|
73
|
+
await partitions.delete(id, { optimistic: false }).isPersisted.promise;
|
|
74
|
+
};
|
|
75
|
+
const destroyPartition = async (partition) => {
|
|
76
|
+
const pending = opening.get(partition.id);
|
|
77
|
+
if (pending) await pending.catch(() => void 0);
|
|
78
|
+
const ontology = live.get(partition.id);
|
|
79
|
+
live.delete(partition.id);
|
|
80
|
+
if (ontology) await ontology.destroy();
|
|
81
|
+
else {
|
|
82
|
+
const namespace = `${liveOntologyNamespace(options.installationId, partition.ontologyId)}${partition.meta ? ":meta" : ""}`;
|
|
83
|
+
const runtime = await options.runtime(partition.userId, namespace);
|
|
84
|
+
if (runtime.destroy) await runtime.destroy();
|
|
85
|
+
else await runtime.cleanup?.();
|
|
86
|
+
}
|
|
87
|
+
await removePartitionRecord(partition.id);
|
|
88
|
+
};
|
|
89
|
+
const destroyUserPartitions = async (userId) => {
|
|
90
|
+
const prefix = `${scope(userId)}:`;
|
|
91
|
+
await Promise.allSettled([...opening].filter(([key]) => key.startsWith(prefix)).map(([, pending]) => pending));
|
|
92
|
+
await Promise.all([...partitions.values()].filter((partition) => partition.userId === userId).map(destroyPartition));
|
|
93
|
+
};
|
|
94
|
+
const closeUserOntologies = async (userId) => {
|
|
95
|
+
const prefix = `${scope(userId)}:`;
|
|
96
|
+
const toClose = [.../* @__PURE__ */ new Set([...live.keys(), ...opening.keys()])].filter((key) => key.startsWith(prefix));
|
|
97
|
+
await Promise.all(toClose.map(closeKey));
|
|
98
|
+
};
|
|
99
|
+
const openConfiguredOntology = async (openOptions) => {
|
|
100
|
+
const { userId, ontologyId, meta } = openOptions;
|
|
101
|
+
if (disposed) throw new Error(`Backend installation "${options.installationId}" is closed.`);
|
|
102
|
+
const current = connectionManager.connections.get(userId);
|
|
103
|
+
if (!isActiveConnection(current)) throw new Error(`User "${userId}" is not connected to backend installation "${options.installationId}".`);
|
|
104
|
+
const egress = connectionManager.egress(userId);
|
|
105
|
+
if (!egress) throw new Error(`Connection egress for user "${userId}" is unavailable.`);
|
|
106
|
+
const key = meta ? metaOntologyKey(userId, ontologyId) : ontologyKey(userId, ontologyId);
|
|
107
|
+
const existing = live.get(key);
|
|
108
|
+
if (existing) return existing;
|
|
109
|
+
const pending = opening.get(key);
|
|
110
|
+
if (pending) return pending;
|
|
111
|
+
const open = (async () => {
|
|
112
|
+
const route = routeFor(options.routes, ontologyId);
|
|
113
|
+
const configureOptions = {
|
|
114
|
+
connection: current,
|
|
115
|
+
egress,
|
|
116
|
+
ontologyId
|
|
117
|
+
};
|
|
118
|
+
let configured;
|
|
119
|
+
if (meta) {
|
|
120
|
+
if (route.configureMeta) configured = await route.configureMeta(configureOptions);
|
|
121
|
+
else if (route.configure) {
|
|
122
|
+
const application = await route.configure(configureOptions);
|
|
123
|
+
configured = createMetaOntologyConfiguration({ ir: application.ir });
|
|
124
|
+
} else throw new Error(`Ontology route for "${ontologyId}" does not support metadata.`);
|
|
125
|
+
} else {
|
|
126
|
+
if (!route.configure) throw new Error(`Ontology route for "${ontologyId}" does not support opening the application ontology.`);
|
|
127
|
+
configured = await route.configure(configureOptions);
|
|
128
|
+
}
|
|
129
|
+
const context = {
|
|
130
|
+
...options.createContext?.(userId, ontologyId),
|
|
131
|
+
...configured.context,
|
|
132
|
+
user: userId
|
|
133
|
+
};
|
|
134
|
+
const runtimeNamespace = `${liveOntologyNamespace(options.installationId, ontologyId)}${meta ? ":meta" : ""}`;
|
|
135
|
+
await recordPartition({
|
|
136
|
+
id: key,
|
|
137
|
+
userId,
|
|
138
|
+
ontologyId,
|
|
139
|
+
meta: meta ? true : void 0
|
|
140
|
+
});
|
|
141
|
+
const ontology = await createLiveOntology({
|
|
142
|
+
id: runtimeNamespace,
|
|
143
|
+
ir: configured.ir,
|
|
144
|
+
backend: configured.backend,
|
|
145
|
+
runtime: options.runtime,
|
|
146
|
+
context,
|
|
147
|
+
persistObjects: configured.persistObjects,
|
|
148
|
+
writes: configured.writes,
|
|
149
|
+
connection: createConnectionMonitor(connectionManager, userId)
|
|
150
|
+
});
|
|
151
|
+
if (disposed) {
|
|
152
|
+
await ontology.cleanup();
|
|
153
|
+
throw new Error(meta ? `Backend installation "${options.installationId}" closed while opening metadata for ontology "${ontologyId}".` : `Backend installation "${options.installationId}" closed while opening ontology "${ontologyId}".`);
|
|
154
|
+
}
|
|
155
|
+
live.set(key, ontology);
|
|
156
|
+
return ontology;
|
|
157
|
+
})();
|
|
158
|
+
opening.set(key, open);
|
|
159
|
+
try {
|
|
160
|
+
return await open;
|
|
161
|
+
} finally {
|
|
162
|
+
if (opening.get(key) === open) opening.delete(key);
|
|
163
|
+
}
|
|
164
|
+
};
|
|
165
|
+
return {
|
|
166
|
+
installationId: options.installationId,
|
|
167
|
+
get connections() {
|
|
168
|
+
return connectionManager.connections;
|
|
169
|
+
},
|
|
170
|
+
get authentication() {
|
|
171
|
+
return connectionManager.authentication;
|
|
172
|
+
},
|
|
173
|
+
async disconnect(userId) {
|
|
174
|
+
await closeUserOntologies(userId);
|
|
175
|
+
await connectionManager.disconnect(userId);
|
|
176
|
+
},
|
|
177
|
+
async forget(userId) {
|
|
178
|
+
const results = await Promise.allSettled([destroyUserPartitions(userId), connectionManager.forget(userId)]);
|
|
179
|
+
const errors = [];
|
|
180
|
+
for (const result of results) if (result.status === "rejected") errors.push(result.reason);
|
|
181
|
+
if (errors.length > 0) throw new AggregateError(errors, `Failed to forget user "${userId}" from backend installation "${options.installationId}".`);
|
|
182
|
+
},
|
|
183
|
+
async openOntology({ userId, ontologyId }) {
|
|
184
|
+
return openConfiguredOntology({
|
|
185
|
+
userId,
|
|
186
|
+
ontologyId,
|
|
187
|
+
meta: false
|
|
188
|
+
});
|
|
189
|
+
},
|
|
190
|
+
async openMetaOntology({ userId, ontologyId }) {
|
|
191
|
+
return openConfiguredOntology({
|
|
192
|
+
userId,
|
|
193
|
+
ontologyId,
|
|
194
|
+
meta: true
|
|
195
|
+
});
|
|
196
|
+
},
|
|
197
|
+
closeOntology: ({ userId, ontologyId }) => close(userId, ontologyId),
|
|
198
|
+
closeMetaOntology: ({ userId, ontologyId }) => closeKey(metaOntologyKey(userId, ontologyId)),
|
|
199
|
+
cleanup() {
|
|
200
|
+
cleanupPromise ??= (async () => {
|
|
201
|
+
disposed = true;
|
|
202
|
+
try {
|
|
203
|
+
await Promise.allSettled(opening.values());
|
|
204
|
+
await Promise.all([...live.values()].map((ontology) => ontology.cleanup()));
|
|
205
|
+
} finally {
|
|
206
|
+
live.clear();
|
|
207
|
+
try {
|
|
208
|
+
await Promise.all([connectionManager.cleanup(), partitions.cleanup()]);
|
|
209
|
+
} finally {
|
|
210
|
+
await installationRuntime.cleanup?.();
|
|
211
|
+
}
|
|
212
|
+
}
|
|
213
|
+
})();
|
|
214
|
+
return cleanupPromise;
|
|
215
|
+
}
|
|
216
|
+
};
|
|
283
217
|
}
|
|
218
|
+
//#endregion
|
|
219
|
+
export { createOntologyBackendInstallation };
|
|
220
|
+
|
|
284
221
|
//# sourceMappingURL=createOntologyBackendInstallation.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"createOntologyBackendInstallation.js","sourceRoot":"","sources":["../../src/installation/createOntologyBackendInstallation.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"createOntologyBackendInstallation.js","names":[],"sources":["../../src/installation/createOntologyBackendInstallation.ts"],"sourcesContent":["import { createConnectionManager, createConnectionMonitor } from \"@party-stack/connections\";\nimport { createLocalCollection } from \"@party-stack/runtime\";\nimport { createLiveOntology } from \"../live/LiveOntology.js\";\nimport { createMetaOntologyConfiguration } from \"./createMetaOntologyConfiguration.js\";\nimport type { LiveOntology } from \"../live/LiveOntology.js\";\nimport type { OntologyDefinition } from \"../live/LiveOntology.js\";\nimport type { MetaOntology } from \"../meta/generated/types.js\";\nimport type {\n CreateOntologyBackendInstallationOptions,\n OntologyBackendInstallation,\n OntologyRoute,\n} from \"./types.js\";\nimport type { Connection } from \"@party-stack/connections\";\n\ninterface LocalOntologyPartition {\n id: string;\n userId: string;\n ontologyId: string;\n meta?: true;\n}\n\nfunction scope(value: string): string {\n return encodeURIComponent(value);\n}\n\nfunction ontologyKey(userId: string, ontologyId: string): string {\n return `${scope(userId)}:${scope(ontologyId)}`;\n}\n\nfunction metaOntologyKey(userId: string, ontologyId: string): string {\n return `${ontologyKey(userId, ontologyId)}:meta`;\n}\n\nfunction liveOntologyNamespace(installationId: string, ontologyId: string): string {\n return `${scope(installationId)}:${scope(ontologyId)}`;\n}\n\nfunction isActiveConnection(connection: Connection | undefined): connection is Connection<\"active\"> {\n return connection?.state.status === \"active\";\n}\n\nfunction routeFor(routes: readonly OntologyRoute[], ontologyId: string): OntologyRoute {\n const matching = routes.filter((route) => route.matches(ontologyId));\n if (matching.length !== 1) {\n throw new Error(\n matching.length === 0\n ? `No ontology route matched \"${ontologyId}\".`\n : `Multiple ontology routes matched \"${ontologyId}\".`\n );\n }\n return matching[0]!;\n}\n\nexport async function createOntologyBackendInstallation<AuthenticationClient extends object = object>(\n options: CreateOntologyBackendInstallationOptions<AuthenticationClient>\n): Promise<OntologyBackendInstallation<AuthenticationClient>> {\n const installationRuntime = await options.runtime(\"installation\", scope(options.installationId));\n let connectionManager;\n try {\n connectionManager = await createConnectionManager({\n installationId: options.installationId,\n runtime: installationRuntime,\n adapter: options.connections,\n });\n } catch (error) {\n await installationRuntime.cleanup?.();\n throw error;\n }\n const partitions = createLocalCollection<LocalOntologyPartition, string>({\n name: \"ontology-partitions\",\n getKey: (partition) => partition.id,\n runtime: installationRuntime,\n schemaVersion: 1,\n });\n try {\n await partitions.preload();\n } catch (error) {\n await partitions.cleanup();\n await connectionManager.cleanup();\n await installationRuntime.cleanup?.();\n throw error;\n }\n const live = new Map<string, LiveOntology>();\n const opening = new Map<string, Promise<LiveOntology>>();\n let disposed = false;\n let cleanupPromise: Promise<void> | undefined;\n\n const closeKey = async (key: string) => {\n const pending = opening.get(key);\n if (pending) {\n await pending.catch(() => undefined);\n }\n const ontology = live.get(key);\n if (!ontology) return;\n live.delete(key);\n await ontology.cleanup();\n };\n const close = (userId: string, ontologyId: string) => closeKey(ontologyKey(userId, ontologyId));\n const recordPartition = async (partition: LocalOntologyPartition): Promise<void> => {\n const existing = partitions.get(partition.id);\n const transaction = existing\n ? partitions.update(\n partition.id,\n {\n optimistic: false,\n },\n (draft) => {\n Object.assign(draft, partition);\n }\n )\n : partitions.insert(partition, {\n optimistic: false,\n });\n await transaction.isPersisted.promise;\n };\n const removePartitionRecord = async (id: string): Promise<void> => {\n if (!partitions.get(id)) {\n return;\n }\n const transaction = partitions.delete(id, {\n optimistic: false,\n });\n await transaction.isPersisted.promise;\n };\n const destroyPartition = async (partition: LocalOntologyPartition): Promise<void> => {\n const pending = opening.get(partition.id);\n if (pending) {\n await pending.catch(() => undefined);\n }\n const ontology = live.get(partition.id);\n live.delete(partition.id);\n if (ontology) {\n await ontology.destroy();\n } else {\n const namespace = `${liveOntologyNamespace(\n options.installationId,\n partition.ontologyId\n )}${partition.meta ? \":meta\" : \"\"}`;\n const runtime = await options.runtime(partition.userId, namespace);\n if (runtime.destroy) {\n await runtime.destroy();\n } else {\n await runtime.cleanup?.();\n }\n }\n await removePartitionRecord(partition.id);\n };\n const destroyUserPartitions = async (userId: string): Promise<void> => {\n const prefix = `${scope(userId)}:`;\n await Promise.allSettled(\n [...opening].filter(([key]) => key.startsWith(prefix)).map(([, pending]) => pending)\n );\n await Promise.all(\n [...partitions.values()].filter((partition) => partition.userId === userId).map(destroyPartition)\n );\n };\n const closeUserOntologies = async (userId: string): Promise<void> => {\n const prefix = `${scope(userId)}:`;\n const toClose = [...new Set([...live.keys(), ...opening.keys()])].filter((key) =>\n key.startsWith(prefix)\n );\n await Promise.all(toClose.map(closeKey));\n };\n const openConfiguredOntology = async <Ontology extends OntologyDefinition>(openOptions: {\n userId: string;\n ontologyId: string;\n meta: boolean;\n }): Promise<LiveOntology<Ontology>> => {\n const { userId, ontologyId, meta } = openOptions;\n if (disposed) {\n throw new Error(`Backend installation \"${options.installationId}\" is closed.`);\n }\n const current = connectionManager.connections.get(userId);\n if (!isActiveConnection(current)) {\n throw new Error(\n `User \"${userId}\" is not connected to backend installation \"${options.installationId}\".`\n );\n }\n const egress = connectionManager.egress(userId);\n if (!egress) {\n throw new Error(`Connection egress for user \"${userId}\" is unavailable.`);\n }\n const key = meta ? metaOntologyKey(userId, ontologyId) : ontologyKey(userId, ontologyId);\n const existing = live.get(key);\n if (existing) {\n return existing as unknown as LiveOntology<Ontology>;\n }\n const pending = opening.get(key);\n if (pending) {\n return pending as unknown as Promise<LiveOntology<Ontology>>;\n }\n const open = (async () => {\n const route = routeFor(options.routes, ontologyId);\n const configureOptions = {\n connection: current,\n egress,\n ontologyId,\n };\n let configured;\n if (meta) {\n if (route.configureMeta) {\n configured = await route.configureMeta(configureOptions);\n } else if (route.configure) {\n const application = await route.configure(configureOptions);\n configured = createMetaOntologyConfiguration({\n ir: application.ir,\n });\n } else {\n throw new Error(`Ontology route for \"${ontologyId}\" does not support metadata.`);\n }\n } else {\n if (!route.configure) {\n throw new Error(\n `Ontology route for \"${ontologyId}\" does not support opening the application ontology.`\n );\n }\n configured = await route.configure(configureOptions);\n }\n const context = {\n ...options.createContext?.(userId, ontologyId),\n ...configured.context,\n user: userId,\n };\n const runtimeNamespace = `${liveOntologyNamespace(options.installationId, ontologyId)}${\n meta ? \":meta\" : \"\"\n }`;\n await recordPartition({\n id: key,\n userId,\n ontologyId,\n meta: meta ? true : undefined,\n });\n const ontology = await createLiveOntology({\n id: runtimeNamespace,\n ir: configured.ir,\n backend: configured.backend,\n runtime: options.runtime,\n context,\n persistObjects: configured.persistObjects,\n writes: configured.writes,\n connection: createConnectionMonitor(connectionManager, userId),\n });\n if (disposed) {\n await ontology.cleanup();\n throw new Error(\n meta\n ? `Backend installation \"${options.installationId}\" closed while opening metadata for ontology \"${ontologyId}\".`\n : `Backend installation \"${options.installationId}\" closed while opening ontology \"${ontologyId}\".`\n );\n }\n live.set(key, ontology);\n return ontology;\n })();\n opening.set(key, open);\n try {\n return (await open) as unknown as LiveOntology<Ontology>;\n } finally {\n if (opening.get(key) === open) {\n opening.delete(key);\n }\n }\n };\n\n const installation: OntologyBackendInstallation<AuthenticationClient> = {\n installationId: options.installationId,\n get connections() {\n return connectionManager.connections;\n },\n get authentication() {\n return connectionManager.authentication;\n },\n async disconnect(userId) {\n await closeUserOntologies(userId);\n await connectionManager.disconnect(userId);\n },\n async forget(userId) {\n const results = await Promise.allSettled([\n destroyUserPartitions(userId),\n connectionManager.forget(userId),\n ]);\n const errors: unknown[] = [];\n for (const result of results) {\n if (result.status === \"rejected\") {\n errors.push(result.reason as unknown);\n }\n }\n if (errors.length > 0) {\n throw new AggregateError(\n errors,\n `Failed to forget user \"${userId}\" from backend installation \"${options.installationId}\".`\n );\n }\n },\n async openOntology<Ontology extends OntologyDefinition = OntologyDefinition>({\n userId,\n ontologyId,\n }: {\n userId: string;\n ontologyId: string;\n }): Promise<LiveOntology<Ontology>> {\n return openConfiguredOntology<Ontology>({\n userId,\n ontologyId,\n meta: false,\n });\n },\n async openMetaOntology({ userId, ontologyId }) {\n return openConfiguredOntology<MetaOntology>({\n userId,\n ontologyId,\n meta: true,\n });\n },\n closeOntology: ({ userId, ontologyId }) => close(userId, ontologyId),\n closeMetaOntology: ({ userId, ontologyId }) => closeKey(metaOntologyKey(userId, ontologyId)),\n cleanup() {\n cleanupPromise ??= (async () => {\n disposed = true;\n try {\n await Promise.allSettled(opening.values());\n await Promise.all([...live.values()].map((ontology) => ontology.cleanup()));\n } finally {\n live.clear();\n try {\n await Promise.all([connectionManager.cleanup(), partitions.cleanup()]);\n } finally {\n await installationRuntime.cleanup?.();\n }\n }\n })();\n return cleanupPromise;\n },\n };\n return installation;\n}\n"],"mappings":"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"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
1
|
+
import { ConfigureOntologyOptions, CreateOntologyBackendInstallationOptions, OntologyBackendInstallation, OntologyConfiguration, OntologyRoute } from "./types.js";
|
|
2
|
+
import { createOntologyBackendInstallation } from "./createOntologyBackendInstallation.js";
|
|
3
|
+
import { MetaOntologyConfigurationOptions, createMetaOntologyConfiguration } from "./createMetaOntologyConfiguration.js";
|
|
4
|
+
export { type ConfigureOntologyOptions, type CreateOntologyBackendInstallationOptions, type MetaOntologyConfigurationOptions, type OntologyBackendInstallation, type OntologyConfiguration, type OntologyRoute, createMetaOntologyConfiguration, createOntologyBackendInstallation };
|
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
1
|
+
import { createMetaOntologyConfiguration } from "./createMetaOntologyConfiguration.js";
|
|
2
|
+
import { createOntologyBackendInstallation } from "./createOntologyBackendInstallation.js";
|
|
3
|
+
export { createMetaOntologyConfiguration, createOntologyBackendInstallation };
|