@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
|
@@ -6,7 +6,7 @@
|
|
|
6
6
|
import { ReferenceCountedBase } from "../../util/index.js";
|
|
7
7
|
|
|
8
8
|
import { BasicChunkCursor } from "./basicChunk.js";
|
|
9
|
-
import { type ChunkedCursor, type TreeChunk, dummyRoot } from "
|
|
9
|
+
import { type ChunkedCursor, type TreeChunk, dummyRoot } from "../../core/index.js";
|
|
10
10
|
|
|
11
11
|
/**
|
|
12
12
|
* General purpose multi-node sequence chunk.
|
|
@@ -14,11 +14,14 @@ import {
|
|
|
14
14
|
type TreeValue,
|
|
15
15
|
type UpPath,
|
|
16
16
|
type Value,
|
|
17
|
+
type ChunkedCursor,
|
|
18
|
+
type TreeChunk,
|
|
19
|
+
cursorChunk,
|
|
20
|
+
dummyRoot,
|
|
17
21
|
} from "../../core/index.js";
|
|
18
22
|
import { ReferenceCountedBase, fail, hasSome } from "../../util/index.js";
|
|
19
23
|
import { SynchronousCursor, prefixFieldPath, prefixPath } from "../treeCursorUtils.js";
|
|
20
24
|
|
|
21
|
-
import { type ChunkedCursor, type TreeChunk, cursorChunk, dummyRoot } from "./chunk.js";
|
|
22
25
|
import type { SessionSpaceCompressedId, IIdCompressor } from "@fluidframework/id-compressor";
|
|
23
26
|
import { UsageError } from "@fluidframework/telemetry-utils/internal";
|
|
24
27
|
|
|
@@ -160,8 +160,17 @@ export interface IDefaultEditBuilder {
|
|
|
160
160
|
destinationIndex: number,
|
|
161
161
|
): void;
|
|
162
162
|
|
|
163
|
-
|
|
163
|
+
/**
|
|
164
|
+
* Add a constraint that the node at the given path must exist.
|
|
165
|
+
* @param path - The path to the node that must exist.
|
|
166
|
+
*/
|
|
164
167
|
addNodeExistsConstraint(path: UpPath): void;
|
|
168
|
+
|
|
169
|
+
/**
|
|
170
|
+
* Add a constraint that the node at the given path must exist when reverting a change.
|
|
171
|
+
* @param path - The path to the node that must exist when reverting a change.
|
|
172
|
+
*/
|
|
173
|
+
addNodeExistsConstraintOnRevert(path: UpPath): void;
|
|
165
174
|
}
|
|
166
175
|
|
|
167
176
|
/**
|
|
@@ -191,6 +200,10 @@ export class DefaultEditBuilder implements ChangeFamilyEditor, IDefaultEditBuild
|
|
|
191
200
|
this.modularBuilder.addNodeExistsConstraint(path, this.mintRevisionTag());
|
|
192
201
|
}
|
|
193
202
|
|
|
203
|
+
public addNodeExistsConstraintOnRevert(path: UpPath): void {
|
|
204
|
+
this.modularBuilder.addNodeExistsConstraintOnRevert(path, this.mintRevisionTag());
|
|
205
|
+
}
|
|
206
|
+
|
|
194
207
|
public valueField(field: FieldUpPath): ValueFieldEditBuilder<ITreeCursorSynchronous> {
|
|
195
208
|
return {
|
|
196
209
|
set: (newContent: ITreeCursorSynchronous): void => {
|
|
@@ -73,7 +73,10 @@ export function isNodeInSchema(
|
|
|
73
73
|
uncheckedFieldsFromNode.delete(fieldKey);
|
|
74
74
|
}
|
|
75
75
|
// The node has fields that we did not check as part of looking at every field defined in the node's schema
|
|
76
|
-
if (
|
|
76
|
+
if (
|
|
77
|
+
uncheckedFieldsFromNode.size !== 0 &&
|
|
78
|
+
!schemaAndPolicy.policy.allowUnknownOptionalFields(node.type)
|
|
79
|
+
) {
|
|
77
80
|
return SchemaValidationErrors.ObjectNode_FieldNotInSchema;
|
|
78
81
|
}
|
|
79
82
|
} else if (schema instanceof MapNodeStoredSchema) {
|
|
@@ -16,7 +16,6 @@ export {
|
|
|
16
16
|
mapTreeFromCursor,
|
|
17
17
|
mapTreeFieldFromCursor,
|
|
18
18
|
} from "./mapTreeCursor.js";
|
|
19
|
-
export { MemoizedIdRangeAllocator, type IdRange } from "./memoizedIdRangeAllocator.js";
|
|
20
19
|
export { buildForest } from "./object-forest/index.js";
|
|
21
20
|
export { SchemaSummarizer, encodeTreeSchema, makeSchemaCodec } from "./schema-index/index.js";
|
|
22
21
|
export {
|
|
@@ -76,7 +75,20 @@ export {
|
|
|
76
75
|
type FieldKindConfigurationEntry,
|
|
77
76
|
getAllowedContentDiscrepancies,
|
|
78
77
|
isRepoSuperset,
|
|
78
|
+
type AllowedTypeDiscrepancy,
|
|
79
|
+
type FieldKindDiscrepancy,
|
|
80
|
+
type ValueSchemaDiscrepancy,
|
|
81
|
+
type FieldDiscrepancy,
|
|
82
|
+
type NodeDiscrepancy,
|
|
83
|
+
type NodeKindDiscrepancy,
|
|
84
|
+
type NodeFieldsDiscrepancy,
|
|
79
85
|
isNeverTree,
|
|
86
|
+
type LinearExtension,
|
|
87
|
+
type Realizer,
|
|
88
|
+
fieldRealizer,
|
|
89
|
+
PosetComparisonResult,
|
|
90
|
+
comparePosetElements,
|
|
91
|
+
posetLte,
|
|
80
92
|
} from "./modular-schema/index.js";
|
|
81
93
|
|
|
82
94
|
export { mapRootChanges } from "./deltaUtils.js";
|
|
@@ -82,6 +82,8 @@ export class AnchorTreeIndex<TKey extends TreeIndexKey, TValue>
|
|
|
82
82
|
* @param getValue - a pure and functional function that returns the associated value of one or more anchor nodes, can be used to map and filter the indexed anchor nodes
|
|
83
83
|
* so that the values returned from the index are more usable
|
|
84
84
|
* @param checkTreeStatus - a function that gets the tree status from an anchor node, used for filtering out detached nodes
|
|
85
|
+
* @param isShallowIndex - indicates if this index is shallow, meaning that it only allows nodes to be keyed off of fields directly under them rather than anywhere in their subtree.
|
|
86
|
+
* As a performance optimization, re-indexing up the spine can be turned off for shallow indexes.
|
|
85
87
|
*/
|
|
86
88
|
public constructor(
|
|
87
89
|
private readonly forest: IForestSubscription,
|
|
@@ -90,6 +92,7 @@ export class AnchorTreeIndex<TKey extends TreeIndexKey, TValue>
|
|
|
90
92
|
) => KeyFinder<TKey> | undefined,
|
|
91
93
|
private readonly getValue: (anchorNodes: TreeIndexNodes<AnchorNode>) => TValue | undefined,
|
|
92
94
|
private readonly checkTreeStatus: (node: AnchorNode) => TreeStatus | undefined,
|
|
95
|
+
private readonly isShallowIndex = false,
|
|
93
96
|
) {
|
|
94
97
|
this.forest.registerAnnouncedVisitor(this.keyFinder);
|
|
95
98
|
|
|
@@ -132,6 +135,14 @@ export class AnchorTreeIndex<TKey extends TreeIndexKey, TValue>
|
|
|
132
135
|
this.indexField(detachedCursor);
|
|
133
136
|
detachedCursor.free();
|
|
134
137
|
},
|
|
138
|
+
afterAttach: () => {
|
|
139
|
+
assert(parent !== undefined, 0xa99 /* must have a parent */);
|
|
140
|
+
this.reIndexSpine(parent);
|
|
141
|
+
},
|
|
142
|
+
afterDetach: () => {
|
|
143
|
+
assert(parent !== undefined, 0xa9a /* must have a parent */);
|
|
144
|
+
this.reIndexSpine(parent);
|
|
145
|
+
},
|
|
135
146
|
// when a replace happens, the keys of previously indexed nodes could be changed so we must re-index them
|
|
136
147
|
afterReplace: () => {
|
|
137
148
|
assert(parent !== undefined, 0xa8b /* must have a parent */);
|
|
@@ -142,9 +153,12 @@ export class AnchorTreeIndex<TKey extends TreeIndexKey, TValue>
|
|
|
142
153
|
0xa8c /* replace should happen in a node */,
|
|
143
154
|
);
|
|
144
155
|
cursor.exitNode();
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
156
|
+
this.indexField(cursor);
|
|
157
|
+
if (!this.isShallowIndex) {
|
|
158
|
+
// we must also re-index the spine if the key finders allow for any value under a subtree to be the key
|
|
159
|
+
// this means that a replace can cause the key for any node up its spine to be changed
|
|
160
|
+
this.indexSpine(cursor);
|
|
161
|
+
}
|
|
148
162
|
cursor.clear();
|
|
149
163
|
},
|
|
150
164
|
// the methods below are used to keep track of the path that has been traversed by the visitor
|
|
@@ -297,6 +311,23 @@ export class AnchorTreeIndex<TKey extends TreeIndexKey, TValue>
|
|
|
297
311
|
this.disposed = true;
|
|
298
312
|
}
|
|
299
313
|
|
|
314
|
+
/**
|
|
315
|
+
* Checks if the spine needs to be re-indexed and if so, re-indexes it starting from the given path.
|
|
316
|
+
*/
|
|
317
|
+
private reIndexSpine(path: UpPath): void {
|
|
318
|
+
if (!this.isShallowIndex) {
|
|
319
|
+
const cursor = this.forest.allocateCursor();
|
|
320
|
+
this.forest.moveCursorToPath(path, cursor);
|
|
321
|
+
assert(
|
|
322
|
+
cursor.mode === CursorLocationType.Nodes,
|
|
323
|
+
0xa9b /* attach should happen in a node */,
|
|
324
|
+
);
|
|
325
|
+
cursor.exitNode();
|
|
326
|
+
this.indexSpine(cursor);
|
|
327
|
+
cursor.clear();
|
|
328
|
+
}
|
|
329
|
+
}
|
|
330
|
+
|
|
300
331
|
private checkNotDisposed(errorMessage?: string): void {
|
|
301
332
|
if (this.disposed) {
|
|
302
333
|
if (errorMessage !== undefined) {
|
|
@@ -371,8 +402,6 @@ export class AnchorTreeIndex<TKey extends TreeIndexKey, TValue>
|
|
|
371
402
|
* Given a cursor in field mode, indexes all nodes under the field and then indexes all nodes up the spine.
|
|
372
403
|
*/
|
|
373
404
|
private indexSpine(cursor: ITreeSubscriptionCursor): void {
|
|
374
|
-
this.indexField(cursor);
|
|
375
|
-
|
|
376
405
|
if (keyAsDetachedField(cursor.getFieldKey()) !== rootField) {
|
|
377
406
|
cursor.exitField();
|
|
378
407
|
cursor.exitNode();
|
|
@@ -4,13 +4,7 @@
|
|
|
4
4
|
*/
|
|
5
5
|
|
|
6
6
|
import type { ChangesetLocalId, RevisionTag } from "../../core/index.js";
|
|
7
|
-
import {
|
|
8
|
-
type RangeMap,
|
|
9
|
-
type RangeQueryResult,
|
|
10
|
-
getFromRangeMap,
|
|
11
|
-
getOrAddInMap,
|
|
12
|
-
setInRangeMap,
|
|
13
|
-
} from "../../util/index.js";
|
|
7
|
+
import { RangeMap, type RangeQueryResult } from "../../util/index.js";
|
|
14
8
|
import type { NodeId } from "./modularChangeTypes.js";
|
|
15
9
|
|
|
16
10
|
export type CrossFieldMap<T> = Map<RevisionTag | undefined, RangeMap<T>>;
|
|
@@ -32,7 +26,12 @@ export function setInCrossFieldMap<T>(
|
|
|
32
26
|
count: number,
|
|
33
27
|
value: T,
|
|
34
28
|
): void {
|
|
35
|
-
|
|
29
|
+
let rangeMap = map.get(revision);
|
|
30
|
+
if (rangeMap === undefined) {
|
|
31
|
+
rangeMap = new RangeMap();
|
|
32
|
+
map.set(revision, rangeMap);
|
|
33
|
+
}
|
|
34
|
+
rangeMap.set(id, count, value);
|
|
36
35
|
}
|
|
37
36
|
|
|
38
37
|
export function getFirstFromCrossFieldMap<T>(
|
|
@@ -41,7 +40,8 @@ export function getFirstFromCrossFieldMap<T>(
|
|
|
41
40
|
id: ChangesetLocalId,
|
|
42
41
|
count: number,
|
|
43
42
|
): RangeQueryResult<T> {
|
|
44
|
-
|
|
43
|
+
const rangeMap = map.has(revision) ? (map.get(revision) as RangeMap<T>) : new RangeMap<T>();
|
|
44
|
+
return rangeMap.get(id, count);
|
|
45
45
|
}
|
|
46
46
|
|
|
47
47
|
/**
|
|
@@ -6,6 +6,7 @@
|
|
|
6
6
|
import { assert } from "@fluidframework/core-utils/internal";
|
|
7
7
|
|
|
8
8
|
import {
|
|
9
|
+
type FieldKey,
|
|
9
10
|
type FieldKindIdentifier,
|
|
10
11
|
LeafNodeStoredSchema,
|
|
11
12
|
MapNodeStoredSchema,
|
|
@@ -25,6 +26,7 @@ import { brand } from "../../util/index.js";
|
|
|
25
26
|
// Rather than both existing, one of which just returns boolean and the other which returns additional details, a simple comparison which returns everything needed should be used.
|
|
26
27
|
|
|
27
28
|
/**
|
|
29
|
+
* Discriminated union (keyed on `mismatch`) of discrepancies between a view and stored schema.
|
|
28
30
|
* @remarks
|
|
29
31
|
*
|
|
30
32
|
* 1. FieldDiscrepancy
|
|
@@ -60,47 +62,73 @@ export type Discrepancy = FieldDiscrepancy | NodeDiscrepancy;
|
|
|
60
62
|
|
|
61
63
|
export type NodeDiscrepancy = NodeKindDiscrepancy | NodeFieldsDiscrepancy;
|
|
62
64
|
|
|
65
|
+
/**
|
|
66
|
+
* A discrepancy in the declaration of a field.
|
|
67
|
+
*/
|
|
63
68
|
export type FieldDiscrepancy =
|
|
64
69
|
| AllowedTypeDiscrepancy
|
|
65
70
|
| FieldKindDiscrepancy
|
|
66
71
|
| ValueSchemaDiscrepancy;
|
|
67
72
|
|
|
68
|
-
|
|
69
|
-
|
|
73
|
+
/**
|
|
74
|
+
* Information about where a field discrepancy is located within a collection of schema.
|
|
75
|
+
*/
|
|
76
|
+
export interface FieldDiscrepancyLocation {
|
|
77
|
+
/**
|
|
78
|
+
* The {@link TreeNodeSchemaIdentifier} that contains the discrepancy.
|
|
79
|
+
*
|
|
80
|
+
* Undefined iff the discrepancy is part of the root field schema.
|
|
81
|
+
*/
|
|
82
|
+
identifier: TreeNodeSchemaIdentifier | undefined;
|
|
83
|
+
/**
|
|
84
|
+
* The {@link FieldKey} for the field that contains the discrepancy.
|
|
85
|
+
* Undefined when:
|
|
86
|
+
* - the discrepancy is part of the root field schema
|
|
87
|
+
* - the discrepancy is for 'all fields' of a map node
|
|
88
|
+
*/
|
|
89
|
+
fieldKey: FieldKey | undefined;
|
|
90
|
+
}
|
|
91
|
+
|
|
92
|
+
/**
|
|
93
|
+
* A discrepancy in the allowed types of a field.
|
|
94
|
+
*
|
|
95
|
+
* @remarks
|
|
96
|
+
* This reports the symmetric difference of allowed types in view/stored to enable more efficient checks for compatibility
|
|
97
|
+
*/
|
|
98
|
+
export interface AllowedTypeDiscrepancy extends FieldDiscrepancyLocation {
|
|
70
99
|
mismatch: "allowedTypes";
|
|
71
100
|
/**
|
|
72
|
-
* List of allowed type identifiers in viewed schema
|
|
101
|
+
* List of allowed type identifiers in viewed schema which are not allowed in stored schema
|
|
73
102
|
*/
|
|
74
|
-
view:
|
|
103
|
+
view: TreeNodeSchemaIdentifier[];
|
|
75
104
|
/**
|
|
76
|
-
* List of allowed type identifiers in stored schema
|
|
105
|
+
* List of allowed type identifiers in stored schema which are not allowed in view schema
|
|
77
106
|
*/
|
|
78
|
-
stored:
|
|
107
|
+
stored: TreeNodeSchemaIdentifier[];
|
|
79
108
|
}
|
|
80
109
|
|
|
81
|
-
export interface FieldKindDiscrepancy {
|
|
82
|
-
identifier: string | undefined; // undefined indicates root field schema
|
|
110
|
+
export interface FieldKindDiscrepancy extends FieldDiscrepancyLocation {
|
|
83
111
|
mismatch: "fieldKind";
|
|
84
112
|
view: FieldKindIdentifier;
|
|
85
113
|
stored: FieldKindIdentifier;
|
|
86
114
|
}
|
|
87
115
|
|
|
88
116
|
export interface ValueSchemaDiscrepancy {
|
|
89
|
-
identifier:
|
|
117
|
+
identifier: TreeNodeSchemaIdentifier;
|
|
90
118
|
mismatch: "valueSchema";
|
|
91
119
|
view: ValueSchema | undefined;
|
|
92
120
|
stored: ValueSchema | undefined;
|
|
93
121
|
}
|
|
94
122
|
|
|
95
123
|
export interface NodeKindDiscrepancy {
|
|
96
|
-
identifier:
|
|
124
|
+
identifier: TreeNodeSchemaIdentifier;
|
|
97
125
|
mismatch: "nodeKind";
|
|
98
126
|
view: SchemaFactoryNodeKind | undefined;
|
|
99
127
|
stored: SchemaFactoryNodeKind | undefined;
|
|
100
128
|
}
|
|
101
129
|
|
|
102
130
|
export interface NodeFieldsDiscrepancy {
|
|
103
|
-
identifier:
|
|
131
|
+
identifier: TreeNodeSchemaIdentifier;
|
|
104
132
|
mismatch: "fields";
|
|
105
133
|
differences: FieldDiscrepancy[];
|
|
106
134
|
}
|
|
@@ -121,26 +149,25 @@ function getNodeSchemaType(nodeSchema: TreeNodeStoredSchema): SchemaFactoryNodeK
|
|
|
121
149
|
/**
|
|
122
150
|
* Finds and reports discrepancies between a view schema and a stored schema.
|
|
123
151
|
*
|
|
124
|
-
*
|
|
125
|
-
*
|
|
126
|
-
*
|
|
127
|
-
*
|
|
128
|
-
*
|
|
129
|
-
* consistent. Otherwise this difference is treated as `NodeKindDiscrepancy`
|
|
130
|
-
* - If a node schema with the same identifier exists in both view and stored, and their `SchemaFactoryNodeKind`
|
|
131
|
-
* are consistent, perform a exhaustive validation to identify all `FieldDiscrepancy`.
|
|
132
|
-
*
|
|
133
|
-
* 3. For each node schema in the stored, verify if it exists in the view. The overlapping parts were already
|
|
134
|
-
* addressed in the previous step.
|
|
152
|
+
* See documentation on {@link Discrepancy} for details of possible discrepancies.
|
|
153
|
+
* @remarks
|
|
154
|
+
* This function does not attempt to distinguish between equivalent representations of a node/field involving extraneous never trees.
|
|
155
|
+
* For example, a Forbidden field with allowed type set `[]` is equivalent to an optional field with allowed type set `[]`,
|
|
156
|
+
* as well as an optional field with an allowed type set containing only unconstructable types.
|
|
135
157
|
*
|
|
136
|
-
*
|
|
158
|
+
* It is up to the caller to determine whether such discrepancies matter.
|
|
137
159
|
*/
|
|
138
160
|
export function* getAllowedContentDiscrepancies(
|
|
139
161
|
view: TreeStoredSchema,
|
|
140
162
|
stored: TreeStoredSchema,
|
|
141
163
|
): Iterable<Discrepancy> {
|
|
142
164
|
// check root schema discrepancies
|
|
143
|
-
yield* getFieldDiscrepancies(
|
|
165
|
+
yield* getFieldDiscrepancies(
|
|
166
|
+
view.rootFieldSchema,
|
|
167
|
+
stored.rootFieldSchema,
|
|
168
|
+
undefined,
|
|
169
|
+
undefined,
|
|
170
|
+
);
|
|
144
171
|
|
|
145
172
|
for (const result of compareMaps(view.nodeSchema, stored.nodeSchema)) {
|
|
146
173
|
switch (result.type) {
|
|
@@ -195,6 +222,7 @@ function* getNodeDiscrepancies(
|
|
|
195
222
|
case "object": {
|
|
196
223
|
const differences = Array.from(
|
|
197
224
|
trackObjectNodeDiscrepancies(
|
|
225
|
+
identifier,
|
|
198
226
|
view as ObjectNodeStoredSchema,
|
|
199
227
|
stored as ObjectNodeStoredSchema,
|
|
200
228
|
),
|
|
@@ -213,6 +241,7 @@ function* getNodeDiscrepancies(
|
|
|
213
241
|
(view as MapNodeStoredSchema).mapFields,
|
|
214
242
|
(stored as MapNodeStoredSchema).mapFields,
|
|
215
243
|
identifier,
|
|
244
|
+
undefined,
|
|
216
245
|
);
|
|
217
246
|
break;
|
|
218
247
|
case "leaf": {
|
|
@@ -241,7 +270,8 @@ function* getNodeDiscrepancies(
|
|
|
241
270
|
function* getFieldDiscrepancies(
|
|
242
271
|
view: TreeFieldStoredSchema,
|
|
243
272
|
stored: TreeFieldStoredSchema,
|
|
244
|
-
|
|
273
|
+
identifier: TreeNodeSchemaIdentifier | undefined,
|
|
274
|
+
fieldKey: FieldKey | undefined,
|
|
245
275
|
): Iterable<FieldDiscrepancy> {
|
|
246
276
|
// Only track the symmetric differences of two sets.
|
|
247
277
|
const findSetDiscrepancies = (
|
|
@@ -256,7 +286,8 @@ function* getFieldDiscrepancies(
|
|
|
256
286
|
const [viewExtra, storedExtra] = findSetDiscrepancies(view.types, stored.types);
|
|
257
287
|
if (viewExtra.length > 0 || storedExtra.length > 0) {
|
|
258
288
|
yield {
|
|
259
|
-
identifier
|
|
289
|
+
identifier,
|
|
290
|
+
fieldKey,
|
|
260
291
|
mismatch: "allowedTypes",
|
|
261
292
|
view: viewExtra,
|
|
262
293
|
stored: storedExtra,
|
|
@@ -265,7 +296,8 @@ function* getFieldDiscrepancies(
|
|
|
265
296
|
|
|
266
297
|
if (view.kind !== stored.kind) {
|
|
267
298
|
yield {
|
|
268
|
-
identifier
|
|
299
|
+
identifier,
|
|
300
|
+
fieldKey,
|
|
269
301
|
mismatch: "fieldKind",
|
|
270
302
|
view: view.kind,
|
|
271
303
|
stored: stored.kind,
|
|
@@ -274,6 +306,7 @@ function* getFieldDiscrepancies(
|
|
|
274
306
|
}
|
|
275
307
|
|
|
276
308
|
function* trackObjectNodeDiscrepancies(
|
|
309
|
+
identifier: TreeNodeSchemaIdentifier,
|
|
277
310
|
view: ObjectNodeStoredSchema,
|
|
278
311
|
stored: ObjectNodeStoredSchema,
|
|
279
312
|
): Iterable<FieldDiscrepancy> {
|
|
@@ -298,7 +331,8 @@ function* trackObjectNodeDiscrepancies(
|
|
|
298
331
|
break;
|
|
299
332
|
}
|
|
300
333
|
yield {
|
|
301
|
-
identifier
|
|
334
|
+
identifier,
|
|
335
|
+
fieldKey,
|
|
302
336
|
mismatch: "fieldKind",
|
|
303
337
|
view: result.value.kind,
|
|
304
338
|
stored: storedEmptyFieldSchema.kind,
|
|
@@ -312,7 +346,8 @@ function* trackObjectNodeDiscrepancies(
|
|
|
312
346
|
break;
|
|
313
347
|
}
|
|
314
348
|
yield {
|
|
315
|
-
identifier
|
|
349
|
+
identifier,
|
|
350
|
+
fieldKey,
|
|
316
351
|
mismatch: "fieldKind",
|
|
317
352
|
view: storedEmptyFieldSchema.kind,
|
|
318
353
|
stored: result.value.kind,
|
|
@@ -320,12 +355,11 @@ function* trackObjectNodeDiscrepancies(
|
|
|
320
355
|
break;
|
|
321
356
|
}
|
|
322
357
|
case "both": {
|
|
323
|
-
yield* getFieldDiscrepancies(result.valueA, result.valueB, fieldKey);
|
|
358
|
+
yield* getFieldDiscrepancies(result.valueA, result.valueB, identifier, fieldKey);
|
|
324
359
|
break;
|
|
325
360
|
}
|
|
326
|
-
default:
|
|
361
|
+
default:
|
|
327
362
|
break;
|
|
328
|
-
}
|
|
329
363
|
}
|
|
330
364
|
}
|
|
331
365
|
}
|
|
@@ -428,13 +462,13 @@ function isFieldDiscrepancyCompatible(discrepancy: FieldDiscrepancy): boolean {
|
|
|
428
462
|
*
|
|
429
463
|
* The linear extension is represented as a lookup from each poset element to its index in the linear extension.
|
|
430
464
|
*/
|
|
431
|
-
type LinearExtension<T> = Map<T, number>;
|
|
465
|
+
export type LinearExtension<T> = Map<T, number>;
|
|
432
466
|
|
|
433
467
|
/**
|
|
434
468
|
* A realizer for a partially-ordered set. See:
|
|
435
469
|
* https://en.wikipedia.org/wiki/Order_dimension
|
|
436
470
|
*/
|
|
437
|
-
type Realizer<T> = LinearExtension<T>[];
|
|
471
|
+
export type Realizer<T> = LinearExtension<T>[];
|
|
438
472
|
|
|
439
473
|
/**
|
|
440
474
|
* @privateRemarks
|
|
@@ -468,7 +502,7 @@ const FieldKindIdentifiers = {
|
|
|
468
502
|
* identifier
|
|
469
503
|
* ```
|
|
470
504
|
*/
|
|
471
|
-
const fieldRealizer: Realizer<FieldKindIdentifier> = [
|
|
505
|
+
export const fieldRealizer: Realizer<FieldKindIdentifier> = [
|
|
472
506
|
[
|
|
473
507
|
FieldKindIdentifiers.forbidden,
|
|
474
508
|
FieldKindIdentifiers.identifier,
|
|
@@ -485,7 +519,7 @@ const fieldRealizer: Realizer<FieldKindIdentifier> = [
|
|
|
485
519
|
],
|
|
486
520
|
].map((extension) => new Map(extension.map((identifier, index) => [identifier, index])));
|
|
487
521
|
|
|
488
|
-
const PosetComparisonResult = {
|
|
522
|
+
export const PosetComparisonResult = {
|
|
489
523
|
Less: "<",
|
|
490
524
|
Greater: ">",
|
|
491
525
|
Equal: "=",
|
|
@@ -494,7 +528,11 @@ const PosetComparisonResult = {
|
|
|
494
528
|
type PosetComparisonResult =
|
|
495
529
|
(typeof PosetComparisonResult)[keyof typeof PosetComparisonResult];
|
|
496
530
|
|
|
497
|
-
function comparePosetElements<T>(
|
|
531
|
+
export function comparePosetElements<T>(
|
|
532
|
+
a: T,
|
|
533
|
+
b: T,
|
|
534
|
+
realizer: Realizer<T>,
|
|
535
|
+
): PosetComparisonResult {
|
|
498
536
|
let hasLessThanResult = false;
|
|
499
537
|
let hasGreaterThanResult = false;
|
|
500
538
|
for (const extension of realizer) {
|
|
@@ -517,7 +555,7 @@ function comparePosetElements<T>(a: T, b: T, realizer: Realizer<T>): PosetCompar
|
|
|
517
555
|
: PosetComparisonResult.Equal;
|
|
518
556
|
}
|
|
519
557
|
|
|
520
|
-
function posetLte<T>(a: T, b: T, realizer: Realizer<T>): boolean {
|
|
558
|
+
export function posetLte<T>(a: T, b: T, realizer: Realizer<T>): boolean {
|
|
521
559
|
const comparison = comparePosetElements(a, b, realizer);
|
|
522
560
|
return (
|
|
523
561
|
comparison === PosetComparisonResult.Less || comparison === PosetComparisonResult.Equal
|
|
@@ -14,12 +14,17 @@ import type {
|
|
|
14
14
|
RevisionTag,
|
|
15
15
|
} from "../../core/index.js";
|
|
16
16
|
import type { IdAllocator, Invariant } from "../../util/index.js";
|
|
17
|
-
import type { MemoizedIdRangeAllocator } from "../memoizedIdRangeAllocator.js";
|
|
18
17
|
|
|
19
18
|
import type { CrossFieldManager } from "./crossFieldQueries.js";
|
|
20
19
|
import type { CrossFieldKeyRange, NodeId } from "./modularChangeTypes.js";
|
|
21
20
|
import type { EncodedNodeChangeset } from "./modularChangeFormat.js";
|
|
22
21
|
|
|
22
|
+
export type NestedChangesIndices = [
|
|
23
|
+
NodeId,
|
|
24
|
+
number | undefined /* inputIndex */,
|
|
25
|
+
number | undefined /* outputIndex */,
|
|
26
|
+
][];
|
|
27
|
+
|
|
23
28
|
/**
|
|
24
29
|
* Functionality provided by a field kind which will be composed with other `FieldChangeHandler`s to
|
|
25
30
|
* implement a unified ChangeFamily supporting documents with multiple field kinds.
|
|
@@ -39,11 +44,7 @@ export interface FieldChangeHandler<
|
|
|
39
44
|
>,
|
|
40
45
|
) => ICodecFamily<TChangeset, FieldChangeEncodingContext>;
|
|
41
46
|
readonly editor: TEditor;
|
|
42
|
-
intoDelta(
|
|
43
|
-
change: TChangeset,
|
|
44
|
-
deltaFromChild: ToDelta,
|
|
45
|
-
idAllocator: MemoizedIdRangeAllocator,
|
|
46
|
-
): DeltaFieldChanges;
|
|
47
|
+
intoDelta(change: TChangeset, deltaFromChild: ToDelta): DeltaFieldChanges;
|
|
47
48
|
/**
|
|
48
49
|
* Returns the set of removed roots that should be in memory for the given change to be applied.
|
|
49
50
|
* A removed root is relevant if any of the following is true:
|
|
@@ -75,13 +76,16 @@ export interface FieldChangeHandler<
|
|
|
75
76
|
* @param change - The field change to get the child changes from.
|
|
76
77
|
*
|
|
77
78
|
* @returns The set of `NodeId`s that correspond to nested changes in the given `change`.
|
|
78
|
-
* Each `NodeId` is associated with the
|
|
79
|
-
*
|
|
79
|
+
* Each `NodeId` is associated with the following:
|
|
80
|
+
* - index of the node in the field in the input context of the changeset (or `undefined` if the node is not
|
|
81
|
+
* attached in the input context).
|
|
82
|
+
* - index of the node in the field in the output context of the changeset (or `undefined` if the node is not
|
|
83
|
+
* attached in the output context).
|
|
80
84
|
* For all returned entries where the index is defined,
|
|
81
85
|
* the indices are are ordered from smallest to largest (with no duplicates).
|
|
82
86
|
* The returned array is owned by the caller.
|
|
83
87
|
*/
|
|
84
|
-
getNestedChanges(change: TChangeset):
|
|
88
|
+
getNestedChanges(change: TChangeset): NestedChangesIndices;
|
|
85
89
|
|
|
86
90
|
/**
|
|
87
91
|
* @returns A list of all cross-field keys contained in the change.
|
|
@@ -17,6 +17,7 @@ import { assert } from "@fluidframework/core-utils/internal";
|
|
|
17
17
|
import type { CrossFieldManager } from "./crossFieldQueries.js";
|
|
18
18
|
import type {
|
|
19
19
|
FieldChangeHandler,
|
|
20
|
+
NestedChangesIndices,
|
|
20
21
|
NodeChangeComposer,
|
|
21
22
|
NodeChangePruner,
|
|
22
23
|
NodeChangeRebaser,
|
|
@@ -82,8 +83,9 @@ function compose(
|
|
|
82
83
|
return composed;
|
|
83
84
|
}
|
|
84
85
|
|
|
85
|
-
function getNestedChanges(change: GenericChangeset):
|
|
86
|
-
|
|
86
|
+
function getNestedChanges(change: GenericChangeset): NestedChangesIndices {
|
|
87
|
+
// For generic changeset, the indices in the input and output contexts are the same.
|
|
88
|
+
return change.toArray().map(([index, nodeChange]) => [nodeChange, index, index]);
|
|
87
89
|
}
|
|
88
90
|
|
|
89
91
|
function rebaseGenericChange(
|
|
@@ -41,6 +41,7 @@ export {
|
|
|
41
41
|
type ToDelta,
|
|
42
42
|
NodeAttachState,
|
|
43
43
|
type FieldChangeEncodingContext,
|
|
44
|
+
type NestedChangesIndices,
|
|
44
45
|
} from "./fieldChangeHandler.js";
|
|
45
46
|
export type {
|
|
46
47
|
CrossFieldKeyRange,
|
|
@@ -77,4 +78,17 @@ export type {
|
|
|
77
78
|
export {
|
|
78
79
|
getAllowedContentDiscrepancies,
|
|
79
80
|
isRepoSuperset,
|
|
81
|
+
type AllowedTypeDiscrepancy,
|
|
82
|
+
type FieldKindDiscrepancy,
|
|
83
|
+
type ValueSchemaDiscrepancy,
|
|
84
|
+
type FieldDiscrepancy,
|
|
85
|
+
type NodeDiscrepancy,
|
|
86
|
+
type NodeKindDiscrepancy,
|
|
87
|
+
type NodeFieldsDiscrepancy,
|
|
88
|
+
type LinearExtension,
|
|
89
|
+
type Realizer,
|
|
90
|
+
fieldRealizer,
|
|
91
|
+
PosetComparisonResult,
|
|
92
|
+
comparePosetElements,
|
|
93
|
+
posetLte,
|
|
80
94
|
} from "./discrepancies.js";
|