@fluidframework/tree 2.10.0 → 2.12.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 +29 -0
- package/api-report/tree.alpha.api.md +49 -18
- package/api-report/tree.beta.api.md +6 -15
- package/api-report/tree.legacy.alpha.api.md +6 -15
- package/api-report/tree.legacy.public.api.md +6 -15
- package/api-report/tree.public.api.md +6 -15
- package/dist/alpha.d.ts +9 -0
- package/dist/core/forest/forest.d.ts +10 -2
- package/dist/core/forest/forest.d.ts.map +1 -1
- package/dist/core/forest/forest.js.map +1 -1
- package/dist/core/index.d.ts +3 -3
- package/dist/core/index.d.ts.map +1 -1
- package/dist/core/index.js +6 -3
- package/dist/core/index.js.map +1 -1
- package/dist/core/rebase/utils.d.ts +1 -1
- package/dist/core/rebase/utils.d.ts.map +1 -1
- package/dist/core/rebase/utils.js +13 -17
- package/dist/core/rebase/utils.js.map +1 -1
- package/dist/core/revertible.d.ts +30 -1
- package/dist/core/revertible.d.ts.map +1 -1
- package/dist/core/revertible.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-stored/storedSchemaRepository.d.ts +2 -2
- package/dist/core/schema-stored/storedSchemaRepository.d.ts.map +1 -1
- package/dist/core/schema-stored/storedSchemaRepository.js +5 -5
- package/dist/core/schema-stored/storedSchemaRepository.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/core/tree/anchorSet.d.ts +2 -2
- package/dist/core/tree/anchorSet.d.ts.map +1 -1
- package/dist/core/tree/anchorSet.js +21 -21
- package/dist/core/tree/anchorSet.js.map +1 -1
- package/{lib/feature-libraries/chunked-forest → dist/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/detachedFieldIndexCodec.d.ts.map +1 -1
- package/dist/core/tree/detachedFieldIndexCodec.js +3 -2
- package/dist/core/tree/detachedFieldIndexCodec.js.map +1 -1
- package/dist/core/tree/index.d.ts +2 -1
- package/dist/core/tree/index.d.ts.map +1 -1
- package/dist/core/tree/index.js +6 -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/core/tree/visitorUtils.d.ts +25 -1
- package/dist/core/tree/visitorUtils.d.ts.map +1 -1
- package/dist/core/tree/visitorUtils.js +29 -1
- package/dist/core/tree/visitorUtils.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 +5 -3
- package/dist/feature-libraries/chunked-forest/chunkedForest.d.ts.map +1 -1
- package/dist/feature-libraries/chunked-forest/chunkedForest.js +24 -14
- 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 +14 -14
- package/dist/feature-libraries/chunked-forest/uniformChunk.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/flex-tree/context.d.ts +1 -1
- package/dist/feature-libraries/flex-tree/context.d.ts.map +1 -1
- package/dist/feature-libraries/flex-tree/context.js.map +1 -1
- package/dist/feature-libraries/index.d.ts +2 -1
- package/dist/feature-libraries/index.d.ts.map +1 -1
- package/dist/feature-libraries/index.js +9 -2
- package/dist/feature-libraries/index.js.map +1 -1
- package/dist/feature-libraries/indexing/anchorTreeIndex.d.ts +139 -0
- package/dist/feature-libraries/indexing/anchorTreeIndex.d.ts.map +1 -0
- package/dist/feature-libraries/indexing/anchorTreeIndex.js +387 -0
- package/dist/feature-libraries/indexing/anchorTreeIndex.js.map +1 -0
- package/dist/feature-libraries/indexing/index.d.ts +7 -0
- package/dist/feature-libraries/indexing/index.d.ts.map +1 -0
- package/dist/feature-libraries/indexing/index.js +11 -0
- package/dist/feature-libraries/indexing/index.js.map +1 -0
- package/dist/feature-libraries/indexing/types.d.ts +32 -0
- package/dist/feature-libraries/indexing/types.d.ts.map +1 -0
- package/dist/{events/interop.js → feature-libraries/indexing/types.js} +1 -1
- package/dist/feature-libraries/indexing/types.js.map +1 -0
- 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/index.d.ts +1 -1
- 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/object-forest/objectForest.d.ts +5 -2
- package/dist/feature-libraries/object-forest/objectForest.d.ts.map +1 -1
- package/dist/feature-libraries/object-forest/objectForest.js +21 -11
- package/dist/feature-libraries/object-forest/objectForest.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/invert.d.ts.map +1 -1
- package/dist/feature-libraries/sequence-field/invert.js +2 -2
- package/dist/feature-libraries/sequence-field/invert.js.map +1 -1
- package/dist/feature-libraries/sequence-field/sequenceFieldToDelta.js +3 -2
- package/dist/feature-libraries/sequence-field/sequenceFieldToDelta.js.map +1 -1
- 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/index.d.ts +6 -7
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +3 -13
- package/dist/index.js.map +1 -1
- package/dist/packageVersion.d.ts +1 -1
- package/dist/packageVersion.js +1 -1
- package/dist/packageVersion.js.map +1 -1
- package/dist/shared-tree/index.d.ts +2 -2
- package/dist/shared-tree/index.d.ts.map +1 -1
- package/dist/shared-tree/index.js +1 -2
- 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 +7 -1
- package/dist/shared-tree/schematizingTreeView.d.ts.map +1 -1
- package/dist/shared-tree/schematizingTreeView.js +35 -38
- package/dist/shared-tree/schematizingTreeView.js.map +1 -1
- package/dist/shared-tree/sharedTree.d.ts +27 -6
- package/dist/shared-tree/sharedTree.d.ts.map +1 -1
- package/dist/shared-tree/sharedTree.js +146 -21
- package/dist/shared-tree/sharedTree.js.map +1 -1
- package/dist/shared-tree/sharedTreeChangeFamily.d.ts.map +1 -1
- package/dist/shared-tree/sharedTreeChangeFamily.js +3 -3
- package/dist/shared-tree/sharedTreeChangeFamily.js.map +1 -1
- package/dist/shared-tree/treeCheckout.d.ts +59 -72
- package/dist/shared-tree/treeCheckout.d.ts.map +1 -1
- package/dist/shared-tree/treeCheckout.js +243 -188
- package/dist/shared-tree/treeCheckout.js.map +1 -1
- package/dist/shared-tree-core/branch.d.ts +29 -107
- package/dist/shared-tree-core/branch.d.ts.map +1 -1
- package/dist/shared-tree-core/branch.js +51 -195
- package/dist/shared-tree-core/branch.js.map +1 -1
- package/dist/shared-tree-core/branchCommitEnricher.d.ts +24 -32
- package/dist/shared-tree-core/branchCommitEnricher.d.ts.map +1 -1
- package/dist/shared-tree-core/branchCommitEnricher.js +70 -53
- package/dist/shared-tree-core/branchCommitEnricher.js.map +1 -1
- package/dist/shared-tree-core/defaultResubmitMachine.d.ts.map +1 -1
- package/dist/shared-tree-core/defaultResubmitMachine.js +2 -1
- package/dist/shared-tree-core/defaultResubmitMachine.js.map +1 -1
- package/dist/shared-tree-core/editManager.d.ts.map +1 -1
- package/dist/shared-tree-core/editManager.js +4 -4
- 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 +5 -4
- package/dist/shared-tree-core/index.js.map +1 -1
- package/dist/shared-tree-core/sharedTreeCore.d.ts +3 -10
- package/dist/shared-tree-core/sharedTreeCore.d.ts.map +1 -1
- package/dist/shared-tree-core/sharedTreeCore.js +14 -67
- package/dist/shared-tree-core/sharedTreeCore.js.map +1 -1
- package/dist/shared-tree-core/transaction.d.ts +146 -0
- package/dist/shared-tree-core/transaction.d.ts.map +1 -0
- package/dist/shared-tree-core/transaction.js +211 -0
- package/dist/shared-tree-core/transaction.js.map +1 -0
- package/dist/shared-tree-core/transactionEnricher.d.ts +8 -13
- package/dist/shared-tree-core/transactionEnricher.d.ts.map +1 -1
- package/dist/shared-tree-core/transactionEnricher.js +41 -21
- package/dist/shared-tree-core/transactionEnricher.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/identifierIndex.d.ts +21 -0
- package/dist/simple-tree/api/identifierIndex.d.ts.map +1 -0
- package/dist/simple-tree/api/identifierIndex.js +45 -0
- package/dist/simple-tree/api/identifierIndex.js.map +1 -0
- package/dist/simple-tree/api/index.d.ts +4 -2
- package/dist/simple-tree/api/index.d.ts.map +1 -1
- package/dist/simple-tree/api/index.js +8 -1
- package/dist/simple-tree/api/index.js.map +1 -1
- package/dist/simple-tree/api/schemaFactory.d.ts +48 -0
- package/dist/simple-tree/api/schemaFactory.d.ts.map +1 -1
- package/dist/simple-tree/api/schemaFactory.js +5 -2
- package/dist/simple-tree/api/schemaFactory.js.map +1 -1
- package/dist/simple-tree/api/simpleSchema.d.ts +3 -1
- 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 +9 -7
- package/dist/simple-tree/api/simpleSchemaToJsonSchema.js.map +1 -1
- package/dist/simple-tree/api/simpleTreeIndex.d.ts +65 -0
- package/dist/simple-tree/api/simpleTreeIndex.d.ts.map +1 -0
- package/dist/simple-tree/api/simpleTreeIndex.js +93 -0
- package/dist/simple-tree/api/simpleTreeIndex.js.map +1 -0
- 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/tree.d.ts +5 -5
- 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/treeNodeApi.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/core/index.d.ts +1 -1
- package/dist/simple-tree/core/index.d.ts.map +1 -1
- package/dist/simple-tree/core/index.js +2 -1
- package/dist/simple-tree/core/index.js.map +1 -1
- package/dist/simple-tree/core/treeNodeKernel.d.ts +6 -2
- package/dist/simple-tree/core/treeNodeKernel.d.ts.map +1 -1
- package/dist/simple-tree/core/treeNodeKernel.js +53 -22
- package/dist/simple-tree/core/treeNodeKernel.js.map +1 -1
- package/dist/simple-tree/core/unhydratedFlexTree.d.ts +1 -1
- package/dist/simple-tree/core/unhydratedFlexTree.d.ts.map +1 -1
- package/dist/simple-tree/core/unhydratedFlexTree.js +2 -2
- package/dist/simple-tree/core/unhydratedFlexTree.js.map +1 -1
- package/dist/simple-tree/index.d.ts +2 -2
- package/dist/simple-tree/index.d.ts.map +1 -1
- package/dist/simple-tree/index.js +7 -2
- package/dist/simple-tree/index.js.map +1 -1
- package/dist/simple-tree/leafNodeSchema.d.ts +0 -15
- 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/objectNode.d.ts +15 -5
- package/dist/simple-tree/objectNode.d.ts.map +1 -1
- package/dist/simple-tree/objectNode.js +18 -2
- package/dist/simple-tree/objectNode.js.map +1 -1
- package/dist/simple-tree/objectNodeTypes.d.ts +4 -0
- 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 +4 -2
- package/dist/simple-tree/schemaTypes.d.ts.map +1 -1
- package/dist/simple-tree/schemaTypes.js.map +1 -1
- package/dist/simple-tree/toMapTree.js +3 -3
- package/dist/simple-tree/toMapTree.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 +1 -2
- package/dist/util/index.d.ts.map +1 -1
- package/dist/util/index.js +6 -4
- package/dist/util/index.js.map +1 -1
- package/dist/util/typeCheck.d.ts +6 -3
- package/dist/util/typeCheck.d.ts.map +1 -1
- package/dist/util/typeCheck.js.map +1 -1
- package/dist/util/typeCheckTests.d.ts +14 -2
- package/dist/util/typeCheckTests.d.ts.map +1 -1
- package/dist/util/typeCheckTests.js.map +1 -1
- package/dist/util/utils.d.ts +42 -0
- package/dist/util/utils.d.ts.map +1 -1
- package/dist/util/utils.js +35 -1
- package/dist/util/utils.js.map +1 -1
- package/lib/alpha.d.ts +9 -0
- package/lib/core/forest/forest.d.ts +10 -2
- package/lib/core/forest/forest.d.ts.map +1 -1
- package/lib/core/forest/forest.js.map +1 -1
- package/lib/core/index.d.ts +3 -3
- package/lib/core/index.d.ts.map +1 -1
- package/lib/core/index.js +3 -3
- package/lib/core/index.js.map +1 -1
- package/lib/core/rebase/utils.d.ts +1 -1
- package/lib/core/rebase/utils.d.ts.map +1 -1
- package/lib/core/rebase/utils.js +13 -17
- package/lib/core/rebase/utils.js.map +1 -1
- package/lib/core/revertible.d.ts +30 -1
- package/lib/core/revertible.d.ts.map +1 -1
- package/lib/core/revertible.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-stored/storedSchemaRepository.d.ts +2 -2
- package/lib/core/schema-stored/storedSchemaRepository.d.ts.map +1 -1
- package/lib/core/schema-stored/storedSchemaRepository.js +1 -1
- package/lib/core/schema-stored/storedSchemaRepository.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/core/tree/anchorSet.d.ts +2 -2
- package/lib/core/tree/anchorSet.d.ts.map +1 -1
- package/lib/core/tree/anchorSet.js +1 -1
- package/lib/core/tree/anchorSet.js.map +1 -1
- package/{dist/feature-libraries/chunked-forest → lib/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/detachedFieldIndexCodec.d.ts.map +1 -1
- package/lib/core/tree/detachedFieldIndexCodec.js +4 -3
- package/lib/core/tree/detachedFieldIndexCodec.js.map +1 -1
- package/lib/core/tree/index.d.ts +2 -1
- package/lib/core/tree/index.d.ts.map +1 -1
- package/lib/core/tree/index.js +2 -1
- 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/core/tree/visitorUtils.d.ts +25 -1
- package/lib/core/tree/visitorUtils.d.ts.map +1 -1
- package/lib/core/tree/visitorUtils.js +27 -0
- package/lib/core/tree/visitorUtils.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 +5 -3
- package/lib/feature-libraries/chunked-forest/chunkedForest.d.ts.map +1 -1
- package/lib/feature-libraries/chunked-forest/chunkedForest.js +18 -8
- 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 +4 -4
- package/lib/feature-libraries/chunked-forest/uniformChunk.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/flex-tree/context.d.ts +1 -1
- package/lib/feature-libraries/flex-tree/context.d.ts.map +1 -1
- package/lib/feature-libraries/flex-tree/context.js.map +1 -1
- package/lib/feature-libraries/index.d.ts +2 -1
- package/lib/feature-libraries/index.d.ts.map +1 -1
- package/lib/feature-libraries/index.js +2 -1
- package/lib/feature-libraries/index.js.map +1 -1
- package/lib/feature-libraries/indexing/anchorTreeIndex.d.ts +139 -0
- package/lib/feature-libraries/indexing/anchorTreeIndex.d.ts.map +1 -0
- package/lib/feature-libraries/indexing/anchorTreeIndex.js +382 -0
- package/lib/feature-libraries/indexing/anchorTreeIndex.js.map +1 -0
- package/lib/feature-libraries/indexing/index.d.ts +7 -0
- package/lib/feature-libraries/indexing/index.d.ts.map +1 -0
- package/lib/{events → feature-libraries/indexing}/index.js +1 -1
- package/lib/feature-libraries/indexing/index.js.map +1 -0
- package/lib/feature-libraries/indexing/types.d.ts +32 -0
- package/lib/feature-libraries/indexing/types.d.ts.map +1 -0
- package/lib/{events/interop.js → feature-libraries/indexing/types.js} +1 -1
- package/lib/feature-libraries/indexing/types.js.map +1 -0
- 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/index.d.ts +1 -1
- 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/object-forest/objectForest.d.ts +5 -2
- package/lib/feature-libraries/object-forest/objectForest.d.ts.map +1 -1
- package/lib/feature-libraries/object-forest/objectForest.js +15 -5
- package/lib/feature-libraries/object-forest/objectForest.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/invert.d.ts.map +1 -1
- package/lib/feature-libraries/sequence-field/invert.js +4 -4
- package/lib/feature-libraries/sequence-field/invert.js.map +1 -1
- package/lib/feature-libraries/sequence-field/sequenceFieldToDelta.js +4 -3
- package/lib/feature-libraries/sequence-field/sequenceFieldToDelta.js.map +1 -1
- 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/index.d.ts +6 -7
- package/lib/index.d.ts.map +1 -1
- package/lib/index.js +3 -4
- package/lib/index.js.map +1 -1
- package/lib/packageVersion.d.ts +1 -1
- package/lib/packageVersion.js +1 -1
- package/lib/packageVersion.js.map +1 -1
- package/lib/shared-tree/index.d.ts +2 -2
- package/lib/shared-tree/index.d.ts.map +1 -1
- package/lib/shared-tree/index.js +1 -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 +7 -1
- package/lib/shared-tree/schematizingTreeView.d.ts.map +1 -1
- package/lib/shared-tree/schematizingTreeView.js +12 -16
- package/lib/shared-tree/schematizingTreeView.js.map +1 -1
- package/lib/shared-tree/sharedTree.d.ts +27 -6
- package/lib/shared-tree/sharedTree.d.ts.map +1 -1
- package/lib/shared-tree/sharedTree.js +135 -10
- package/lib/shared-tree/sharedTree.js.map +1 -1
- package/lib/shared-tree/sharedTreeChangeFamily.d.ts.map +1 -1
- package/lib/shared-tree/sharedTreeChangeFamily.js +5 -5
- package/lib/shared-tree/sharedTreeChangeFamily.js.map +1 -1
- package/lib/shared-tree/treeCheckout.d.ts +59 -72
- package/lib/shared-tree/treeCheckout.d.ts.map +1 -1
- package/lib/shared-tree/treeCheckout.js +233 -177
- package/lib/shared-tree/treeCheckout.js.map +1 -1
- package/lib/shared-tree-core/branch.d.ts +29 -107
- package/lib/shared-tree-core/branch.d.ts.map +1 -1
- package/lib/shared-tree-core/branch.js +50 -193
- package/lib/shared-tree-core/branch.js.map +1 -1
- package/lib/shared-tree-core/branchCommitEnricher.d.ts +24 -32
- package/lib/shared-tree-core/branchCommitEnricher.d.ts.map +1 -1
- package/lib/shared-tree-core/branchCommitEnricher.js +71 -54
- package/lib/shared-tree-core/branchCommitEnricher.js.map +1 -1
- package/lib/shared-tree-core/defaultResubmitMachine.d.ts.map +1 -1
- package/lib/shared-tree-core/defaultResubmitMachine.js +3 -2
- package/lib/shared-tree-core/defaultResubmitMachine.js.map +1 -1
- package/lib/shared-tree-core/editManager.d.ts.map +1 -1
- package/lib/shared-tree-core/editManager.js +4 -4
- 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 +3 -10
- package/lib/shared-tree-core/sharedTreeCore.d.ts.map +1 -1
- package/lib/shared-tree-core/sharedTreeCore.js +15 -68
- package/lib/shared-tree-core/sharedTreeCore.js.map +1 -1
- package/lib/shared-tree-core/transaction.d.ts +146 -0
- package/lib/shared-tree-core/transaction.d.ts.map +1 -0
- package/lib/shared-tree-core/transaction.js +206 -0
- package/lib/shared-tree-core/transaction.js.map +1 -0
- package/lib/shared-tree-core/transactionEnricher.d.ts +8 -13
- package/lib/shared-tree-core/transactionEnricher.d.ts.map +1 -1
- package/lib/shared-tree-core/transactionEnricher.js +41 -21
- package/lib/shared-tree-core/transactionEnricher.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/identifierIndex.d.ts +21 -0
- package/lib/simple-tree/api/identifierIndex.d.ts.map +1 -0
- package/lib/simple-tree/api/identifierIndex.js +41 -0
- package/lib/simple-tree/api/identifierIndex.js.map +1 -0
- package/lib/simple-tree/api/index.d.ts +4 -2
- package/lib/simple-tree/api/index.d.ts.map +1 -1
- package/lib/simple-tree/api/index.js +4 -1
- package/lib/simple-tree/api/index.js.map +1 -1
- package/lib/simple-tree/api/schemaFactory.d.ts +48 -0
- package/lib/simple-tree/api/schemaFactory.d.ts.map +1 -1
- package/lib/simple-tree/api/schemaFactory.js +4 -1
- package/lib/simple-tree/api/schemaFactory.js.map +1 -1
- package/lib/simple-tree/api/simpleSchema.d.ts +3 -1
- 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 +11 -9
- package/lib/simple-tree/api/simpleSchemaToJsonSchema.js.map +1 -1
- package/lib/simple-tree/api/simpleTreeIndex.d.ts +65 -0
- package/lib/simple-tree/api/simpleTreeIndex.d.ts.map +1 -0
- package/lib/simple-tree/api/simpleTreeIndex.js +89 -0
- package/lib/simple-tree/api/simpleTreeIndex.js.map +1 -0
- 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/tree.d.ts +5 -5
- 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/treeNodeApi.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/core/index.d.ts +1 -1
- package/lib/simple-tree/core/index.d.ts.map +1 -1
- package/lib/simple-tree/core/index.js +1 -1
- package/lib/simple-tree/core/index.js.map +1 -1
- package/lib/simple-tree/core/treeNodeKernel.d.ts +6 -2
- package/lib/simple-tree/core/treeNodeKernel.d.ts.map +1 -1
- package/lib/simple-tree/core/treeNodeKernel.js +31 -1
- package/lib/simple-tree/core/treeNodeKernel.js.map +1 -1
- package/lib/simple-tree/core/unhydratedFlexTree.d.ts +1 -1
- package/lib/simple-tree/core/unhydratedFlexTree.d.ts.map +1 -1
- package/lib/simple-tree/core/unhydratedFlexTree.js +1 -1
- package/lib/simple-tree/core/unhydratedFlexTree.js.map +1 -1
- package/lib/simple-tree/index.d.ts +2 -2
- 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 +0 -15
- 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/objectNode.d.ts +15 -5
- package/lib/simple-tree/objectNode.d.ts.map +1 -1
- package/lib/simple-tree/objectNode.js +16 -1
- package/lib/simple-tree/objectNode.js.map +1 -1
- package/lib/simple-tree/objectNodeTypes.d.ts +4 -0
- 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 +4 -2
- package/lib/simple-tree/schemaTypes.d.ts.map +1 -1
- package/lib/simple-tree/schemaTypes.js.map +1 -1
- package/lib/simple-tree/toMapTree.js +5 -5
- package/lib/simple-tree/toMapTree.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 +1 -2
- package/lib/util/index.d.ts.map +1 -1
- package/lib/util/index.js +1 -2
- package/lib/util/index.js.map +1 -1
- package/lib/util/typeCheck.d.ts +6 -3
- package/lib/util/typeCheck.d.ts.map +1 -1
- package/lib/util/typeCheck.js.map +1 -1
- package/lib/util/typeCheckTests.d.ts +14 -2
- package/lib/util/typeCheckTests.d.ts.map +1 -1
- package/lib/util/typeCheckTests.js.map +1 -1
- package/lib/util/utils.d.ts +42 -0
- package/lib/util/utils.d.ts.map +1 -1
- package/lib/util/utils.js +30 -0
- package/lib/util/utils.js.map +1 -1
- package/package.json +23 -23
- package/src/core/forest/forest.ts +12 -1
- package/src/core/index.ts +13 -2
- package/src/core/rebase/utils.ts +28 -29
- package/src/core/revertible.ts +35 -1
- package/src/core/schema-stored/format.ts +0 -3
- package/src/core/schema-stored/schema.ts +13 -10
- package/src/core/schema-stored/storedSchemaRepository.ts +2 -1
- package/src/core/schema-view/index.ts +0 -1
- package/src/core/schema-view/view.ts +0 -11
- package/src/core/tree/anchorSet.ts +2 -1
- package/src/{feature-libraries/chunked-forest → core/tree}/chunk.ts +4 -4
- package/src/core/tree/detachedFieldIndexCodec.ts +4 -3
- package/src/core/tree/index.ts +9 -0
- package/src/core/tree/treeTextFormat.ts +0 -5
- package/src/core/tree/types.ts +0 -5
- package/src/core/tree/visitorUtils.ts +56 -1
- 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 +35 -8
- 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 +7 -4
- package/src/feature-libraries/default-schema/defaultSchema.ts +1 -0
- package/src/feature-libraries/default-schema/schemaChecker.ts +4 -1
- package/src/feature-libraries/flex-tree/context.ts +1 -1
- package/src/feature-libraries/index.ts +22 -0
- package/src/feature-libraries/indexing/anchorTreeIndex.ts +482 -0
- package/src/feature-libraries/indexing/index.ts +11 -0
- package/src/feature-libraries/indexing/types.ts +37 -0
- package/src/feature-libraries/modular-schema/discrepancies.ts +76 -38
- package/src/feature-libraries/modular-schema/index.ts +13 -0
- package/src/feature-libraries/modular-schema/isNeverTree.ts +0 -2
- package/src/feature-libraries/object-forest/objectForest.ts +22 -4
- package/src/feature-libraries/sequence-field/invert.ts +4 -4
- package/src/feature-libraries/sequence-field/sequenceFieldToDelta.ts +4 -4
- package/src/feature-libraries/sequence-field/types.ts +0 -1
- package/src/index.ts +17 -35
- package/src/packageVersion.ts +1 -1
- package/src/shared-tree/index.ts +1 -2
- package/src/shared-tree/schematizeTree.ts +6 -10
- package/src/shared-tree/schematizingTreeView.ts +18 -28
- package/src/shared-tree/sharedTree.ts +216 -30
- package/src/shared-tree/sharedTreeChangeFamily.ts +5 -4
- package/src/shared-tree/treeCheckout.ts +341 -299
- package/src/shared-tree-core/branch.ts +80 -300
- package/src/shared-tree-core/branchCommitEnricher.ts +66 -62
- package/src/shared-tree-core/defaultResubmitMachine.ts +3 -2
- package/src/shared-tree-core/editManager.ts +4 -9
- package/src/shared-tree-core/index.ts +11 -3
- package/src/shared-tree-core/sharedTreeCore.ts +23 -79
- package/src/shared-tree-core/transaction.ts +310 -0
- package/src/shared-tree-core/transactionEnricher.ts +30 -24
- 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/identifierIndex.ts +64 -0
- package/src/simple-tree/api/index.ts +17 -2
- package/src/simple-tree/api/schemaFactory.ts +62 -1
- package/src/simple-tree/api/simpleSchema.ts +3 -1
- package/src/simple-tree/api/simpleSchemaToJsonSchema.ts +17 -18
- package/src/simple-tree/api/simpleTreeIndex.ts +233 -0
- package/src/simple-tree/api/storedSchema.ts +7 -22
- package/src/simple-tree/api/tree.ts +14 -5
- package/src/simple-tree/api/treeNodeApi.ts +1 -1
- package/src/simple-tree/api/verboseTree.ts +2 -2
- package/src/simple-tree/api/view.ts +197 -51
- package/src/simple-tree/core/index.ts +1 -0
- package/src/simple-tree/core/treeNodeKernel.ts +37 -2
- package/src/simple-tree/core/unhydratedFlexTree.ts +2 -1
- package/src/simple-tree/index.ts +10 -0
- package/src/simple-tree/leafNodeSchema.ts +0 -19
- package/src/simple-tree/objectNode.ts +45 -14
- package/src/simple-tree/objectNodeTypes.ts +5 -0
- package/src/simple-tree/schemaTypes.ts +7 -2
- package/src/simple-tree/toMapTree.ts +5 -5
- package/src/simple-tree/toStoredSchema.ts +25 -19
- package/src/util/brand.ts +0 -2
- package/src/util/index.ts +4 -1
- package/src/util/typeCheck.ts +6 -3
- package/src/util/typeCheckTests.ts +11 -1
- package/src/util/utils.ts +64 -0
- package/dist/events/emitter.d.ts +0 -139
- package/dist/events/emitter.d.ts.map +0 -1
- package/dist/events/emitter.js +0 -165
- package/dist/events/emitter.js.map +0 -1
- package/dist/events/index.d.ts +0 -7
- package/dist/events/index.d.ts.map +0 -1
- package/dist/events/index.js +0 -11
- package/dist/events/index.js.map +0 -1
- package/dist/events/interop.d.ts +0 -30
- package/dist/events/interop.d.ts.map +0 -1
- package/dist/events/interop.js.map +0 -1
- package/dist/events/listeners.d.ts +0 -76
- package/dist/events/listeners.d.ts.map +0 -1
- package/dist/events/listeners.js +0 -7
- package/dist/events/listeners.js.map +0 -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/shared-tree-core/transactionStack.d.ts +0 -29
- package/dist/shared-tree-core/transactionStack.d.ts.map +0 -1
- package/dist/shared-tree-core/transactionStack.js +0 -41
- package/dist/shared-tree-core/transactionStack.js.map +0 -1
- package/dist/util/transactionResult.d.ts +0 -19
- package/dist/util/transactionResult.d.ts.map +0 -1
- package/dist/util/transactionResult.js +0 -23
- package/dist/util/transactionResult.js.map +0 -1
- package/lib/events/emitter.d.ts +0 -139
- package/lib/events/emitter.d.ts.map +0 -1
- package/lib/events/emitter.js +0 -160
- package/lib/events/emitter.js.map +0 -1
- package/lib/events/index.d.ts +0 -7
- package/lib/events/index.d.ts.map +0 -1
- package/lib/events/index.js.map +0 -1
- package/lib/events/interop.d.ts +0 -30
- package/lib/events/interop.d.ts.map +0 -1
- package/lib/events/interop.js.map +0 -1
- package/lib/events/listeners.d.ts +0 -76
- package/lib/events/listeners.d.ts.map +0 -1
- package/lib/events/listeners.js +0 -6
- package/lib/events/listeners.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/shared-tree-core/transactionStack.d.ts +0 -29
- package/lib/shared-tree-core/transactionStack.d.ts.map +0 -1
- package/lib/shared-tree-core/transactionStack.js +0 -37
- package/lib/shared-tree-core/transactionStack.js.map +0 -1
- package/lib/util/transactionResult.d.ts +0 -19
- package/lib/util/transactionResult.d.ts.map +0 -1
- package/lib/util/transactionResult.js +0 -20
- package/lib/util/transactionResult.js.map +0 -1
- package/src/events/README.md +0 -3
- package/src/events/emitter.ts +0 -256
- package/src/events/index.ts +0 -19
- package/src/events/interop.ts +0 -38
- package/src/events/listeners.ts +0 -80
- package/src/shared-tree-core/transactionStack.ts +0 -45
- package/src/util/transactionResult.ts +0 -19
|
@@ -18,6 +18,9 @@ import {
|
|
|
18
18
|
getOrCreate,
|
|
19
19
|
isReadonlyArray,
|
|
20
20
|
} from "../../util/index.js";
|
|
21
|
+
// This import is required for intellisense in @link doc comments on mouseover in VSCode.
|
|
22
|
+
// eslint-disable-next-line unused-imports/no-unused-imports, @typescript-eslint/no-unused-vars
|
|
23
|
+
import type { TreeAlpha } from "../../shared-tree/index.js";
|
|
21
24
|
|
|
22
25
|
import {
|
|
23
26
|
booleanSchema,
|
|
@@ -74,6 +77,7 @@ import type {
|
|
|
74
77
|
import { createFieldSchemaUnsafe } from "./schemaFactoryRecursive.js";
|
|
75
78
|
import { TreeNodeValid } from "../treeNodeValid.js";
|
|
76
79
|
import { isLazy } from "../flexList.js";
|
|
80
|
+
|
|
77
81
|
/**
|
|
78
82
|
* Gets the leaf domain schema compatible with a given {@link TreeValue}.
|
|
79
83
|
*/
|
|
@@ -97,6 +101,58 @@ export function schemaFromValue(value: TreeValue): TreeNodeSchema {
|
|
|
97
101
|
}
|
|
98
102
|
}
|
|
99
103
|
|
|
104
|
+
/**
|
|
105
|
+
* Options when declaring an {@link SchemaFactory.object|object node}'s schema
|
|
106
|
+
*/
|
|
107
|
+
export interface SchemaFactoryObjectOptions {
|
|
108
|
+
/**
|
|
109
|
+
* Opt in to viewing documents which have unknown optional fields for this object's identifier, i.e. optional fields
|
|
110
|
+
* in the document schema which are not present in this object schema declaration.
|
|
111
|
+
*
|
|
112
|
+
* @defaultValue `false`
|
|
113
|
+
* @remarks
|
|
114
|
+
* The advantage of enabling this option is that it allows an application ecosystem with staged rollout to more quickly
|
|
115
|
+
* upgrade documents to include schema for new optional features.
|
|
116
|
+
*
|
|
117
|
+
* However, it does come with trade-offs that applications should weigh carefully when it comes to interactions between
|
|
118
|
+
* code and documents.
|
|
119
|
+
* When opening such documents, the API presented is still determined by the view schema.
|
|
120
|
+
* This can have implications on the behavior of edits or code which uses portions of the view schema,
|
|
121
|
+
* since this may inadvertently drop data which is present in those optional fields in the document schema.
|
|
122
|
+
*
|
|
123
|
+
* Consider the following example:
|
|
124
|
+
*
|
|
125
|
+
* ```typescript
|
|
126
|
+
* const sf = new SchemaFactory("com.example");
|
|
127
|
+
* class PersonView extends sf.object("Person", { name: sf.string }, { allowUnknownOptionalFields: true }) {}
|
|
128
|
+
* class PersonStored extends sf.object("Person", { name: sf.string, nickname: sf.optional(sf.string) }) {}
|
|
129
|
+
*
|
|
130
|
+
* // Say we have a document which uses `PersonStored` in its schema, and application code constructs
|
|
131
|
+
* // a tree view using `PersonView`. If the application for some reason had implemented a function like this:
|
|
132
|
+
* function clonePerson(a: PersonView): PersonView {
|
|
133
|
+
* return new PersonView({ name: a.name });
|
|
134
|
+
* }
|
|
135
|
+
* // ...or even like this:
|
|
136
|
+
* function clonePerson(a: PersonView): PersonView {
|
|
137
|
+
* return new PersonView({ ...a})
|
|
138
|
+
* }
|
|
139
|
+
* // Then the alleged clone wouldn't actually clone the entire person in either case, it would drop the nickname.
|
|
140
|
+
* ```
|
|
141
|
+
*
|
|
142
|
+
* If an application wants to be particularly careful to preserve all data on a node when editing it, it can use
|
|
143
|
+
* {@link TreeAlpha.(importVerbose:2)|import}/{@link TreeAlpha.(exportVerbose:2)|export} APIs with persistent keys.
|
|
144
|
+
*
|
|
145
|
+
* Note that public API methods which operate on entire nodes (such as `moveTo`, `moveToEnd`, etc. on arrays) do not encounter
|
|
146
|
+
* this problem as SharedTree's implementation stores the entire node in its lower layers. It's only when application code
|
|
147
|
+
* reaches into a node (either by accessing its fields, spreading it, or some other means) that this problem arises.
|
|
148
|
+
*/
|
|
149
|
+
allowUnknownOptionalFields?: boolean;
|
|
150
|
+
}
|
|
151
|
+
|
|
152
|
+
export const defaultSchemaFactoryObjectOptions: Required<SchemaFactoryObjectOptions> = {
|
|
153
|
+
allowUnknownOptionalFields: false,
|
|
154
|
+
};
|
|
155
|
+
|
|
100
156
|
/**
|
|
101
157
|
* The name of a schema produced by {@link SchemaFactory}, including its optional scope prefix.
|
|
102
158
|
*
|
|
@@ -333,7 +389,12 @@ export class SchemaFactory<
|
|
|
333
389
|
true,
|
|
334
390
|
T
|
|
335
391
|
> {
|
|
336
|
-
return objectSchema(
|
|
392
|
+
return objectSchema(
|
|
393
|
+
this.scoped(name),
|
|
394
|
+
fields,
|
|
395
|
+
true,
|
|
396
|
+
defaultSchemaFactoryObjectOptions.allowUnknownOptionalFields,
|
|
397
|
+
);
|
|
337
398
|
}
|
|
338
399
|
|
|
339
400
|
/**
|
|
@@ -30,7 +30,9 @@ export interface SimpleNodeSchemaBase<TNodeKind extends NodeKind> {
|
|
|
30
30
|
*/
|
|
31
31
|
export interface SimpleObjectNodeSchema extends SimpleNodeSchemaBase<NodeKind.Object> {
|
|
32
32
|
/**
|
|
33
|
-
* Schemas for each of the object's fields, keyed off of schema's
|
|
33
|
+
* Schemas for each of the object's fields, keyed off of schema's keys.
|
|
34
|
+
* @remarks
|
|
35
|
+
* Depending on how this schema was exported, the string keys may be either the property keys or the stored keys.
|
|
34
36
|
*/
|
|
35
37
|
readonly fields: Record<string, SimpleFieldSchema>;
|
|
36
38
|
}
|
|
@@ -3,10 +3,10 @@
|
|
|
3
3
|
* Licensed under the MIT License.
|
|
4
4
|
*/
|
|
5
5
|
|
|
6
|
-
import {
|
|
6
|
+
import { unreachableCase } from "@fluidframework/core-utils/internal";
|
|
7
7
|
import { UsageError } from "@fluidframework/telemetry-utils/internal";
|
|
8
8
|
import { ValueSchema } from "../../core/index.js";
|
|
9
|
-
import { getOrCreate, type Mutable } from "../../util/index.js";
|
|
9
|
+
import { getOrCreate, hasSingle, type Mutable } from "../../util/index.js";
|
|
10
10
|
import type {
|
|
11
11
|
JsonArrayNodeSchema,
|
|
12
12
|
JsonFieldSchema,
|
|
@@ -42,9 +42,9 @@ export function toJsonSchema(schema: SimpleTreeSchema): JsonTreeSchema {
|
|
|
42
42
|
allowedTypes.push(createSchemaRef(allowedType));
|
|
43
43
|
}
|
|
44
44
|
|
|
45
|
-
return allowedTypes
|
|
45
|
+
return hasSingle(allowedTypes)
|
|
46
46
|
? {
|
|
47
|
-
...
|
|
47
|
+
...allowedTypes[0],
|
|
48
48
|
$defs: definitions,
|
|
49
49
|
}
|
|
50
50
|
: {
|
|
@@ -96,8 +96,9 @@ function convertArrayNodeSchema(schema: SimpleArrayNodeSchema): JsonArrayNodeSch
|
|
|
96
96
|
allowedTypes.push(createSchemaRef(type));
|
|
97
97
|
});
|
|
98
98
|
|
|
99
|
-
const items: JsonFieldSchema =
|
|
100
|
-
|
|
99
|
+
const items: JsonFieldSchema = hasSingle(allowedTypes)
|
|
100
|
+
? allowedTypes[0]
|
|
101
|
+
: { anyOf: allowedTypes };
|
|
101
102
|
|
|
102
103
|
return {
|
|
103
104
|
type: "array",
|
|
@@ -142,12 +143,11 @@ function convertObjectNodeSchema(schema: SimpleObjectNodeSchema): JsonObjectNode
|
|
|
142
143
|
allowedTypes.push(createSchemaRef(allowedType));
|
|
143
144
|
}
|
|
144
145
|
|
|
145
|
-
const output: Mutable<JsonFieldSchema> =
|
|
146
|
-
allowedTypes
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
};
|
|
146
|
+
const output: Mutable<JsonFieldSchema> = hasSingle(allowedTypes)
|
|
147
|
+
? allowedTypes[0]
|
|
148
|
+
: {
|
|
149
|
+
anyOf: allowedTypes,
|
|
150
|
+
};
|
|
151
151
|
|
|
152
152
|
// Don't include "description" property at all if it's not present in the input.
|
|
153
153
|
if (value.metadata?.description !== undefined) {
|
|
@@ -178,12 +178,11 @@ function convertMapNodeSchema(schema: SimpleMapNodeSchema): JsonMapNodeSchema {
|
|
|
178
178
|
type: "object",
|
|
179
179
|
_treeNodeSchemaKind: NodeKind.Map,
|
|
180
180
|
patternProperties: {
|
|
181
|
-
"^.*$":
|
|
182
|
-
allowedTypes
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
},
|
|
181
|
+
"^.*$": hasSingle(allowedTypes)
|
|
182
|
+
? allowedTypes[0]
|
|
183
|
+
: {
|
|
184
|
+
anyOf: allowedTypes,
|
|
185
|
+
},
|
|
187
186
|
},
|
|
188
187
|
};
|
|
189
188
|
}
|
|
@@ -0,0 +1,233 @@
|
|
|
1
|
+
/*!
|
|
2
|
+
* Copyright (c) Microsoft Corporation and contributors. All rights reserved.
|
|
3
|
+
* Licensed under the MIT License.
|
|
4
|
+
*/
|
|
5
|
+
|
|
6
|
+
import type {
|
|
7
|
+
AnchorNode,
|
|
8
|
+
FieldKey,
|
|
9
|
+
ITreeSubscriptionCursor,
|
|
10
|
+
TreeNodeSchemaIdentifier,
|
|
11
|
+
} from "../../core/index.js";
|
|
12
|
+
import {
|
|
13
|
+
AnchorTreeIndex,
|
|
14
|
+
isTreeValue,
|
|
15
|
+
type TreeIndexNodes,
|
|
16
|
+
hasElement,
|
|
17
|
+
type TreeIndex,
|
|
18
|
+
type TreeIndexKey,
|
|
19
|
+
type KeyFinder,
|
|
20
|
+
} from "../../feature-libraries/index.js";
|
|
21
|
+
import { brand, fail } from "../../util/index.js";
|
|
22
|
+
import type { ImplicitFieldSchema, NodeFromSchema } from "../schemaTypes.js";
|
|
23
|
+
import { treeNodeFromAnchor, type TreeNode, type TreeNodeSchema } from "../core/index.js";
|
|
24
|
+
import { treeNodeApi } from "./treeNodeApi.js";
|
|
25
|
+
import type { TreeView } from "./tree.js";
|
|
26
|
+
import { walkFieldSchema } from "../walkFieldSchema.js";
|
|
27
|
+
import type { SchematizingSimpleTreeView } from "../../shared-tree/index.js";
|
|
28
|
+
|
|
29
|
+
/**
|
|
30
|
+
* A {@link TreeIndex} that returns tree nodes given their associated keys.
|
|
31
|
+
*
|
|
32
|
+
* @alpha
|
|
33
|
+
*/
|
|
34
|
+
export type SimpleTreeIndex<TKey extends TreeIndexKey, TValue> = TreeIndex<TKey, TValue>;
|
|
35
|
+
|
|
36
|
+
/**
|
|
37
|
+
* Creates a {@link SimpleTreeIndex} with a specified indexer.
|
|
38
|
+
*
|
|
39
|
+
* @param view - the view for the tree being indexed
|
|
40
|
+
* @param indexer - a function that takes in a {@link TreeNodeSchema} and returns the field name that all nodes of the given schema
|
|
41
|
+
* should be keyed on, must be pure and functional
|
|
42
|
+
* @param getValue - given at least one {@link TreeNode}, returns an associated value
|
|
43
|
+
* @param isKeyValid - function for verifying the validity of the key retrieved based on the information given by the indexer
|
|
44
|
+
*
|
|
45
|
+
* @alpha
|
|
46
|
+
*/
|
|
47
|
+
export function createSimpleTreeIndex<
|
|
48
|
+
TFieldSchema extends ImplicitFieldSchema,
|
|
49
|
+
TKey extends TreeIndexKey,
|
|
50
|
+
TValue,
|
|
51
|
+
>(
|
|
52
|
+
view: TreeView<TFieldSchema>,
|
|
53
|
+
indexer: (schema: TreeNodeSchema) => string | undefined,
|
|
54
|
+
getValue: (nodes: TreeIndexNodes<TreeNode>) => TValue,
|
|
55
|
+
isKeyValid: (key: TreeIndexKey) => key is TKey,
|
|
56
|
+
): SimpleTreeIndex<TKey, TValue>;
|
|
57
|
+
/**
|
|
58
|
+
* Creates a {@link SimpleTreeIndex} with a specified indexer.
|
|
59
|
+
*
|
|
60
|
+
* @param view - the view for the tree being indexed
|
|
61
|
+
* @param indexer - a function that takes in a {@link TreeNodeSchema} and returns the field name that all nodes of the given schema
|
|
62
|
+
* should be keyed on, must be pure and functional
|
|
63
|
+
* @param getValue - given at least one {@link TreeNode}, returns an associated value
|
|
64
|
+
* @param isKeyValid - function for verifying the validity of the key retrieved based on the information given by the indexer
|
|
65
|
+
* @param indexableSchema - a list of all the schema types that can be indexed
|
|
66
|
+
*
|
|
67
|
+
* @alpha
|
|
68
|
+
*/
|
|
69
|
+
export function createSimpleTreeIndex<
|
|
70
|
+
TFieldSchema extends ImplicitFieldSchema,
|
|
71
|
+
TKey extends TreeIndexKey,
|
|
72
|
+
TValue,
|
|
73
|
+
TSchema extends TreeNodeSchema,
|
|
74
|
+
>(
|
|
75
|
+
view: TreeView<TFieldSchema>,
|
|
76
|
+
indexer: (schema: TSchema) => string | undefined,
|
|
77
|
+
getValue: (nodes: TreeIndexNodes<NodeFromSchema<TSchema>>) => TValue,
|
|
78
|
+
isKeyValid: (key: TreeIndexKey) => key is TKey,
|
|
79
|
+
indexableSchema: readonly TSchema[],
|
|
80
|
+
): SimpleTreeIndex<TKey, TValue>;
|
|
81
|
+
/**
|
|
82
|
+
* Creates a {@link SimpleTreeIndex} with a specified indexer.
|
|
83
|
+
*
|
|
84
|
+
* @param view - the view for the tree being indexed
|
|
85
|
+
* @param indexer - a map from {@link TreeNodeSchema} to the field name that all nodes of the given schema
|
|
86
|
+
* should be keyed on
|
|
87
|
+
* @param getValue - given at least one {@link TreeNode}, returns an associated value
|
|
88
|
+
* @param isKeyValid - function for verifying the validity of the key retrieved based on the information given by the indexer
|
|
89
|
+
*
|
|
90
|
+
* @alpha
|
|
91
|
+
*/
|
|
92
|
+
export function createSimpleTreeIndex<
|
|
93
|
+
TFieldSchema extends ImplicitFieldSchema,
|
|
94
|
+
TKey extends TreeIndexKey,
|
|
95
|
+
TValue,
|
|
96
|
+
>(
|
|
97
|
+
view: TreeView<TFieldSchema>,
|
|
98
|
+
indexer: Map<TreeNodeSchema, string>,
|
|
99
|
+
getValue: (nodes: TreeIndexNodes<TreeNode>) => TValue,
|
|
100
|
+
isKeyValid: (key: TreeIndexKey) => key is TKey,
|
|
101
|
+
): SimpleTreeIndex<TKey, TValue>;
|
|
102
|
+
/**
|
|
103
|
+
* Creates a {@link SimpleTreeIndex} with a specified indexer.
|
|
104
|
+
*
|
|
105
|
+
* @param view - the view for the tree being indexed
|
|
106
|
+
* @param indexer - a map from {@link TreeNodeSchema} to the field name that all nodes of the given schema
|
|
107
|
+
* should be keyed on
|
|
108
|
+
* @param getValue - given at least one {@link TreeNode}, returns an associated value
|
|
109
|
+
* @param isKeyValid - function for verifying the validity of the key retrieved based on the information given by the indexer
|
|
110
|
+
* @param indexableSchema - a list of all the schema types that can be indexed
|
|
111
|
+
*
|
|
112
|
+
* @alpha
|
|
113
|
+
*/
|
|
114
|
+
export function createSimpleTreeIndex<
|
|
115
|
+
TFieldSchema extends ImplicitFieldSchema,
|
|
116
|
+
TKey extends TreeIndexKey,
|
|
117
|
+
TValue,
|
|
118
|
+
TSchema extends TreeNodeSchema,
|
|
119
|
+
>(
|
|
120
|
+
view: TreeView<TFieldSchema>,
|
|
121
|
+
indexer: Map<TreeNodeSchema, string>,
|
|
122
|
+
getValue: (nodes: TreeIndexNodes<NodeFromSchema<TSchema>>) => TValue,
|
|
123
|
+
isKeyValid: (key: TreeIndexKey) => key is TKey,
|
|
124
|
+
indexableSchema: readonly TSchema[],
|
|
125
|
+
): SimpleTreeIndex<TKey, TValue>;
|
|
126
|
+
/**
|
|
127
|
+
* Creates a {@link SimpleTreeIndex} with a specified indexer.
|
|
128
|
+
*
|
|
129
|
+
* @alpha
|
|
130
|
+
*/
|
|
131
|
+
export function createSimpleTreeIndex<
|
|
132
|
+
TFieldSchema extends ImplicitFieldSchema,
|
|
133
|
+
TKey extends TreeIndexKey,
|
|
134
|
+
TValue,
|
|
135
|
+
>(
|
|
136
|
+
view: TreeView<TFieldSchema>,
|
|
137
|
+
indexer: ((schema: TreeNodeSchema) => string | undefined) | Map<TreeNodeSchema, string>,
|
|
138
|
+
getValue:
|
|
139
|
+
| ((nodes: TreeIndexNodes<TreeNode>) => TValue)
|
|
140
|
+
| ((nodes: TreeIndexNodes<NodeFromSchema<TreeNodeSchema>>) => TValue),
|
|
141
|
+
isKeyValid: (key: TreeIndexKey) => key is TKey,
|
|
142
|
+
indexableSchema?: readonly TreeNodeSchema[],
|
|
143
|
+
): SimpleTreeIndex<TKey, TValue> {
|
|
144
|
+
const indexableSchemaMap = new Map();
|
|
145
|
+
if (indexableSchema !== undefined) {
|
|
146
|
+
for (const schemus of indexableSchema) {
|
|
147
|
+
indexableSchemaMap.set(schemus.identifier, schemus);
|
|
148
|
+
}
|
|
149
|
+
} else {
|
|
150
|
+
walkFieldSchema(view.schema, {
|
|
151
|
+
node: (schemus) => indexableSchemaMap.set(schemus.identifier, schemus),
|
|
152
|
+
});
|
|
153
|
+
}
|
|
154
|
+
|
|
155
|
+
const schemaIndexer =
|
|
156
|
+
indexableSchema === undefined
|
|
157
|
+
? (schemaIdentifier: TreeNodeSchemaIdentifier) => {
|
|
158
|
+
// if indexable schema isn't provided, we check if the node is in schema
|
|
159
|
+
const schemus = indexableSchemaMap.get(schemaIdentifier);
|
|
160
|
+
if (schemus !== undefined) {
|
|
161
|
+
const keyLocation =
|
|
162
|
+
typeof indexer === "function" ? indexer(schemus) : indexer.get(schemus);
|
|
163
|
+
if (keyLocation !== undefined) {
|
|
164
|
+
return makeGenericKeyFinder<TKey>(brand(keyLocation), isKeyValid);
|
|
165
|
+
}
|
|
166
|
+
} else {
|
|
167
|
+
fail("node is out of schema");
|
|
168
|
+
}
|
|
169
|
+
}
|
|
170
|
+
: (schemaIdentifier: TreeNodeSchemaIdentifier) => {
|
|
171
|
+
const schemus = indexableSchemaMap.get(schemaIdentifier);
|
|
172
|
+
if (schemus !== undefined) {
|
|
173
|
+
const keyLocation =
|
|
174
|
+
typeof indexer === "function" ? indexer(schemus) : indexer.get(schemus);
|
|
175
|
+
if (keyLocation !== undefined) {
|
|
176
|
+
return makeGenericKeyFinder<TKey>(brand(keyLocation), isKeyValid);
|
|
177
|
+
}
|
|
178
|
+
}
|
|
179
|
+
};
|
|
180
|
+
|
|
181
|
+
const index = new AnchorTreeIndex<TKey, TValue>(
|
|
182
|
+
(view as SchematizingSimpleTreeView<TFieldSchema>).getView().checkout.forest,
|
|
183
|
+
schemaIndexer,
|
|
184
|
+
(anchorNodes) => {
|
|
185
|
+
const simpleTreeNodes: TreeNode[] = [];
|
|
186
|
+
for (const anchorNode of anchorNodes) {
|
|
187
|
+
const simpleTree = treeNodeFromAnchor(anchorNode);
|
|
188
|
+
if (!isTreeValue(simpleTree)) {
|
|
189
|
+
simpleTreeNodes.push(simpleTree);
|
|
190
|
+
}
|
|
191
|
+
}
|
|
192
|
+
|
|
193
|
+
if (hasElement(simpleTreeNodes)) {
|
|
194
|
+
return getValue(simpleTreeNodes);
|
|
195
|
+
}
|
|
196
|
+
},
|
|
197
|
+
(anchorNode: AnchorNode) => {
|
|
198
|
+
const simpleTree = treeNodeFromAnchor(anchorNode);
|
|
199
|
+
if (!isTreeValue(simpleTree)) {
|
|
200
|
+
return treeNodeApi.status(simpleTree);
|
|
201
|
+
}
|
|
202
|
+
},
|
|
203
|
+
// simple tree indexes are shallow indexes, indicating so allows for a performance optimization
|
|
204
|
+
true,
|
|
205
|
+
);
|
|
206
|
+
|
|
207
|
+
// all the type checking guarantees that we put nodes of the correct type in the index
|
|
208
|
+
// but it's not captured in the type system
|
|
209
|
+
return index as SimpleTreeIndex<TKey, TValue>;
|
|
210
|
+
}
|
|
211
|
+
|
|
212
|
+
function makeGenericKeyFinder<TKey extends TreeIndexKey>(
|
|
213
|
+
keyField: FieldKey,
|
|
214
|
+
isKeyValid: (key: TreeIndexKey) => key is TKey,
|
|
215
|
+
): KeyFinder<TKey> {
|
|
216
|
+
return (cursor: ITreeSubscriptionCursor) => {
|
|
217
|
+
cursor.enterField(keyField);
|
|
218
|
+
cursor.firstNode();
|
|
219
|
+
const value = cursor.value;
|
|
220
|
+
cursor.exitNode();
|
|
221
|
+
cursor.exitField();
|
|
222
|
+
|
|
223
|
+
if (value === undefined) {
|
|
224
|
+
fail("a value for the key does not exist");
|
|
225
|
+
}
|
|
226
|
+
|
|
227
|
+
if (!isKeyValid(value)) {
|
|
228
|
+
fail("the key is an unexpected type");
|
|
229
|
+
}
|
|
230
|
+
|
|
231
|
+
return value;
|
|
232
|
+
};
|
|
233
|
+
}
|
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
*/
|
|
5
5
|
|
|
6
6
|
import type { ICodecOptions } from "../../codec/index.js";
|
|
7
|
-
import {
|
|
7
|
+
import type { TreeStoredSchema } from "../../core/index.js";
|
|
8
8
|
import {
|
|
9
9
|
defaultSchemaPolicy,
|
|
10
10
|
encodeTreeSchema,
|
|
@@ -59,7 +59,7 @@ export function extractPersistedSchema(schema: ImplicitFieldSchema): JsonCompati
|
|
|
59
59
|
* opening a document that used the `persisted` schema and provided `view` to {@link ViewableTree.viewWith}.
|
|
60
60
|
*
|
|
61
61
|
* @param persisted - Schema persisted for a document. Typically persisted alongside the data and assumed to describe that data.
|
|
62
|
-
* @param view - Schema which would be used to view persisted content.
|
|
62
|
+
* @param view - Schema which would be used to view persisted content.
|
|
63
63
|
* @param options - {@link ICodecOptions} used when parsing the provided schema.
|
|
64
64
|
* @param canInitialize - Passed through to the return value unchanged and otherwise unused.
|
|
65
65
|
* @returns The {@link SchemaCompatibilityStatus} a {@link TreeView} would report for this combination of schema.
|
|
@@ -75,7 +75,7 @@ export function extractPersistedSchema(schema: ImplicitFieldSchema): JsonCompati
|
|
|
75
75
|
* assert(
|
|
76
76
|
* comparePersistedSchema(
|
|
77
77
|
* require("./schema.json"),
|
|
78
|
-
*
|
|
78
|
+
* MySchema,
|
|
79
79
|
* { jsonValidator: typeboxValidator },
|
|
80
80
|
* false,
|
|
81
81
|
* ).canUpgrade,
|
|
@@ -85,14 +85,13 @@ export function extractPersistedSchema(schema: ImplicitFieldSchema): JsonCompati
|
|
|
85
85
|
*/
|
|
86
86
|
export function comparePersistedSchema(
|
|
87
87
|
persisted: JsonCompatible,
|
|
88
|
-
view:
|
|
88
|
+
view: ImplicitFieldSchema,
|
|
89
89
|
options: ICodecOptions,
|
|
90
90
|
canInitialize: boolean,
|
|
91
91
|
): SchemaCompatibilityStatus {
|
|
92
92
|
const schemaCodec = makeSchemaCodec(options);
|
|
93
93
|
const stored = schemaCodec.decode(persisted as Format);
|
|
94
|
-
const
|
|
95
|
-
const viewSchema = new ViewSchema(defaultSchemaPolicy, {}, viewParsed);
|
|
94
|
+
const viewSchema = new ViewSchema(defaultSchemaPolicy, {}, view);
|
|
96
95
|
return comparePersistedSchemaInternal(stored, viewSchema, canInitialize);
|
|
97
96
|
}
|
|
98
97
|
|
|
@@ -105,22 +104,8 @@ export function comparePersistedSchemaInternal(
|
|
|
105
104
|
viewSchema: ViewSchema,
|
|
106
105
|
canInitialize: boolean,
|
|
107
106
|
): SchemaCompatibilityStatus {
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
// TODO: AB#8121: Weaken this check to support viewing under additional circumstances.
|
|
111
|
-
// In the near term, this should support viewing documents with additional optional fields in their schema on object types.
|
|
112
|
-
// Longer-term (as demand arises), we could also add APIs to constructing view schema to allow for more flexibility
|
|
113
|
-
// (e.g. out-of-schema content handlers could allow support for viewing docs which have extra allowed types in a particular field)
|
|
114
|
-
const canView =
|
|
115
|
-
result.write === Compatibility.Compatible && result.read === Compatibility.Compatible;
|
|
116
|
-
const canUpgrade = result.read === Compatibility.Compatible;
|
|
117
|
-
const isEquivalent = canView && canUpgrade;
|
|
118
|
-
const compatibility: SchemaCompatibilityStatus = {
|
|
119
|
-
canView,
|
|
120
|
-
canUpgrade,
|
|
121
|
-
isEquivalent,
|
|
107
|
+
return {
|
|
108
|
+
...viewSchema.checkCompatibility(stored),
|
|
122
109
|
canInitialize,
|
|
123
110
|
};
|
|
124
|
-
|
|
125
|
-
return compatibility;
|
|
126
111
|
}
|
|
@@ -3,11 +3,18 @@
|
|
|
3
3
|
* Licensed under the MIT License.
|
|
4
4
|
*/
|
|
5
5
|
|
|
6
|
-
import type { IFluidLoadable, IDisposable } from "@fluidframework/core-interfaces";
|
|
6
|
+
import type { IFluidLoadable, IDisposable, Listenable } from "@fluidframework/core-interfaces";
|
|
7
7
|
import { UsageError } from "@fluidframework/telemetry-utils/internal";
|
|
8
8
|
|
|
9
|
-
import type {
|
|
10
|
-
|
|
9
|
+
import type {
|
|
10
|
+
CommitMetadata,
|
|
11
|
+
RevertibleAlphaFactory,
|
|
12
|
+
RevertibleFactory,
|
|
13
|
+
} from "../../core/index.js";
|
|
14
|
+
|
|
15
|
+
// This is referenced by doc comments.
|
|
16
|
+
// eslint-disable-next-line @typescript-eslint/no-unused-vars, unused-imports/no-unused-imports
|
|
17
|
+
import type { TreeAlpha } from "../../shared-tree/index.js";
|
|
11
18
|
|
|
12
19
|
import {
|
|
13
20
|
type ImplicitFieldSchema,
|
|
@@ -28,6 +35,7 @@ import { markSchemaMostDerived } from "./schemaFactory.js";
|
|
|
28
35
|
import { fail, getOrCreate } from "../../util/index.js";
|
|
29
36
|
import type { MakeNominal } from "../../util/index.js";
|
|
30
37
|
import { walkFieldSchema } from "../walkFieldSchema.js";
|
|
38
|
+
|
|
31
39
|
/**
|
|
32
40
|
* A tree from which a {@link TreeView} can be created.
|
|
33
41
|
*
|
|
@@ -38,6 +46,7 @@ import { walkFieldSchema } from "../walkFieldSchema.js";
|
|
|
38
46
|
* Maybe rename "exportJsonSchema" to align on "concise" terminology.
|
|
39
47
|
* Ensure schema exporting APIs here align and reference APIs for exporting view schema to the same formats (which should include stored vs property key choice).
|
|
40
48
|
* Make sure users of independentView can use these export APIs (maybe provide a reference back to the ViewableTree from the TreeView to accomplish that).
|
|
49
|
+
* Some of these APIs are on ISharedTree and can get moved here.
|
|
41
50
|
* @system @sealed @public
|
|
42
51
|
*/
|
|
43
52
|
export interface ViewableTree {
|
|
@@ -629,7 +638,7 @@ export interface TreeBranchEvents {
|
|
|
629
638
|
* @param getRevertible - a function that allows users to get a revertible for the change. If not provided,
|
|
630
639
|
* this change is not revertible.
|
|
631
640
|
*/
|
|
632
|
-
changed(data: CommitMetadata, getRevertible?:
|
|
641
|
+
changed(data: CommitMetadata, getRevertible?: RevertibleAlphaFactory): void;
|
|
633
642
|
|
|
634
643
|
/**
|
|
635
644
|
* Fired when:
|
|
@@ -644,7 +653,7 @@ export interface TreeBranchEvents {
|
|
|
644
653
|
* @param getRevertible - a function provided that allows users to get a revertible for the commit that was applied. If not provided,
|
|
645
654
|
* this commit is not revertible.
|
|
646
655
|
*/
|
|
647
|
-
commitApplied(data: CommitMetadata, getRevertible?:
|
|
656
|
+
commitApplied(data: CommitMetadata, getRevertible?: RevertibleAlphaFactory): void;
|
|
648
657
|
}
|
|
649
658
|
|
|
650
659
|
/**
|
|
@@ -24,7 +24,7 @@ import {
|
|
|
24
24
|
} from "../leafNodeSchema.js";
|
|
25
25
|
import { isFluidHandle } from "@fluidframework/runtime-utils/internal";
|
|
26
26
|
import { UsageError } from "@fluidframework/telemetry-utils/internal";
|
|
27
|
-
import type { Off } from "
|
|
27
|
+
import type { Off } from "@fluidframework/core-interfaces";
|
|
28
28
|
import {
|
|
29
29
|
getKernel,
|
|
30
30
|
isTreeNode,
|
|
@@ -38,7 +38,7 @@ import {
|
|
|
38
38
|
} from "../leafNodeSchema.js";
|
|
39
39
|
import { isObjectNodeSchema } from "../objectNodeTypes.js";
|
|
40
40
|
import {
|
|
41
|
-
|
|
41
|
+
customFromCursor,
|
|
42
42
|
type CustomTreeNode,
|
|
43
43
|
type CustomTreeValue,
|
|
44
44
|
type EncodeOptions,
|
|
@@ -344,7 +344,7 @@ function verboseFromCursorInner<TCustom>(
|
|
|
344
344
|
options: Required<EncodeOptions<TCustom>>,
|
|
345
345
|
schema: ReadonlyMap<string, TreeNodeSchema>,
|
|
346
346
|
): VerboseTree<TCustom> {
|
|
347
|
-
const fields =
|
|
347
|
+
const fields = customFromCursor(reader, options, schema, verboseFromCursorInner);
|
|
348
348
|
const nodeSchema = schema.get(reader.type) ?? fail("missing schema for type in cursor");
|
|
349
349
|
if (nodeSchema.kind === NodeKind.Leaf) {
|
|
350
350
|
return fields as CustomTreeValue<TCustom>;
|