@fluidframework/tree 2.3.0-288113 → 2.4.0-294316
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 +42 -54
- package/api-report/tree.beta.api.md +35 -16
- package/api-report/tree.legacy.alpha.api.md +571 -0
- package/api-report/tree.legacy.public.api.md +568 -0
- package/api-report/tree.public.api.md +22 -18
- package/dist/alpha.d.ts +103 -0
- package/dist/beta.d.ts +7 -2
- package/dist/core/index.d.ts +2 -2
- package/dist/core/index.d.ts.map +1 -1
- package/dist/core/index.js +4 -3
- package/dist/core/index.js.map +1 -1
- package/dist/core/rebase/index.d.ts +1 -1
- package/dist/core/rebase/index.d.ts.map +1 -1
- package/dist/core/rebase/index.js +2 -1
- package/dist/core/rebase/index.js.map +1 -1
- package/dist/core/rebase/types.d.ts +1 -0
- package/dist/core/rebase/types.d.ts.map +1 -1
- package/dist/core/rebase/types.js +8 -1
- package/dist/core/rebase/types.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.map +1 -1
- package/dist/core/tree/anchorSet.js +6 -2
- 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} +48 -30
- 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 -33
- package/dist/feature-libraries/flex-map-tree/mapTreeNode.d.ts.map +1 -1
- package/dist/feature-libraries/flex-map-tree/mapTreeNode.js +82 -103
- 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 -190
- package/dist/feature-libraries/flex-tree/flexTreeTypes.d.ts.map +1 -1
- package/dist/feature-libraries/flex-tree/flexTreeTypes.js +15 -3
- 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.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 -28
- package/dist/feature-libraries/flex-tree/lazyField.d.ts.map +1 -1
- package/dist/feature-libraries/flex-tree/lazyField.js +11 -14
- package/dist/feature-libraries/flex-tree/lazyField.js.map +1 -1
- package/dist/feature-libraries/flex-tree/lazyNode.d.ts +5 -26
- package/dist/feature-libraries/flex-tree/lazyNode.d.ts.map +1 -1
- package/dist/feature-libraries/flex-tree/lazyNode.js +23 -74
- 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 -11
- 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 +9 -1
- package/dist/feature-libraries/modular-schema/modularChangeFamily.d.ts.map +1 -1
- package/dist/feature-libraries/modular-schema/modularChangeFamily.js +73 -22
- 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/sequence-field/compose.d.ts.map +1 -1
- package/dist/feature-libraries/sequence-field/compose.js +3 -0
- package/dist/feature-libraries/sequence-field/compose.js.map +1 -1
- package/dist/feature-libraries/sequence-field/utils.d.ts.map +1 -1
- package/dist/feature-libraries/sequence-field/utils.js +1 -4
- package/dist/feature-libraries/sequence-field/utils.js.map +1 -1
- 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 +4 -4
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +33 -36
- package/dist/index.js.map +1 -1
- package/dist/legacy.d.ts +84 -0
- package/dist/packageVersion.d.ts +1 -1
- package/dist/packageVersion.js +1 -1
- package/dist/packageVersion.js.map +1 -1
- package/dist/public.d.ts +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 +10 -4
- package/dist/shared-tree/schematizingTreeView.d.ts.map +1 -1
- package/dist/shared-tree/schematizingTreeView.js +28 -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 +14 -15
- 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 +53 -16
- package/dist/simple-tree/api/schemaFactory.d.ts.map +1 -1
- package/dist/simple-tree/api/schemaFactory.js +49 -12
- package/dist/simple-tree/api/schemaFactory.js.map +1 -1
- package/dist/simple-tree/{simpleSchema.d.ts → api/simpleSchema.d.ts} +8 -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} +34 -21
- package/dist/simple-tree/api/simpleSchemaToJsonSchema.js.map +1 -0
- package/dist/simple-tree/api/tree.d.ts +5 -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 +1 -1
- package/dist/simple-tree/api/treeNodeApi.d.ts.map +1 -1
- package/dist/simple-tree/api/treeNodeApi.js +21 -19
- 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} +8 -4
- package/dist/simple-tree/api/viewSchemaToSimpleSchema.js.map +1 -0
- 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 +30 -21
- package/dist/simple-tree/arrayNode.js.map +1 -1
- package/dist/simple-tree/core/index.d.ts +3 -3
- 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 +61 -3
- package/dist/simple-tree/core/treeNodeKernel.d.ts.map +1 -1
- package/dist/simple-tree/core/treeNodeKernel.js +166 -13
- 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 +17 -20
- 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 +8 -10
- 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 +51 -11
- package/dist/simple-tree/schemaTypes.d.ts.map +1 -1
- package/dist/simple-tree/schemaTypes.js +14 -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 +103 -0
- package/lib/beta.d.ts +7 -2
- package/lib/core/index.d.ts +2 -2
- package/lib/core/index.d.ts.map +1 -1
- package/lib/core/index.js +2 -2
- package/lib/core/index.js.map +1 -1
- package/lib/core/rebase/index.d.ts +1 -1
- package/lib/core/rebase/index.d.ts.map +1 -1
- package/lib/core/rebase/index.js +1 -1
- package/lib/core/rebase/index.js.map +1 -1
- package/lib/core/rebase/types.d.ts +1 -0
- package/lib/core/rebase/types.d.ts.map +1 -1
- package/lib/core/rebase/types.js +6 -0
- package/lib/core/rebase/types.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.map +1 -1
- package/lib/core/tree/anchorSet.js +6 -2
- 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} +48 -29
- 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 -33
- package/lib/feature-libraries/flex-map-tree/mapTreeNode.d.ts.map +1 -1
- package/lib/feature-libraries/flex-map-tree/mapTreeNode.js +83 -104
- 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 -190
- package/lib/feature-libraries/flex-tree/flexTreeTypes.d.ts.map +1 -1
- package/lib/feature-libraries/flex-tree/flexTreeTypes.js +15 -2
- 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 +1 -1
- 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 -28
- package/lib/feature-libraries/flex-tree/lazyField.d.ts.map +1 -1
- package/lib/feature-libraries/flex-tree/lazyField.js +11 -13
- package/lib/feature-libraries/flex-tree/lazyField.js.map +1 -1
- package/lib/feature-libraries/flex-tree/lazyNode.d.ts +5 -26
- package/lib/feature-libraries/flex-tree/lazyNode.d.ts.map +1 -1
- package/lib/feature-libraries/flex-tree/lazyNode.js +23 -72
- 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 +9 -1
- package/lib/feature-libraries/modular-schema/modularChangeFamily.d.ts.map +1 -1
- package/lib/feature-libraries/modular-schema/modularChangeFamily.js +74 -23
- 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/sequence-field/compose.d.ts.map +1 -1
- package/lib/feature-libraries/sequence-field/compose.js +3 -0
- package/lib/feature-libraries/sequence-field/compose.js.map +1 -1
- package/lib/feature-libraries/sequence-field/utils.d.ts.map +1 -1
- package/lib/feature-libraries/sequence-field/utils.js +2 -5
- package/lib/feature-libraries/sequence-field/utils.js.map +1 -1
- 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 +4 -4
- package/lib/index.d.ts.map +1 -1
- package/lib/index.js +3 -5
- package/lib/index.js.map +1 -1
- package/lib/legacy.d.ts +84 -0
- package/lib/packageVersion.d.ts +1 -1
- package/lib/packageVersion.js +1 -1
- package/lib/packageVersion.js.map +1 -1
- package/lib/public.d.ts +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 +10 -4
- package/lib/shared-tree/schematizingTreeView.d.ts.map +1 -1
- package/lib/shared-tree/schematizingTreeView.js +29 -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 +14 -15
- 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 +53 -16
- package/lib/simple-tree/api/schemaFactory.d.ts.map +1 -1
- package/lib/simple-tree/api/schemaFactory.js +49 -12
- package/lib/simple-tree/api/schemaFactory.js.map +1 -1
- package/lib/simple-tree/{simpleSchema.d.ts → api/simpleSchema.d.ts} +8 -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} +35 -22
- package/lib/simple-tree/api/simpleSchemaToJsonSchema.js.map +1 -0
- package/lib/simple-tree/api/tree.d.ts +5 -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 +1 -1
- package/lib/simple-tree/api/treeNodeApi.d.ts.map +1 -1
- package/lib/simple-tree/api/treeNodeApi.js +23 -21
- 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} +8 -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 +33 -24
- package/lib/simple-tree/arrayNode.js.map +1 -1
- package/lib/simple-tree/core/index.d.ts +3 -3
- 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 +61 -3
- package/lib/simple-tree/core/treeNodeKernel.d.ts.map +1 -1
- package/lib/simple-tree/core/treeNodeKernel.js +156 -5
- 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 +17 -20
- 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 +8 -10
- 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 +51 -11
- package/lib/simple-tree/schemaTypes.d.ts.map +1 -1
- package/lib/simple-tree/schemaTypes.js +14 -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 +68 -26
- package/src/core/index.ts +2 -1
- package/src/core/rebase/index.ts +1 -0
- package/src/core/rebase/types.ts +11 -0
- 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 +7 -13
- package/src/core/tree/anchorSet.ts +18 -3
- package/src/core/tree/detachedFieldIndex.ts +6 -5
- package/src/core/tree/visitDelta.ts +7 -2
- package/src/events/{events.ts → emitter.ts} +52 -139
- 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 -210
- 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 -291
- package/src/feature-libraries/flex-tree/index.ts +7 -13
- package/src/feature-libraries/flex-tree/lazyEntity.ts +2 -11
- package/src/feature-libraries/flex-tree/lazyField.ts +49 -73
- package/src/feature-libraries/flex-tree/lazyNode.ts +25 -154
- 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 -27
- 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 +111 -14
- package/src/feature-libraries/sequence-field/compose.ts +3 -0
- package/src/feature-libraries/sequence-field/utils.ts +2 -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 -8
- 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 +38 -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} +20 -18
- package/src/simple-tree/api/schemaFactory.ts +56 -19
- package/src/simple-tree/{simpleSchema.ts → api/simpleSchema.ts} +9 -4
- package/src/simple-tree/{simpleSchemaToJsonSchema.ts → api/simpleSchemaToJsonSchema.ts} +43 -22
- package/src/simple-tree/api/tree.ts +7 -71
- package/src/simple-tree/api/treeApiBeta.ts +101 -0
- package/src/simple-tree/api/treeNodeApi.ts +32 -23
- package/src/simple-tree/api/verboseTree.ts +1 -1
- package/src/simple-tree/{viewSchemaToSimpleSchema.ts → api/viewSchemaToSimpleSchema.ts} +11 -6
- package/src/simple-tree/arrayNode.ts +37 -31
- package/src/simple-tree/core/index.ts +4 -1
- package/src/simple-tree/core/schemaCaching.ts +10 -0
- package/src/simple-tree/core/treeNodeKernel.ts +198 -5
- package/src/simple-tree/core/treeNodeSchema.ts +1 -1
- package/src/simple-tree/core/types.ts +16 -27
- package/src/simple-tree/core/withType.ts +3 -1
- package/src/simple-tree/index.ts +30 -21
- 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 +63 -13
- 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 -207
- 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 -207
- 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/lib/simple-tree/viewSchemaToSimpleSchema.js.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
|
@@ -3,106 +3,9 @@
|
|
|
3
3
|
* Licensed under the MIT License.
|
|
4
4
|
*/
|
|
5
5
|
|
|
6
|
-
import {
|
|
7
|
-
|
|
8
|
-
import { type AnchorNode, type AnchorSet, type UpPath, anchorSlot } from "../core/index.js";
|
|
9
|
-
import {
|
|
10
|
-
ContextSlot,
|
|
11
|
-
type FlexTreeNodeSchema,
|
|
12
|
-
type FlexMapNodeSchema,
|
|
13
|
-
type FlexObjectNodeSchema,
|
|
14
|
-
type FlexTreeMapNode,
|
|
15
|
-
type FlexTreeNode,
|
|
16
|
-
type FlexTreeObjectNode,
|
|
17
|
-
assertFlexTreeEntityNotFreed,
|
|
18
|
-
flexTreeSlot,
|
|
19
|
-
type FieldKinds,
|
|
20
|
-
type FlexFieldSchema,
|
|
21
|
-
type MapTreeNode,
|
|
22
|
-
isMapTreeNode,
|
|
23
|
-
} from "../feature-libraries/index.js";
|
|
24
|
-
import { fail } from "../util/index.js";
|
|
25
|
-
import type { WithType, TreeNode } from "./core/index.js";
|
|
26
|
-
import type { TreeArrayNode } from "./arrayNode.js";
|
|
27
|
-
// TODO: decide how to deal with dependencies on flex-tree implementation.
|
|
28
|
-
// eslint-disable-next-line import/no-internal-modules
|
|
29
|
-
import { makeTree } from "../feature-libraries/flex-tree/lazyNode.js";
|
|
30
|
-
import type { TreeMapNode } from "./mapNode.js";
|
|
6
|
+
import type { InnerNode, TreeNode } from "./core/index.js";
|
|
31
7
|
import { getKernel } from "./core/index.js";
|
|
32
8
|
|
|
33
|
-
// This file contains various maps and helpers for supporting associating simple TreeNodes with their InnerNodes, and swapping those InnerNodes as part of hydration.
|
|
34
|
-
// See ./ProxyBinding.md for a high-level overview of the process.
|
|
35
|
-
|
|
36
|
-
/**
|
|
37
|
-
* An anchor slot which associates an anchor with its corresponding TreeNode, if there is one.
|
|
38
|
-
* @remarks
|
|
39
|
-
* For this to work, we have to require that there is at most a single view using a given AnchorSet.
|
|
40
|
-
* FlexTree already has this assumption, and we also assume there is a single simple-tree per FlexTree, so this is valid.
|
|
41
|
-
*/
|
|
42
|
-
const proxySlot = anchorSlot<TreeNode>();
|
|
43
|
-
|
|
44
|
-
// The following records are maintained as WeakMaps, rather than a private symbol (e.g. like `targetSymbol`) on the TreeNode.
|
|
45
|
-
// The map behaves essentially the same, except that performing a lookup in the map will not perform a property read/get on the key object (as is the case with a symbol).
|
|
46
|
-
// Since `SharedTreeNodes` are proxies with non-trivial `get` traps, this choice is meant to prevent the confusion of the lookup passing through multiple objects
|
|
47
|
-
// via the trap, or the trap not properly handling the special symbol, etc.
|
|
48
|
-
|
|
49
|
-
/**
|
|
50
|
-
* A reverse mapping of {@link proxySlot} that is updated at the same time.
|
|
51
|
-
*
|
|
52
|
-
* @remarks
|
|
53
|
-
* Nodes in this map are hydrated (and thus "marinated" or "cooked").
|
|
54
|
-
* Nodes not in this map are known to be {@link Unhydrated}.
|
|
55
|
-
* Thus this map can be used to check if a node is hydrated.
|
|
56
|
-
*
|
|
57
|
-
* Any node not in this map must be in {@link proxyToMapTreeNode} since it contains all unhydrated nodes.
|
|
58
|
-
* It also contains "marinated" nodes which are in both.
|
|
59
|
-
*/
|
|
60
|
-
const proxyToAnchorNode = new WeakMap<TreeNode, AnchorNode>();
|
|
61
|
-
|
|
62
|
-
/**
|
|
63
|
-
* Map {@link Unhydrated} nodes and "marinated" nodes to and from their underlying MapTreeNode.
|
|
64
|
-
* These maps are populated by the TreeNode's constructor when called by a user before the node is inserted into the tree and queried.
|
|
65
|
-
*/
|
|
66
|
-
const proxyToMapTreeNode = new WeakMap<TreeNode, MapTreeNode>();
|
|
67
|
-
|
|
68
|
-
/**
|
|
69
|
-
* {@inheritdoc proxyToMapTreeNode}
|
|
70
|
-
*/
|
|
71
|
-
const mapTreeNodeToProxy = new WeakMap<MapTreeNode, TreeNode>();
|
|
72
|
-
|
|
73
|
-
/**
|
|
74
|
-
* Used by {@link anchorProxy} as an optimization to ensure that only one anchor is remembered at a time for a given anchor node
|
|
75
|
-
*/
|
|
76
|
-
const anchorForgetters = new WeakMap<TreeNode, () => void>();
|
|
77
|
-
|
|
78
|
-
/**
|
|
79
|
-
* Creates an anchor node and associates it with the given proxy.
|
|
80
|
-
* @privateRemarks
|
|
81
|
-
* Use `forgetters` to cleanup the anchor allocated by this function once the anchor is no longer needed.
|
|
82
|
-
* In practice, this happens when either the anchor node is destroyed, or another anchor to the same node is created by a new flex node.
|
|
83
|
-
*
|
|
84
|
-
* The FlexTreeNode holds a reference to the same anchor, and has a lifetime at least as long as the simple-tree,
|
|
85
|
-
* so this would be unnecessary except for the case of "marinated" nodes, which have an anchor,
|
|
86
|
-
* but might not have a FlexTreeNode.
|
|
87
|
-
* Handling this case is an optimization assuming that this extra anchor reference is cheaper than eagerly creating FlexTreeNodes.
|
|
88
|
-
*/
|
|
89
|
-
export function anchorProxy(anchors: AnchorSet, path: UpPath, proxy: TreeNode): AnchorNode {
|
|
90
|
-
assert(!anchorForgetters.has(proxy), 0x91c /* Proxy anchor should not be set twice */);
|
|
91
|
-
const anchor = anchors.track(path);
|
|
92
|
-
const anchorNode = anchors.locate(anchor) ?? fail("Expected anchor node to be present");
|
|
93
|
-
bindHydratedNodeToAnchor(proxy, anchorNode);
|
|
94
|
-
const forget = (): void => {
|
|
95
|
-
if (anchors.locate(anchor)) {
|
|
96
|
-
anchors.forget(anchor);
|
|
97
|
-
}
|
|
98
|
-
anchorForgetters.delete(proxy);
|
|
99
|
-
off();
|
|
100
|
-
};
|
|
101
|
-
anchorForgetters.set(proxy, forget);
|
|
102
|
-
const off = anchorNode.on("afterDestroy", forget);
|
|
103
|
-
return anchorNode;
|
|
104
|
-
}
|
|
105
|
-
|
|
106
9
|
/**
|
|
107
10
|
* Retrieves the flex node associated with the given target via {@link setInnerNode}.
|
|
108
11
|
* @remarks
|
|
@@ -111,161 +14,7 @@ export function anchorProxy(anchors: AnchorSet, path: UpPath, proxy: TreeNode):
|
|
|
111
14
|
* For hydrated nodes it returns a FlexTreeNode backed by the forest.
|
|
112
15
|
* Note that for "marinated" nodes, this FlexTreeNode exists and returns it: it does not return the MapTreeNode which is the current InnerNode.
|
|
113
16
|
*/
|
|
114
|
-
export function getOrCreateInnerNode(
|
|
115
|
-
treeNode: TypedNode<FlexObjectNodeSchema>,
|
|
116
|
-
allowFreed?: true,
|
|
117
|
-
): InnerNode & FlexTreeObjectNode;
|
|
118
|
-
export function getOrCreateInnerNode(treeNode: TreeArrayNode, allowFreed?: true): InnerNode;
|
|
119
|
-
export function getOrCreateInnerNode(
|
|
120
|
-
treeNode: TreeMapNode,
|
|
121
|
-
allowFreed?: true,
|
|
122
|
-
): InnerNode &
|
|
123
|
-
FlexTreeMapNode<FlexMapNodeSchema<string, FlexFieldSchema<typeof FieldKinds.optional>>>;
|
|
124
|
-
export function getOrCreateInnerNode(treeNode: TreeNode, allowFreed?: true): InnerNode;
|
|
125
17
|
export function getOrCreateInnerNode(treeNode: TreeNode, allowFreed = false): InnerNode {
|
|
126
|
-
const
|
|
127
|
-
|
|
128
|
-
// The proxy is bound to an anchor node, but it may or may not have an actual flex node yet
|
|
129
|
-
const flexNode = anchorNode.slots.get(flexTreeSlot);
|
|
130
|
-
if (flexNode !== undefined) {
|
|
131
|
-
return flexNode; // If it does have a flex node, return it...
|
|
132
|
-
} // ...otherwise, the flex node must be created
|
|
133
|
-
const context = anchorNode.anchorSet.slots.get(ContextSlot) ?? fail("missing context");
|
|
134
|
-
const cursor = context.checkout.forest.allocateCursor("getFlexNode");
|
|
135
|
-
context.checkout.forest.moveCursorToPath(anchorNode, cursor);
|
|
136
|
-
const newFlexNode = makeTree(context, cursor);
|
|
137
|
-
cursor.free();
|
|
138
|
-
// Calling this is a performance improvement, however, do this only after demand to avoid momentarily having no anchors to anchorNode
|
|
139
|
-
anchorForgetters?.get(treeNode)?.();
|
|
140
|
-
if (!allowFreed) {
|
|
141
|
-
assertFlexTreeEntityNotFreed(newFlexNode);
|
|
142
|
-
}
|
|
143
|
-
return newFlexNode;
|
|
144
|
-
}
|
|
145
|
-
|
|
146
|
-
// Unhydrated case
|
|
147
|
-
return proxyToMapTreeNode.get(treeNode) ?? fail("Expected raw tree node for proxy");
|
|
148
|
-
}
|
|
149
|
-
|
|
150
|
-
/**
|
|
151
|
-
* For "cooked" nodes this is a FlexTreeNode thats a projection of forest content.
|
|
152
|
-
* For {@link Unhydrated} nodes this is a MapTreeNode.
|
|
153
|
-
* For "marinated" nodes, some code (ex: getOrCreateInnerNode) returns the FlexTreeNode thats a projection of forest content, and some code (ex: tryGetInnerNode) returns undefined.
|
|
154
|
-
*
|
|
155
|
-
* @remarks
|
|
156
|
-
* Currently MapTreeNode extends FlexTreeNode, and most code which can work with either just uses FlexTreeNode.
|
|
157
|
-
* TODO: Code should be migrating toward using this type to distinguish to two use-cases.
|
|
158
|
-
*
|
|
159
|
-
* TODO: The inconsistent handling of "marinated" cases should be cleaned up.
|
|
160
|
-
* Maybe getOrCreateInnerNode should cook marinated nodes so they have a proper InnerNode?
|
|
161
|
-
*/
|
|
162
|
-
export type InnerNode = FlexTreeNode | MapTreeNode;
|
|
163
|
-
|
|
164
|
-
/**
|
|
165
|
-
* Retrieves the InnerNode associated with the given target via {@link setInnerNode}, if any.
|
|
166
|
-
* @remarks
|
|
167
|
-
* If `target` is a unhydrated node, returns its MapTreeNode.
|
|
168
|
-
* If `target` is a cooked node (or marinated but a FlexTreeNode exists) returns the FlexTreeNode.
|
|
169
|
-
* If the target is not a node, or a marinated node with no FlexTreeNode for its anchor, returns undefined.
|
|
170
|
-
*/
|
|
171
|
-
export function tryGetInnerNode(target: unknown): InnerNode | undefined {
|
|
172
|
-
// Calling 'WeakMap.get()' with primitives (numbers, strings, etc.) will return undefined.
|
|
173
|
-
// This is in contrast to 'WeakMap.set()', which will throw a TypeError if given a non-object key.
|
|
174
|
-
const anchorNode = proxyToAnchorNode.get(target as TreeNode);
|
|
175
|
-
// Hydrated node case
|
|
176
|
-
if (anchorNode !== undefined) {
|
|
177
|
-
const flex = anchorNode.slots.get(flexTreeSlot);
|
|
178
|
-
if (flex !== undefined) {
|
|
179
|
-
// Cooked, or possible Marinated but something else cased the flex tree node to exist.
|
|
180
|
-
return flex;
|
|
181
|
-
}
|
|
182
|
-
// Marinated case
|
|
183
|
-
assert(
|
|
184
|
-
proxyToMapTreeNode.get(target as TreeNode) === undefined,
|
|
185
|
-
0xa05 /* marinated nodes should not have MapTreeNodes */,
|
|
186
|
-
);
|
|
187
|
-
return undefined;
|
|
188
|
-
}
|
|
189
|
-
// Unhydrated node or not a node case:
|
|
190
|
-
return proxyToMapTreeNode.get(target as TreeNode);
|
|
191
|
-
}
|
|
192
|
-
|
|
193
|
-
/**
|
|
194
|
-
* Retrieves the proxy associated with the given flex node via {@link setInnerNode}, if any.
|
|
195
|
-
*/
|
|
196
|
-
export function tryGetCachedTreeNode(flexNode: InnerNode): TreeNode | undefined {
|
|
197
|
-
if (isMapTreeNode(flexNode)) {
|
|
198
|
-
// Unhydrated case
|
|
199
|
-
return mapTreeNodeToProxy.get(flexNode);
|
|
200
|
-
}
|
|
201
|
-
// Hydrated case
|
|
202
|
-
return flexNode.anchorNode.slots.get(proxySlot);
|
|
203
|
-
}
|
|
204
|
-
|
|
205
|
-
/**
|
|
206
|
-
* Associate the given TreeNode and the given flex node.
|
|
207
|
-
* @returns The node.
|
|
208
|
-
* @remarks
|
|
209
|
-
* This creates a 1:1 mapping between the tree node and InnerNode.
|
|
210
|
-
* Either can be retrieved from the other via {@link getOrCreateInnerNode}/{@link tryGetInnerNode} or {@link tryGetCachedTreeNode}.
|
|
211
|
-
* If the given proxy is already mapped to an flex node, the existing mapping will be overwritten.
|
|
212
|
-
* If the given flex node is already mapped to a different proxy, this function will fail.
|
|
213
|
-
*/
|
|
214
|
-
export function setInnerNode<TNode extends TreeNode>(
|
|
215
|
-
node: TNode,
|
|
216
|
-
innerNode: InnerNode,
|
|
217
|
-
): TNode {
|
|
218
|
-
const existingFlexNode = proxyToAnchorNode.get(node)?.slots.get(flexTreeSlot);
|
|
219
|
-
assert(
|
|
220
|
-
existingFlexNode === undefined,
|
|
221
|
-
0x91d /* Cannot associate a flex node with multiple targets */,
|
|
222
|
-
);
|
|
223
|
-
if (isMapTreeNode(innerNode)) {
|
|
224
|
-
// Unhydrated case
|
|
225
|
-
proxyToMapTreeNode.set(node, innerNode);
|
|
226
|
-
mapTreeNodeToProxy.set(innerNode, node);
|
|
227
|
-
} else {
|
|
228
|
-
// Hydrated case
|
|
229
|
-
assert(
|
|
230
|
-
tryGetCachedTreeNode(innerNode) === undefined,
|
|
231
|
-
0x7f5 /* Cannot associate an flex node with multiple targets */,
|
|
232
|
-
);
|
|
233
|
-
bindHydratedNodeToAnchor(node, innerNode.anchorNode);
|
|
234
|
-
}
|
|
235
|
-
return node;
|
|
236
|
-
}
|
|
237
|
-
|
|
238
|
-
/**
|
|
239
|
-
* Bi-directionally associates the given hydrated TreeNode to the given anchor node.
|
|
240
|
-
* @remarks Cleans up mappings to {@link MapTreeNode} - it is assumed that they are no longer needed once the proxy has an anchor node.
|
|
241
|
-
*/
|
|
242
|
-
function bindHydratedNodeToAnchor(node: TreeNode, anchorNode: AnchorNode): void {
|
|
243
|
-
// If the proxy currently has a raw node, forget it
|
|
244
|
-
const mapTreeNode = proxyToMapTreeNode.get(node);
|
|
245
|
-
if (mapTreeNode !== undefined) {
|
|
246
|
-
proxyToMapTreeNode.delete(node);
|
|
247
|
-
mapTreeNodeToProxy.delete(mapTreeNode);
|
|
248
|
-
}
|
|
249
|
-
// Once a proxy has been associated with an anchor node, it should never change to another anchor node
|
|
250
|
-
assert(
|
|
251
|
-
!proxyToAnchorNode.has(node),
|
|
252
|
-
0x91e /* Proxy has already been bound to a different anchor node */,
|
|
253
|
-
);
|
|
254
|
-
proxyToAnchorNode.set(node, anchorNode);
|
|
255
|
-
// However, it's fine for an anchor node to rotate through different proxies when the content at that place in the tree is replaced.
|
|
256
|
-
anchorNode.slots.set(proxySlot, node);
|
|
257
|
-
getKernel(node).hydrate(anchorNode);
|
|
258
|
-
}
|
|
259
|
-
|
|
260
|
-
/**
|
|
261
|
-
* Given a node's schema, return the corresponding object in the proxy-based API.
|
|
262
|
-
*/
|
|
263
|
-
type TypedNode<TSchema extends FlexTreeNodeSchema> = TreeNode & WithType<TSchema["name"]>;
|
|
264
|
-
|
|
265
|
-
export function tryDisposeTreeNode(anchorNode: AnchorNode): void {
|
|
266
|
-
const treeNode = anchorNode.slots.get(proxySlot);
|
|
267
|
-
if (treeNode !== undefined) {
|
|
268
|
-
const kernel = getKernel(treeNode);
|
|
269
|
-
kernel.dispose();
|
|
270
|
-
}
|
|
18
|
+
const kernel = getKernel(treeNode);
|
|
19
|
+
return kernel.getOrCreateInnerNode(allowFreed);
|
|
271
20
|
}
|
|
@@ -21,7 +21,7 @@ import type {
|
|
|
21
21
|
TreeNodeSchemaClass,
|
|
22
22
|
} from "./core/index.js";
|
|
23
23
|
import type { FieldKey } from "../core/index.js";
|
|
24
|
-
import type { InsertableContent } from "./
|
|
24
|
+
import type { InsertableContent } from "./toMapTree.js";
|
|
25
25
|
|
|
26
26
|
/**
|
|
27
27
|
* Returns true if the given schema is a {@link TreeNodeSchemaClass}, or otherwise false if it is a {@link TreeNodeSchemaNonClass}.
|
|
@@ -76,15 +76,15 @@ export enum FieldKind {
|
|
|
76
76
|
}
|
|
77
77
|
|
|
78
78
|
/**
|
|
79
|
-
* Maps from a
|
|
79
|
+
* Maps from a property key to its corresponding {@link FieldProps.key | stored key} for the provided
|
|
80
80
|
* {@link ImplicitFieldSchema | field schema}.
|
|
81
81
|
*
|
|
82
82
|
* @remarks
|
|
83
83
|
* If an explicit stored key was specified in the schema, it will be used.
|
|
84
|
-
* Otherwise, the stored key is the same as the
|
|
84
|
+
* Otherwise, the stored key is the same as the property key.
|
|
85
85
|
*/
|
|
86
|
-
export function getStoredKey(
|
|
87
|
-
return brand(getExplicitStoredKey(fieldSchema) ??
|
|
86
|
+
export function getStoredKey(propertyKey: string, fieldSchema: ImplicitFieldSchema): FieldKey {
|
|
87
|
+
return brand(getExplicitStoredKey(fieldSchema) ?? propertyKey);
|
|
88
88
|
}
|
|
89
89
|
|
|
90
90
|
/**
|
|
@@ -98,9 +98,12 @@ export function getExplicitStoredKey(fieldSchema: ImplicitFieldSchema): string |
|
|
|
98
98
|
/**
|
|
99
99
|
* Additional information to provide to a {@link FieldSchema}.
|
|
100
100
|
*
|
|
101
|
+
* @typeParam TCustomMetadata - Custom metadata properties to associate with the field.
|
|
102
|
+
* See {@link FieldSchemaMetadata.custom}.
|
|
103
|
+
*
|
|
101
104
|
* @public
|
|
102
105
|
*/
|
|
103
|
-
export interface FieldProps {
|
|
106
|
+
export interface FieldProps<TCustomMetadata = unknown> {
|
|
104
107
|
/**
|
|
105
108
|
* The unique identifier of a field, used in the persisted form of the tree.
|
|
106
109
|
*
|
|
@@ -152,12 +155,19 @@ export interface FieldProps {
|
|
|
152
155
|
* @defaultValue If not specified, the key that is persisted is the property key that was specified in the schema.
|
|
153
156
|
*/
|
|
154
157
|
readonly key?: string;
|
|
158
|
+
|
|
155
159
|
/**
|
|
156
160
|
* A default provider used for fields which were not provided any values.
|
|
157
161
|
* @privateRemarks
|
|
158
162
|
* We are using an erased type here, as we want to expose this API but `InsertableContent` and `NodeKeyManager` are not public.
|
|
159
163
|
*/
|
|
160
164
|
readonly defaultProvider?: DefaultProvider;
|
|
165
|
+
|
|
166
|
+
/**
|
|
167
|
+
* Optional metadata to associate with the field.
|
|
168
|
+
* @remarks Note: this metadata is not persisted in the document.
|
|
169
|
+
*/
|
|
170
|
+
readonly metadata?: FieldSchemaMetadata<TCustomMetadata>;
|
|
161
171
|
}
|
|
162
172
|
|
|
163
173
|
/**
|
|
@@ -187,7 +197,7 @@ export function isConstant(
|
|
|
187
197
|
* Provides a default value for a field.
|
|
188
198
|
* @remarks
|
|
189
199
|
* If present in a `FieldSchema`, when constructing new tree content that field can be omitted, and a default will be provided.
|
|
190
|
-
* @sealed @public
|
|
200
|
+
* @system @sealed @public
|
|
191
201
|
*/
|
|
192
202
|
export interface DefaultProvider extends ErasedType<"@fluidframework/tree.FieldProvider"> {}
|
|
193
203
|
|
|
@@ -199,17 +209,44 @@ export function getDefaultProvider(input: FieldProvider): DefaultProvider {
|
|
|
199
209
|
return input as unknown as DefaultProvider;
|
|
200
210
|
}
|
|
201
211
|
|
|
212
|
+
/**
|
|
213
|
+
* Metadata associated with a {@link FieldSchema}.
|
|
214
|
+
*
|
|
215
|
+
* @remarks Specified via {@link FieldProps.metadata}.
|
|
216
|
+
*
|
|
217
|
+
* @sealed
|
|
218
|
+
* @public
|
|
219
|
+
*/
|
|
220
|
+
export interface FieldSchemaMetadata<TCustomMetadata = unknown> {
|
|
221
|
+
/**
|
|
222
|
+
* User-defined metadata.
|
|
223
|
+
*/
|
|
224
|
+
custom?: TCustomMetadata;
|
|
225
|
+
|
|
226
|
+
/**
|
|
227
|
+
* The description of the field.
|
|
228
|
+
*
|
|
229
|
+
* @remarks
|
|
230
|
+
*
|
|
231
|
+
* If provided, will be used by the system in scenarios where a description of the field is useful.
|
|
232
|
+
* E.g., when converting a field schema to {@link https://json-schema.org/ | JSON Schema}, this description will be
|
|
233
|
+
* used as the `description` field.
|
|
234
|
+
*/
|
|
235
|
+
description?: string | undefined;
|
|
236
|
+
}
|
|
237
|
+
|
|
202
238
|
/**
|
|
203
239
|
* Package internal construction API.
|
|
204
240
|
*/
|
|
205
241
|
export let createFieldSchema: <
|
|
206
242
|
Kind extends FieldKind = FieldKind,
|
|
207
243
|
Types extends ImplicitAllowedTypes = ImplicitAllowedTypes,
|
|
244
|
+
TCustomMetadata = unknown,
|
|
208
245
|
>(
|
|
209
246
|
kind: Kind,
|
|
210
247
|
allowedTypes: Types,
|
|
211
|
-
props?: FieldProps
|
|
212
|
-
) => FieldSchema<Kind, Types>;
|
|
248
|
+
props?: FieldProps<TCustomMetadata>,
|
|
249
|
+
) => FieldSchema<Kind, Types, TCustomMetadata>;
|
|
213
250
|
|
|
214
251
|
/**
|
|
215
252
|
* All policy for a specific field,
|
|
@@ -220,20 +257,26 @@ export let createFieldSchema: <
|
|
|
220
257
|
* @privateRemarks
|
|
221
258
|
* Public access to the constructor is removed to prevent creating expressible but unsupported (or not stable) configurations.
|
|
222
259
|
* {@link createFieldSchema} can be used internally to create instances.
|
|
260
|
+
*
|
|
261
|
+
* @typeParam TCustomMetadata - Custom metadata properties to associate with the field.
|
|
262
|
+
* See {@link FieldSchemaMetadata.custom}.
|
|
263
|
+
*
|
|
223
264
|
* @sealed @public
|
|
224
265
|
*/
|
|
225
266
|
export class FieldSchema<
|
|
226
267
|
out Kind extends FieldKind = FieldKind,
|
|
227
268
|
out Types extends ImplicitAllowedTypes = ImplicitAllowedTypes,
|
|
269
|
+
out TCustomMetadata = unknown,
|
|
228
270
|
> {
|
|
229
271
|
static {
|
|
230
272
|
createFieldSchema = <
|
|
231
273
|
Kind2 extends FieldKind = FieldKind,
|
|
232
274
|
Types2 extends ImplicitAllowedTypes = ImplicitAllowedTypes,
|
|
275
|
+
TCustomMetadata2 = unknown,
|
|
233
276
|
>(
|
|
234
277
|
kind: Kind2,
|
|
235
278
|
allowedTypes: Types2,
|
|
236
|
-
props?: FieldProps
|
|
279
|
+
props?: FieldProps<TCustomMetadata2>,
|
|
237
280
|
) => new FieldSchema(kind, allowedTypes, props);
|
|
238
281
|
}
|
|
239
282
|
/**
|
|
@@ -257,6 +300,13 @@ export class FieldSchema<
|
|
|
257
300
|
*/
|
|
258
301
|
public readonly requiresValue: boolean;
|
|
259
302
|
|
|
303
|
+
/**
|
|
304
|
+
* {@inheritDoc FieldProps.metadata}
|
|
305
|
+
*/
|
|
306
|
+
public get metadata(): FieldSchemaMetadata<TCustomMetadata> | undefined {
|
|
307
|
+
return this.props?.metadata;
|
|
308
|
+
}
|
|
309
|
+
|
|
260
310
|
private constructor(
|
|
261
311
|
/**
|
|
262
312
|
* The {@link https://en.wikipedia.org/wiki/Kind_(type_theory) | kind } of this field.
|
|
@@ -270,7 +320,7 @@ export class FieldSchema<
|
|
|
270
320
|
/**
|
|
271
321
|
* Optional properties associated with the field.
|
|
272
322
|
*/
|
|
273
|
-
public readonly props?: FieldProps
|
|
323
|
+
public readonly props?: FieldProps<TCustomMetadata>,
|
|
274
324
|
) {
|
|
275
325
|
this.lazyTypes = new Lazy(() => normalizeAllowedTypes(this.allowedTypes));
|
|
276
326
|
// TODO: optional fields should (by default) get a default provider that returns undefined, removing the need to special case them here:
|
|
@@ -360,7 +410,7 @@ export type InsertableTreeFieldFromImplicitField<
|
|
|
360
410
|
/**
|
|
361
411
|
* Suitable for output.
|
|
362
412
|
* For input must error on side of excluding undefined instead.
|
|
363
|
-
* @public
|
|
413
|
+
* @system @public
|
|
364
414
|
*/
|
|
365
415
|
export type ApplyKind<T, Kind extends FieldKind, DefaultsAreOptional extends boolean> = {
|
|
366
416
|
[FieldKind.Required]: T;
|
|
@@ -420,7 +470,7 @@ export type InsertableTypedNode<T extends TreeNodeSchema> =
|
|
|
420
470
|
* This could be changed if needed.
|
|
421
471
|
*
|
|
422
472
|
* These factory functions can also take a FlexTreeNode, but this is not exposed in the public facing types.
|
|
423
|
-
* @public
|
|
473
|
+
* @system @public
|
|
424
474
|
*/
|
|
425
475
|
export type NodeBuilderData<T extends TreeNodeSchema> = T extends TreeNodeSchema<
|
|
426
476
|
string,
|
|
@@ -3,11 +3,15 @@
|
|
|
3
3
|
* Licensed under the MIT License.
|
|
4
4
|
*/
|
|
5
5
|
|
|
6
|
-
/* eslint-disable import/no-internal-modules */
|
|
7
6
|
import { assert, unreachableCase } from "@fluidframework/core-utils/internal";
|
|
8
7
|
import { UsageError } from "@fluidframework/telemetry-utils/internal";
|
|
9
8
|
|
|
10
|
-
import {
|
|
9
|
+
import {
|
|
10
|
+
EmptyKey,
|
|
11
|
+
type TreeNodeSchemaIdentifier,
|
|
12
|
+
type TreeNodeStoredSchema,
|
|
13
|
+
type TreeStoredSchema,
|
|
14
|
+
} from "../core/index.js";
|
|
11
15
|
import {
|
|
12
16
|
FieldKinds,
|
|
13
17
|
type FlexAllowedTypes,
|
|
@@ -19,9 +23,12 @@ import {
|
|
|
19
23
|
type FlexTreeSchema,
|
|
20
24
|
TreeNodeSchemaBase,
|
|
21
25
|
defaultSchemaPolicy,
|
|
26
|
+
intoStoredSchemaCollection,
|
|
22
27
|
schemaIsLeaf,
|
|
23
28
|
} from "../feature-libraries/index.js";
|
|
24
|
-
|
|
29
|
+
// TODO: once flex schema is gone, this code can move into simple-tree
|
|
30
|
+
// eslint-disable-next-line import/no-internal-modules
|
|
31
|
+
import { normalizeFlexListEager } from "../feature-libraries/typed-schema/index.js";
|
|
25
32
|
import { brand, fail, isReadonlyArray, mapIterable } from "../util/index.js";
|
|
26
33
|
import {
|
|
27
34
|
cachedFlexSchemaFromClassSchema,
|
|
@@ -78,6 +85,17 @@ export function toFlexSchema(root: ImplicitFieldSchema): FlexTreeSchema {
|
|
|
78
85
|
return typed;
|
|
79
86
|
}
|
|
80
87
|
|
|
88
|
+
/**
|
|
89
|
+
* Converts a {@link ImplicitFieldSchema} into a {@link TreeStoredSchema}.
|
|
90
|
+
*/
|
|
91
|
+
export function toStoredSchema(root: ImplicitFieldSchema): TreeStoredSchema {
|
|
92
|
+
const flex = toFlexSchema(root);
|
|
93
|
+
return {
|
|
94
|
+
rootFieldSchema: flex.rootFieldSchema.stored,
|
|
95
|
+
...intoStoredSchemaCollection(flex),
|
|
96
|
+
};
|
|
97
|
+
}
|
|
98
|
+
|
|
81
99
|
/**
|
|
82
100
|
* Return a flex schema for the provided class schema.
|
|
83
101
|
*
|
|
@@ -88,6 +106,15 @@ export function getFlexSchema(root: TreeNodeSchema): FlexTreeNodeSchema {
|
|
|
88
106
|
return treeSchema.rootFieldSchema.monomorphicChildType ?? fail("root should be monomorphic");
|
|
89
107
|
}
|
|
90
108
|
|
|
109
|
+
/**
|
|
110
|
+
* Return a stored schema for the provided class schema.
|
|
111
|
+
*
|
|
112
|
+
* This also has the side effect of populating the cached view schema on the class based schema.
|
|
113
|
+
*/
|
|
114
|
+
export function getStoredSchema(root: TreeNodeSchema): TreeNodeStoredSchema {
|
|
115
|
+
return getFlexSchema(root).stored;
|
|
116
|
+
}
|
|
117
|
+
|
|
91
118
|
/**
|
|
92
119
|
* Normalizes an {@link ImplicitFieldSchema} into a {@link TreeFieldSchema}.
|
|
93
120
|
*/
|
|
@@ -172,7 +199,13 @@ export function convertNodeSchema(
|
|
|
172
199
|
);
|
|
173
200
|
// Lookup of cached schema is done here instead of before since walking the schema recursively to populate schemaMap is still required.
|
|
174
201
|
const cached = cachedFlexSchemaFromClassSchema(schema);
|
|
175
|
-
out =
|
|
202
|
+
out =
|
|
203
|
+
cached ??
|
|
204
|
+
FlexMapNodeSchema.create(
|
|
205
|
+
builder,
|
|
206
|
+
brand<TreeNodeSchemaIdentifier>(schema.identifier),
|
|
207
|
+
field,
|
|
208
|
+
);
|
|
176
209
|
break;
|
|
177
210
|
}
|
|
178
211
|
case NodeKind.Array: {
|
|
@@ -192,10 +225,10 @@ export function convertNodeSchema(
|
|
|
192
225
|
case NodeKind.Object: {
|
|
193
226
|
const info = schema.info as Record<string, ImplicitFieldSchema>;
|
|
194
227
|
const fields: Record<string, FlexFieldSchema> = Object.create(null);
|
|
195
|
-
for (const [
|
|
228
|
+
for (const [propertyKey, implicitFieldSchema] of Object.entries(info)) {
|
|
196
229
|
// If a `stored key` was provided, use it as the key in the flex schema.
|
|
197
|
-
// Otherwise, use the
|
|
198
|
-
const flexKey = getStoredKey(
|
|
230
|
+
// Otherwise, use the property key.
|
|
231
|
+
const flexKey = getStoredKey(propertyKey, implicitFieldSchema);
|
|
199
232
|
|
|
200
233
|
// This code has to be careful to avoid assigning to __proto__ or similar built-in fields.
|
|
201
234
|
Object.defineProperty(fields, flexKey, {
|