@fluidframework/tree 2.2.0 → 2.3.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/.dependency-cruiser-known-violations.json +28 -40
- package/.vscode/Tree.code-workspace +0 -2
- package/CHANGELOG.md +92 -0
- package/README.md +6 -0
- package/alpha.d.ts +11 -0
- package/api-extractor/api-extractor-lint-alpha.cjs.json +5 -0
- package/api-extractor/api-extractor-lint-alpha.esm.json +5 -0
- package/api-extractor/api-extractor-lint-legacy.cjs.json +5 -0
- package/api-extractor/api-extractor-lint-legacy.esm.json +5 -0
- package/api-extractor/api-extractor.current.json +8 -0
- package/api-extractor/api-extractor.legacy.json +4 -0
- package/api-extractor.json +1 -1
- package/api-report/tree.alpha.api.md +21 -6
- package/api-report/tree.beta.api.md +21 -6
- package/api-report/tree.legacy.alpha.api.md +562 -0
- package/api-report/tree.legacy.public.api.md +559 -0
- package/api-report/tree.public.api.md +6 -6
- package/dist/alpha.d.ts +102 -0
- package/dist/beta.d.ts +6 -1
- package/dist/core/index.d.ts +1 -1
- package/dist/core/index.d.ts.map +1 -1
- package/dist/core/index.js +2 -2
- package/dist/core/index.js.map +1 -1
- package/dist/core/{revertible/revertible.d.ts → revertible.d.ts} +12 -0
- package/dist/core/revertible.d.ts.map +1 -0
- package/dist/core/revertible.js.map +1 -0
- package/dist/core/schema-stored/format.d.ts +3 -3
- package/dist/core/schema-stored/format.js +1 -1
- package/dist/core/schema-stored/format.js.map +1 -1
- package/dist/core/schema-stored/schema.d.ts +2 -7
- package/dist/core/schema-stored/schema.d.ts.map +1 -1
- package/dist/core/schema-stored/schema.js +4 -6
- package/dist/core/schema-stored/schema.js.map +1 -1
- package/dist/core/schema-stored/storedSchemaRepository.d.ts +1 -1
- package/dist/core/schema-stored/storedSchemaRepository.d.ts.map +1 -1
- package/dist/core/tree/anchorSet.d.ts +4 -6
- package/dist/core/tree/anchorSet.d.ts.map +1 -1
- package/dist/core/tree/anchorSet.js +15 -1
- package/dist/core/tree/anchorSet.js.map +1 -1
- package/dist/core/tree/detachedFieldIndex.d.ts +0 -1
- package/dist/core/tree/detachedFieldIndex.d.ts.map +1 -1
- package/dist/core/tree/detachedFieldIndex.js +1 -0
- package/dist/core/tree/detachedFieldIndex.js.map +1 -1
- package/dist/core/tree/visitDelta.d.ts +7 -2
- package/dist/core/tree/visitDelta.d.ts.map +1 -1
- package/dist/core/tree/visitDelta.js.map +1 -1
- package/dist/events/emitter.d.ts +127 -0
- package/dist/events/emitter.d.ts.map +1 -0
- package/dist/events/{events.js → emitter.js} +49 -28
- package/dist/events/emitter.js.map +1 -0
- package/dist/events/index.d.ts +2 -1
- package/dist/events/index.d.ts.map +1 -1
- package/dist/events/index.js +4 -5
- package/dist/events/index.js.map +1 -1
- package/dist/events/interop.d.ts +36 -0
- package/dist/events/interop.d.ts.map +1 -0
- package/dist/{core/revertible/index.d.ts → events/interop.js} +3 -2
- package/dist/events/interop.js.map +1 -0
- package/dist/events/listeners.d.ts +65 -0
- package/dist/events/listeners.d.ts.map +1 -0
- package/{lib/core/revertible/index.d.ts → dist/events/listeners.js} +3 -2
- package/dist/events/listeners.js.map +1 -0
- package/dist/feature-libraries/chunked-forest/chunkTree.d.ts +25 -7
- package/dist/feature-libraries/chunked-forest/chunkTree.d.ts.map +1 -1
- package/dist/feature-libraries/chunked-forest/chunkTree.js +36 -15
- package/dist/feature-libraries/chunked-forest/chunkTree.js.map +1 -1
- package/dist/feature-libraries/chunked-forest/chunkedForest.d.ts +4 -2
- package/dist/feature-libraries/chunked-forest/chunkedForest.d.ts.map +1 -1
- package/dist/feature-libraries/chunked-forest/chunkedForest.js +12 -5
- package/dist/feature-libraries/chunked-forest/chunkedForest.js.map +1 -1
- package/dist/feature-libraries/chunked-forest/uniformChunk.d.ts +15 -2
- package/dist/feature-libraries/chunked-forest/uniformChunk.d.ts.map +1 -1
- package/dist/feature-libraries/chunked-forest/uniformChunk.js +28 -2
- package/dist/feature-libraries/chunked-forest/uniformChunk.js.map +1 -1
- package/dist/feature-libraries/default-schema/defaultEditBuilder.d.ts +3 -1
- package/dist/feature-libraries/default-schema/defaultEditBuilder.d.ts.map +1 -1
- package/dist/feature-libraries/default-schema/defaultEditBuilder.js +5 -4
- package/dist/feature-libraries/default-schema/defaultEditBuilder.js.map +1 -1
- package/dist/feature-libraries/flex-map-tree/index.d.ts +1 -1
- package/dist/feature-libraries/flex-map-tree/index.d.ts.map +1 -1
- package/dist/feature-libraries/flex-map-tree/index.js +2 -1
- package/dist/feature-libraries/flex-map-tree/index.js.map +1 -1
- package/dist/feature-libraries/flex-map-tree/mapTreeNode.d.ts +35 -35
- package/dist/feature-libraries/flex-map-tree/mapTreeNode.d.ts.map +1 -1
- package/dist/feature-libraries/flex-map-tree/mapTreeNode.js +82 -115
- package/dist/feature-libraries/flex-map-tree/mapTreeNode.js.map +1 -1
- package/dist/feature-libraries/flex-tree/context.d.ts +30 -14
- package/dist/feature-libraries/flex-tree/context.d.ts.map +1 -1
- package/dist/feature-libraries/flex-tree/context.js +10 -7
- package/dist/feature-libraries/flex-tree/context.js.map +1 -1
- package/dist/feature-libraries/flex-tree/flexTreeTypes.d.ts +57 -281
- package/dist/feature-libraries/flex-tree/flexTreeTypes.d.ts.map +1 -1
- package/dist/feature-libraries/flex-tree/flexTreeTypes.js +15 -32
- package/dist/feature-libraries/flex-tree/flexTreeTypes.js.map +1 -1
- package/dist/feature-libraries/flex-tree/index.d.ts +2 -3
- package/dist/feature-libraries/flex-tree/index.d.ts.map +1 -1
- package/dist/feature-libraries/flex-tree/index.js +1 -3
- package/dist/feature-libraries/flex-tree/index.js.map +1 -1
- package/dist/feature-libraries/flex-tree/lazyEntity.d.ts +3 -3
- package/dist/feature-libraries/flex-tree/lazyEntity.d.ts.map +1 -1
- package/dist/feature-libraries/flex-tree/lazyEntity.js +2 -10
- package/dist/feature-libraries/flex-tree/lazyEntity.js.map +1 -1
- package/dist/feature-libraries/flex-tree/lazyField.d.ts +26 -29
- package/dist/feature-libraries/flex-tree/lazyField.d.ts.map +1 -1
- package/dist/feature-libraries/flex-tree/lazyField.js +11 -17
- package/dist/feature-libraries/flex-tree/lazyField.js.map +1 -1
- package/dist/feature-libraries/flex-tree/lazyNode.d.ts +6 -34
- package/dist/feature-libraries/flex-tree/lazyNode.d.ts.map +1 -1
- package/dist/feature-libraries/flex-tree/lazyNode.js +23 -159
- package/dist/feature-libraries/flex-tree/lazyNode.js.map +1 -1
- package/dist/feature-libraries/flex-tree/unboxed.d.ts +4 -16
- package/dist/feature-libraries/flex-tree/unboxed.d.ts.map +1 -1
- package/dist/feature-libraries/flex-tree/unboxed.js +7 -41
- package/dist/feature-libraries/flex-tree/unboxed.js.map +1 -1
- package/dist/feature-libraries/flex-tree/utilities.d.ts +2 -2
- package/dist/feature-libraries/flex-tree/utilities.d.ts.map +1 -1
- package/dist/feature-libraries/flex-tree/utilities.js +3 -6
- package/dist/feature-libraries/flex-tree/utilities.js.map +1 -1
- package/dist/feature-libraries/forest-summary/forestSummarizer.d.ts.map +1 -1
- package/dist/feature-libraries/forest-summary/forestSummarizer.js +4 -1
- package/dist/feature-libraries/forest-summary/forestSummarizer.js.map +1 -1
- package/dist/feature-libraries/index.d.ts +3 -5
- package/dist/feature-libraries/index.d.ts.map +1 -1
- package/dist/feature-libraries/index.js +5 -13
- package/dist/feature-libraries/index.js.map +1 -1
- package/dist/feature-libraries/modular-schema/comparison.d.ts.map +1 -1
- package/dist/feature-libraries/modular-schema/comparison.js +3 -6
- package/dist/feature-libraries/modular-schema/comparison.js.map +1 -1
- package/dist/feature-libraries/modular-schema/discrepancies.d.ts.map +1 -1
- package/dist/feature-libraries/modular-schema/discrepancies.js +3 -13
- package/dist/feature-libraries/modular-schema/discrepancies.js.map +1 -1
- package/dist/feature-libraries/modular-schema/modularChangeCodecs.js +4 -1
- package/dist/feature-libraries/modular-schema/modularChangeCodecs.js.map +1 -1
- package/dist/feature-libraries/modular-schema/modularChangeFamily.d.ts +2 -1
- package/dist/feature-libraries/modular-schema/modularChangeFamily.d.ts.map +1 -1
- package/dist/feature-libraries/modular-schema/modularChangeFamily.js +12 -5
- package/dist/feature-libraries/modular-schema/modularChangeFamily.js.map +1 -1
- package/dist/feature-libraries/schema-edits/schemaChangeFormat.d.ts +6 -6
- package/dist/feature-libraries/schema-index/format.d.ts +3 -3
- package/dist/feature-libraries/storedToViewSchema.d.ts.map +1 -1
- package/dist/feature-libraries/storedToViewSchema.js +2 -4
- package/dist/feature-libraries/storedToViewSchema.js.map +1 -1
- package/dist/feature-libraries/typed-schema/flexList.d.ts +3 -3
- package/dist/feature-libraries/typed-schema/flexList.js.map +1 -1
- package/dist/feature-libraries/typed-schema/index.d.ts +2 -2
- package/dist/feature-libraries/typed-schema/index.d.ts.map +1 -1
- package/dist/feature-libraries/typed-schema/index.js +2 -2
- package/dist/feature-libraries/typed-schema/index.js.map +1 -1
- package/dist/feature-libraries/typed-schema/schemaCollection.d.ts.map +1 -1
- package/dist/feature-libraries/typed-schema/schemaCollection.js +8 -10
- package/dist/feature-libraries/typed-schema/schemaCollection.js.map +1 -1
- package/dist/feature-libraries/typed-schema/typedTreeSchema.d.ts +17 -48
- package/dist/feature-libraries/typed-schema/typedTreeSchema.d.ts.map +1 -1
- package/dist/feature-libraries/typed-schema/typedTreeSchema.js +5 -37
- package/dist/feature-libraries/typed-schema/typedTreeSchema.js.map +1 -1
- package/dist/feature-libraries/typed-schema/view.d.ts +4 -6
- package/dist/feature-libraries/typed-schema/view.d.ts.map +1 -1
- package/dist/feature-libraries/typed-schema/view.js +5 -4
- package/dist/feature-libraries/typed-schema/view.js.map +1 -1
- package/dist/index.d.ts +3 -3
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +3 -1
- package/dist/index.js.map +1 -1
- package/dist/legacy.d.ts +83 -0
- package/dist/packageVersion.d.ts +1 -1
- package/dist/packageVersion.js +1 -1
- package/dist/packageVersion.js.map +1 -1
- package/dist/shared-tree/checkoutFlexTreeView.d.ts +53 -0
- package/dist/shared-tree/checkoutFlexTreeView.d.ts.map +1 -0
- package/dist/shared-tree/{treeView.js → checkoutFlexTreeView.js} +28 -6
- package/dist/shared-tree/checkoutFlexTreeView.js.map +1 -0
- package/dist/shared-tree/index.d.ts +3 -3
- package/dist/shared-tree/index.d.ts.map +1 -1
- package/dist/shared-tree/index.js +2 -2
- package/dist/shared-tree/index.js.map +1 -1
- package/dist/shared-tree/schematizeTree.d.ts +15 -4
- package/dist/shared-tree/schematizeTree.d.ts.map +1 -1
- package/dist/shared-tree/schematizeTree.js +7 -8
- package/dist/shared-tree/schematizeTree.js.map +1 -1
- package/dist/shared-tree/schematizingTreeView.d.ts +9 -4
- package/dist/shared-tree/schematizingTreeView.d.ts.map +1 -1
- package/dist/shared-tree/schematizingTreeView.js +25 -12
- package/dist/shared-tree/schematizingTreeView.js.map +1 -1
- package/dist/shared-tree/sharedTree.d.ts.map +1 -1
- package/dist/shared-tree/sharedTree.js +2 -2
- package/dist/shared-tree/sharedTree.js.map +1 -1
- package/dist/shared-tree/sharedTreeChangeEnricher.d.ts +3 -1
- package/dist/shared-tree/sharedTreeChangeEnricher.d.ts.map +1 -1
- package/dist/shared-tree/sharedTreeChangeEnricher.js +6 -2
- package/dist/shared-tree/sharedTreeChangeEnricher.js.map +1 -1
- package/dist/shared-tree/sharedTreeChangeFamily.d.ts +3 -1
- package/dist/shared-tree/sharedTreeChangeFamily.d.ts.map +1 -1
- package/dist/shared-tree/sharedTreeChangeFamily.js +3 -2
- package/dist/shared-tree/sharedTreeChangeFamily.js.map +1 -1
- package/dist/shared-tree/sharedTreeEditBuilder.d.ts +2 -1
- package/dist/shared-tree/sharedTreeEditBuilder.d.ts.map +1 -1
- package/dist/shared-tree/sharedTreeEditBuilder.js +2 -2
- package/dist/shared-tree/sharedTreeEditBuilder.js.map +1 -1
- package/dist/shared-tree/treeApi.d.ts +1 -3
- package/dist/shared-tree/treeApi.d.ts.map +1 -1
- package/dist/shared-tree/treeApi.js +6 -4
- package/dist/shared-tree/treeApi.js.map +1 -1
- package/dist/shared-tree/treeCheckout.d.ts +2 -13
- package/dist/shared-tree/treeCheckout.d.ts.map +1 -1
- package/dist/shared-tree/treeCheckout.js +17 -1
- package/dist/shared-tree/treeCheckout.js.map +1 -1
- package/dist/shared-tree-core/branch.js +1 -1
- package/dist/shared-tree-core/branch.js.map +1 -1
- package/dist/simple-tree/api/create.d.ts.map +1 -1
- package/dist/simple-tree/api/create.js +1 -1
- package/dist/simple-tree/api/create.js.map +1 -1
- package/{lib/simple-tree → dist/simple-tree/api}/getJsonSchema.d.ts +1 -1
- package/dist/simple-tree/api/getJsonSchema.d.ts.map +1 -0
- package/dist/simple-tree/{getJsonSchema.js → api/getJsonSchema.js} +1 -1
- package/dist/simple-tree/api/getJsonSchema.js.map +1 -0
- package/{lib/simple-tree → dist/simple-tree/api}/getSimpleSchema.d.ts +1 -1
- package/dist/simple-tree/api/getSimpleSchema.d.ts.map +1 -0
- package/dist/simple-tree/{getSimpleSchema.js → api/getSimpleSchema.js} +1 -1
- package/dist/simple-tree/api/getSimpleSchema.js.map +1 -0
- package/dist/simple-tree/api/index.d.ts +5 -0
- package/dist/simple-tree/api/index.d.ts.map +1 -1
- package/dist/simple-tree/api/index.js +7 -1
- package/dist/simple-tree/api/index.js.map +1 -1
- package/{lib/simple-tree → dist/simple-tree/api}/jsonSchema.d.ts +1 -1
- package/dist/simple-tree/api/jsonSchema.d.ts.map +1 -0
- package/dist/simple-tree/api/jsonSchema.js.map +1 -0
- package/dist/simple-tree/api/schemaFactory.d.ts +45 -14
- package/dist/simple-tree/api/schemaFactory.d.ts.map +1 -1
- package/dist/simple-tree/api/schemaFactory.js +43 -12
- package/dist/simple-tree/api/schemaFactory.js.map +1 -1
- package/dist/simple-tree/{simpleSchema.d.ts → api/simpleSchema.d.ts} +4 -4
- package/dist/simple-tree/api/simpleSchema.d.ts.map +1 -0
- package/dist/simple-tree/api/simpleSchema.js.map +1 -0
- package/dist/simple-tree/api/simpleSchemaToJsonSchema.d.ts.map +1 -0
- package/dist/simple-tree/{simpleSchemaToJsonSchema.js → api/simpleSchemaToJsonSchema.js} +4 -4
- package/dist/simple-tree/api/simpleSchemaToJsonSchema.js.map +1 -0
- package/dist/simple-tree/api/tree.d.ts +1 -21
- package/dist/simple-tree/api/tree.d.ts.map +1 -1
- package/dist/simple-tree/api/tree.js +3 -38
- package/dist/simple-tree/api/tree.js.map +1 -1
- package/dist/simple-tree/api/treeApiBeta.d.ts +79 -0
- package/dist/simple-tree/api/treeApiBeta.d.ts.map +1 -0
- package/dist/simple-tree/api/treeApiBeta.js +26 -0
- package/dist/simple-tree/api/treeApiBeta.js.map +1 -0
- package/dist/simple-tree/api/treeNodeApi.d.ts.map +1 -1
- package/dist/simple-tree/api/treeNodeApi.js +51 -21
- package/dist/simple-tree/api/treeNodeApi.js.map +1 -1
- package/dist/simple-tree/api/verboseTree.js +2 -2
- package/dist/simple-tree/api/verboseTree.js.map +1 -1
- package/dist/simple-tree/{viewSchemaToSimpleSchema.d.ts → api/viewSchemaToSimpleSchema.d.ts} +1 -1
- package/dist/simple-tree/api/viewSchemaToSimpleSchema.d.ts.map +1 -0
- package/dist/simple-tree/{viewSchemaToSimpleSchema.js → api/viewSchemaToSimpleSchema.js} +4 -4
- package/{lib/simple-tree → 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 +33 -38
- package/dist/simple-tree/arrayNode.js.map +1 -1
- package/dist/simple-tree/core/index.d.ts +2 -2
- package/dist/simple-tree/core/index.d.ts.map +1 -1
- package/dist/simple-tree/core/index.js +4 -1
- package/dist/simple-tree/core/index.js.map +1 -1
- package/dist/simple-tree/core/schemaCaching.d.ts +5 -0
- package/dist/simple-tree/core/schemaCaching.d.ts.map +1 -1
- package/dist/simple-tree/core/schemaCaching.js +10 -1
- package/dist/simple-tree/core/schemaCaching.js.map +1 -1
- package/dist/simple-tree/core/treeNodeKernel.d.ts +78 -7
- package/dist/simple-tree/core/treeNodeKernel.d.ts.map +1 -1
- package/dist/simple-tree/core/treeNodeKernel.js +219 -30
- package/dist/simple-tree/core/treeNodeKernel.js.map +1 -1
- package/dist/simple-tree/core/treeNodeSchema.d.ts +1 -1
- package/dist/simple-tree/core/treeNodeSchema.js.map +1 -1
- package/dist/simple-tree/core/types.d.ts +23 -8
- package/dist/simple-tree/core/types.d.ts.map +1 -1
- package/dist/simple-tree/core/types.js.map +1 -1
- package/dist/simple-tree/core/withType.d.ts +3 -2
- package/dist/simple-tree/core/withType.d.ts.map +1 -1
- package/dist/simple-tree/core/withType.js.map +1 -1
- package/dist/simple-tree/index.d.ts +7 -9
- package/dist/simple-tree/index.d.ts.map +1 -1
- package/dist/simple-tree/index.js +15 -6
- package/dist/simple-tree/index.js.map +1 -1
- package/dist/simple-tree/leafNodeSchema.d.ts +7 -9
- package/dist/simple-tree/leafNodeSchema.d.ts.map +1 -1
- package/dist/simple-tree/leafNodeSchema.js +13 -11
- package/dist/simple-tree/leafNodeSchema.js.map +1 -1
- package/dist/simple-tree/mapNode.d.ts +1 -1
- package/dist/simple-tree/mapNode.d.ts.map +1 -1
- package/dist/simple-tree/mapNode.js +38 -29
- package/dist/simple-tree/mapNode.js.map +1 -1
- package/dist/simple-tree/objectNode.d.ts +9 -7
- package/dist/simple-tree/objectNode.d.ts.map +1 -1
- package/dist/simple-tree/objectNode.js +37 -31
- package/dist/simple-tree/objectNode.js.map +1 -1
- package/dist/simple-tree/proxies.d.ts +1 -14
- package/dist/simple-tree/proxies.d.ts.map +1 -1
- package/dist/simple-tree/proxies.js +12 -15
- package/dist/simple-tree/proxies.js.map +1 -1
- package/dist/simple-tree/proxyBinding.d.ts +2 -62
- package/dist/simple-tree/proxyBinding.d.ts.map +1 -1
- package/dist/simple-tree/proxyBinding.js +8 -181
- package/dist/simple-tree/proxyBinding.js.map +1 -1
- package/dist/simple-tree/schemaTypes.d.ts +7 -7
- package/dist/simple-tree/schemaTypes.d.ts.map +1 -1
- package/dist/simple-tree/schemaTypes.js +4 -4
- package/dist/simple-tree/schemaTypes.js.map +1 -1
- package/dist/simple-tree/toFlexSchema.d.ts +11 -1
- package/dist/simple-tree/toFlexSchema.d.ts.map +1 -1
- package/dist/simple-tree/toFlexSchema.js +54 -31
- package/dist/simple-tree/toFlexSchema.js.map +1 -1
- package/dist/simple-tree/toMapTree.d.ts +25 -37
- package/dist/simple-tree/toMapTree.d.ts.map +1 -1
- package/dist/simple-tree/toMapTree.js +53 -16
- package/dist/simple-tree/toMapTree.js.map +1 -1
- package/dist/simple-tree/treeNodeValid.d.ts.map +1 -1
- package/dist/simple-tree/treeNodeValid.js +7 -10
- package/dist/simple-tree/treeNodeValid.js.map +1 -1
- package/dist/simple-tree/typesUnsafe.d.ts +13 -13
- package/dist/simple-tree/typesUnsafe.js.map +1 -1
- package/dist/simple-tree/walkSchema.d.ts +26 -0
- package/dist/simple-tree/walkSchema.d.ts.map +1 -0
- package/dist/simple-tree/walkSchema.js +49 -0
- package/dist/simple-tree/walkSchema.js.map +1 -0
- package/dist/treeFactory.d.ts +2 -1
- package/dist/treeFactory.d.ts.map +1 -1
- package/dist/treeFactory.js +2 -1
- package/dist/treeFactory.js.map +1 -1
- package/dist/util/typeUtils.d.ts +2 -2
- package/dist/util/typeUtils.js.map +1 -1
- package/legacy.d.ts +11 -0
- package/lib/alpha.d.ts +102 -0
- package/lib/beta.d.ts +6 -1
- package/lib/core/index.d.ts +1 -1
- package/lib/core/index.d.ts.map +1 -1
- package/lib/core/index.js +1 -1
- package/lib/core/index.js.map +1 -1
- package/lib/core/{revertible/revertible.d.ts → revertible.d.ts} +12 -0
- package/lib/core/revertible.d.ts.map +1 -0
- package/lib/core/revertible.js.map +1 -0
- package/lib/core/schema-stored/format.d.ts +3 -3
- package/lib/core/schema-stored/format.js +1 -1
- package/lib/core/schema-stored/format.js.map +1 -1
- package/lib/core/schema-stored/schema.d.ts +2 -7
- package/lib/core/schema-stored/schema.d.ts.map +1 -1
- package/lib/core/schema-stored/schema.js +4 -6
- package/lib/core/schema-stored/schema.js.map +1 -1
- package/lib/core/schema-stored/storedSchemaRepository.d.ts +1 -1
- package/lib/core/schema-stored/storedSchemaRepository.d.ts.map +1 -1
- package/lib/core/tree/anchorSet.d.ts +4 -6
- package/lib/core/tree/anchorSet.d.ts.map +1 -1
- package/lib/core/tree/anchorSet.js +15 -1
- package/lib/core/tree/anchorSet.js.map +1 -1
- package/lib/core/tree/detachedFieldIndex.d.ts +0 -1
- package/lib/core/tree/detachedFieldIndex.d.ts.map +1 -1
- package/lib/core/tree/detachedFieldIndex.js +1 -0
- package/lib/core/tree/detachedFieldIndex.js.map +1 -1
- package/lib/core/tree/visitDelta.d.ts +7 -2
- package/lib/core/tree/visitDelta.d.ts.map +1 -1
- package/lib/core/tree/visitDelta.js.map +1 -1
- package/lib/events/emitter.d.ts +127 -0
- package/lib/events/emitter.d.ts.map +1 -0
- package/lib/events/{events.js → emitter.js} +49 -27
- package/lib/events/emitter.js.map +1 -0
- package/lib/events/index.d.ts +2 -1
- package/lib/events/index.d.ts.map +1 -1
- package/lib/events/index.js +1 -1
- package/lib/events/index.js.map +1 -1
- package/lib/events/interop.d.ts +36 -0
- package/lib/events/interop.d.ts.map +1 -0
- package/{src/core/revertible/index.ts → lib/events/interop.js} +2 -2
- package/lib/events/interop.js.map +1 -0
- package/lib/events/listeners.d.ts +65 -0
- package/lib/events/listeners.d.ts.map +1 -0
- package/lib/{core/revertible/index.js → events/listeners.js} +2 -2
- package/lib/events/listeners.js.map +1 -0
- package/lib/feature-libraries/chunked-forest/chunkTree.d.ts +25 -7
- package/lib/feature-libraries/chunked-forest/chunkTree.d.ts.map +1 -1
- package/lib/feature-libraries/chunked-forest/chunkTree.js +37 -16
- package/lib/feature-libraries/chunked-forest/chunkTree.js.map +1 -1
- package/lib/feature-libraries/chunked-forest/chunkedForest.d.ts +4 -2
- package/lib/feature-libraries/chunked-forest/chunkedForest.d.ts.map +1 -1
- package/lib/feature-libraries/chunked-forest/chunkedForest.js +12 -5
- package/lib/feature-libraries/chunked-forest/chunkedForest.js.map +1 -1
- package/lib/feature-libraries/chunked-forest/uniformChunk.d.ts +15 -2
- package/lib/feature-libraries/chunked-forest/uniformChunk.d.ts.map +1 -1
- package/lib/feature-libraries/chunked-forest/uniformChunk.js +28 -2
- package/lib/feature-libraries/chunked-forest/uniformChunk.js.map +1 -1
- package/lib/feature-libraries/default-schema/defaultEditBuilder.d.ts +3 -1
- package/lib/feature-libraries/default-schema/defaultEditBuilder.d.ts.map +1 -1
- package/lib/feature-libraries/default-schema/defaultEditBuilder.js +5 -4
- package/lib/feature-libraries/default-schema/defaultEditBuilder.js.map +1 -1
- package/lib/feature-libraries/flex-map-tree/index.d.ts +1 -1
- package/lib/feature-libraries/flex-map-tree/index.d.ts.map +1 -1
- package/lib/feature-libraries/flex-map-tree/index.js +1 -1
- package/lib/feature-libraries/flex-map-tree/index.js.map +1 -1
- package/lib/feature-libraries/flex-map-tree/mapTreeNode.d.ts +35 -35
- package/lib/feature-libraries/flex-map-tree/mapTreeNode.d.ts.map +1 -1
- package/lib/feature-libraries/flex-map-tree/mapTreeNode.js +83 -116
- package/lib/feature-libraries/flex-map-tree/mapTreeNode.js.map +1 -1
- package/lib/feature-libraries/flex-tree/context.d.ts +30 -14
- package/lib/feature-libraries/flex-tree/context.d.ts.map +1 -1
- package/lib/feature-libraries/flex-tree/context.js +10 -7
- package/lib/feature-libraries/flex-tree/context.js.map +1 -1
- package/lib/feature-libraries/flex-tree/flexTreeTypes.d.ts +57 -281
- package/lib/feature-libraries/flex-tree/flexTreeTypes.d.ts.map +1 -1
- package/lib/feature-libraries/flex-tree/flexTreeTypes.js +15 -31
- package/lib/feature-libraries/flex-tree/flexTreeTypes.js.map +1 -1
- package/lib/feature-libraries/flex-tree/index.d.ts +2 -3
- package/lib/feature-libraries/flex-tree/index.d.ts.map +1 -1
- package/lib/feature-libraries/flex-tree/index.js +2 -2
- package/lib/feature-libraries/flex-tree/index.js.map +1 -1
- package/lib/feature-libraries/flex-tree/lazyEntity.d.ts +3 -3
- package/lib/feature-libraries/flex-tree/lazyEntity.d.ts.map +1 -1
- package/lib/feature-libraries/flex-tree/lazyEntity.js +2 -10
- package/lib/feature-libraries/flex-tree/lazyEntity.js.map +1 -1
- package/lib/feature-libraries/flex-tree/lazyField.d.ts +26 -29
- package/lib/feature-libraries/flex-tree/lazyField.d.ts.map +1 -1
- package/lib/feature-libraries/flex-tree/lazyField.js +11 -16
- package/lib/feature-libraries/flex-tree/lazyField.js.map +1 -1
- package/lib/feature-libraries/flex-tree/lazyNode.d.ts +6 -34
- package/lib/feature-libraries/flex-tree/lazyNode.d.ts.map +1 -1
- package/lib/feature-libraries/flex-tree/lazyNode.js +24 -156
- package/lib/feature-libraries/flex-tree/lazyNode.js.map +1 -1
- package/lib/feature-libraries/flex-tree/unboxed.d.ts +4 -16
- package/lib/feature-libraries/flex-tree/unboxed.d.ts.map +1 -1
- package/lib/feature-libraries/flex-tree/unboxed.js +5 -37
- package/lib/feature-libraries/flex-tree/unboxed.js.map +1 -1
- package/lib/feature-libraries/flex-tree/utilities.d.ts +2 -2
- package/lib/feature-libraries/flex-tree/utilities.d.ts.map +1 -1
- package/lib/feature-libraries/flex-tree/utilities.js +3 -6
- package/lib/feature-libraries/flex-tree/utilities.js.map +1 -1
- package/lib/feature-libraries/forest-summary/forestSummarizer.d.ts.map +1 -1
- package/lib/feature-libraries/forest-summary/forestSummarizer.js +4 -1
- package/lib/feature-libraries/forest-summary/forestSummarizer.js.map +1 -1
- package/lib/feature-libraries/index.d.ts +3 -5
- package/lib/feature-libraries/index.d.ts.map +1 -1
- package/lib/feature-libraries/index.js +5 -5
- package/lib/feature-libraries/index.js.map +1 -1
- package/lib/feature-libraries/modular-schema/comparison.d.ts.map +1 -1
- package/lib/feature-libraries/modular-schema/comparison.js +3 -6
- package/lib/feature-libraries/modular-schema/comparison.js.map +1 -1
- package/lib/feature-libraries/modular-schema/discrepancies.d.ts.map +1 -1
- package/lib/feature-libraries/modular-schema/discrepancies.js +3 -13
- package/lib/feature-libraries/modular-schema/discrepancies.js.map +1 -1
- package/lib/feature-libraries/modular-schema/modularChangeCodecs.js +4 -1
- package/lib/feature-libraries/modular-schema/modularChangeCodecs.js.map +1 -1
- package/lib/feature-libraries/modular-schema/modularChangeFamily.d.ts +2 -1
- package/lib/feature-libraries/modular-schema/modularChangeFamily.d.ts.map +1 -1
- package/lib/feature-libraries/modular-schema/modularChangeFamily.js +12 -5
- package/lib/feature-libraries/modular-schema/modularChangeFamily.js.map +1 -1
- package/lib/feature-libraries/schema-edits/schemaChangeFormat.d.ts +6 -6
- package/lib/feature-libraries/schema-index/format.d.ts +3 -3
- package/lib/feature-libraries/storedToViewSchema.d.ts.map +1 -1
- package/lib/feature-libraries/storedToViewSchema.js +3 -5
- package/lib/feature-libraries/storedToViewSchema.js.map +1 -1
- package/lib/feature-libraries/typed-schema/flexList.d.ts +3 -3
- package/lib/feature-libraries/typed-schema/flexList.js.map +1 -1
- package/lib/feature-libraries/typed-schema/index.d.ts +2 -2
- package/lib/feature-libraries/typed-schema/index.d.ts.map +1 -1
- package/lib/feature-libraries/typed-schema/index.js +2 -2
- package/lib/feature-libraries/typed-schema/index.js.map +1 -1
- package/lib/feature-libraries/typed-schema/schemaCollection.d.ts.map +1 -1
- package/lib/feature-libraries/typed-schema/schemaCollection.js +9 -11
- package/lib/feature-libraries/typed-schema/schemaCollection.js.map +1 -1
- package/lib/feature-libraries/typed-schema/typedTreeSchema.d.ts +17 -48
- package/lib/feature-libraries/typed-schema/typedTreeSchema.d.ts.map +1 -1
- package/lib/feature-libraries/typed-schema/typedTreeSchema.js +5 -36
- package/lib/feature-libraries/typed-schema/typedTreeSchema.js.map +1 -1
- package/lib/feature-libraries/typed-schema/view.d.ts +4 -6
- package/lib/feature-libraries/typed-schema/view.d.ts.map +1 -1
- package/lib/feature-libraries/typed-schema/view.js +5 -4
- package/lib/feature-libraries/typed-schema/view.js.map +1 -1
- package/lib/index.d.ts +3 -3
- package/lib/index.d.ts.map +1 -1
- package/lib/index.js +3 -1
- package/lib/index.js.map +1 -1
- package/lib/legacy.d.ts +83 -0
- package/lib/packageVersion.d.ts +1 -1
- package/lib/packageVersion.js +1 -1
- package/lib/packageVersion.js.map +1 -1
- package/lib/shared-tree/checkoutFlexTreeView.d.ts +53 -0
- package/lib/shared-tree/checkoutFlexTreeView.d.ts.map +1 -0
- package/lib/shared-tree/{treeView.js → checkoutFlexTreeView.js} +26 -5
- package/lib/shared-tree/checkoutFlexTreeView.js.map +1 -0
- package/lib/shared-tree/index.d.ts +3 -3
- 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 +15 -4
- package/lib/shared-tree/schematizeTree.d.ts.map +1 -1
- package/lib/shared-tree/schematizeTree.js +8 -9
- package/lib/shared-tree/schematizeTree.js.map +1 -1
- package/lib/shared-tree/schematizingTreeView.d.ts +9 -4
- package/lib/shared-tree/schematizingTreeView.d.ts.map +1 -1
- package/lib/shared-tree/schematizingTreeView.js +26 -13
- package/lib/shared-tree/schematizingTreeView.js.map +1 -1
- package/lib/shared-tree/sharedTree.d.ts.map +1 -1
- package/lib/shared-tree/sharedTree.js +2 -2
- package/lib/shared-tree/sharedTree.js.map +1 -1
- package/lib/shared-tree/sharedTreeChangeEnricher.d.ts +3 -1
- package/lib/shared-tree/sharedTreeChangeEnricher.d.ts.map +1 -1
- package/lib/shared-tree/sharedTreeChangeEnricher.js +6 -2
- package/lib/shared-tree/sharedTreeChangeEnricher.js.map +1 -1
- package/lib/shared-tree/sharedTreeChangeFamily.d.ts +3 -1
- package/lib/shared-tree/sharedTreeChangeFamily.d.ts.map +1 -1
- package/lib/shared-tree/sharedTreeChangeFamily.js +3 -2
- package/lib/shared-tree/sharedTreeChangeFamily.js.map +1 -1
- package/lib/shared-tree/sharedTreeEditBuilder.d.ts +2 -1
- package/lib/shared-tree/sharedTreeEditBuilder.d.ts.map +1 -1
- package/lib/shared-tree/sharedTreeEditBuilder.js +2 -2
- package/lib/shared-tree/sharedTreeEditBuilder.js.map +1 -1
- package/lib/shared-tree/treeApi.d.ts +1 -3
- package/lib/shared-tree/treeApi.d.ts.map +1 -1
- package/lib/shared-tree/treeApi.js +7 -5
- package/lib/shared-tree/treeApi.js.map +1 -1
- package/lib/shared-tree/treeCheckout.d.ts +2 -13
- package/lib/shared-tree/treeCheckout.d.ts.map +1 -1
- package/lib/shared-tree/treeCheckout.js +18 -2
- package/lib/shared-tree/treeCheckout.js.map +1 -1
- package/lib/shared-tree-core/branch.js +1 -1
- package/lib/shared-tree-core/branch.js.map +1 -1
- package/lib/simple-tree/api/create.d.ts.map +1 -1
- package/lib/simple-tree/api/create.js +2 -2
- package/lib/simple-tree/api/create.js.map +1 -1
- package/{dist/simple-tree → lib/simple-tree/api}/getJsonSchema.d.ts +1 -1
- package/lib/simple-tree/api/getJsonSchema.d.ts.map +1 -0
- package/lib/simple-tree/{getJsonSchema.js → api/getJsonSchema.js} +1 -1
- package/lib/simple-tree/api/getJsonSchema.js.map +1 -0
- package/{dist/simple-tree → lib/simple-tree/api}/getSimpleSchema.d.ts +1 -1
- package/lib/simple-tree/api/getSimpleSchema.d.ts.map +1 -0
- package/lib/simple-tree/{getSimpleSchema.js → api/getSimpleSchema.js} +1 -1
- package/lib/simple-tree/api/getSimpleSchema.js.map +1 -0
- package/lib/simple-tree/api/index.d.ts +5 -0
- package/lib/simple-tree/api/index.d.ts.map +1 -1
- package/lib/simple-tree/api/index.js +3 -0
- package/lib/simple-tree/api/index.js.map +1 -1
- package/{dist/simple-tree → lib/simple-tree/api}/jsonSchema.d.ts +1 -1
- package/lib/simple-tree/api/jsonSchema.d.ts.map +1 -0
- package/lib/simple-tree/api/jsonSchema.js.map +1 -0
- package/lib/simple-tree/api/schemaFactory.d.ts +45 -14
- package/lib/simple-tree/api/schemaFactory.d.ts.map +1 -1
- package/lib/simple-tree/api/schemaFactory.js +43 -12
- package/lib/simple-tree/api/schemaFactory.js.map +1 -1
- package/lib/simple-tree/{simpleSchema.d.ts → api/simpleSchema.d.ts} +4 -4
- package/lib/simple-tree/api/simpleSchema.d.ts.map +1 -0
- package/lib/simple-tree/api/simpleSchema.js.map +1 -0
- package/lib/simple-tree/api/simpleSchemaToJsonSchema.d.ts.map +1 -0
- package/lib/simple-tree/{simpleSchemaToJsonSchema.js → api/simpleSchemaToJsonSchema.js} +4 -4
- package/lib/simple-tree/api/simpleSchemaToJsonSchema.js.map +1 -0
- package/lib/simple-tree/api/tree.d.ts +1 -21
- package/lib/simple-tree/api/tree.d.ts.map +1 -1
- package/lib/simple-tree/api/tree.js +2 -34
- package/lib/simple-tree/api/tree.js.map +1 -1
- package/lib/simple-tree/api/treeApiBeta.d.ts +79 -0
- package/lib/simple-tree/api/treeApiBeta.d.ts.map +1 -0
- package/lib/simple-tree/api/treeApiBeta.js +23 -0
- package/lib/simple-tree/api/treeApiBeta.js.map +1 -0
- package/lib/simple-tree/api/treeNodeApi.d.ts.map +1 -1
- package/lib/simple-tree/api/treeNodeApi.js +53 -23
- package/lib/simple-tree/api/treeNodeApi.js.map +1 -1
- package/lib/simple-tree/api/verboseTree.js +1 -1
- package/lib/simple-tree/api/verboseTree.js.map +1 -1
- package/lib/simple-tree/{viewSchemaToSimpleSchema.d.ts → api/viewSchemaToSimpleSchema.d.ts} +1 -1
- package/lib/simple-tree/api/viewSchemaToSimpleSchema.d.ts.map +1 -0
- package/lib/simple-tree/{viewSchemaToSimpleSchema.js → api/viewSchemaToSimpleSchema.js} +4 -4
- package/lib/simple-tree/api/viewSchemaToSimpleSchema.js.map +1 -0
- 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 +36 -41
- package/lib/simple-tree/arrayNode.js.map +1 -1
- package/lib/simple-tree/core/index.d.ts +2 -2
- package/lib/simple-tree/core/index.d.ts.map +1 -1
- package/lib/simple-tree/core/index.js +2 -2
- package/lib/simple-tree/core/index.js.map +1 -1
- package/lib/simple-tree/core/schemaCaching.d.ts +5 -0
- package/lib/simple-tree/core/schemaCaching.d.ts.map +1 -1
- package/lib/simple-tree/core/schemaCaching.js +8 -0
- package/lib/simple-tree/core/schemaCaching.js.map +1 -1
- package/lib/simple-tree/core/treeNodeKernel.d.ts +78 -7
- package/lib/simple-tree/core/treeNodeKernel.d.ts.map +1 -1
- package/lib/simple-tree/core/treeNodeKernel.js +211 -24
- package/lib/simple-tree/core/treeNodeKernel.js.map +1 -1
- package/lib/simple-tree/core/treeNodeSchema.d.ts +1 -1
- package/lib/simple-tree/core/treeNodeSchema.js.map +1 -1
- package/lib/simple-tree/core/types.d.ts +23 -8
- package/lib/simple-tree/core/types.d.ts.map +1 -1
- package/lib/simple-tree/core/types.js.map +1 -1
- package/lib/simple-tree/core/withType.d.ts +3 -2
- package/lib/simple-tree/core/withType.d.ts.map +1 -1
- package/lib/simple-tree/core/withType.js.map +1 -1
- package/lib/simple-tree/index.d.ts +7 -9
- package/lib/simple-tree/index.d.ts.map +1 -1
- package/lib/simple-tree/index.js +5 -5
- package/lib/simple-tree/index.js.map +1 -1
- package/lib/simple-tree/leafNodeSchema.d.ts +7 -9
- package/lib/simple-tree/leafNodeSchema.d.ts.map +1 -1
- package/lib/simple-tree/leafNodeSchema.js +14 -12
- package/lib/simple-tree/leafNodeSchema.js.map +1 -1
- package/lib/simple-tree/mapNode.d.ts +1 -1
- package/lib/simple-tree/mapNode.d.ts.map +1 -1
- package/lib/simple-tree/mapNode.js +38 -29
- package/lib/simple-tree/mapNode.js.map +1 -1
- package/lib/simple-tree/objectNode.d.ts +9 -7
- package/lib/simple-tree/objectNode.d.ts.map +1 -1
- package/lib/simple-tree/objectNode.js +40 -34
- package/lib/simple-tree/objectNode.js.map +1 -1
- package/lib/simple-tree/proxies.d.ts +1 -14
- package/lib/simple-tree/proxies.d.ts.map +1 -1
- package/lib/simple-tree/proxies.js +11 -14
- package/lib/simple-tree/proxies.js.map +1 -1
- package/lib/simple-tree/proxyBinding.d.ts +2 -62
- package/lib/simple-tree/proxyBinding.d.ts.map +1 -1
- package/lib/simple-tree/proxyBinding.js +6 -174
- package/lib/simple-tree/proxyBinding.js.map +1 -1
- package/lib/simple-tree/schemaTypes.d.ts +7 -7
- package/lib/simple-tree/schemaTypes.d.ts.map +1 -1
- package/lib/simple-tree/schemaTypes.js +4 -4
- package/lib/simple-tree/schemaTypes.js.map +1 -1
- package/lib/simple-tree/toFlexSchema.d.ts +11 -1
- package/lib/simple-tree/toFlexSchema.d.ts.map +1 -1
- package/lib/simple-tree/toFlexSchema.js +29 -8
- package/lib/simple-tree/toFlexSchema.js.map +1 -1
- package/lib/simple-tree/toMapTree.d.ts +25 -37
- package/lib/simple-tree/toMapTree.d.ts.map +1 -1
- package/lib/simple-tree/toMapTree.js +54 -17
- package/lib/simple-tree/toMapTree.js.map +1 -1
- package/lib/simple-tree/treeNodeValid.d.ts.map +1 -1
- package/lib/simple-tree/treeNodeValid.js +8 -11
- package/lib/simple-tree/treeNodeValid.js.map +1 -1
- package/lib/simple-tree/typesUnsafe.d.ts +13 -13
- package/lib/simple-tree/typesUnsafe.js.map +1 -1
- package/lib/simple-tree/walkSchema.d.ts +26 -0
- package/lib/simple-tree/walkSchema.d.ts.map +1 -0
- package/lib/simple-tree/walkSchema.js +43 -0
- package/lib/simple-tree/walkSchema.js.map +1 -0
- package/lib/treeFactory.d.ts +2 -1
- package/lib/treeFactory.d.ts.map +1 -1
- package/lib/treeFactory.js +2 -1
- package/lib/treeFactory.js.map +1 -1
- package/lib/tsdoc-metadata.json +1 -1
- package/lib/util/typeUtils.d.ts +2 -2
- package/lib/util/typeUtils.js.map +1 -1
- package/package.json +58 -36
- package/src/core/index.ts +1 -1
- package/src/core/{revertible/revertible.ts → revertible.ts} +15 -0
- package/src/core/schema-stored/format.ts +1 -1
- package/src/core/schema-stored/schema.ts +6 -13
- package/src/core/tree/anchorSet.ts +35 -9
- package/src/core/tree/detachedFieldIndex.ts +6 -5
- package/src/core/tree/visitDelta.ts +7 -2
- package/src/events/{events.ts → emitter.ts} +55 -134
- package/src/events/index.ts +7 -7
- package/src/events/interop.ts +49 -0
- package/src/events/listeners.ts +68 -0
- package/src/feature-libraries/chunked-forest/chunkTree.ts +63 -18
- package/src/feature-libraries/chunked-forest/chunkedForest.ts +18 -4
- package/src/feature-libraries/chunked-forest/uniformChunk.ts +33 -0
- package/src/feature-libraries/default-schema/defaultEditBuilder.ts +5 -3
- package/src/feature-libraries/flex-map-tree/index.ts +1 -0
- package/src/feature-libraries/flex-map-tree/mapTreeNode.ts +135 -231
- package/src/feature-libraries/flex-tree/README.md +4 -75
- package/src/feature-libraries/flex-tree/context.ts +37 -16
- package/src/feature-libraries/flex-tree/flexTreeTypes.ts +69 -458
- package/src/feature-libraries/flex-tree/index.ts +7 -29
- package/src/feature-libraries/flex-tree/lazyEntity.ts +2 -11
- package/src/feature-libraries/flex-tree/lazyField.ts +49 -79
- package/src/feature-libraries/flex-tree/lazyNode.ts +26 -306
- package/src/feature-libraries/flex-tree/unboxed.ts +9 -68
- package/src/feature-libraries/flex-tree/utilities.ts +4 -8
- package/src/feature-libraries/forest-summary/forestSummarizer.ts +4 -1
- package/src/feature-libraries/index.ts +2 -41
- package/src/feature-libraries/modular-schema/comparison.ts +4 -6
- package/src/feature-libraries/modular-schema/discrepancies.ts +7 -16
- package/src/feature-libraries/modular-schema/modularChangeCodecs.ts +4 -1
- package/src/feature-libraries/modular-schema/modularChangeFamily.ts +14 -4
- package/src/feature-libraries/storedToViewSchema.ts +5 -6
- package/src/feature-libraries/typed-schema/flexList.ts +3 -3
- package/src/feature-libraries/typed-schema/index.ts +1 -3
- package/src/feature-libraries/typed-schema/schemaCollection.ts +15 -17
- package/src/feature-libraries/typed-schema/typedTreeSchema.ts +35 -127
- package/src/feature-libraries/typed-schema/view.ts +4 -13
- package/src/index.ts +5 -1
- package/src/packageVersion.ts +1 -1
- package/src/shared-tree/checkoutFlexTreeView.ts +89 -0
- package/src/shared-tree/index.ts +2 -7
- package/src/shared-tree/schematizeTree.ts +23 -12
- package/src/shared-tree/schematizingTreeView.ts +34 -24
- package/src/shared-tree/sharedTree.ts +6 -1
- package/src/shared-tree/sharedTreeChangeEnricher.ts +6 -1
- package/src/shared-tree/sharedTreeChangeFamily.ts +7 -1
- package/src/shared-tree/sharedTreeEditBuilder.ts +9 -4
- package/src/shared-tree/treeApi.ts +10 -10
- package/src/shared-tree/treeCheckout.ts +26 -15
- package/src/shared-tree-core/branch.ts +1 -1
- package/src/simple-tree/ProxyBinding.md +23 -23
- package/src/simple-tree/api/create.ts +8 -3
- package/src/simple-tree/{getJsonSchema.ts → api/getJsonSchema.ts} +3 -3
- package/src/simple-tree/{getSimpleSchema.ts → api/getSimpleSchema.ts} +3 -3
- package/src/simple-tree/api/index.ts +20 -0
- package/src/simple-tree/{jsonSchema.ts → api/jsonSchema.ts} +1 -1
- package/src/simple-tree/api/schemaFactory.ts +44 -13
- package/src/simple-tree/{simpleSchema.ts → api/simpleSchema.ts} +4 -4
- package/src/simple-tree/{simpleSchemaToJsonSchema.ts → api/simpleSchemaToJsonSchema.ts} +4 -4
- package/src/simple-tree/api/tree.ts +2 -71
- package/src/simple-tree/api/treeApiBeta.ts +101 -0
- package/src/simple-tree/api/treeNodeApi.ts +63 -22
- package/src/simple-tree/api/verboseTree.ts +1 -1
- package/src/simple-tree/{viewSchemaToSimpleSchema.ts → api/viewSchemaToSimpleSchema.ts} +5 -5
- package/src/simple-tree/arrayNode.ts +38 -41
- package/src/simple-tree/core/index.ts +4 -0
- package/src/simple-tree/core/schemaCaching.ts +10 -0
- package/src/simple-tree/core/treeNodeKernel.ts +279 -27
- package/src/simple-tree/core/treeNodeSchema.ts +1 -1
- package/src/simple-tree/core/types.ts +23 -8
- package/src/simple-tree/core/withType.ts +3 -1
- package/src/simple-tree/index.ts +29 -20
- package/src/simple-tree/leafNodeSchema.ts +24 -28
- package/src/simple-tree/mapNode.ts +47 -29
- package/src/simple-tree/objectNode.ts +51 -46
- package/src/simple-tree/proxies.ts +22 -51
- package/src/simple-tree/proxyBinding.ts +3 -254
- package/src/simple-tree/schemaTypes.ts +8 -8
- package/src/simple-tree/toFlexSchema.ts +40 -7
- package/src/simple-tree/toMapTree.ts +113 -79
- package/src/simple-tree/treeNodeValid.ts +10 -13
- package/src/simple-tree/typesUnsafe.ts +13 -13
- package/src/simple-tree/walkSchema.ts +81 -0
- package/src/treeFactory.ts +2 -1
- package/src/util/typeUtils.ts +2 -2
- package/dist/core/revertible/index.d.ts.map +0 -1
- package/dist/core/revertible/index.js +0 -10
- package/dist/core/revertible/index.js.map +0 -1
- package/dist/core/revertible/revertible.d.ts.map +0 -1
- package/dist/core/revertible/revertible.js.map +0 -1
- package/dist/domains/index.d.ts +0 -8
- package/dist/domains/index.d.ts.map +0 -1
- package/dist/domains/index.js +0 -20
- package/dist/domains/index.js.map +0 -1
- package/dist/domains/json/index.d.ts +0 -7
- package/dist/domains/json/index.d.ts.map +0 -1
- package/dist/domains/json/index.js +0 -17
- package/dist/domains/json/index.js.map +0 -1
- package/dist/domains/json/jsonCursor.d.ts +0 -52
- package/dist/domains/json/jsonCursor.d.ts.map +0 -1
- package/dist/domains/json/jsonCursor.js +0 -197
- package/dist/domains/json/jsonCursor.js.map +0 -1
- package/dist/domains/json/jsonDomainSchema.d.ts +0 -24
- package/dist/domains/json/jsonDomainSchema.d.ts.map +0 -1
- package/dist/domains/json/jsonDomainSchema.js +0 -32
- package/dist/domains/json/jsonDomainSchema.js.map +0 -1
- package/dist/domains/leafDomain.d.ts +0 -72
- package/dist/domains/leafDomain.d.ts.map +0 -1
- package/dist/domains/leafDomain.js +0 -88
- package/dist/domains/leafDomain.js.map +0 -1
- package/dist/domains/schemaBuilder.d.ts +0 -103
- package/dist/domains/schemaBuilder.d.ts.map +0 -1
- package/dist/domains/schemaBuilder.js +0 -121
- package/dist/domains/schemaBuilder.js.map +0 -1
- package/dist/domains/testRecursiveDomain.d.ts +0 -17
- package/dist/domains/testRecursiveDomain.d.ts.map +0 -1
- package/dist/domains/testRecursiveDomain.js +0 -35
- package/dist/domains/testRecursiveDomain.js.map +0 -1
- package/dist/events/events.d.ts +0 -201
- package/dist/events/events.d.ts.map +0 -1
- package/dist/events/events.js.map +0 -1
- package/dist/feature-libraries/schemaBuilder.d.ts +0 -31
- package/dist/feature-libraries/schemaBuilder.d.ts.map +0 -1
- package/dist/feature-libraries/schemaBuilder.js +0 -40
- package/dist/feature-libraries/schemaBuilder.js.map +0 -1
- package/dist/feature-libraries/schemaBuilderBase.d.ts +0 -191
- package/dist/feature-libraries/schemaBuilderBase.d.ts.map +0 -1
- package/dist/feature-libraries/schemaBuilderBase.js +0 -201
- package/dist/feature-libraries/schemaBuilderBase.js.map +0 -1
- package/dist/shared-tree/treeView.d.ts +0 -73
- package/dist/shared-tree/treeView.d.ts.map +0 -1
- package/dist/shared-tree/treeView.js.map +0 -1
- package/dist/simple-tree/getJsonSchema.d.ts.map +0 -1
- package/dist/simple-tree/getJsonSchema.js.map +0 -1
- package/dist/simple-tree/getSimpleSchema.d.ts.map +0 -1
- package/dist/simple-tree/getSimpleSchema.js.map +0 -1
- package/dist/simple-tree/jsonSchema.d.ts.map +0 -1
- package/dist/simple-tree/jsonSchema.js.map +0 -1
- package/dist/simple-tree/simpleSchema.d.ts.map +0 -1
- package/dist/simple-tree/simpleSchema.js.map +0 -1
- package/dist/simple-tree/simpleSchemaToJsonSchema.d.ts.map +0 -1
- package/dist/simple-tree/simpleSchemaToJsonSchema.js.map +0 -1
- package/dist/simple-tree/viewSchemaToSimpleSchema.d.ts.map +0 -1
- package/dist/simple-tree/viewSchemaToSimpleSchema.js.map +0 -1
- package/lib/core/revertible/index.d.ts.map +0 -1
- package/lib/core/revertible/index.js.map +0 -1
- package/lib/core/revertible/revertible.d.ts.map +0 -1
- package/lib/core/revertible/revertible.js.map +0 -1
- package/lib/domains/index.d.ts +0 -8
- package/lib/domains/index.d.ts.map +0 -1
- package/lib/domains/index.js +0 -8
- package/lib/domains/index.js.map +0 -1
- package/lib/domains/json/index.d.ts +0 -7
- package/lib/domains/json/index.d.ts.map +0 -1
- package/lib/domains/json/index.js +0 -7
- package/lib/domains/json/index.js.map +0 -1
- package/lib/domains/json/jsonCursor.d.ts +0 -52
- package/lib/domains/json/jsonCursor.d.ts.map +0 -1
- package/lib/domains/json/jsonCursor.js +0 -192
- package/lib/domains/json/jsonCursor.js.map +0 -1
- package/lib/domains/json/jsonDomainSchema.d.ts +0 -24
- package/lib/domains/json/jsonDomainSchema.d.ts.map +0 -1
- package/lib/domains/json/jsonDomainSchema.js +0 -29
- package/lib/domains/json/jsonDomainSchema.js.map +0 -1
- package/lib/domains/leafDomain.d.ts +0 -72
- package/lib/domains/leafDomain.d.ts.map +0 -1
- package/lib/domains/leafDomain.js +0 -85
- package/lib/domains/leafDomain.js.map +0 -1
- package/lib/domains/schemaBuilder.d.ts +0 -103
- package/lib/domains/schemaBuilder.d.ts.map +0 -1
- package/lib/domains/schemaBuilder.js +0 -117
- package/lib/domains/schemaBuilder.js.map +0 -1
- package/lib/domains/testRecursiveDomain.d.ts +0 -17
- package/lib/domains/testRecursiveDomain.d.ts.map +0 -1
- package/lib/domains/testRecursiveDomain.js +0 -32
- package/lib/domains/testRecursiveDomain.js.map +0 -1
- package/lib/events/events.d.ts +0 -201
- package/lib/events/events.d.ts.map +0 -1
- package/lib/events/events.js.map +0 -1
- package/lib/feature-libraries/schemaBuilder.d.ts +0 -31
- package/lib/feature-libraries/schemaBuilder.d.ts.map +0 -1
- package/lib/feature-libraries/schemaBuilder.js +0 -36
- package/lib/feature-libraries/schemaBuilder.js.map +0 -1
- package/lib/feature-libraries/schemaBuilderBase.d.ts +0 -191
- package/lib/feature-libraries/schemaBuilderBase.d.ts.map +0 -1
- package/lib/feature-libraries/schemaBuilderBase.js +0 -195
- package/lib/feature-libraries/schemaBuilderBase.js.map +0 -1
- package/lib/shared-tree/treeView.d.ts +0 -73
- package/lib/shared-tree/treeView.d.ts.map +0 -1
- package/lib/shared-tree/treeView.js.map +0 -1
- package/lib/simple-tree/getJsonSchema.d.ts.map +0 -1
- package/lib/simple-tree/getJsonSchema.js.map +0 -1
- package/lib/simple-tree/getSimpleSchema.d.ts.map +0 -1
- package/lib/simple-tree/getSimpleSchema.js.map +0 -1
- package/lib/simple-tree/jsonSchema.d.ts.map +0 -1
- package/lib/simple-tree/jsonSchema.js.map +0 -1
- package/lib/simple-tree/simpleSchema.d.ts.map +0 -1
- package/lib/simple-tree/simpleSchema.js.map +0 -1
- package/lib/simple-tree/simpleSchemaToJsonSchema.d.ts.map +0 -1
- package/lib/simple-tree/simpleSchemaToJsonSchema.js.map +0 -1
- package/lib/simple-tree/viewSchemaToSimpleSchema.d.ts.map +0 -1
- package/src/domains/README.md +0 -6
- package/src/domains/fence.json +0 -5
- package/src/domains/index.ts +0 -19
- package/src/domains/json/fence.json +0 -5
- package/src/domains/json/index.ts +0 -13
- package/src/domains/json/jsonCursor.ts +0 -247
- package/src/domains/json/jsonDomainSchema.ts +0 -47
- package/src/domains/leafDomain.ts +0 -97
- package/src/domains/schemaBuilder.ts +0 -153
- package/src/domains/testRecursiveDomain.ts +0 -38
- package/src/events/fence.json +0 -5
- package/src/feature-libraries/schemaBuilder.ts +0 -45
- package/src/feature-libraries/schemaBuilderBase.ts +0 -393
- package/src/shared-tree/treeView.ts +0 -113
- /package/dist/core/{revertible/revertible.js → revertible.js} +0 -0
- /package/dist/simple-tree/{jsonSchema.js → api/jsonSchema.js} +0 -0
- /package/dist/simple-tree/{simpleSchema.js → api/simpleSchema.js} +0 -0
- /package/dist/simple-tree/{simpleSchemaToJsonSchema.d.ts → api/simpleSchemaToJsonSchema.d.ts} +0 -0
- /package/lib/core/{revertible/revertible.js → revertible.js} +0 -0
- /package/lib/simple-tree/{jsonSchema.js → api/jsonSchema.js} +0 -0
- /package/lib/simple-tree/{simpleSchema.js → api/simpleSchema.js} +0 -0
- /package/lib/simple-tree/{simpleSchemaToJsonSchema.d.ts → api/simpleSchemaToJsonSchema.d.ts} +0 -0
|
@@ -0,0 +1,89 @@
|
|
|
1
|
+
/*!
|
|
2
|
+
* Copyright (c) Microsoft Corporation and contributors. All rights reserved.
|
|
3
|
+
* Licensed under the MIT License.
|
|
4
|
+
*/
|
|
5
|
+
|
|
6
|
+
import { assert } from "@fluidframework/core-utils/internal";
|
|
7
|
+
import {
|
|
8
|
+
type Context,
|
|
9
|
+
type FlexTreeField,
|
|
10
|
+
type FlexTreeSchema,
|
|
11
|
+
type NodeKeyManager,
|
|
12
|
+
getTreeContext,
|
|
13
|
+
type FlexTreeHydratedContext,
|
|
14
|
+
} from "../feature-libraries/index.js";
|
|
15
|
+
import { tryDisposeTreeNode } from "../simple-tree/index.js";
|
|
16
|
+
import { disposeSymbol } from "../util/index.js";
|
|
17
|
+
|
|
18
|
+
import type { ITreeCheckout, ITreeCheckoutFork } from "./treeCheckout.js";
|
|
19
|
+
|
|
20
|
+
/**
|
|
21
|
+
* An editable view of a (version control style) branch of a shared tree.
|
|
22
|
+
*/
|
|
23
|
+
export class CheckoutFlexTreeView<out TCheckout extends ITreeCheckout = ITreeCheckout> {
|
|
24
|
+
/**
|
|
25
|
+
* Context for controlling the FlexTree nodes produced from {@link FlexTreeView.flexTree}.
|
|
26
|
+
*
|
|
27
|
+
* @remarks
|
|
28
|
+
* This is an owning reference: disposing of this view disposes its context.
|
|
29
|
+
*/
|
|
30
|
+
public readonly context: Context;
|
|
31
|
+
|
|
32
|
+
/**
|
|
33
|
+
* Get a typed view of the tree content using the flex-tree API.
|
|
34
|
+
*/
|
|
35
|
+
public readonly flexTree: FlexTreeField;
|
|
36
|
+
|
|
37
|
+
public constructor(
|
|
38
|
+
/**
|
|
39
|
+
* Access non-view schema specific aspects of this branch.
|
|
40
|
+
*
|
|
41
|
+
* @remarks
|
|
42
|
+
* This is a non-owning reference: disposing of this view does not impact the branch.
|
|
43
|
+
*/
|
|
44
|
+
public readonly checkout: TCheckout,
|
|
45
|
+
public readonly schema: FlexTreeSchema,
|
|
46
|
+
public readonly nodeKeyManager: NodeKeyManager,
|
|
47
|
+
private readonly onDispose?: () => void,
|
|
48
|
+
) {
|
|
49
|
+
this.context = getTreeContext(schema, this.checkout, nodeKeyManager);
|
|
50
|
+
contextToTreeViewMap.set(this.context, this);
|
|
51
|
+
this.flexTree = this.context.root;
|
|
52
|
+
}
|
|
53
|
+
|
|
54
|
+
public [disposeSymbol](): void {
|
|
55
|
+
for (const anchorNode of this.checkout.forest.anchors) {
|
|
56
|
+
tryDisposeTreeNode(anchorNode);
|
|
57
|
+
}
|
|
58
|
+
|
|
59
|
+
this.context[disposeSymbol]();
|
|
60
|
+
this.onDispose?.();
|
|
61
|
+
}
|
|
62
|
+
|
|
63
|
+
/**
|
|
64
|
+
* Spawn a new view which is based off of the current state of this view.
|
|
65
|
+
* Any mutations of the new view will not apply to this view until the new view is merged back into this view via `merge()`.
|
|
66
|
+
*/
|
|
67
|
+
public fork(): CheckoutFlexTreeView<ITreeCheckout & ITreeCheckoutFork> {
|
|
68
|
+
const branch = this.checkout.fork();
|
|
69
|
+
return new CheckoutFlexTreeView(branch, this.schema, this.nodeKeyManager);
|
|
70
|
+
}
|
|
71
|
+
}
|
|
72
|
+
|
|
73
|
+
/**
|
|
74
|
+
* Maps the context of every {@link CheckoutFlexTreeView} to the view.
|
|
75
|
+
* In practice, this allows the view or checkout to be obtained from a flex node by first getting the context from the flex node and then using this map.
|
|
76
|
+
*/
|
|
77
|
+
const contextToTreeViewMap = new WeakMap<FlexTreeHydratedContext, CheckoutFlexTreeView>();
|
|
78
|
+
|
|
79
|
+
/**
|
|
80
|
+
* Retrieve the {@link CheckoutFlexTreeView | view} for the given {@link FlexTreeHydratedContext | context}.
|
|
81
|
+
* @remarks Every {@link CheckoutFlexTreeView} is associated with its context upon creation.
|
|
82
|
+
*/
|
|
83
|
+
export function getCheckoutFlexTreeView(
|
|
84
|
+
context: FlexTreeHydratedContext,
|
|
85
|
+
): CheckoutFlexTreeView {
|
|
86
|
+
const view = contextToTreeViewMap.get(context);
|
|
87
|
+
assert(view !== undefined, 0xa41 /* Expected view to be registered for context */);
|
|
88
|
+
return view;
|
|
89
|
+
}
|
package/src/shared-tree/index.ts
CHANGED
|
@@ -22,23 +22,18 @@ export {
|
|
|
22
22
|
type CheckoutEvents,
|
|
23
23
|
type ITransaction,
|
|
24
24
|
type ITreeCheckoutFork,
|
|
25
|
-
type RevertibleFactory,
|
|
26
25
|
} from "./treeCheckout.js";
|
|
27
26
|
|
|
28
27
|
export {
|
|
29
28
|
type SchematizeConfiguration,
|
|
30
29
|
type TreeContent,
|
|
30
|
+
type TreeStoredContent,
|
|
31
31
|
type InitializeAndSchematizeConfiguration,
|
|
32
32
|
type SchemaConfiguration,
|
|
33
33
|
buildTreeConfiguration,
|
|
34
34
|
} from "./schematizeTree.js";
|
|
35
35
|
|
|
36
|
-
export {
|
|
37
|
-
type FlexTreeView,
|
|
38
|
-
CheckoutFlexTreeView,
|
|
39
|
-
type ITreeViewFork,
|
|
40
|
-
type FlexTreeViewGeneric,
|
|
41
|
-
} from "./treeView.js";
|
|
36
|
+
export { CheckoutFlexTreeView } from "./checkoutFlexTreeView.js";
|
|
42
37
|
|
|
43
38
|
export type { ISharedTreeEditor, ISchemaEditor } from "./sharedTreeEditBuilder.js";
|
|
44
39
|
|
|
@@ -22,7 +22,6 @@ import {
|
|
|
22
22
|
allowsRepoSuperset,
|
|
23
23
|
cursorForMapTreeField,
|
|
24
24
|
defaultSchemaPolicy,
|
|
25
|
-
intoStoredSchema,
|
|
26
25
|
mapTreeFromCursor,
|
|
27
26
|
} from "../feature-libraries/index.js";
|
|
28
27
|
import { fail, isReadonlyArray } from "../util/index.js";
|
|
@@ -46,7 +45,7 @@ export function initializeContent(
|
|
|
46
45
|
storedSchema: ITreeCheckout["storedSchema"];
|
|
47
46
|
updateSchema: ITreeCheckout["updateSchema"];
|
|
48
47
|
},
|
|
49
|
-
newSchema:
|
|
48
|
+
newSchema: TreeStoredSchema,
|
|
50
49
|
setInitialTree: () => void,
|
|
51
50
|
): void {
|
|
52
51
|
assert(
|
|
@@ -54,8 +53,7 @@ export function initializeContent(
|
|
|
54
53
|
0x743 /* cannot initialize after a schema is set */,
|
|
55
54
|
);
|
|
56
55
|
|
|
57
|
-
const
|
|
58
|
-
const rootSchema = schema.rootFieldSchema;
|
|
56
|
+
const rootSchema = newSchema.rootFieldSchema;
|
|
59
57
|
const rootKind = rootSchema.kind;
|
|
60
58
|
|
|
61
59
|
// To keep the data in schema during the update, first define a schema that tolerates the current (empty) tree as well as the final (initial) tree.
|
|
@@ -65,12 +63,12 @@ export function initializeContent(
|
|
|
65
63
|
rootKind === FieldKinds.optional.identifier
|
|
66
64
|
) {
|
|
67
65
|
// These kinds are known to tolerate empty, so use the schema as is:
|
|
68
|
-
incrementalSchemaUpdate =
|
|
66
|
+
incrementalSchemaUpdate = newSchema;
|
|
69
67
|
} else {
|
|
70
68
|
assert(rootKind === FieldKinds.required.identifier, 0x5c8 /* Unexpected kind */);
|
|
71
69
|
// Replace value kind with optional kind in root field schema:
|
|
72
70
|
incrementalSchemaUpdate = {
|
|
73
|
-
nodeSchema:
|
|
71
|
+
nodeSchema: newSchema.nodeSchema,
|
|
74
72
|
rootFieldSchema: {
|
|
75
73
|
kind: FieldKinds.optional.identifier,
|
|
76
74
|
types: rootSchema.types,
|
|
@@ -84,7 +82,7 @@ export function initializeContent(
|
|
|
84
82
|
// "Incremental Schema update should support the existing empty tree",
|
|
85
83
|
// );
|
|
86
84
|
assert(
|
|
87
|
-
allowsRepoSuperset(defaultSchemaPolicy,
|
|
85
|
+
allowsRepoSuperset(defaultSchemaPolicy, newSchema, incrementalSchemaUpdate),
|
|
88
86
|
0x5c9 /* Incremental Schema during update should be a allow a superset of the final schema */,
|
|
89
87
|
);
|
|
90
88
|
// Update to intermediate schema
|
|
@@ -93,8 +91,8 @@ export function initializeContent(
|
|
|
93
91
|
setInitialTree();
|
|
94
92
|
|
|
95
93
|
// If intermediate schema is not final desired schema, update to the final schema:
|
|
96
|
-
if (incrementalSchemaUpdate !==
|
|
97
|
-
schemaRepository.updateSchema(
|
|
94
|
+
if (incrementalSchemaUpdate !== newSchema) {
|
|
95
|
+
schemaRepository.updateSchema(newSchema);
|
|
98
96
|
}
|
|
99
97
|
}
|
|
100
98
|
|
|
@@ -182,7 +180,7 @@ function normalizeNewFieldContent(
|
|
|
182
180
|
* If the proposed schema (from `treeContent`) is not compatible with the emptry tree, this function handles using an intermediate schema
|
|
183
181
|
* which supports the empty tree as well as the final tree content.
|
|
184
182
|
*/
|
|
185
|
-
export function initialize(checkout: ITreeCheckout, treeContent:
|
|
183
|
+
export function initialize(checkout: ITreeCheckout, treeContent: TreeStoredContent): void {
|
|
186
184
|
checkout.transaction.start();
|
|
187
185
|
try {
|
|
188
186
|
initializeContent(checkout, treeContent.schema, () => {
|
|
@@ -231,7 +229,7 @@ export function ensureSchema(
|
|
|
231
229
|
viewSchema: ViewSchema,
|
|
232
230
|
allowedSchemaModifications: AllowedUpdateType,
|
|
233
231
|
checkout: ITreeCheckout,
|
|
234
|
-
treeContent:
|
|
232
|
+
treeContent: TreeStoredContent | undefined,
|
|
235
233
|
): boolean {
|
|
236
234
|
let possibleModifications = allowedSchemaModifications;
|
|
237
235
|
if (treeContent === undefined) {
|
|
@@ -248,7 +246,7 @@ export function ensureSchema(
|
|
|
248
246
|
return false;
|
|
249
247
|
}
|
|
250
248
|
case UpdateType.SchemaCompatible: {
|
|
251
|
-
checkout.updateSchema(
|
|
249
|
+
checkout.updateSchema(viewSchema.storedSchema);
|
|
252
250
|
return true;
|
|
253
251
|
}
|
|
254
252
|
case UpdateType.Initialize: {
|
|
@@ -289,6 +287,19 @@ export interface TreeContent<TRoot extends FlexFieldSchema = FlexFieldSchema>
|
|
|
289
287
|
readonly initialTree: readonly ITreeCursorSynchronous[] | ITreeCursorSynchronous | undefined;
|
|
290
288
|
}
|
|
291
289
|
|
|
290
|
+
/**
|
|
291
|
+
* Content that can populate a `SharedTree`.
|
|
292
|
+
*/
|
|
293
|
+
export interface TreeStoredContent {
|
|
294
|
+
readonly schema: TreeStoredSchema;
|
|
295
|
+
|
|
296
|
+
/**
|
|
297
|
+
* Default tree content to initialize the tree with iff the tree is uninitialized
|
|
298
|
+
* (meaning it does not even have any schema set at all).
|
|
299
|
+
*/
|
|
300
|
+
readonly initialTree: readonly ITreeCursorSynchronous[] | ITreeCursorSynchronous | undefined;
|
|
301
|
+
}
|
|
302
|
+
|
|
292
303
|
/**
|
|
293
304
|
* Options used to schematize a `SharedTree`.
|
|
294
305
|
*/
|
|
@@ -6,7 +6,7 @@
|
|
|
6
6
|
import { assert } from "@fluidframework/core-utils/internal";
|
|
7
7
|
import { UsageError } from "@fluidframework/telemetry-utils/internal";
|
|
8
8
|
|
|
9
|
-
import { AllowedUpdateType, Compatibility } from "../core/index.js";
|
|
9
|
+
import { AllowedUpdateType, anchorSlot, Compatibility } from "../core/index.js";
|
|
10
10
|
import {
|
|
11
11
|
type HasListeners,
|
|
12
12
|
type IEmitter,
|
|
@@ -14,13 +14,13 @@ import {
|
|
|
14
14
|
createEmitter,
|
|
15
15
|
} from "../events/index.js";
|
|
16
16
|
import {
|
|
17
|
-
type FlexFieldSchema,
|
|
18
17
|
type NodeKeyManager,
|
|
19
18
|
ViewSchema,
|
|
20
19
|
defaultSchemaPolicy,
|
|
21
20
|
ContextSlot,
|
|
22
21
|
cursorForMapTreeNode,
|
|
23
22
|
type FlexTreeSchema,
|
|
23
|
+
intoStoredSchema,
|
|
24
24
|
} from "../feature-libraries/index.js";
|
|
25
25
|
import {
|
|
26
26
|
type FieldSchema,
|
|
@@ -43,7 +43,12 @@ import { Breakable, breakingClass, disposeSymbol, type WithBreakable } from "../
|
|
|
43
43
|
|
|
44
44
|
import { canInitialize, ensureSchema, initialize } from "./schematizeTree.js";
|
|
45
45
|
import type { ITreeCheckout } from "./treeCheckout.js";
|
|
46
|
-
import { CheckoutFlexTreeView } from "./
|
|
46
|
+
import { CheckoutFlexTreeView } from "./checkoutFlexTreeView.js";
|
|
47
|
+
/**
|
|
48
|
+
* Creating multiple tree views from the same checkout is not supported. This slot is used to detect if one already
|
|
49
|
+
* exists and error if creating a second.
|
|
50
|
+
*/
|
|
51
|
+
export const ViewSlot = anchorSlot<TreeView<ImplicitFieldSchema>>();
|
|
47
52
|
|
|
48
53
|
/**
|
|
49
54
|
* Implementation of TreeView wrapping a FlexTreeView.
|
|
@@ -57,7 +62,7 @@ export class SchematizingSimpleTreeView<in out TRootSchema extends ImplicitField
|
|
|
57
62
|
*
|
|
58
63
|
* The view schema may be incompatible with the stored schema. Use `compatibility` to check.
|
|
59
64
|
*/
|
|
60
|
-
private view: CheckoutFlexTreeView
|
|
65
|
+
private view: CheckoutFlexTreeView | undefined;
|
|
61
66
|
|
|
62
67
|
/**
|
|
63
68
|
* Undefined iff uninitialized or disposed.
|
|
@@ -89,6 +94,11 @@ export class SchematizingSimpleTreeView<in out TRootSchema extends ImplicitField
|
|
|
89
94
|
public readonly nodeKeyManager: NodeKeyManager,
|
|
90
95
|
public readonly breaker: Breakable = new Breakable("SchematizingSimpleTreeView"),
|
|
91
96
|
) {
|
|
97
|
+
if (checkout.forest.anchors.slots.has(ViewSlot)) {
|
|
98
|
+
throw new UsageError("Cannot create a second tree view from the same checkout");
|
|
99
|
+
}
|
|
100
|
+
checkout.forest.anchors.slots.set(ViewSlot, this);
|
|
101
|
+
|
|
92
102
|
const policy = {
|
|
93
103
|
...defaultSchemaPolicy,
|
|
94
104
|
validateSchema: config.enableSchemaValidation,
|
|
@@ -96,7 +106,7 @@ export class SchematizingSimpleTreeView<in out TRootSchema extends ImplicitField
|
|
|
96
106
|
this.rootFieldSchema = normalizeFieldSchema(config.schema);
|
|
97
107
|
this.flexSchema = toFlexSchema(config.schema);
|
|
98
108
|
|
|
99
|
-
this.viewSchema = new ViewSchema(policy, {}, this.flexSchema);
|
|
109
|
+
this.viewSchema = new ViewSchema(policy, {}, intoStoredSchema(this.flexSchema));
|
|
100
110
|
// This must be initialized before `update` can be called.
|
|
101
111
|
this.currentCompatibility = {
|
|
102
112
|
canView: false,
|
|
@@ -137,7 +147,7 @@ export class SchematizingSimpleTreeView<in out TRootSchema extends ImplicitField
|
|
|
137
147
|
|
|
138
148
|
prepareContentForHydration(mapTree, this.checkout.forest);
|
|
139
149
|
initialize(this.checkout, {
|
|
140
|
-
schema: this.
|
|
150
|
+
schema: this.viewSchema.storedSchema,
|
|
141
151
|
initialTree: mapTree === undefined ? undefined : cursorForMapTreeNode(mapTree),
|
|
142
152
|
});
|
|
143
153
|
});
|
|
@@ -164,7 +174,7 @@ export class SchematizingSimpleTreeView<in out TRootSchema extends ImplicitField
|
|
|
164
174
|
AllowedUpdateType.SchemaCompatible,
|
|
165
175
|
this.checkout,
|
|
166
176
|
{
|
|
167
|
-
schema: this.
|
|
177
|
+
schema: this.viewSchema.storedSchema,
|
|
168
178
|
initialTree: undefined,
|
|
169
179
|
},
|
|
170
180
|
);
|
|
@@ -175,7 +185,7 @@ export class SchematizingSimpleTreeView<in out TRootSchema extends ImplicitField
|
|
|
175
185
|
/**
|
|
176
186
|
* Gets the view. Throws when disposed.
|
|
177
187
|
*/
|
|
178
|
-
public getView(): CheckoutFlexTreeView
|
|
188
|
+
public getView(): CheckoutFlexTreeView {
|
|
179
189
|
this.ensureUndisposed();
|
|
180
190
|
assert(this.view !== undefined, 0x8c0 /* unexpected getViewOrError */);
|
|
181
191
|
return this.view;
|
|
@@ -252,12 +262,21 @@ export class SchematizingSimpleTreeView<in out TRootSchema extends ImplicitField
|
|
|
252
262
|
}
|
|
253
263
|
};
|
|
254
264
|
|
|
255
|
-
|
|
265
|
+
const view = requireSchema(
|
|
256
266
|
this.checkout,
|
|
257
267
|
this.viewSchema,
|
|
258
268
|
onViewDispose,
|
|
259
269
|
this.nodeKeyManager,
|
|
270
|
+
this.flexSchema,
|
|
260
271
|
);
|
|
272
|
+
this.view = view;
|
|
273
|
+
|
|
274
|
+
const unregister = this.checkout.storedSchema.on("afterSchemaChange", () => {
|
|
275
|
+
unregister();
|
|
276
|
+
this.unregisterCallbacks.delete(unregister);
|
|
277
|
+
view[disposeSymbol]();
|
|
278
|
+
});
|
|
279
|
+
this.unregisterCallbacks.add(unregister);
|
|
261
280
|
} else {
|
|
262
281
|
this.view = undefined;
|
|
263
282
|
|
|
@@ -304,6 +323,7 @@ export class SchematizingSimpleTreeView<in out TRootSchema extends ImplicitField
|
|
|
304
323
|
public dispose(): void {
|
|
305
324
|
this.disposed = true;
|
|
306
325
|
this.disposeView();
|
|
326
|
+
this.checkout.forest.anchors.slots.delete(ViewSlot);
|
|
307
327
|
this.currentCompatibility = undefined;
|
|
308
328
|
}
|
|
309
329
|
|
|
@@ -334,12 +354,13 @@ export class SchematizingSimpleTreeView<in out TRootSchema extends ImplicitField
|
|
|
334
354
|
* Creates a view that self-disposes whenenever the stored schema changes.
|
|
335
355
|
* This may only be called when the schema is already known to be compatible (typically via ensureSchema).
|
|
336
356
|
*/
|
|
337
|
-
export function requireSchema
|
|
357
|
+
export function requireSchema(
|
|
338
358
|
checkout: ITreeCheckout,
|
|
339
|
-
viewSchema: ViewSchema
|
|
359
|
+
viewSchema: ViewSchema,
|
|
340
360
|
onDispose: () => void,
|
|
341
361
|
nodeKeyManager: NodeKeyManager,
|
|
342
|
-
|
|
362
|
+
flexTreeSchema: FlexTreeSchema,
|
|
363
|
+
): CheckoutFlexTreeView {
|
|
343
364
|
const slots = checkout.forest.anchors.slots;
|
|
344
365
|
assert(!slots.has(ContextSlot), 0x8c2 /* Cannot create second view from checkout */);
|
|
345
366
|
|
|
@@ -352,18 +373,7 @@ export function requireSchema<TRoot extends FlexFieldSchema>(
|
|
|
352
373
|
);
|
|
353
374
|
}
|
|
354
375
|
|
|
355
|
-
const view = new CheckoutFlexTreeView(
|
|
356
|
-
checkout,
|
|
357
|
-
viewSchema.schema,
|
|
358
|
-
nodeKeyManager,
|
|
359
|
-
onDispose,
|
|
360
|
-
);
|
|
376
|
+
const view = new CheckoutFlexTreeView(checkout, flexTreeSchema, nodeKeyManager, onDispose);
|
|
361
377
|
assert(slots.has(ContextSlot), 0x90d /* Context should be tracked in slot */);
|
|
362
|
-
|
|
363
|
-
const unregister = checkout.storedSchema.on("afterSchemaChange", () => {
|
|
364
|
-
unregister();
|
|
365
|
-
view[disposeSymbol]();
|
|
366
|
-
});
|
|
367
|
-
|
|
368
378
|
return view;
|
|
369
379
|
}
|
|
@@ -178,7 +178,11 @@ export class SharedTree
|
|
|
178
178
|
const schema = new TreeStoredSchemaRepository();
|
|
179
179
|
const forest =
|
|
180
180
|
options.forest === ForestType.Optimized
|
|
181
|
-
? buildChunkedForest(
|
|
181
|
+
? buildChunkedForest(
|
|
182
|
+
makeTreeChunker(schema, defaultSchemaPolicy),
|
|
183
|
+
undefined,
|
|
184
|
+
runtime.idCompressor,
|
|
185
|
+
)
|
|
182
186
|
: options.forest === ForestType.Reference
|
|
183
187
|
? buildForest()
|
|
184
188
|
: buildForest(undefined, true);
|
|
@@ -217,6 +221,7 @@ export class SharedTree
|
|
|
217
221
|
fieldBatchCodec,
|
|
218
222
|
options,
|
|
219
223
|
options.treeEncodeType,
|
|
224
|
+
runtime.idCompressor,
|
|
220
225
|
);
|
|
221
226
|
const changeFamily = makeMitigatedChangeFamily(
|
|
222
227
|
innerChangeFamily,
|
|
@@ -29,6 +29,7 @@ import type {
|
|
|
29
29
|
ChangeEnricherMutableCheckout,
|
|
30
30
|
ChangeEnricherReadonlyCheckout,
|
|
31
31
|
} from "../shared-tree-core/index.js";
|
|
32
|
+
import type { IIdCompressor } from "@fluidframework/id-compressor";
|
|
32
33
|
|
|
33
34
|
export class SharedTreeReadonlyChangeEnricher
|
|
34
35
|
implements ChangeEnricherReadonlyCheckout<SharedTreeChange>
|
|
@@ -44,6 +45,7 @@ export class SharedTreeReadonlyChangeEnricher
|
|
|
44
45
|
protected readonly forest: IEditableForest,
|
|
45
46
|
private readonly schema: TreeStoredSchemaRepository,
|
|
46
47
|
protected readonly removedRoots: DetachedFieldIndex,
|
|
48
|
+
private readonly idCompressor?: IIdCompressor,
|
|
47
49
|
) {}
|
|
48
50
|
|
|
49
51
|
public fork(): ChangeEnricherMutableCheckout<SharedTreeChange> {
|
|
@@ -70,7 +72,10 @@ export class SharedTreeReadonlyChangeEnricher
|
|
|
70
72
|
const parentField = this.removedRoots.toFieldKey(root);
|
|
71
73
|
cursor.enterField(parentField);
|
|
72
74
|
cursor.enterNode(0);
|
|
73
|
-
return chunkTree(cursor,
|
|
75
|
+
return chunkTree(cursor, {
|
|
76
|
+
policy: defaultChunkPolicy,
|
|
77
|
+
idCompressor: this.idCompressor,
|
|
78
|
+
});
|
|
74
79
|
}
|
|
75
80
|
return undefined;
|
|
76
81
|
};
|
|
@@ -38,6 +38,7 @@ import {
|
|
|
38
38
|
import { makeSharedTreeChangeCodecFamily } from "./sharedTreeChangeCodecs.js";
|
|
39
39
|
import type { SharedTreeChange } from "./sharedTreeChangeTypes.js";
|
|
40
40
|
import { SharedTreeEditBuilder } from "./sharedTreeEditBuilder.js";
|
|
41
|
+
import type { IIdCompressor } from "@fluidframework/id-compressor";
|
|
41
42
|
|
|
42
43
|
/**
|
|
43
44
|
* Implementation of {@link ChangeFamily} that combines edits to fields and schema changes.
|
|
@@ -61,6 +62,7 @@ export class SharedTreeChangeFamily
|
|
|
61
62
|
fieldBatchCodec: FieldBatchCodec,
|
|
62
63
|
codecOptions: ICodecOptions,
|
|
63
64
|
chunkCompressionStrategy?: TreeCompressionStrategy,
|
|
65
|
+
private readonly idCompressor?: IIdCompressor,
|
|
64
66
|
) {
|
|
65
67
|
const modularChangeCodec = makeModularChangeCodecFamily(
|
|
66
68
|
fieldKindConfigurations,
|
|
@@ -79,7 +81,11 @@ export class SharedTreeChangeFamily
|
|
|
79
81
|
public buildEditor(
|
|
80
82
|
changeReceiver: (change: SharedTreeChange) => void,
|
|
81
83
|
): SharedTreeEditBuilder {
|
|
82
|
-
return new SharedTreeEditBuilder(
|
|
84
|
+
return new SharedTreeEditBuilder(
|
|
85
|
+
this.modularChangeFamily,
|
|
86
|
+
changeReceiver,
|
|
87
|
+
this.idCompressor,
|
|
88
|
+
);
|
|
83
89
|
}
|
|
84
90
|
|
|
85
91
|
public compose(changes: TaggedChange<SharedTreeChange>[]): SharedTreeChange {
|
|
@@ -3,6 +3,7 @@
|
|
|
3
3
|
* Licensed under the MIT License.
|
|
4
4
|
*/
|
|
5
5
|
|
|
6
|
+
import type { IIdCompressor } from "@fluidframework/id-compressor";
|
|
6
7
|
import type { ChangeFamilyEditor, TreeStoredSchema } from "../core/index.js";
|
|
7
8
|
import {
|
|
8
9
|
DefaultEditBuilder,
|
|
@@ -48,11 +49,15 @@ export class SharedTreeEditBuilder
|
|
|
48
49
|
public constructor(
|
|
49
50
|
modularChangeFamily: ModularChangeFamily,
|
|
50
51
|
private readonly changeReceiver: (change: SharedTreeChange) => void,
|
|
52
|
+
idCompressor?: IIdCompressor,
|
|
51
53
|
) {
|
|
52
|
-
super(
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
54
|
+
super(
|
|
55
|
+
modularChangeFamily,
|
|
56
|
+
(change) =>
|
|
57
|
+
changeReceiver({
|
|
58
|
+
changes: [{ type: "data", innerChange: change }],
|
|
59
|
+
}),
|
|
60
|
+
idCompressor,
|
|
56
61
|
);
|
|
57
62
|
|
|
58
63
|
this.schema = {
|
|
@@ -4,8 +4,9 @@
|
|
|
4
4
|
*/
|
|
5
5
|
|
|
6
6
|
import { assert, unreachableCase } from "@fluidframework/core-utils/internal";
|
|
7
|
+
import { UsageError } from "@fluidframework/telemetry-utils/internal";
|
|
7
8
|
|
|
8
|
-
import {
|
|
9
|
+
import { TreeStatus } from "../feature-libraries/index.js";
|
|
9
10
|
import {
|
|
10
11
|
type ImplicitFieldSchema,
|
|
11
12
|
type TreeNode,
|
|
@@ -14,11 +15,10 @@ import {
|
|
|
14
15
|
getOrCreateInnerNode,
|
|
15
16
|
treeNodeApi,
|
|
16
17
|
} from "../simple-tree/index.js";
|
|
17
|
-
import { fail } from "../util/index.js";
|
|
18
18
|
|
|
19
19
|
import { SchematizingSimpleTreeView } from "./schematizingTreeView.js";
|
|
20
20
|
import type { ITreeCheckout } from "./treeCheckout.js";
|
|
21
|
-
import {
|
|
21
|
+
import { getCheckoutFlexTreeView } from "./checkoutFlexTreeView.js";
|
|
22
22
|
|
|
23
23
|
/**
|
|
24
24
|
* A special object that signifies when a SharedTree {@link RunTransaction | transaction} should "roll back".
|
|
@@ -324,9 +324,7 @@ export interface RunTransaction {
|
|
|
324
324
|
* Provides various functions for interacting with {@link TreeNode}s.
|
|
325
325
|
* @remarks
|
|
326
326
|
* This type should only be used via the public `Tree` export.
|
|
327
|
-
* @
|
|
328
|
-
* Due to limitations of API-Extractor link resolution, this type can't be moved into internalTypes but should be considered just an implementation detail of the `Tree` export.
|
|
329
|
-
* @sealed @public
|
|
327
|
+
* @system @sealed @public
|
|
330
328
|
*/
|
|
331
329
|
export interface TreeApi extends TreeNodeApi {
|
|
332
330
|
/**
|
|
@@ -436,10 +434,12 @@ export function runTransaction<
|
|
|
436
434
|
const node = treeOrNode as TNode;
|
|
437
435
|
const t = transaction as (node: TNode) => TResult | typeof rollback;
|
|
438
436
|
const context = getOrCreateInnerNode(node).context;
|
|
439
|
-
|
|
440
|
-
|
|
441
|
-
|
|
442
|
-
|
|
437
|
+
if (context.isHydrated() === false) {
|
|
438
|
+
throw new UsageError(
|
|
439
|
+
"Transactions cannot be run on Unhydrated nodes. Transactions apply to a TreeView and Unhydrated nodes are not part of a TreeView.",
|
|
440
|
+
);
|
|
441
|
+
}
|
|
442
|
+
const treeView = getCheckoutFlexTreeView(context);
|
|
443
443
|
return runTransactionInCheckout(treeView.checkout, () => t(node), preconditions);
|
|
444
444
|
}
|
|
445
445
|
}
|
|
@@ -35,8 +35,10 @@ import {
|
|
|
35
35
|
makeAnonChange,
|
|
36
36
|
makeDetachedFieldIndex,
|
|
37
37
|
rebaseChange,
|
|
38
|
+
rootFieldKey,
|
|
38
39
|
tagChange,
|
|
39
40
|
visitDelta,
|
|
41
|
+
type RevertibleFactory,
|
|
40
42
|
} from "../core/index.js";
|
|
41
43
|
import {
|
|
42
44
|
type HasListeners,
|
|
@@ -87,21 +89,6 @@ export interface CheckoutEvents {
|
|
|
87
89
|
commitApplied(data: CommitMetadata, getRevertible?: RevertibleFactory): void;
|
|
88
90
|
}
|
|
89
91
|
|
|
90
|
-
/**
|
|
91
|
-
* Factory for creating a {@link Revertible}.
|
|
92
|
-
* Will error if invoked outside the scope of the `commitApplied` event that provides it, or if invoked multiple times.
|
|
93
|
-
*
|
|
94
|
-
* @param onRevertibleDisposed - A callback that will be invoked when the `Revertible` generated by this factory is disposed.
|
|
95
|
-
* This happens when the `Revertible` is disposed manually, or when the `TreeView` that the `Revertible` belongs to is disposed,
|
|
96
|
-
* whichever happens first.
|
|
97
|
-
* This is typically used to clean up any resources associated with the `Revertible` in the host application.
|
|
98
|
-
*
|
|
99
|
-
* @sealed @public
|
|
100
|
-
*/
|
|
101
|
-
export type RevertibleFactory = (
|
|
102
|
-
onRevertibleDisposed?: (revertible: Revertible) => void,
|
|
103
|
-
) => Revertible;
|
|
104
|
-
|
|
105
92
|
/**
|
|
106
93
|
* Provides a means for interacting with a SharedTree.
|
|
107
94
|
* This includes reading data from the tree and running transactions to mutate the tree.
|
|
@@ -237,6 +224,7 @@ export function createTreeCheckout(
|
|
|
237
224
|
makeFieldBatchCodec(defaultCodecOptions, defaultFieldBatchVersion),
|
|
238
225
|
{ jsonValidator: noopValidator },
|
|
239
226
|
args?.chunkCompressionStrategy,
|
|
227
|
+
idCompressor,
|
|
240
228
|
);
|
|
241
229
|
const branch =
|
|
242
230
|
args?.branch ??
|
|
@@ -656,6 +644,7 @@ export class TreeCheckout implements ITreeCheckoutFork {
|
|
|
656
644
|
}
|
|
657
645
|
|
|
658
646
|
public getRemovedRoots(): [string | number | undefined, number, JsonableTree][] {
|
|
647
|
+
this.assertNoUntrackedRoots();
|
|
659
648
|
const trees: [string | number | undefined, number, JsonableTree][] = [];
|
|
660
649
|
const cursor = this.forest.allocateCursor("getRemovedRoots");
|
|
661
650
|
for (const { id, root } of this.removedRoots.entries()) {
|
|
@@ -739,6 +728,28 @@ export class TreeCheckout implements ITreeCheckoutFork {
|
|
|
739
728
|
|
|
740
729
|
return { age: revertAge };
|
|
741
730
|
}
|
|
731
|
+
|
|
732
|
+
private assertNoUntrackedRoots(): void {
|
|
733
|
+
const cursor = this.forest.getCursorAboveDetachedFields();
|
|
734
|
+
const rootFields = new Set([rootFieldKey]);
|
|
735
|
+
for (const { root } of this.removedRoots.entries()) {
|
|
736
|
+
rootFields.add(this.removedRoots.toFieldKey(root));
|
|
737
|
+
}
|
|
738
|
+
|
|
739
|
+
if (!cursor.firstField()) {
|
|
740
|
+
return;
|
|
741
|
+
}
|
|
742
|
+
|
|
743
|
+
do {
|
|
744
|
+
const field = cursor.getFieldKey();
|
|
745
|
+
assert(
|
|
746
|
+
rootFields.has(field),
|
|
747
|
+
0xa22 /* Forest has a root field which is unknown to the detached field index */,
|
|
748
|
+
);
|
|
749
|
+
|
|
750
|
+
rootFields.delete(field);
|
|
751
|
+
} while (cursor.nextField());
|
|
752
|
+
}
|
|
742
753
|
}
|
|
743
754
|
|
|
744
755
|
/**
|
|
@@ -387,7 +387,7 @@ export class SharedTreeBranch<
|
|
|
387
387
|
const commit =
|
|
388
388
|
commits[i] ?? fail("This wont run because we are iterating through commits");
|
|
389
389
|
const inverse = this.changeFamily.rebaser.changeRevision(
|
|
390
|
-
this.changeFamily.rebaser.invert(commit,
|
|
390
|
+
this.changeFamily.rebaser.invert(commit, true),
|
|
391
391
|
revision,
|
|
392
392
|
commit.revision,
|
|
393
393
|
);
|