@fluidframework/tree 2.11.0 → 2.13.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/CHANGELOG.md +140 -0
- package/api-report/tree.alpha.api.md +88 -12
- package/api-report/tree.beta.api.md +23 -11
- package/api-report/tree.legacy.alpha.api.md +23 -11
- package/api-report/tree.legacy.public.api.md +23 -11
- package/api-report/tree.public.api.md +23 -11
- package/dist/alpha.d.ts +11 -0
- package/dist/beta.d.ts +2 -0
- package/dist/core/index.d.ts +2 -2
- package/dist/core/index.d.ts.map +1 -1
- package/dist/core/index.js +5 -3
- package/dist/core/index.js.map +1 -1
- package/dist/core/rebase/utils.d.ts.map +1 -1
- package/dist/core/rebase/utils.js +2 -9
- package/dist/core/rebase/utils.js.map +1 -1
- package/dist/core/schema-stored/format.d.ts +0 -3
- package/dist/core/schema-stored/format.d.ts.map +1 -1
- package/dist/core/schema-stored/format.js.map +1 -1
- package/dist/core/schema-stored/schema.d.ts +12 -10
- package/dist/core/schema-stored/schema.d.ts.map +1 -1
- package/dist/core/schema-stored/schema.js +3 -5
- package/dist/core/schema-stored/schema.js.map +1 -1
- package/dist/core/schema-view/index.d.ts +1 -1
- package/dist/core/schema-view/index.d.ts.map +1 -1
- package/dist/core/schema-view/index.js +1 -2
- package/dist/core/schema-view/index.js.map +1 -1
- package/dist/core/schema-view/view.d.ts +0 -7
- package/dist/core/schema-view/view.d.ts.map +1 -1
- package/dist/core/schema-view/view.js +1 -12
- package/dist/core/schema-view/view.js.map +1 -1
- package/dist/{feature-libraries/chunked-forest → core/tree}/chunk.d.ts +2 -1
- package/dist/core/tree/chunk.d.ts.map +1 -0
- package/dist/{feature-libraries/chunked-forest → core/tree}/chunk.js +2 -2
- package/dist/core/tree/chunk.js.map +1 -0
- package/dist/core/tree/index.d.ts +1 -0
- package/dist/core/tree/index.d.ts.map +1 -1
- package/dist/core/tree/index.js +5 -1
- package/dist/core/tree/index.js.map +1 -1
- package/dist/core/tree/treeTextFormat.d.ts +0 -5
- package/dist/core/tree/treeTextFormat.d.ts.map +1 -1
- package/dist/core/tree/treeTextFormat.js.map +1 -1
- package/dist/core/tree/types.d.ts +0 -5
- package/dist/core/tree/types.d.ts.map +1 -1
- package/dist/core/tree/types.js +0 -1
- package/dist/core/tree/types.js.map +1 -1
- package/dist/feature-libraries/chunked-forest/basicChunk.d.ts +1 -2
- package/dist/feature-libraries/chunked-forest/basicChunk.d.ts.map +1 -1
- package/dist/feature-libraries/chunked-forest/basicChunk.js +14 -14
- package/dist/feature-libraries/chunked-forest/basicChunk.js.map +1 -1
- package/dist/feature-libraries/chunked-forest/chunkTree.d.ts +1 -2
- package/dist/feature-libraries/chunked-forest/chunkTree.d.ts.map +1 -1
- package/dist/feature-libraries/chunked-forest/chunkTree.js +2 -3
- package/dist/feature-libraries/chunked-forest/chunkTree.js.map +1 -1
- package/dist/feature-libraries/chunked-forest/chunkedForest.d.ts +1 -2
- package/dist/feature-libraries/chunked-forest/chunkedForest.d.ts.map +1 -1
- package/dist/feature-libraries/chunked-forest/chunkedForest.js.map +1 -1
- package/dist/feature-libraries/chunked-forest/codec/chunkCodecUtilities.d.ts +1 -2
- package/dist/feature-libraries/chunked-forest/codec/chunkCodecUtilities.d.ts.map +1 -1
- package/dist/feature-libraries/chunked-forest/codec/chunkCodecUtilities.js.map +1 -1
- package/dist/feature-libraries/chunked-forest/codec/chunkDecoding.d.ts +1 -2
- package/dist/feature-libraries/chunked-forest/codec/chunkDecoding.d.ts.map +1 -1
- package/dist/feature-libraries/chunked-forest/codec/chunkDecoding.js.map +1 -1
- package/dist/feature-libraries/chunked-forest/codec/chunkDecodingGeneric.d.ts +1 -1
- package/dist/feature-libraries/chunked-forest/codec/chunkDecodingGeneric.d.ts.map +1 -1
- package/dist/feature-libraries/chunked-forest/codec/chunkDecodingGeneric.js.map +1 -1
- package/dist/feature-libraries/chunked-forest/emptyChunk.d.ts +1 -1
- package/dist/feature-libraries/chunked-forest/emptyChunk.d.ts.map +1 -1
- package/dist/feature-libraries/chunked-forest/emptyChunk.js +2 -3
- package/dist/feature-libraries/chunked-forest/emptyChunk.js.map +1 -1
- package/dist/feature-libraries/chunked-forest/index.d.ts +1 -1
- package/dist/feature-libraries/chunked-forest/index.d.ts.map +1 -1
- package/dist/feature-libraries/chunked-forest/index.js +5 -5
- package/dist/feature-libraries/chunked-forest/index.js.map +1 -1
- package/dist/feature-libraries/chunked-forest/sequenceChunk.d.ts +1 -1
- package/dist/feature-libraries/chunked-forest/sequenceChunk.d.ts.map +1 -1
- package/dist/feature-libraries/chunked-forest/sequenceChunk.js +2 -2
- package/dist/feature-libraries/chunked-forest/sequenceChunk.js.map +1 -1
- package/dist/feature-libraries/chunked-forest/uniformChunk.d.ts +1 -2
- package/dist/feature-libraries/chunked-forest/uniformChunk.d.ts.map +1 -1
- package/dist/feature-libraries/chunked-forest/uniformChunk.js +13 -13
- package/dist/feature-libraries/chunked-forest/uniformChunk.js.map +1 -1
- package/dist/feature-libraries/default-schema/defaultEditBuilder.d.ts +10 -0
- package/dist/feature-libraries/default-schema/defaultEditBuilder.d.ts.map +1 -1
- package/dist/feature-libraries/default-schema/defaultEditBuilder.js +3 -0
- package/dist/feature-libraries/default-schema/defaultEditBuilder.js.map +1 -1
- package/dist/feature-libraries/default-schema/defaultSchema.d.ts.map +1 -1
- package/dist/feature-libraries/default-schema/defaultSchema.js +1 -0
- package/dist/feature-libraries/default-schema/defaultSchema.js.map +1 -1
- package/dist/feature-libraries/default-schema/schemaChecker.d.ts.map +1 -1
- package/dist/feature-libraries/default-schema/schemaChecker.js +2 -1
- package/dist/feature-libraries/default-schema/schemaChecker.js.map +1 -1
- package/dist/feature-libraries/index.d.ts +1 -2
- package/dist/feature-libraries/index.d.ts.map +1 -1
- package/dist/feature-libraries/index.js +6 -4
- package/dist/feature-libraries/index.js.map +1 -1
- package/dist/feature-libraries/indexing/anchorTreeIndex.d.ts +8 -1
- package/dist/feature-libraries/indexing/anchorTreeIndex.d.ts.map +1 -1
- package/dist/feature-libraries/indexing/anchorTreeIndex.js +31 -5
- package/dist/feature-libraries/indexing/anchorTreeIndex.js.map +1 -1
- package/dist/feature-libraries/modular-schema/crossFieldQueries.d.ts +1 -1
- package/dist/feature-libraries/modular-schema/crossFieldQueries.d.ts.map +1 -1
- package/dist/feature-libraries/modular-schema/crossFieldQueries.js +8 -2
- package/dist/feature-libraries/modular-schema/crossFieldQueries.js.map +1 -1
- package/dist/feature-libraries/modular-schema/discrepancies.d.ts +84 -24
- package/dist/feature-libraries/modular-schema/discrepancies.d.ts.map +1 -1
- package/dist/feature-libraries/modular-schema/discrepancies.js +32 -33
- package/dist/feature-libraries/modular-schema/discrepancies.js.map +1 -1
- package/dist/feature-libraries/modular-schema/fieldChangeHandler.d.ts +12 -5
- package/dist/feature-libraries/modular-schema/fieldChangeHandler.d.ts.map +1 -1
- package/dist/feature-libraries/modular-schema/fieldChangeHandler.js.map +1 -1
- package/dist/feature-libraries/modular-schema/genericFieldKind.d.ts.map +1 -1
- package/dist/feature-libraries/modular-schema/genericFieldKind.js +2 -1
- package/dist/feature-libraries/modular-schema/genericFieldKind.js.map +1 -1
- package/dist/feature-libraries/modular-schema/index.d.ts +2 -2
- package/dist/feature-libraries/modular-schema/index.d.ts.map +1 -1
- package/dist/feature-libraries/modular-schema/index.js +5 -1
- package/dist/feature-libraries/modular-schema/index.js.map +1 -1
- package/dist/feature-libraries/modular-schema/isNeverTree.d.ts +0 -1
- package/dist/feature-libraries/modular-schema/isNeverTree.d.ts.map +1 -1
- package/dist/feature-libraries/modular-schema/isNeverTree.js +0 -1
- package/dist/feature-libraries/modular-schema/isNeverTree.js.map +1 -1
- package/dist/feature-libraries/modular-schema/modularChangeFamily.d.ts +1 -0
- package/dist/feature-libraries/modular-schema/modularChangeFamily.d.ts.map +1 -1
- package/dist/feature-libraries/modular-schema/modularChangeFamily.js +89 -25
- package/dist/feature-libraries/modular-schema/modularChangeFamily.js.map +1 -1
- package/dist/feature-libraries/modular-schema/modularChangeTypes.d.ts +12 -0
- package/dist/feature-libraries/modular-schema/modularChangeTypes.d.ts.map +1 -1
- package/dist/feature-libraries/modular-schema/modularChangeTypes.js.map +1 -1
- package/dist/feature-libraries/optional-field/optionalField.d.ts.map +1 -1
- package/dist/feature-libraries/optional-field/optionalField.js +24 -4
- package/dist/feature-libraries/optional-field/optionalField.js.map +1 -1
- package/dist/feature-libraries/optional-field/optionalFieldChangeFormatV1.d.ts +6 -6
- package/dist/feature-libraries/optional-field/optionalFieldChangeFormatV1.d.ts.map +1 -1
- package/dist/feature-libraries/optional-field/optionalFieldChangeFormatV2.d.ts +7 -7
- package/dist/feature-libraries/optional-field/optionalFieldChangeFormatV2.d.ts.map +1 -1
- package/dist/feature-libraries/schema-edits/schemaChangeFormat.d.ts +12 -12
- package/dist/feature-libraries/sequence-field/formatV1.d.ts +99 -99
- package/dist/feature-libraries/sequence-field/formatV1.d.ts.map +1 -1
- package/dist/feature-libraries/sequence-field/formatV2.d.ts +76 -76
- package/dist/feature-libraries/sequence-field/formatV2.d.ts.map +1 -1
- package/dist/feature-libraries/sequence-field/formatV3.d.ts +54 -54
- package/dist/feature-libraries/sequence-field/types.d.ts +0 -1
- package/dist/feature-libraries/sequence-field/types.d.ts.map +1 -1
- package/dist/feature-libraries/sequence-field/types.js.map +1 -1
- package/dist/feature-libraries/sequence-field/utils.d.ts +2 -2
- package/dist/feature-libraries/sequence-field/utils.d.ts.map +1 -1
- package/dist/feature-libraries/sequence-field/utils.js +14 -5
- package/dist/feature-libraries/sequence-field/utils.js.map +1 -1
- package/dist/index.d.ts +4 -5
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +2 -14
- package/dist/index.js.map +1 -1
- package/dist/legacy.d.ts +2 -0
- package/dist/packageVersion.d.ts +1 -1
- package/dist/packageVersion.js +1 -1
- package/dist/packageVersion.js.map +1 -1
- package/dist/public.d.ts +2 -0
- package/dist/shared-tree/index.d.ts +3 -2
- package/dist/shared-tree/index.d.ts.map +1 -1
- package/dist/shared-tree/index.js +2 -1
- package/dist/shared-tree/index.js.map +1 -1
- package/dist/shared-tree/schematizeTree.d.ts +1 -1
- package/dist/shared-tree/schematizeTree.d.ts.map +1 -1
- package/dist/shared-tree/schematizeTree.js +6 -6
- package/dist/shared-tree/schematizeTree.js.map +1 -1
- package/dist/shared-tree/schematizingTreeView.d.ts +10 -1
- package/dist/shared-tree/schematizingTreeView.d.ts.map +1 -1
- package/dist/shared-tree/schematizingTreeView.js +51 -12
- package/dist/shared-tree/schematizingTreeView.js.map +1 -1
- package/dist/shared-tree/sharedTree.d.ts +31 -10
- package/dist/shared-tree/sharedTree.d.ts.map +1 -1
- package/dist/shared-tree/sharedTree.js +106 -15
- package/dist/shared-tree/sharedTree.js.map +1 -1
- package/dist/shared-tree/transactionTypes.d.ts +105 -0
- package/dist/shared-tree/transactionTypes.d.ts.map +1 -0
- package/dist/shared-tree/transactionTypes.js +13 -0
- package/dist/shared-tree/transactionTypes.js.map +1 -0
- package/dist/shared-tree/treeApi.d.ts +1 -25
- package/dist/shared-tree/treeApi.d.ts.map +1 -1
- package/dist/shared-tree/treeApi.js +4 -8
- package/dist/shared-tree/treeApi.js.map +1 -1
- package/dist/shared-tree/treeCheckout.d.ts +39 -13
- package/dist/shared-tree/treeCheckout.d.ts.map +1 -1
- package/dist/shared-tree/treeCheckout.js +275 -128
- package/dist/shared-tree/treeCheckout.js.map +1 -1
- package/dist/shared-tree-core/branch.d.ts +13 -35
- package/dist/shared-tree-core/branch.d.ts.map +1 -1
- package/dist/shared-tree-core/branch.js +12 -77
- package/dist/shared-tree-core/branch.js.map +1 -1
- package/dist/shared-tree-core/branchCommitEnricher.d.ts +7 -1
- package/dist/shared-tree-core/branchCommitEnricher.d.ts.map +1 -1
- package/dist/shared-tree-core/branchCommitEnricher.js +16 -18
- package/dist/shared-tree-core/branchCommitEnricher.js.map +1 -1
- package/dist/shared-tree-core/editManager.d.ts.map +1 -1
- package/dist/shared-tree-core/editManager.js +2 -2
- package/dist/shared-tree-core/editManager.js.map +1 -1
- package/dist/shared-tree-core/index.d.ts +3 -3
- package/dist/shared-tree-core/index.d.ts.map +1 -1
- package/dist/shared-tree-core/index.js +2 -2
- package/dist/shared-tree-core/index.js.map +1 -1
- package/dist/shared-tree-core/sharedTreeCore.d.ts +2 -9
- package/dist/shared-tree-core/sharedTreeCore.d.ts.map +1 -1
- package/dist/shared-tree-core/sharedTreeCore.js +4 -16
- package/dist/shared-tree-core/sharedTreeCore.js.map +1 -1
- package/dist/shared-tree-core/transaction.d.ts +38 -0
- package/dist/shared-tree-core/transaction.d.ts.map +1 -1
- package/dist/shared-tree-core/transaction.js +118 -6
- package/dist/shared-tree-core/transaction.js.map +1 -1
- package/dist/simple-tree/api/conciseTree.d.ts.map +1 -1
- package/dist/simple-tree/api/conciseTree.js +1 -1
- package/dist/simple-tree/api/conciseTree.js.map +1 -1
- package/dist/simple-tree/api/create.d.ts.map +1 -1
- package/dist/simple-tree/api/create.js +5 -1
- package/dist/simple-tree/api/create.js.map +1 -1
- package/dist/simple-tree/api/customTree.d.ts +14 -2
- package/dist/simple-tree/api/customTree.d.ts.map +1 -1
- package/dist/simple-tree/api/customTree.js +53 -3
- package/dist/simple-tree/api/customTree.js.map +1 -1
- package/dist/simple-tree/api/index.d.ts +3 -2
- package/dist/simple-tree/api/index.d.ts.map +1 -1
- package/dist/simple-tree/api/index.js +6 -1
- package/dist/simple-tree/api/index.js.map +1 -1
- package/dist/simple-tree/api/jsonSchema.d.ts +6 -0
- package/dist/simple-tree/api/jsonSchema.d.ts.map +1 -1
- package/dist/simple-tree/api/jsonSchema.js.map +1 -1
- package/dist/simple-tree/api/schemaFactory.d.ts +65 -8
- package/dist/simple-tree/api/schemaFactory.d.ts.map +1 -1
- package/dist/simple-tree/api/schemaFactory.js +10 -4
- package/dist/simple-tree/api/schemaFactory.js.map +1 -1
- package/dist/simple-tree/api/schemaFactoryAlpha.d.ts +83 -0
- package/dist/simple-tree/api/schemaFactoryAlpha.d.ts.map +1 -0
- package/dist/simple-tree/api/schemaFactoryAlpha.js +90 -0
- package/dist/simple-tree/api/schemaFactoryAlpha.js.map +1 -0
- package/dist/simple-tree/api/simpleSchema.d.ts +8 -2
- package/dist/simple-tree/api/simpleSchema.d.ts.map +1 -1
- package/dist/simple-tree/api/simpleSchema.js.map +1 -1
- package/dist/simple-tree/api/simpleSchemaToJsonSchema.js +13 -10
- package/dist/simple-tree/api/simpleSchemaToJsonSchema.js.map +1 -1
- package/dist/simple-tree/api/simpleTreeIndex.js +3 -1
- package/dist/simple-tree/api/simpleTreeIndex.js.map +1 -1
- package/dist/simple-tree/api/storedSchema.d.ts +4 -4
- package/dist/simple-tree/api/storedSchema.d.ts.map +1 -1
- package/dist/simple-tree/api/storedSchema.js +8 -21
- package/dist/simple-tree/api/storedSchema.js.map +1 -1
- package/dist/simple-tree/api/testRecursiveDomain.d.ts +5 -5
- package/dist/simple-tree/api/tree.d.ts +61 -0
- package/dist/simple-tree/api/tree.d.ts.map +1 -1
- package/dist/simple-tree/api/tree.js.map +1 -1
- package/dist/simple-tree/api/verboseTree.js +1 -1
- package/dist/simple-tree/api/verboseTree.js.map +1 -1
- package/dist/simple-tree/api/view.d.ts +14 -9
- package/dist/simple-tree/api/view.d.ts.map +1 -1
- package/dist/simple-tree/api/view.js +129 -40
- package/dist/simple-tree/api/view.js.map +1 -1
- package/dist/simple-tree/api/viewSchemaToSimpleSchema.d.ts.map +1 -1
- package/dist/simple-tree/api/viewSchemaToSimpleSchema.js +11 -11
- package/dist/simple-tree/api/viewSchemaToSimpleSchema.js.map +1 -1
- package/dist/simple-tree/arrayNode.d.ts +2 -2
- package/dist/simple-tree/arrayNode.d.ts.map +1 -1
- package/dist/simple-tree/arrayNode.js +2 -1
- package/dist/simple-tree/arrayNode.js.map +1 -1
- package/dist/simple-tree/core/treeNodeSchema.d.ts +10 -6
- package/dist/simple-tree/core/treeNodeSchema.d.ts.map +1 -1
- package/dist/simple-tree/core/treeNodeSchema.js.map +1 -1
- package/dist/simple-tree/index.d.ts +3 -3
- package/dist/simple-tree/index.d.ts.map +1 -1
- package/dist/simple-tree/index.js +6 -2
- package/dist/simple-tree/index.js.map +1 -1
- package/dist/simple-tree/leafNodeSchema.d.ts +5 -20
- package/dist/simple-tree/leafNodeSchema.d.ts.map +1 -1
- package/dist/simple-tree/leafNodeSchema.js +0 -15
- package/dist/simple-tree/leafNodeSchema.js.map +1 -1
- package/dist/simple-tree/mapNode.d.ts +2 -2
- package/dist/simple-tree/mapNode.d.ts.map +1 -1
- package/dist/simple-tree/mapNode.js +2 -1
- package/dist/simple-tree/mapNode.js.map +1 -1
- package/dist/simple-tree/objectNode.d.ts +9 -4
- package/dist/simple-tree/objectNode.d.ts.map +1 -1
- package/dist/simple-tree/objectNode.js +19 -2
- package/dist/simple-tree/objectNode.js.map +1 -1
- package/dist/simple-tree/objectNodeTypes.d.ts +6 -2
- package/dist/simple-tree/objectNodeTypes.d.ts.map +1 -1
- package/dist/simple-tree/objectNodeTypes.js.map +1 -1
- package/dist/simple-tree/schemaTypes.d.ts +51 -3
- package/dist/simple-tree/schemaTypes.d.ts.map +1 -1
- package/dist/simple-tree/schemaTypes.js.map +1 -1
- package/dist/simple-tree/toStoredSchema.d.ts.map +1 -1
- package/dist/simple-tree/toStoredSchema.js +18 -13
- package/dist/simple-tree/toStoredSchema.js.map +1 -1
- package/dist/util/brand.d.ts +0 -2
- package/dist/util/brand.d.ts.map +1 -1
- package/dist/util/brand.js +0 -1
- package/dist/util/brand.js.map +1 -1
- package/dist/util/index.d.ts +2 -2
- package/dist/util/index.d.ts.map +1 -1
- package/dist/util/index.js +4 -5
- package/dist/util/index.js.map +1 -1
- package/dist/util/rangeMap.d.ts +72 -42
- package/dist/util/rangeMap.d.ts.map +1 -1
- package/dist/util/rangeMap.js +161 -151
- package/dist/util/rangeMap.js.map +1 -1
- package/dist/util/typeCheck.d.ts +0 -2
- package/dist/util/typeCheck.d.ts.map +1 -1
- package/dist/util/typeCheck.js.map +1 -1
- package/dist/util/utils.d.ts +35 -1
- package/dist/util/utils.d.ts.map +1 -1
- package/dist/util/utils.js +32 -1
- package/dist/util/utils.js.map +1 -1
- package/lib/alpha.d.ts +11 -0
- package/lib/beta.d.ts +2 -0
- package/lib/core/index.d.ts +2 -2
- package/lib/core/index.d.ts.map +1 -1
- package/lib/core/index.js +2 -2
- package/lib/core/index.js.map +1 -1
- package/lib/core/rebase/utils.d.ts.map +1 -1
- package/lib/core/rebase/utils.js +3 -10
- package/lib/core/rebase/utils.js.map +1 -1
- package/lib/core/schema-stored/format.d.ts +0 -3
- package/lib/core/schema-stored/format.d.ts.map +1 -1
- package/lib/core/schema-stored/format.js.map +1 -1
- package/lib/core/schema-stored/schema.d.ts +12 -10
- package/lib/core/schema-stored/schema.d.ts.map +1 -1
- package/lib/core/schema-stored/schema.js +3 -5
- package/lib/core/schema-stored/schema.js.map +1 -1
- package/lib/core/schema-view/index.d.ts +1 -1
- package/lib/core/schema-view/index.d.ts.map +1 -1
- package/lib/core/schema-view/index.js +1 -1
- package/lib/core/schema-view/index.js.map +1 -1
- package/lib/core/schema-view/view.d.ts +0 -7
- package/lib/core/schema-view/view.d.ts.map +1 -1
- package/lib/core/schema-view/view.js +0 -11
- package/lib/core/schema-view/view.js.map +1 -1
- package/lib/{feature-libraries/chunked-forest → core/tree}/chunk.d.ts +2 -1
- package/lib/core/tree/chunk.d.ts.map +1 -0
- package/lib/{feature-libraries/chunked-forest → core/tree}/chunk.js +1 -1
- package/lib/core/tree/chunk.js.map +1 -0
- package/lib/core/tree/index.d.ts +1 -0
- package/lib/core/tree/index.d.ts.map +1 -1
- package/lib/core/tree/index.js +1 -0
- package/lib/core/tree/index.js.map +1 -1
- package/lib/core/tree/treeTextFormat.d.ts +0 -5
- package/lib/core/tree/treeTextFormat.d.ts.map +1 -1
- package/lib/core/tree/treeTextFormat.js.map +1 -1
- package/lib/core/tree/types.d.ts +0 -5
- package/lib/core/tree/types.d.ts.map +1 -1
- package/lib/core/tree/types.js +0 -1
- package/lib/core/tree/types.js.map +1 -1
- package/lib/feature-libraries/chunked-forest/basicChunk.d.ts +1 -2
- package/lib/feature-libraries/chunked-forest/basicChunk.d.ts.map +1 -1
- package/lib/feature-libraries/chunked-forest/basicChunk.js +1 -1
- package/lib/feature-libraries/chunked-forest/basicChunk.js.map +1 -1
- package/lib/feature-libraries/chunked-forest/chunkTree.d.ts +1 -2
- package/lib/feature-libraries/chunked-forest/chunkTree.d.ts.map +1 -1
- package/lib/feature-libraries/chunked-forest/chunkTree.js +1 -2
- package/lib/feature-libraries/chunked-forest/chunkTree.js.map +1 -1
- package/lib/feature-libraries/chunked-forest/chunkedForest.d.ts +1 -2
- package/lib/feature-libraries/chunked-forest/chunkedForest.d.ts.map +1 -1
- package/lib/feature-libraries/chunked-forest/chunkedForest.js.map +1 -1
- package/lib/feature-libraries/chunked-forest/codec/chunkCodecUtilities.d.ts +1 -2
- package/lib/feature-libraries/chunked-forest/codec/chunkCodecUtilities.d.ts.map +1 -1
- package/lib/feature-libraries/chunked-forest/codec/chunkCodecUtilities.js.map +1 -1
- package/lib/feature-libraries/chunked-forest/codec/chunkDecoding.d.ts +1 -2
- package/lib/feature-libraries/chunked-forest/codec/chunkDecoding.d.ts.map +1 -1
- package/lib/feature-libraries/chunked-forest/codec/chunkDecoding.js.map +1 -1
- package/lib/feature-libraries/chunked-forest/codec/chunkDecodingGeneric.d.ts +1 -1
- package/lib/feature-libraries/chunked-forest/codec/chunkDecodingGeneric.d.ts.map +1 -1
- package/lib/feature-libraries/chunked-forest/codec/chunkDecodingGeneric.js.map +1 -1
- package/lib/feature-libraries/chunked-forest/emptyChunk.d.ts +1 -1
- package/lib/feature-libraries/chunked-forest/emptyChunk.d.ts.map +1 -1
- package/lib/feature-libraries/chunked-forest/emptyChunk.js +1 -2
- package/lib/feature-libraries/chunked-forest/emptyChunk.js.map +1 -1
- package/lib/feature-libraries/chunked-forest/index.d.ts +1 -1
- package/lib/feature-libraries/chunked-forest/index.d.ts.map +1 -1
- package/lib/feature-libraries/chunked-forest/index.js +1 -1
- package/lib/feature-libraries/chunked-forest/index.js.map +1 -1
- package/lib/feature-libraries/chunked-forest/sequenceChunk.d.ts +1 -1
- package/lib/feature-libraries/chunked-forest/sequenceChunk.d.ts.map +1 -1
- package/lib/feature-libraries/chunked-forest/sequenceChunk.js +1 -1
- package/lib/feature-libraries/chunked-forest/sequenceChunk.js.map +1 -1
- package/lib/feature-libraries/chunked-forest/uniformChunk.d.ts +1 -2
- package/lib/feature-libraries/chunked-forest/uniformChunk.d.ts.map +1 -1
- package/lib/feature-libraries/chunked-forest/uniformChunk.js +1 -1
- package/lib/feature-libraries/chunked-forest/uniformChunk.js.map +1 -1
- package/lib/feature-libraries/default-schema/defaultEditBuilder.d.ts +10 -0
- package/lib/feature-libraries/default-schema/defaultEditBuilder.d.ts.map +1 -1
- package/lib/feature-libraries/default-schema/defaultEditBuilder.js +3 -0
- package/lib/feature-libraries/default-schema/defaultEditBuilder.js.map +1 -1
- package/lib/feature-libraries/default-schema/defaultSchema.d.ts.map +1 -1
- package/lib/feature-libraries/default-schema/defaultSchema.js +1 -0
- package/lib/feature-libraries/default-schema/defaultSchema.js.map +1 -1
- package/lib/feature-libraries/default-schema/schemaChecker.d.ts.map +1 -1
- package/lib/feature-libraries/default-schema/schemaChecker.js +2 -1
- package/lib/feature-libraries/default-schema/schemaChecker.js.map +1 -1
- package/lib/feature-libraries/index.d.ts +1 -2
- package/lib/feature-libraries/index.d.ts.map +1 -1
- package/lib/feature-libraries/index.js +1 -2
- package/lib/feature-libraries/index.js.map +1 -1
- package/lib/feature-libraries/indexing/anchorTreeIndex.d.ts +8 -1
- package/lib/feature-libraries/indexing/anchorTreeIndex.d.ts.map +1 -1
- package/lib/feature-libraries/indexing/anchorTreeIndex.js +31 -5
- package/lib/feature-libraries/indexing/anchorTreeIndex.js.map +1 -1
- package/lib/feature-libraries/modular-schema/crossFieldQueries.d.ts +1 -1
- package/lib/feature-libraries/modular-schema/crossFieldQueries.d.ts.map +1 -1
- package/lib/feature-libraries/modular-schema/crossFieldQueries.js +9 -3
- package/lib/feature-libraries/modular-schema/crossFieldQueries.js.map +1 -1
- package/lib/feature-libraries/modular-schema/discrepancies.d.ts +84 -24
- package/lib/feature-libraries/modular-schema/discrepancies.d.ts.map +1 -1
- package/lib/feature-libraries/modular-schema/discrepancies.js +25 -28
- package/lib/feature-libraries/modular-schema/discrepancies.js.map +1 -1
- package/lib/feature-libraries/modular-schema/fieldChangeHandler.d.ts +12 -5
- package/lib/feature-libraries/modular-schema/fieldChangeHandler.d.ts.map +1 -1
- package/lib/feature-libraries/modular-schema/fieldChangeHandler.js.map +1 -1
- package/lib/feature-libraries/modular-schema/genericFieldKind.d.ts.map +1 -1
- package/lib/feature-libraries/modular-schema/genericFieldKind.js +2 -1
- package/lib/feature-libraries/modular-schema/genericFieldKind.js.map +1 -1
- package/lib/feature-libraries/modular-schema/index.d.ts +2 -2
- package/lib/feature-libraries/modular-schema/index.d.ts.map +1 -1
- package/lib/feature-libraries/modular-schema/index.js +1 -1
- package/lib/feature-libraries/modular-schema/index.js.map +1 -1
- package/lib/feature-libraries/modular-schema/isNeverTree.d.ts +0 -1
- package/lib/feature-libraries/modular-schema/isNeverTree.d.ts.map +1 -1
- package/lib/feature-libraries/modular-schema/isNeverTree.js +0 -1
- package/lib/feature-libraries/modular-schema/isNeverTree.js.map +1 -1
- package/lib/feature-libraries/modular-schema/modularChangeFamily.d.ts +1 -0
- package/lib/feature-libraries/modular-schema/modularChangeFamily.d.ts.map +1 -1
- package/lib/feature-libraries/modular-schema/modularChangeFamily.js +89 -25
- package/lib/feature-libraries/modular-schema/modularChangeFamily.js.map +1 -1
- package/lib/feature-libraries/modular-schema/modularChangeTypes.d.ts +12 -0
- package/lib/feature-libraries/modular-schema/modularChangeTypes.d.ts.map +1 -1
- package/lib/feature-libraries/modular-schema/modularChangeTypes.js.map +1 -1
- package/lib/feature-libraries/optional-field/optionalField.d.ts.map +1 -1
- package/lib/feature-libraries/optional-field/optionalField.js +24 -4
- package/lib/feature-libraries/optional-field/optionalField.js.map +1 -1
- package/lib/feature-libraries/optional-field/optionalFieldChangeFormatV1.d.ts +6 -6
- package/lib/feature-libraries/optional-field/optionalFieldChangeFormatV1.d.ts.map +1 -1
- package/lib/feature-libraries/optional-field/optionalFieldChangeFormatV2.d.ts +7 -7
- package/lib/feature-libraries/optional-field/optionalFieldChangeFormatV2.d.ts.map +1 -1
- package/lib/feature-libraries/schema-edits/schemaChangeFormat.d.ts +12 -12
- package/lib/feature-libraries/sequence-field/formatV1.d.ts +99 -99
- package/lib/feature-libraries/sequence-field/formatV1.d.ts.map +1 -1
- package/lib/feature-libraries/sequence-field/formatV2.d.ts +76 -76
- package/lib/feature-libraries/sequence-field/formatV2.d.ts.map +1 -1
- package/lib/feature-libraries/sequence-field/formatV3.d.ts +54 -54
- package/lib/feature-libraries/sequence-field/types.d.ts +0 -1
- package/lib/feature-libraries/sequence-field/types.d.ts.map +1 -1
- package/lib/feature-libraries/sequence-field/types.js.map +1 -1
- package/lib/feature-libraries/sequence-field/utils.d.ts +2 -2
- package/lib/feature-libraries/sequence-field/utils.d.ts.map +1 -1
- package/lib/feature-libraries/sequence-field/utils.js +14 -5
- package/lib/feature-libraries/sequence-field/utils.js.map +1 -1
- package/lib/index.d.ts +4 -5
- package/lib/index.d.ts.map +1 -1
- package/lib/index.js +3 -4
- package/lib/index.js.map +1 -1
- package/lib/legacy.d.ts +2 -0
- package/lib/packageVersion.d.ts +1 -1
- package/lib/packageVersion.js +1 -1
- package/lib/packageVersion.js.map +1 -1
- package/lib/public.d.ts +2 -0
- package/lib/shared-tree/index.d.ts +3 -2
- package/lib/shared-tree/index.d.ts.map +1 -1
- package/lib/shared-tree/index.js +2 -1
- package/lib/shared-tree/index.js.map +1 -1
- package/lib/shared-tree/schematizeTree.d.ts +1 -1
- package/lib/shared-tree/schematizeTree.d.ts.map +1 -1
- package/lib/shared-tree/schematizeTree.js +7 -7
- package/lib/shared-tree/schematizeTree.js.map +1 -1
- package/lib/shared-tree/schematizingTreeView.d.ts +10 -1
- package/lib/shared-tree/schematizingTreeView.d.ts.map +1 -1
- package/lib/shared-tree/schematizingTreeView.js +56 -17
- package/lib/shared-tree/schematizingTreeView.js.map +1 -1
- package/lib/shared-tree/sharedTree.d.ts +31 -10
- package/lib/shared-tree/sharedTree.d.ts.map +1 -1
- package/lib/shared-tree/sharedTree.js +107 -16
- package/lib/shared-tree/sharedTree.js.map +1 -1
- package/lib/shared-tree/transactionTypes.d.ts +105 -0
- package/lib/shared-tree/transactionTypes.d.ts.map +1 -0
- package/lib/shared-tree/transactionTypes.js +10 -0
- package/lib/shared-tree/transactionTypes.js.map +1 -0
- package/lib/shared-tree/treeApi.d.ts +1 -25
- package/lib/shared-tree/treeApi.d.ts.map +1 -1
- package/lib/shared-tree/treeApi.js +1 -5
- package/lib/shared-tree/treeApi.js.map +1 -1
- package/lib/shared-tree/treeCheckout.d.ts +39 -13
- package/lib/shared-tree/treeCheckout.d.ts.map +1 -1
- package/lib/shared-tree/treeCheckout.js +277 -130
- package/lib/shared-tree/treeCheckout.js.map +1 -1
- package/lib/shared-tree-core/branch.d.ts +13 -35
- package/lib/shared-tree-core/branch.d.ts.map +1 -1
- package/lib/shared-tree-core/branch.js +12 -76
- package/lib/shared-tree-core/branch.js.map +1 -1
- package/lib/shared-tree-core/branchCommitEnricher.d.ts +7 -1
- package/lib/shared-tree-core/branchCommitEnricher.d.ts.map +1 -1
- package/lib/shared-tree-core/branchCommitEnricher.js +16 -18
- package/lib/shared-tree-core/branchCommitEnricher.js.map +1 -1
- package/lib/shared-tree-core/editManager.d.ts.map +1 -1
- package/lib/shared-tree-core/editManager.js +3 -3
- package/lib/shared-tree-core/editManager.js.map +1 -1
- package/lib/shared-tree-core/index.d.ts +3 -3
- package/lib/shared-tree-core/index.d.ts.map +1 -1
- package/lib/shared-tree-core/index.js +2 -2
- package/lib/shared-tree-core/index.js.map +1 -1
- package/lib/shared-tree-core/sharedTreeCore.d.ts +2 -9
- package/lib/shared-tree-core/sharedTreeCore.d.ts.map +1 -1
- package/lib/shared-tree-core/sharedTreeCore.js +4 -16
- package/lib/shared-tree-core/sharedTreeCore.js.map +1 -1
- package/lib/shared-tree-core/transaction.d.ts +38 -0
- package/lib/shared-tree-core/transaction.d.ts.map +1 -1
- package/lib/shared-tree-core/transaction.js +112 -1
- package/lib/shared-tree-core/transaction.js.map +1 -1
- package/lib/simple-tree/api/conciseTree.d.ts.map +1 -1
- package/lib/simple-tree/api/conciseTree.js +2 -2
- package/lib/simple-tree/api/conciseTree.js.map +1 -1
- package/lib/simple-tree/api/create.d.ts.map +1 -1
- package/lib/simple-tree/api/create.js +5 -1
- package/lib/simple-tree/api/create.js.map +1 -1
- package/lib/simple-tree/api/customTree.d.ts +14 -2
- package/lib/simple-tree/api/customTree.d.ts.map +1 -1
- package/lib/simple-tree/api/customTree.js +50 -2
- package/lib/simple-tree/api/customTree.js.map +1 -1
- package/lib/simple-tree/api/index.d.ts +3 -2
- package/lib/simple-tree/api/index.d.ts.map +1 -1
- package/lib/simple-tree/api/index.js +3 -1
- package/lib/simple-tree/api/index.js.map +1 -1
- package/lib/simple-tree/api/jsonSchema.d.ts +6 -0
- package/lib/simple-tree/api/jsonSchema.d.ts.map +1 -1
- package/lib/simple-tree/api/jsonSchema.js.map +1 -1
- package/lib/simple-tree/api/schemaFactory.d.ts +65 -8
- package/lib/simple-tree/api/schemaFactory.d.ts.map +1 -1
- package/lib/simple-tree/api/schemaFactory.js +9 -3
- package/lib/simple-tree/api/schemaFactory.js.map +1 -1
- package/lib/simple-tree/api/schemaFactoryAlpha.d.ts +83 -0
- package/lib/simple-tree/api/schemaFactoryAlpha.d.ts.map +1 -0
- package/lib/simple-tree/api/schemaFactoryAlpha.js +86 -0
- package/lib/simple-tree/api/schemaFactoryAlpha.js.map +1 -0
- package/lib/simple-tree/api/simpleSchema.d.ts +8 -2
- package/lib/simple-tree/api/simpleSchema.d.ts.map +1 -1
- package/lib/simple-tree/api/simpleSchema.js.map +1 -1
- package/lib/simple-tree/api/simpleSchemaToJsonSchema.js +14 -11
- package/lib/simple-tree/api/simpleSchemaToJsonSchema.js.map +1 -1
- package/lib/simple-tree/api/simpleTreeIndex.js +3 -1
- package/lib/simple-tree/api/simpleTreeIndex.js.map +1 -1
- package/lib/simple-tree/api/storedSchema.d.ts +4 -4
- package/lib/simple-tree/api/storedSchema.d.ts.map +1 -1
- package/lib/simple-tree/api/storedSchema.js +5 -18
- package/lib/simple-tree/api/storedSchema.js.map +1 -1
- package/lib/simple-tree/api/testRecursiveDomain.d.ts +5 -5
- package/lib/simple-tree/api/tree.d.ts +61 -0
- package/lib/simple-tree/api/tree.d.ts.map +1 -1
- package/lib/simple-tree/api/tree.js.map +1 -1
- package/lib/simple-tree/api/verboseTree.js +2 -2
- package/lib/simple-tree/api/verboseTree.js.map +1 -1
- package/lib/simple-tree/api/view.d.ts +14 -9
- package/lib/simple-tree/api/view.d.ts.map +1 -1
- package/lib/simple-tree/api/view.js +131 -42
- package/lib/simple-tree/api/view.js.map +1 -1
- package/lib/simple-tree/api/viewSchemaToSimpleSchema.d.ts.map +1 -1
- package/lib/simple-tree/api/viewSchemaToSimpleSchema.js +12 -12
- package/lib/simple-tree/api/viewSchemaToSimpleSchema.js.map +1 -1
- package/lib/simple-tree/arrayNode.d.ts +2 -2
- package/lib/simple-tree/arrayNode.d.ts.map +1 -1
- package/lib/simple-tree/arrayNode.js +2 -1
- package/lib/simple-tree/arrayNode.js.map +1 -1
- package/lib/simple-tree/core/treeNodeSchema.d.ts +10 -6
- package/lib/simple-tree/core/treeNodeSchema.d.ts.map +1 -1
- package/lib/simple-tree/core/treeNodeSchema.js.map +1 -1
- package/lib/simple-tree/index.d.ts +3 -3
- package/lib/simple-tree/index.d.ts.map +1 -1
- package/lib/simple-tree/index.js +2 -2
- package/lib/simple-tree/index.js.map +1 -1
- package/lib/simple-tree/leafNodeSchema.d.ts +5 -20
- package/lib/simple-tree/leafNodeSchema.d.ts.map +1 -1
- package/lib/simple-tree/leafNodeSchema.js +0 -15
- package/lib/simple-tree/leafNodeSchema.js.map +1 -1
- package/lib/simple-tree/mapNode.d.ts +2 -2
- package/lib/simple-tree/mapNode.d.ts.map +1 -1
- package/lib/simple-tree/mapNode.js +2 -1
- package/lib/simple-tree/mapNode.js.map +1 -1
- package/lib/simple-tree/objectNode.d.ts +9 -4
- package/lib/simple-tree/objectNode.d.ts.map +1 -1
- package/lib/simple-tree/objectNode.js +17 -1
- package/lib/simple-tree/objectNode.js.map +1 -1
- package/lib/simple-tree/objectNodeTypes.d.ts +6 -2
- package/lib/simple-tree/objectNodeTypes.d.ts.map +1 -1
- package/lib/simple-tree/objectNodeTypes.js.map +1 -1
- package/lib/simple-tree/schemaTypes.d.ts +51 -3
- package/lib/simple-tree/schemaTypes.d.ts.map +1 -1
- package/lib/simple-tree/schemaTypes.js.map +1 -1
- package/lib/simple-tree/toStoredSchema.d.ts.map +1 -1
- package/lib/simple-tree/toStoredSchema.js +19 -14
- package/lib/simple-tree/toStoredSchema.js.map +1 -1
- package/lib/util/brand.d.ts +0 -2
- package/lib/util/brand.d.ts.map +1 -1
- package/lib/util/brand.js +0 -1
- package/lib/util/brand.js.map +1 -1
- package/lib/util/index.d.ts +2 -2
- package/lib/util/index.d.ts.map +1 -1
- package/lib/util/index.js +2 -2
- package/lib/util/index.js.map +1 -1
- package/lib/util/rangeMap.d.ts +72 -42
- package/lib/util/rangeMap.d.ts.map +1 -1
- package/lib/util/rangeMap.js +159 -146
- package/lib/util/rangeMap.js.map +1 -1
- package/lib/util/typeCheck.d.ts +0 -2
- package/lib/util/typeCheck.d.ts.map +1 -1
- package/lib/util/typeCheck.js.map +1 -1
- package/lib/util/utils.d.ts +35 -1
- package/lib/util/utils.d.ts.map +1 -1
- package/lib/util/utils.js +29 -0
- package/lib/util/utils.js.map +1 -1
- package/package.json +23 -23
- package/src/core/index.ts +5 -1
- package/src/core/rebase/utils.ts +17 -20
- package/src/core/schema-stored/format.ts +0 -3
- package/src/core/schema-stored/schema.ts +13 -10
- package/src/core/schema-view/index.ts +0 -1
- package/src/core/schema-view/view.ts +0 -11
- package/src/{feature-libraries/chunked-forest → core/tree}/chunk.ts +4 -4
- package/src/core/tree/index.ts +8 -0
- package/src/core/tree/treeTextFormat.ts +0 -5
- package/src/core/tree/types.ts +0 -5
- package/src/feature-libraries/chunked-forest/basicChunk.ts +4 -2
- package/src/feature-libraries/chunked-forest/chunkTree.ts +2 -1
- package/src/feature-libraries/chunked-forest/chunkedForest.ts +2 -1
- package/src/feature-libraries/chunked-forest/codec/chunkCodecUtilities.ts +1 -2
- package/src/feature-libraries/chunked-forest/codec/chunkDecoding.ts +6 -2
- package/src/feature-libraries/chunked-forest/codec/chunkDecodingGeneric.ts +1 -1
- package/src/feature-libraries/chunked-forest/emptyChunk.ts +4 -2
- package/src/feature-libraries/chunked-forest/index.ts +1 -1
- package/src/feature-libraries/chunked-forest/sequenceChunk.ts +1 -1
- package/src/feature-libraries/chunked-forest/uniformChunk.ts +4 -1
- package/src/feature-libraries/default-schema/defaultEditBuilder.ts +14 -1
- package/src/feature-libraries/default-schema/defaultSchema.ts +1 -0
- package/src/feature-libraries/default-schema/schemaChecker.ts +4 -1
- package/src/feature-libraries/index.ts +13 -1
- package/src/feature-libraries/indexing/anchorTreeIndex.ts +34 -5
- package/src/feature-libraries/modular-schema/crossFieldQueries.ts +9 -9
- package/src/feature-libraries/modular-schema/discrepancies.ts +76 -38
- package/src/feature-libraries/modular-schema/fieldChangeHandler.ts +13 -9
- package/src/feature-libraries/modular-schema/genericFieldKind.ts +4 -2
- package/src/feature-libraries/modular-schema/index.ts +14 -0
- package/src/feature-libraries/modular-schema/isNeverTree.ts +0 -2
- package/src/feature-libraries/modular-schema/modularChangeFamily.ts +124 -31
- package/src/feature-libraries/modular-schema/modularChangeTypes.ts +12 -0
- package/src/feature-libraries/optional-field/optionalField.ts +34 -5
- package/src/feature-libraries/sequence-field/types.ts +0 -1
- package/src/feature-libraries/sequence-field/utils.ts +18 -7
- package/src/index.ts +12 -29
- package/src/packageVersion.ts +1 -1
- package/src/shared-tree/index.ts +13 -2
- package/src/shared-tree/schematizeTree.ts +6 -10
- package/src/shared-tree/schematizingTreeView.ts +102 -23
- package/src/shared-tree/sharedTree.ts +181 -44
- package/src/shared-tree/transactionTypes.ts +125 -0
- package/src/shared-tree/treeApi.ts +1 -28
- package/src/shared-tree/treeCheckout.ts +358 -175
- package/src/shared-tree-core/branch.ts +29 -122
- package/src/shared-tree-core/branchCommitEnricher.ts +19 -20
- package/src/shared-tree-core/editManager.ts +3 -8
- package/src/shared-tree-core/index.ts +2 -1
- package/src/shared-tree-core/sharedTreeCore.ts +8 -19
- package/src/shared-tree-core/transaction.ts +145 -0
- package/src/simple-tree/api/conciseTree.ts +2 -2
- package/src/simple-tree/api/create.ts +5 -1
- package/src/simple-tree/api/customTree.ts +69 -1
- package/src/simple-tree/api/index.ts +13 -2
- package/src/simple-tree/api/jsonSchema.ts +7 -0
- package/src/simple-tree/api/schemaFactory.ts +91 -3
- package/src/simple-tree/api/schemaFactoryAlpha.ts +253 -0
- package/src/simple-tree/api/simpleSchema.ts +9 -2
- package/src/simple-tree/api/simpleSchemaToJsonSchema.ts +22 -12
- package/src/simple-tree/api/simpleTreeIndex.ts +2 -0
- package/src/simple-tree/api/storedSchema.ts +7 -22
- package/src/simple-tree/api/tree.ts +78 -0
- package/src/simple-tree/api/verboseTree.ts +2 -2
- package/src/simple-tree/api/view.ts +197 -51
- package/src/simple-tree/api/viewSchemaToSimpleSchema.ts +19 -13
- package/src/simple-tree/arrayNode.ts +7 -1
- package/src/simple-tree/core/treeNodeSchema.ts +51 -7
- package/src/simple-tree/index.ts +9 -0
- package/src/simple-tree/leafNodeSchema.ts +0 -19
- package/src/simple-tree/mapNode.ts +7 -1
- package/src/simple-tree/objectNode.ts +33 -3
- package/src/simple-tree/objectNodeTypes.ts +9 -1
- package/src/simple-tree/schemaTypes.ts +57 -3
- package/src/simple-tree/toStoredSchema.ts +25 -19
- package/src/util/brand.ts +0 -2
- package/src/util/index.ts +3 -6
- package/src/util/rangeMap.ts +199 -189
- package/src/util/typeCheck.ts +0 -2
- package/src/util/utils.ts +73 -1
- package/dist/feature-libraries/chunked-forest/chunk.d.ts.map +0 -1
- package/dist/feature-libraries/chunked-forest/chunk.js.map +0 -1
- package/dist/feature-libraries/memoizedIdRangeAllocator.d.ts +0 -38
- package/dist/feature-libraries/memoizedIdRangeAllocator.d.ts.map +0 -1
- package/dist/feature-libraries/memoizedIdRangeAllocator.js +0 -74
- package/dist/feature-libraries/memoizedIdRangeAllocator.js.map +0 -1
- package/lib/feature-libraries/chunked-forest/chunk.d.ts.map +0 -1
- package/lib/feature-libraries/chunked-forest/chunk.js.map +0 -1
- package/lib/feature-libraries/memoizedIdRangeAllocator.d.ts +0 -38
- package/lib/feature-libraries/memoizedIdRangeAllocator.d.ts.map +0 -1
- package/lib/feature-libraries/memoizedIdRangeAllocator.js +0 -71
- package/lib/feature-libraries/memoizedIdRangeAllocator.js.map +0 -1
- package/src/feature-libraries/memoizedIdRangeAllocator.ts +0 -112
|
@@ -8,7 +8,13 @@ var __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (
|
|
|
8
8
|
if (typeof state === "function" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError("Cannot read private member from an object whose class did not declare it");
|
|
9
9
|
return kind === "m" ? f : kind === "a" ? f.call(receiver) : f ? f.value : state.get(receiver);
|
|
10
10
|
};
|
|
11
|
-
var
|
|
11
|
+
var __classPrivateFieldSet = (this && this.__classPrivateFieldSet) || function (receiver, state, value, kind, f) {
|
|
12
|
+
if (kind === "m") throw new TypeError("Private method is not writable");
|
|
13
|
+
if (kind === "a" && !f) throw new TypeError("Private accessor was defined without a setter");
|
|
14
|
+
if (typeof state === "function" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError("Cannot write private member to an object whose class did not declare it");
|
|
15
|
+
return (kind === "a" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;
|
|
16
|
+
};
|
|
17
|
+
var _TreeCheckout_events, _TreeCheckout_transaction, _TreeCheckout_validatedCommits;
|
|
12
18
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
13
19
|
exports.TreeCheckout = exports.createTreeCheckout = void 0;
|
|
14
20
|
const internal_1 = require("@fluidframework/core-utils/internal");
|
|
@@ -41,31 +47,29 @@ function createTreeCheckout(idCompressor, mintRevisionTag, revisionTagCodec, arg
|
|
|
41
47
|
change: changeFamily.rebaser.compose([]),
|
|
42
48
|
revision: "root",
|
|
43
49
|
}, changeFamily, () => idCompressor.generateCompressedId());
|
|
44
|
-
|
|
45
|
-
return new TreeCheckout(branch, false, changeFamily, schema, forest, events, mintRevisionTag, revisionTagCodec, idCompressor, args?.removedRoots, args?.logger, args?.breaker);
|
|
50
|
+
return new TreeCheckout(branch, false, changeFamily, schema, forest, mintRevisionTag, revisionTagCodec, idCompressor, args?.removedRoots, args?.logger, args?.breaker, args?.disposeForksAfterTransaction);
|
|
46
51
|
}
|
|
47
52
|
exports.createTreeCheckout = createTreeCheckout;
|
|
48
53
|
/**
|
|
49
54
|
* An implementation of {@link ITreeCheckoutFork}.
|
|
50
55
|
*/
|
|
51
56
|
class TreeCheckout {
|
|
52
|
-
constructor(
|
|
57
|
+
constructor(branch,
|
|
53
58
|
/** True if and only if this checkout is for a forked branch and not the "main branch" of the tree. */
|
|
54
|
-
isBranch, changeFamily, storedSchema, forest,
|
|
59
|
+
isBranch, changeFamily, storedSchema, forest, mintRevisionTag, revisionTagCodec, idCompressor, removedRoots = (0, index_js_2.makeDetachedFieldIndex)("repair", revisionTagCodec, idCompressor),
|
|
55
60
|
/** Optional logger for telemetry. */
|
|
56
|
-
logger, breaker = new index_js_5.Breakable("TreeCheckout")) {
|
|
57
|
-
this._branch = _branch;
|
|
61
|
+
logger, breaker = new index_js_5.Breakable("TreeCheckout"), disposeForksAfterTransaction = true) {
|
|
58
62
|
this.isBranch = isBranch;
|
|
59
63
|
this.changeFamily = changeFamily;
|
|
60
64
|
this.storedSchema = storedSchema;
|
|
61
65
|
this.forest = forest;
|
|
62
|
-
this.events = events;
|
|
63
66
|
this.mintRevisionTag = mintRevisionTag;
|
|
64
67
|
this.revisionTagCodec = revisionTagCodec;
|
|
65
68
|
this.idCompressor = idCompressor;
|
|
66
69
|
this.removedRoots = removedRoots;
|
|
67
70
|
this.logger = logger;
|
|
68
71
|
this.breaker = breaker;
|
|
72
|
+
this.disposeForksAfterTransaction = disposeForksAfterTransaction;
|
|
69
73
|
this.disposed = false;
|
|
70
74
|
this.views = new Set();
|
|
71
75
|
/**
|
|
@@ -78,69 +82,15 @@ class TreeCheckout {
|
|
|
78
82
|
* being reverted.
|
|
79
83
|
*/
|
|
80
84
|
this.revertibleCommitBranches = new Map();
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
* Transactions may nest, meaning that a transaction may be started while a transaction is already ongoing.
|
|
87
|
-
*
|
|
88
|
-
* To avoid updating observers of the view state with intermediate results during a transaction,
|
|
89
|
-
* use {@link ITreeCheckout#branch} and {@link ISharedTreeFork#merge}.
|
|
90
|
-
*/
|
|
91
|
-
_TreeCheckout_transaction.set(this, new index_js_4.TransactionStack(() => {
|
|
92
|
-
// Keep track of the commit that each transaction was on when it started
|
|
93
|
-
// TODO:#8603: This may need to be computed differently if we allow rebasing during a transaction.
|
|
94
|
-
const startCommit = this._branch.getHead();
|
|
95
|
-
// Keep track of all the forks created during the transaction so that we can dispose them when the transaction ends.
|
|
96
|
-
// This is a policy decision that we think is useful for the user, but it is not necessary for correctness.
|
|
97
|
-
const forks = new Set();
|
|
98
|
-
const onDisposeUnSubscribes = [];
|
|
99
|
-
const onForkUnSubscribe = (0, index_js_4.onForkTransitive)(this, (fork) => {
|
|
100
|
-
forks.add(fork);
|
|
101
|
-
onDisposeUnSubscribes.push(fork.events.on("dispose", () => forks.delete(fork)));
|
|
102
|
-
});
|
|
103
|
-
// When each transaction is started, take a snapshot of the current state of removed roots
|
|
104
|
-
const removedRoots = this.removedRoots.clone();
|
|
105
|
-
this._branch.editor.enterTransaction();
|
|
106
|
-
return (result) => {
|
|
107
|
-
this._branch.editor.exitTransaction();
|
|
108
|
-
switch (result) {
|
|
109
|
-
case index_js_4.TransactionResult.Abort:
|
|
110
|
-
this._branch.removeAfter(startCommit);
|
|
111
|
-
// If a transaction is rolled back, revert removed roots back to the latest snapshot
|
|
112
|
-
this.removedRoots = removedRoots;
|
|
113
|
-
break;
|
|
114
|
-
case index_js_4.TransactionResult.Commit: {
|
|
115
|
-
const removedCommits = this._branch.squashAfter(startCommit);
|
|
116
|
-
const transactionRevision = this._branch.getHead().revision;
|
|
117
|
-
for (const transactionStep of removedCommits) {
|
|
118
|
-
this.removedRoots.updateMajor(transactionStep.revision, transactionRevision);
|
|
119
|
-
}
|
|
120
|
-
break;
|
|
121
|
-
}
|
|
122
|
-
default:
|
|
123
|
-
(0, internal_1.unreachableCase)(result);
|
|
124
|
-
}
|
|
125
|
-
forks.forEach((fork) => fork.dispose());
|
|
126
|
-
onDisposeUnSubscribes.forEach((unsubscribe) => unsubscribe());
|
|
127
|
-
onForkUnSubscribe();
|
|
128
|
-
};
|
|
129
|
-
}));
|
|
130
|
-
// We subscribe to `beforeChange` rather than `afterChange` here because it's possible that the change is invalid WRT our forest.
|
|
131
|
-
// For example, a bug in the editor might produce a malformed change object and thus applying the change to the forest will throw an error.
|
|
132
|
-
// In such a case we will crash here, preventing the change from being added to the commit graph, and preventing `afterChange` from firing.
|
|
133
|
-
// One important consequence of this is that we will not submit the op containing the invalid change, since op submissions happens in response to `afterChange`.
|
|
134
|
-
_branch.events.on("beforeChange", (event) => {
|
|
85
|
+
_TreeCheckout_events.set(this, (0, client_utils_1.createEmitter)());
|
|
86
|
+
this.events = __classPrivateFieldGet(this, _TreeCheckout_events, "f");
|
|
87
|
+
this.onAfterChange = (event) => {
|
|
88
|
+
this.editLock.lock();
|
|
89
|
+
__classPrivateFieldGet(this, _TreeCheckout_events, "f").emit("beforeBatch", event);
|
|
135
90
|
if (event.change !== undefined) {
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
revision = (0, index_js_5.getLast)(event.newCommits).revision;
|
|
140
|
-
}
|
|
141
|
-
else {
|
|
142
|
-
revision = event.change.revision;
|
|
143
|
-
}
|
|
91
|
+
const revision = event.type === "rebase"
|
|
92
|
+
? __classPrivateFieldGet(this, _TreeCheckout_transaction, "f").activeBranch.getHead().revision
|
|
93
|
+
: event.change.revision;
|
|
144
94
|
// Conflicts due to schema will be empty and thus are not applied.
|
|
145
95
|
for (const change of event.change.change.changes) {
|
|
146
96
|
if (change.type === "data") {
|
|
@@ -165,54 +115,22 @@ class TreeCheckout {
|
|
|
165
115
|
// They will however be rebased over the rollback of the schema change. This rebasing will
|
|
166
116
|
// ensure that these data changes are muted if they would render some trees invalid under the
|
|
167
117
|
// original (reinstated) schema.
|
|
168
|
-
storedSchema.apply(change.innerChange.schema.new);
|
|
118
|
+
this.storedSchema.apply(change.innerChange.schema.new);
|
|
169
119
|
}
|
|
170
120
|
else {
|
|
171
121
|
(0, index_js_5.fail)("Unknown Shared Tree change type.");
|
|
172
122
|
}
|
|
173
123
|
}
|
|
174
|
-
this.events.emit("afterBatch");
|
|
175
124
|
}
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
if (!this.transaction.isInProgress()) {
|
|
181
|
-
if (event.type === "append" ||
|
|
182
|
-
(event.type === "replace" && (0, index_js_4.getChangeReplaceType)(event) === "transactionCommit")) {
|
|
183
|
-
// TODO:#20949: When the SharedTree is detached, these commits will already have been garbage collected.
|
|
184
|
-
// Figure out a way to generate revertibles before the commits are garbage collected.
|
|
185
|
-
for (const commit of event.newCommits) {
|
|
186
|
-
const kind = event.type === "append" ? event.kind : index_js_2.CommitKind.Default;
|
|
187
|
-
const { change, revision } = commit;
|
|
188
|
-
const getRevertible = (0, sharedTreeChangeFamily_js_1.hasSchemaChange)(change)
|
|
189
|
-
? undefined
|
|
190
|
-
: (onRevertibleDisposed) => {
|
|
191
|
-
if (!withinEventContext) {
|
|
192
|
-
throw new internal_2.UsageError("Cannot get a revertible outside of the context of a changed event.");
|
|
193
|
-
}
|
|
194
|
-
if (this.revertibleCommitBranches.get(revision) !== undefined) {
|
|
195
|
-
throw new internal_2.UsageError("Cannot generate the same revertible more than once. Note that this can happen when multiple changed event listeners are registered.");
|
|
196
|
-
}
|
|
197
|
-
const revertible = this.createRevertible(revision, kind, this, onRevertibleDisposed);
|
|
198
|
-
this.revertibleCommitBranches.set(revision, _branch.fork(commit));
|
|
199
|
-
this.revertibles.add(revertible);
|
|
200
|
-
return revertible;
|
|
201
|
-
};
|
|
202
|
-
let withinEventContext = true;
|
|
203
|
-
this.events.emit("changed", { isLocal: true, kind }, getRevertible);
|
|
204
|
-
withinEventContext = false;
|
|
205
|
-
}
|
|
206
|
-
}
|
|
207
|
-
else if (this.isRemoteChangeEvent(event)) {
|
|
208
|
-
// TODO: figure out how to plumb through commit kind info for remote changes
|
|
209
|
-
this.events.emit("changed", { isLocal: false, kind: index_js_2.CommitKind.Default });
|
|
210
|
-
}
|
|
125
|
+
__classPrivateFieldGet(this, _TreeCheckout_events, "f").emit("afterBatch");
|
|
126
|
+
this.editLock.unlock();
|
|
127
|
+
if (event.type === "append") {
|
|
128
|
+
event.newCommits.forEach((commit) => this.validateCommit(commit));
|
|
211
129
|
}
|
|
212
|
-
}
|
|
213
|
-
|
|
214
|
-
|
|
215
|
-
|
|
130
|
+
};
|
|
131
|
+
this.onAncestryTrimmed = (revisions) => {
|
|
132
|
+
// When the branch is trimmed, we can garbage collect any repair data whose latest relevant revision is one of the
|
|
133
|
+
// trimmed revisions.
|
|
216
134
|
this.withCombinedVisitor((visitor) => {
|
|
217
135
|
revisions.forEach((revision) => {
|
|
218
136
|
// get all the roots last created or used by the revision
|
|
@@ -224,7 +142,88 @@ class TreeCheckout {
|
|
|
224
142
|
this.removedRoots.deleteRootsLastTouchedByRevision(revision);
|
|
225
143
|
});
|
|
226
144
|
});
|
|
145
|
+
};
|
|
146
|
+
/**
|
|
147
|
+
* The {@link Transactor} for this checkout.
|
|
148
|
+
* @remarks In the context of a checkout, transactions allow edits to be batched into atomic units.
|
|
149
|
+
* Edits made during a transaction will update the local state of the tree immediately, but will be squashed into a single edit when the transaction is committed.
|
|
150
|
+
* If the transaction is aborted, the local state will be reset to what it was before the transaction began.
|
|
151
|
+
* Transactions may nest, meaning that a transaction may be started while a transaction is already ongoing.
|
|
152
|
+
*
|
|
153
|
+
* To avoid updating observers of the view state with intermediate results during a transaction,
|
|
154
|
+
* use {@link ITreeCheckout#branch} and {@link ISharedTreeFork#merge}.
|
|
155
|
+
*/
|
|
156
|
+
_TreeCheckout_transaction.set(this, void 0);
|
|
157
|
+
// #region Commit Validation
|
|
158
|
+
/** Used to maintain the contract of {@link onCommitValid}(). */
|
|
159
|
+
_TreeCheckout_validatedCommits.set(this, new WeakMap());
|
|
160
|
+
__classPrivateFieldSet(this, _TreeCheckout_transaction, new index_js_4.SquashingTransactionStack(branch, (commits) => {
|
|
161
|
+
const revision = this.mintRevisionTag();
|
|
162
|
+
for (const transactionStep of commits) {
|
|
163
|
+
this.removedRoots.updateMajor(transactionStep.revision, revision);
|
|
164
|
+
}
|
|
165
|
+
const squashedChange = this.changeFamily.rebaser.compose(commits);
|
|
166
|
+
const change = this.changeFamily.rebaser.changeRevision(squashedChange, revision);
|
|
167
|
+
return (0, index_js_2.tagChange)(change, revision);
|
|
168
|
+
}, () => {
|
|
169
|
+
const disposeForks = this.disposeForksAfterTransaction
|
|
170
|
+
? trackForksForDisposal(this)
|
|
171
|
+
: undefined;
|
|
172
|
+
// When each transaction is started, take a snapshot of the current state of removed roots
|
|
173
|
+
const removedRootsSnapshot = this.removedRoots.clone();
|
|
174
|
+
return (result) => {
|
|
175
|
+
switch (result) {
|
|
176
|
+
case index_js_4.TransactionResult.Abort:
|
|
177
|
+
this.removedRoots = removedRootsSnapshot;
|
|
178
|
+
break;
|
|
179
|
+
case index_js_4.TransactionResult.Commit:
|
|
180
|
+
if (!this.transaction.isInProgress()) {
|
|
181
|
+
// The changes in a transaction squash commit have already applied to the checkout and are known to be valid, so we can validate the squash commit automatically.
|
|
182
|
+
this.validateCommit(__classPrivateFieldGet(this, _TreeCheckout_transaction, "f").branch.getHead());
|
|
183
|
+
}
|
|
184
|
+
break;
|
|
185
|
+
default:
|
|
186
|
+
(0, internal_1.unreachableCase)(result);
|
|
187
|
+
}
|
|
188
|
+
disposeForks?.();
|
|
189
|
+
};
|
|
190
|
+
}), "f");
|
|
191
|
+
this.editLock = new EditLock(__classPrivateFieldGet(this, _TreeCheckout_transaction, "f").activeBranchEditor);
|
|
192
|
+
branch.events.on("afterChange", (event) => {
|
|
193
|
+
// The following logic allows revertibles to be generated for the change.
|
|
194
|
+
// Currently only appends (including merges and transaction commits) are supported.
|
|
195
|
+
if (event.type === "append") {
|
|
196
|
+
// TODO:#20949: When the SharedTree is detached, these commits will already have been garbage collected.
|
|
197
|
+
// Figure out a way to generate revertibles before the commits are garbage collected.
|
|
198
|
+
for (const commit of event.newCommits) {
|
|
199
|
+
const kind = event.type === "append" ? event.kind : index_js_2.CommitKind.Default;
|
|
200
|
+
const { change, revision } = commit;
|
|
201
|
+
const getRevertible = (0, sharedTreeChangeFamily_js_1.hasSchemaChange)(change)
|
|
202
|
+
? undefined
|
|
203
|
+
: (onRevertibleDisposed) => {
|
|
204
|
+
if (!withinEventContext) {
|
|
205
|
+
throw new internal_2.UsageError("Cannot get a revertible outside of the context of a changed event.");
|
|
206
|
+
}
|
|
207
|
+
if (this.revertibleCommitBranches.get(revision) !== undefined) {
|
|
208
|
+
throw new internal_2.UsageError("Cannot generate the same revertible more than once. Note that this can happen when multiple changed event listeners are registered.");
|
|
209
|
+
}
|
|
210
|
+
const revertible = this.createRevertible(revision, kind, this, onRevertibleDisposed);
|
|
211
|
+
this.revertibleCommitBranches.set(revision, __classPrivateFieldGet(this, _TreeCheckout_transaction, "f").activeBranch.fork(commit));
|
|
212
|
+
this.revertibles.add(revertible);
|
|
213
|
+
return revertible;
|
|
214
|
+
};
|
|
215
|
+
let withinEventContext = true;
|
|
216
|
+
__classPrivateFieldGet(this, _TreeCheckout_events, "f").emit("changed", { isLocal: true, kind }, getRevertible);
|
|
217
|
+
withinEventContext = false;
|
|
218
|
+
}
|
|
219
|
+
}
|
|
220
|
+
else if (this.isRemoteChangeEvent(event)) {
|
|
221
|
+
// TODO: figure out how to plumb through commit kind info for remote changes
|
|
222
|
+
__classPrivateFieldGet(this, _TreeCheckout_events, "f").emit("changed", { isLocal: false, kind: index_js_2.CommitKind.Default });
|
|
223
|
+
}
|
|
227
224
|
});
|
|
225
|
+
__classPrivateFieldGet(this, _TreeCheckout_transaction, "f").activeBranchEvents.on("afterChange", this.onAfterChange);
|
|
226
|
+
__classPrivateFieldGet(this, _TreeCheckout_transaction, "f").activeBranchEvents.on("ancestryTrimmed", this.onAncestryTrimmed);
|
|
228
227
|
}
|
|
229
228
|
withCombinedVisitor(fn) {
|
|
230
229
|
const anchorVisitor = this.forest.anchors.acquireVisitor();
|
|
@@ -305,7 +304,7 @@ class TreeCheckout {
|
|
|
305
304
|
}
|
|
306
305
|
get editor() {
|
|
307
306
|
this.checkNotDisposed();
|
|
308
|
-
return this.
|
|
307
|
+
return this.editLock.editor;
|
|
309
308
|
}
|
|
310
309
|
locate(anchor) {
|
|
311
310
|
this.checkNotDisposed();
|
|
@@ -316,20 +315,22 @@ class TreeCheckout {
|
|
|
316
315
|
}
|
|
317
316
|
branch() {
|
|
318
317
|
this.checkNotDisposed("The parent branch has already been disposed and can no longer create new branches.");
|
|
318
|
+
this.editLock.checkUnlocked("Branching");
|
|
319
319
|
const anchors = new index_js_2.AnchorSet();
|
|
320
|
-
const branch = this.
|
|
320
|
+
const branch = __classPrivateFieldGet(this, _TreeCheckout_transaction, "f").activeBranch.fork();
|
|
321
321
|
const storedSchema = this.storedSchema.clone();
|
|
322
322
|
const forest = this.forest.clone(storedSchema, anchors);
|
|
323
|
-
const checkout = new TreeCheckout(branch, true, this.changeFamily, storedSchema, forest,
|
|
324
|
-
this.
|
|
323
|
+
const checkout = new TreeCheckout(branch, true, this.changeFamily, storedSchema, forest, this.mintRevisionTag, this.revisionTagCodec, this.idCompressor, this.removedRoots.clone(), this.logger, this.breaker, this.disposeForksAfterTransaction);
|
|
324
|
+
__classPrivateFieldGet(this, _TreeCheckout_events, "f").emit("fork", checkout);
|
|
325
325
|
return checkout;
|
|
326
326
|
}
|
|
327
327
|
rebase(checkout) {
|
|
328
328
|
this.checkNotDisposed("The target of the branch rebase has been disposed and cannot be rebased.");
|
|
329
329
|
checkout.checkNotDisposed("The source of the branch rebase has been disposed and cannot be rebased.");
|
|
330
|
+
this.editLock.checkUnlocked("Rebasing");
|
|
330
331
|
(0, internal_1.assert)(!checkout.transaction.isInProgress(), 0x9af /* A view cannot be rebased while it has a pending transaction */);
|
|
331
332
|
(0, internal_1.assert)(checkout.isBranch, 0xa5d /* The main branch cannot be rebased onto another branch. */);
|
|
332
|
-
checkout.
|
|
333
|
+
__classPrivateFieldGet(checkout, _TreeCheckout_transaction, "f").activeBranch.rebaseOnto(__classPrivateFieldGet(this, _TreeCheckout_transaction, "f").activeBranch);
|
|
333
334
|
}
|
|
334
335
|
rebaseOnto(checkout) {
|
|
335
336
|
this.checkNotDisposed("The target of the branch rebase has been disposed and cannot be rebased.");
|
|
@@ -338,11 +339,12 @@ class TreeCheckout {
|
|
|
338
339
|
merge(checkout, disposeMerged = true) {
|
|
339
340
|
this.checkNotDisposed("The target of the branch merge has been disposed and cannot be merged.");
|
|
340
341
|
checkout.checkNotDisposed("The source of the branch merge has been disposed and cannot be merged.");
|
|
342
|
+
this.editLock.checkUnlocked("Merging");
|
|
341
343
|
(0, internal_1.assert)(!this.transaction.isInProgress(), 0x9b0 /* Views cannot be merged into a view while it has a pending transaction */);
|
|
342
344
|
while (checkout.transaction.isInProgress()) {
|
|
343
345
|
checkout.transaction.commit();
|
|
344
346
|
}
|
|
345
|
-
this.
|
|
347
|
+
__classPrivateFieldGet(this, _TreeCheckout_transaction, "f").activeBranch.merge(__classPrivateFieldGet(checkout, _TreeCheckout_transaction, "f").activeBranch);
|
|
346
348
|
if (disposeMerged && checkout.isBranch) {
|
|
347
349
|
// Dispose the merged checkout unless it is the main branch.
|
|
348
350
|
checkout[index_js_5.disposeSymbol]();
|
|
@@ -353,18 +355,19 @@ class TreeCheckout {
|
|
|
353
355
|
this.editor.schema.setStoredSchema(this.storedSchema.clone(), newSchema);
|
|
354
356
|
}
|
|
355
357
|
dispose() {
|
|
358
|
+
this.editLock.checkUnlocked("Disposing a view");
|
|
356
359
|
this[index_js_5.disposeSymbol]();
|
|
357
360
|
}
|
|
358
|
-
[(_TreeCheckout_transaction = new WeakMap(), index_js_5.disposeSymbol)]() {
|
|
361
|
+
[(_TreeCheckout_events = new WeakMap(), _TreeCheckout_transaction = new WeakMap(), _TreeCheckout_validatedCommits = new WeakMap(), index_js_5.disposeSymbol)]() {
|
|
359
362
|
this.checkNotDisposed("The branch has already been disposed and cannot be disposed again.");
|
|
360
363
|
this.disposed = true;
|
|
364
|
+
__classPrivateFieldGet(this, _TreeCheckout_transaction, "f").branch.dispose();
|
|
361
365
|
__classPrivateFieldGet(this, _TreeCheckout_transaction, "f").dispose();
|
|
362
366
|
this.purgeRevertibles();
|
|
363
|
-
this._branch.dispose();
|
|
364
367
|
for (const view of this.views) {
|
|
365
368
|
view.dispose();
|
|
366
369
|
}
|
|
367
|
-
this.
|
|
370
|
+
__classPrivateFieldGet(this, _TreeCheckout_events, "f").emit("dispose");
|
|
368
371
|
}
|
|
369
372
|
getRemovedRoots() {
|
|
370
373
|
this.assertNoUntrackedRoots();
|
|
@@ -383,11 +386,16 @@ class TreeCheckout {
|
|
|
383
386
|
return trees;
|
|
384
387
|
}
|
|
385
388
|
/**
|
|
386
|
-
* This
|
|
387
|
-
* This
|
|
389
|
+
* This must be called on the root/main checkout after loading from a summary.
|
|
390
|
+
* @remarks This pattern is necessary because the EditManager skips the normal process of applying commits to branches when loading a summary.
|
|
391
|
+
* Instead, it simply {@link SharedTreeBranch#setHead | mutates} the branches directly which does not propagate the typical events throughout the rest of the system.
|
|
388
392
|
*/
|
|
389
|
-
|
|
390
|
-
this.
|
|
393
|
+
load() {
|
|
394
|
+
// Set the tip revision as the latest relevant revision for any removed roots that are loaded from a summary - this allows them to be garbage collected later.
|
|
395
|
+
// When a load happens, the head of the trunk and the head of the local/main branch must be the same (this is enforced by SharedTree).
|
|
396
|
+
this.removedRoots.setRevisionsForLoadedData(__classPrivateFieldGet(this, _TreeCheckout_transaction, "f").branch.getHead().revision);
|
|
397
|
+
// The content of the checkout (e.g. the forest) has (maybe) changed, so fire an afterBatch event.
|
|
398
|
+
__classPrivateFieldGet(this, _TreeCheckout_events, "f").emit("afterBatch");
|
|
391
399
|
}
|
|
392
400
|
purgeRevertibles() {
|
|
393
401
|
for (const revertible of this.revertibles) {
|
|
@@ -408,12 +416,12 @@ class TreeCheckout {
|
|
|
408
416
|
const commitToRevert = revertibleBranch.getHead();
|
|
409
417
|
const revisionForInvert = this.mintRevisionTag();
|
|
410
418
|
let change = (0, index_js_2.tagChange)(this.changeFamily.rebaser.invert(commitToRevert, false, revisionForInvert), revisionForInvert);
|
|
411
|
-
const headCommit = this.
|
|
419
|
+
const headCommit = __classPrivateFieldGet(this, _TreeCheckout_transaction, "f").activeBranch.getHead();
|
|
412
420
|
// Rebase the inverted change onto any commits that occurred after the undoable commits.
|
|
413
421
|
if (commitToRevert !== headCommit) {
|
|
414
422
|
change = (0, index_js_2.tagChange)((0, index_js_2.rebaseChange)(this.changeFamily.rebaser, change, commitToRevert, headCommit, this.mintRevisionTag).change, revisionForInvert);
|
|
415
423
|
}
|
|
416
|
-
this.
|
|
424
|
+
__classPrivateFieldGet(this, _TreeCheckout_transaction, "f").activeBranch.apply(change, kind === index_js_2.CommitKind.Default || kind === index_js_2.CommitKind.Redo
|
|
417
425
|
? index_js_2.CommitKind.Undo
|
|
418
426
|
: index_js_2.CommitKind.Redo);
|
|
419
427
|
// Derive some stats about the reversion to return to the caller.
|
|
@@ -451,8 +459,33 @@ class TreeCheckout {
|
|
|
451
459
|
!this.isBranch &&
|
|
452
460
|
// Remote changes are applied to the main branch by rebasing it onto the trunk.
|
|
453
461
|
// No other rebases are allowed on the main branch, so we can use this to detect remote changes.
|
|
454
|
-
event.type === "
|
|
455
|
-
|
|
462
|
+
event.type === "rebase");
|
|
463
|
+
}
|
|
464
|
+
/**
|
|
465
|
+
* Registers a function to be called when the given commit is validated.
|
|
466
|
+
* @remarks A commit is validated by the checkout after it has been applied to the checkout's state (e.g. it has an effect on the forest).
|
|
467
|
+
* If the commit applies successfully (i.e. it does not raise any unexpected errors), the commit is considered valid and the registered function is called.
|
|
468
|
+
* If the commit does not apply successfully (because it causes an unexpected error), the function is not called (and the checkout will left in an error state).
|
|
469
|
+
*
|
|
470
|
+
* If the commit has already been validated when this function is called, the function is called immediately and this function returns `true`.
|
|
471
|
+
* Otherwise, the function is registered to be called later and this function returns `false`.
|
|
472
|
+
*/
|
|
473
|
+
onCommitValid(commit, fn) {
|
|
474
|
+
const validated = (0, index_js_5.getOrCreate)(__classPrivateFieldGet(this, _TreeCheckout_validatedCommits, "f"), commit, () => []);
|
|
475
|
+
if (validated === true) {
|
|
476
|
+
fn(commit);
|
|
477
|
+
return true;
|
|
478
|
+
}
|
|
479
|
+
validated.push(fn);
|
|
480
|
+
return false;
|
|
481
|
+
}
|
|
482
|
+
/** Mark the given commit as "validated" according to the contract of {@link onCommitValid}(). */
|
|
483
|
+
validateCommit(commit) {
|
|
484
|
+
const validated = (0, index_js_5.getOrCreate)(__classPrivateFieldGet(this, _TreeCheckout_validatedCommits, "f"), commit, () => []);
|
|
485
|
+
if (validated !== true) {
|
|
486
|
+
validated.forEach((fn) => fn(commit));
|
|
487
|
+
__classPrivateFieldGet(this, _TreeCheckout_validatedCommits, "f").set(commit, true);
|
|
488
|
+
}
|
|
456
489
|
}
|
|
457
490
|
}
|
|
458
491
|
exports.TreeCheckout = TreeCheckout;
|
|
@@ -461,4 +494,118 @@ exports.TreeCheckout = TreeCheckout;
|
|
|
461
494
|
* @privateRemarks Exposed for testing purposes.
|
|
462
495
|
*/
|
|
463
496
|
TreeCheckout.revertTelemetryEventName = "RevertRevertible";
|
|
497
|
+
/**
|
|
498
|
+
* A helper class that assists {@link TreeCheckout} in preventing functionality from being used while the tree is in the middle of being edited.
|
|
499
|
+
*/
|
|
500
|
+
class EditLock {
|
|
501
|
+
/**
|
|
502
|
+
* @param editor - an editor which will be used to create a new editor that is monitored to determine if any changes are happening to the tree.
|
|
503
|
+
* Use {@link EditLock.editor} in place of the original editor to ensure that changes are monitored.
|
|
504
|
+
*/
|
|
505
|
+
constructor(editor) {
|
|
506
|
+
this.locked = false;
|
|
507
|
+
const checkLock = () => this.checkUnlocked("Editing the tree");
|
|
508
|
+
this.editor = {
|
|
509
|
+
get schema() {
|
|
510
|
+
return editor.schema;
|
|
511
|
+
},
|
|
512
|
+
valueField(...fieldArgs) {
|
|
513
|
+
const valueField = editor.valueField(...fieldArgs);
|
|
514
|
+
return {
|
|
515
|
+
set(...editArgs) {
|
|
516
|
+
checkLock();
|
|
517
|
+
valueField.set(...editArgs);
|
|
518
|
+
},
|
|
519
|
+
};
|
|
520
|
+
},
|
|
521
|
+
optionalField(...fieldArgs) {
|
|
522
|
+
const optionalField = editor.optionalField(...fieldArgs);
|
|
523
|
+
return {
|
|
524
|
+
set(...editArgs) {
|
|
525
|
+
checkLock();
|
|
526
|
+
optionalField.set(...editArgs);
|
|
527
|
+
},
|
|
528
|
+
};
|
|
529
|
+
},
|
|
530
|
+
sequenceField(...fieldArgs) {
|
|
531
|
+
const sequenceField = editor.sequenceField(...fieldArgs);
|
|
532
|
+
return {
|
|
533
|
+
insert(...editArgs) {
|
|
534
|
+
checkLock();
|
|
535
|
+
sequenceField.insert(...editArgs);
|
|
536
|
+
},
|
|
537
|
+
remove(...editArgs) {
|
|
538
|
+
checkLock();
|
|
539
|
+
sequenceField.remove(...editArgs);
|
|
540
|
+
},
|
|
541
|
+
};
|
|
542
|
+
},
|
|
543
|
+
move(...moveArgs) {
|
|
544
|
+
checkLock();
|
|
545
|
+
editor.move(...moveArgs);
|
|
546
|
+
},
|
|
547
|
+
addNodeExistsConstraint(path) {
|
|
548
|
+
editor.addNodeExistsConstraint(path);
|
|
549
|
+
},
|
|
550
|
+
addNodeExistsConstraintOnRevert(path) {
|
|
551
|
+
editor.addNodeExistsConstraintOnRevert(path);
|
|
552
|
+
},
|
|
553
|
+
};
|
|
554
|
+
}
|
|
555
|
+
/**
|
|
556
|
+
* Prevent further changes from being made to {@link EditLock.editor} until {@link EditLock.unlock} is called.
|
|
557
|
+
* @remarks May only be called when the lock is not already locked.
|
|
558
|
+
*/
|
|
559
|
+
lock() {
|
|
560
|
+
if (this.locked) {
|
|
561
|
+
debugger;
|
|
562
|
+
}
|
|
563
|
+
(0, internal_1.assert)(!this.locked, 0xaa7 /* Checkout has already been locked */);
|
|
564
|
+
this.locked = true;
|
|
565
|
+
}
|
|
566
|
+
/**
|
|
567
|
+
* Throws an error if the lock is currently locked.
|
|
568
|
+
* @param action - The current action being performed by the user.
|
|
569
|
+
* This must start with a capital letter, as it shows up as the first part of the error message and we want it to look nice.
|
|
570
|
+
*/
|
|
571
|
+
checkUnlocked(action) {
|
|
572
|
+
if (this.locked) {
|
|
573
|
+
// These type assertions ensure that the event name strings used here match the actual event names
|
|
574
|
+
const nodeChanged = "nodeChanged";
|
|
575
|
+
const treeChanged = "treeChanged";
|
|
576
|
+
throw new internal_2.UsageError(`${action} is forbidden during a ${nodeChanged} or ${treeChanged} event`);
|
|
577
|
+
}
|
|
578
|
+
}
|
|
579
|
+
/**
|
|
580
|
+
* Allow changes to be made to {@link EditLock.editor} again.
|
|
581
|
+
* @remarks May only be called when the lock is currently locked.
|
|
582
|
+
*/
|
|
583
|
+
unlock() {
|
|
584
|
+
(0, internal_1.assert)(this.locked, 0xaa8 /* Checkout has not been locked */);
|
|
585
|
+
this.locked = false;
|
|
586
|
+
}
|
|
587
|
+
}
|
|
588
|
+
/**
|
|
589
|
+
* Keeps track of all new forks created until the returned function is invoked, which will dispose all of those for.
|
|
590
|
+
* The returned function may only be called once.
|
|
591
|
+
*
|
|
592
|
+
* @param checkout - The tree checkout for which you want to monitor forks for disposal.
|
|
593
|
+
* @returns a function which can be called to dispose all of the tracked forks.
|
|
594
|
+
*/
|
|
595
|
+
function trackForksForDisposal(checkout) {
|
|
596
|
+
const forks = new Set();
|
|
597
|
+
const onDisposeUnSubscribes = [];
|
|
598
|
+
const onForkUnSubscribe = (0, index_js_4.onForkTransitive)(checkout, (fork) => {
|
|
599
|
+
forks.add(fork);
|
|
600
|
+
onDisposeUnSubscribes.push(fork.events.on("dispose", () => forks.delete(fork)));
|
|
601
|
+
});
|
|
602
|
+
let disposed = false;
|
|
603
|
+
return () => {
|
|
604
|
+
(0, internal_1.assert)(!disposed, 0xaa9 /* Forks may only be disposed once */);
|
|
605
|
+
forks.forEach((fork) => fork.dispose());
|
|
606
|
+
onDisposeUnSubscribes.forEach((unsubscribe) => unsubscribe());
|
|
607
|
+
onForkUnSubscribe();
|
|
608
|
+
disposed = true;
|
|
609
|
+
};
|
|
610
|
+
}
|
|
464
611
|
//# sourceMappingURL=treeCheckout.js.map
|