@fluidframework/tree 2.3.0-288113 → 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 -42
- package/api-report/tree.beta.api.md +21 -11
- 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 +8 -13
- package/dist/alpha.d.ts +102 -0
- package/dist/beta.d.ts +6 -2
- 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.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 +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 +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 +83 -0
- package/dist/packageVersion.d.ts +1 -1
- package/dist/packageVersion.d.ts.map +1 -1
- package/dist/packageVersion.js +1 -1
- package/dist/packageVersion.js.map +1 -1
- package/dist/public.d.ts +0 -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 +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} +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 +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 +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 -2
- 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.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 +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 +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 +83 -0
- package/lib/packageVersion.d.ts +1 -1
- package/lib/packageVersion.d.ts.map +1 -1
- package/lib/packageVersion.js +1 -1
- package/lib/packageVersion.js.map +1 -1
- package/lib/public.d.ts +0 -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 +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} +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 +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 +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 +57 -25
- 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 +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 +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 +4 -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 +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 +32 -23
- 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 +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 +29 -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 +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 -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/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
|
@@ -12,15 +12,31 @@ import {
|
|
|
12
12
|
type Off,
|
|
13
13
|
} from "../../events/index.js";
|
|
14
14
|
import type { TreeNode, Unhydrated } from "./types.js";
|
|
15
|
-
import type { AnchorEvents, AnchorNode } from "../../core/index.js";
|
|
16
15
|
import {
|
|
16
|
+
anchorSlot,
|
|
17
|
+
type AnchorEvents,
|
|
18
|
+
type AnchorNode,
|
|
19
|
+
type AnchorSet,
|
|
20
|
+
type UpPath,
|
|
21
|
+
} from "../../core/index.js";
|
|
22
|
+
import {
|
|
23
|
+
assertFlexTreeEntityNotFreed,
|
|
24
|
+
ContextSlot,
|
|
17
25
|
flexTreeSlot,
|
|
26
|
+
isFlexTreeNode,
|
|
18
27
|
isFreedSymbol,
|
|
28
|
+
isMapTreeNode,
|
|
19
29
|
LazyEntity,
|
|
20
30
|
TreeStatus,
|
|
21
31
|
treeStatusFromAnchorCache,
|
|
32
|
+
type FlexTreeNode,
|
|
33
|
+
type MapTreeNode,
|
|
22
34
|
} from "../../feature-libraries/index.js";
|
|
23
35
|
import type { TreeNodeSchema } from "./treeNodeSchema.js";
|
|
36
|
+
import { fail } from "../../util/index.js";
|
|
37
|
+
// TODO: decide how to deal with dependencies on flex-tree implementation.
|
|
38
|
+
// eslint-disable-next-line import/no-internal-modules
|
|
39
|
+
import { makeTree } from "../../feature-libraries/flex-tree/lazyNode.js";
|
|
24
40
|
|
|
25
41
|
const treeNodeToKernel = new WeakMap<TreeNode, TreeNodeKernel>();
|
|
26
42
|
|
|
@@ -72,6 +88,12 @@ export class TreeNodeKernel implements Listenable<KernelEvents> {
|
|
|
72
88
|
/**
|
|
73
89
|
* Generation number which is incremented any time we have an edit on the node.
|
|
74
90
|
* Used during iteration to make sure there has been no edits that were concurrently made.
|
|
91
|
+
* @remarks
|
|
92
|
+
* This is updated monotonically by this class when edits are applied.
|
|
93
|
+
* TODO: update this when applying edits to unhydrated trees.
|
|
94
|
+
*
|
|
95
|
+
* If TypeScript supported making this immutable from outside the class without making it readonly from inside, that would be used here,
|
|
96
|
+
* but they only way to do that is add a separate public accessor and make it private, which was deemed not worth the boilerplate, runtime overhead and bundle size.
|
|
75
97
|
*/
|
|
76
98
|
public generationNumber: number = 0;
|
|
77
99
|
|
|
@@ -83,7 +105,7 @@ export class TreeNodeKernel implements Listenable<KernelEvents> {
|
|
|
83
105
|
/**
|
|
84
106
|
* Events registered before hydration.
|
|
85
107
|
* @remarks
|
|
86
|
-
*
|
|
108
|
+
* As an optimization these are allocated lazily as they are usually unused.
|
|
87
109
|
*/
|
|
88
110
|
#preHydrationEvents?: Listenable<KernelEvents> &
|
|
89
111
|
IEmitter<KernelEvents> &
|
|
@@ -96,7 +118,7 @@ export class TreeNodeKernel implements Listenable<KernelEvents> {
|
|
|
96
118
|
* This design avoids allocating `#preHydrationEvents` if unneeded.
|
|
97
119
|
*
|
|
98
120
|
* This design also avoids extra forwarding overhead for events from anchorNode and also
|
|
99
|
-
* avoids registering for events that
|
|
121
|
+
* avoids registering for events that are unneeded.
|
|
100
122
|
* This means optimizations like skipping processing data in subtrees where no subtreeChanged events are subscribed to would be able to work,
|
|
101
123
|
* since this code does not unconditionally subscribe to those events (like a design simply forwarding all events would).
|
|
102
124
|
*/
|
|
@@ -111,24 +133,50 @@ export class TreeNodeKernel implements Listenable<KernelEvents> {
|
|
|
111
133
|
|
|
112
134
|
/**
|
|
113
135
|
* Create a TreeNodeKernel which can be looked up with {@link getKernel}.
|
|
136
|
+
*
|
|
137
|
+
* @param innerNode - When unhydrated/raw or marinated the MapTreeNode. FlexTreeNode when cooked.
|
|
114
138
|
* @remarks
|
|
115
139
|
* Exactly one kernel per TreeNode should be created.
|
|
116
140
|
*/
|
|
117
141
|
public constructor(
|
|
118
142
|
public readonly node: TreeNode,
|
|
119
143
|
public readonly schema: TreeNodeSchema,
|
|
144
|
+
private innerNode: InnerNode,
|
|
120
145
|
) {
|
|
121
146
|
assert(!treeNodeToKernel.has(node), 0xa1a /* only one kernel per node can be made */);
|
|
122
147
|
treeNodeToKernel.set(node, this);
|
|
148
|
+
|
|
149
|
+
if (isMapTreeNode(innerNode)) {
|
|
150
|
+
// Unhydrated case
|
|
151
|
+
mapTreeNodeToProxy.set(innerNode, node);
|
|
152
|
+
} else {
|
|
153
|
+
// Hydrated case
|
|
154
|
+
assert(
|
|
155
|
+
!innerNode.anchorNode.slots.has(proxySlot),
|
|
156
|
+
0x7f5 /* Cannot associate an flex node with multiple simple-tree nodes */,
|
|
157
|
+
);
|
|
158
|
+
this.hydrate(innerNode.anchorNode);
|
|
159
|
+
}
|
|
123
160
|
}
|
|
124
161
|
|
|
125
162
|
/**
|
|
126
163
|
* Transition from {@link Unhydrated} to hydrated.
|
|
164
|
+
* Bi-directionally associates the given hydrated TreeNode to the given anchor node.
|
|
127
165
|
* @remarks
|
|
128
166
|
* Happens at most once for any given node.
|
|
167
|
+
* Cleans up mappings to {@link MapTreeNode} - it is assumed that they are no longer needed once the proxy has an anchor node.
|
|
129
168
|
*/
|
|
130
169
|
public hydrate(anchorNode: AnchorNode): void {
|
|
131
|
-
assert(!this.disposed,
|
|
170
|
+
assert(!this.disposed, 0xa2a /* cannot hydrate a disposed node */);
|
|
171
|
+
assert(this.#hydrated === undefined, 0xa2b /* hydration should only happen once */);
|
|
172
|
+
|
|
173
|
+
// If the this node is raw and thus has a MapTreeNode, forget it:
|
|
174
|
+
if (isMapTreeNode(this.innerNode)) {
|
|
175
|
+
mapTreeNodeToProxy.delete(this.innerNode);
|
|
176
|
+
}
|
|
177
|
+
|
|
178
|
+
// However, it's fine for an anchor node to rotate through different proxies when the content at that place in the tree is replaced.
|
|
179
|
+
anchorNode.slots.set(proxySlot, this.node);
|
|
132
180
|
|
|
133
181
|
this.#hydrated = {
|
|
134
182
|
anchorNode,
|
|
@@ -158,7 +206,7 @@ export class TreeNodeKernel implements Listenable<KernelEvents> {
|
|
|
158
206
|
}
|
|
159
207
|
|
|
160
208
|
public isHydrated(): boolean {
|
|
161
|
-
assert(!this.disposed,
|
|
209
|
+
assert(!this.disposed, 0xa2c /* cannot use a disposed node */);
|
|
162
210
|
return this.#hydrated !== undefined;
|
|
163
211
|
}
|
|
164
212
|
|
|
@@ -193,8 +241,153 @@ export class TreeNodeKernel implements Listenable<KernelEvents> {
|
|
|
193
241
|
}
|
|
194
242
|
// TODO: go to the context and remove myself from withAnchors
|
|
195
243
|
}
|
|
244
|
+
|
|
245
|
+
/**
|
|
246
|
+
* Retrieves the flex node associated with the given target via {@link setInnerNode}.
|
|
247
|
+
* @remarks
|
|
248
|
+
* For {@link Unhydrated} nodes, this returns the MapTreeNode.
|
|
249
|
+
*
|
|
250
|
+
* For hydrated nodes it returns a FlexTreeNode backed by the forest.
|
|
251
|
+
* Note that for "marinated" nodes, this FlexTreeNode exists and returns it: it does not return the MapTreeNode which is the current InnerNode.
|
|
252
|
+
*/
|
|
253
|
+
public getOrCreateInnerNode(allowFreed = false): InnerNode {
|
|
254
|
+
if (!isMapTreeNode(this.innerNode)) {
|
|
255
|
+
// Cooked case
|
|
256
|
+
return this.innerNode;
|
|
257
|
+
}
|
|
258
|
+
|
|
259
|
+
if (this.#hydrated === undefined) {
|
|
260
|
+
// Unhydrated case
|
|
261
|
+
return this.innerNode;
|
|
262
|
+
}
|
|
263
|
+
|
|
264
|
+
// Marinated case -> cooked
|
|
265
|
+
const anchorNode = this.#hydrated.anchorNode;
|
|
266
|
+
// The proxy is bound to an anchor node, but it may or may not have an actual flex node yet
|
|
267
|
+
const flexNode = anchorNode.slots.get(flexTreeSlot);
|
|
268
|
+
if (flexNode !== undefined) {
|
|
269
|
+
this.innerNode = flexNode;
|
|
270
|
+
return flexNode; // If it does have a flex node, return it...
|
|
271
|
+
} // ...otherwise, the flex node must be created
|
|
272
|
+
const context = anchorNode.anchorSet.slots.get(ContextSlot) ?? fail("missing context");
|
|
273
|
+
const cursor = context.checkout.forest.allocateCursor("getFlexNode");
|
|
274
|
+
context.checkout.forest.moveCursorToPath(anchorNode, cursor);
|
|
275
|
+
const newFlexNode = makeTree(context, cursor);
|
|
276
|
+
cursor.free();
|
|
277
|
+
this.innerNode = newFlexNode;
|
|
278
|
+
// Calling this is a performance improvement, however, do this only after demand to avoid momentarily having no anchors to anchorNode
|
|
279
|
+
anchorForgetters?.get(this.node)?.();
|
|
280
|
+
if (!allowFreed) {
|
|
281
|
+
assertFlexTreeEntityNotFreed(newFlexNode);
|
|
282
|
+
}
|
|
283
|
+
return newFlexNode;
|
|
284
|
+
}
|
|
285
|
+
|
|
286
|
+
/**
|
|
287
|
+
* Creates an anchor node and associates it with the given proxy.
|
|
288
|
+
* @privateRemarks
|
|
289
|
+
* Use `forgetters` to cleanup the anchor allocated by this function once the anchor is no longer needed.
|
|
290
|
+
* 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.
|
|
291
|
+
*
|
|
292
|
+
* The FlexTreeNode holds a reference to the same anchor, and has a lifetime at least as long as the simple-tree,
|
|
293
|
+
* so this would be unnecessary except for the case of "marinated" nodes, which have an anchor,
|
|
294
|
+
* but might not have a FlexTreeNode.
|
|
295
|
+
* Handling this case is an optimization assuming that this extra anchor reference is cheaper than eagerly creating FlexTreeNodes.
|
|
296
|
+
*/
|
|
297
|
+
public anchorProxy(anchors: AnchorSet, path: UpPath): AnchorNode {
|
|
298
|
+
assert(!anchorForgetters.has(this.node), 0x91c /* Proxy anchor should not be set twice */);
|
|
299
|
+
const anchor = anchors.track(path);
|
|
300
|
+
const anchorNode = anchors.locate(anchor) ?? fail("Expected anchor node to be present");
|
|
301
|
+
this.hydrate(anchorNode);
|
|
302
|
+
const forget = (): void => {
|
|
303
|
+
if (anchors.locate(anchor)) {
|
|
304
|
+
anchors.forget(anchor);
|
|
305
|
+
}
|
|
306
|
+
anchorForgetters.delete(this.node);
|
|
307
|
+
off();
|
|
308
|
+
};
|
|
309
|
+
anchorForgetters.set(this.node, forget);
|
|
310
|
+
const off = anchorNode.on("afterDestroy", forget);
|
|
311
|
+
return anchorNode;
|
|
312
|
+
}
|
|
313
|
+
|
|
314
|
+
/**
|
|
315
|
+
* Retrieves the InnerNode associated with the given target via {@link setInnerNode}, if any.
|
|
316
|
+
* @remarks
|
|
317
|
+
* If `target` is a unhydrated node, returns its MapTreeNode.
|
|
318
|
+
* If `target` is a cooked node (or marinated but a FlexTreeNode exists) returns the FlexTreeNode.
|
|
319
|
+
* If the target is not a node, or a marinated node with no FlexTreeNode for its anchor, returns undefined.
|
|
320
|
+
*/
|
|
321
|
+
public tryGetInnerNode(): InnerNode | undefined {
|
|
322
|
+
if (isFlexTreeNode(this.innerNode)) {
|
|
323
|
+
// Cooked case
|
|
324
|
+
return this.innerNode;
|
|
325
|
+
}
|
|
326
|
+
|
|
327
|
+
if (this.#hydrated === undefined) {
|
|
328
|
+
// Unhydrated case
|
|
329
|
+
return this.innerNode;
|
|
330
|
+
}
|
|
331
|
+
|
|
332
|
+
// Marinated case -> cooked
|
|
333
|
+
const anchorNode = this.#hydrated.anchorNode;
|
|
334
|
+
// The proxy is bound to an anchor node, but it may or may not have an actual flex node yet
|
|
335
|
+
return anchorNode.slots.get(flexTreeSlot);
|
|
336
|
+
}
|
|
196
337
|
}
|
|
197
338
|
|
|
339
|
+
/**
|
|
340
|
+
* Used by {@link anchorProxy} as an optimization to ensure that only one anchor is remembered at a time for a given anchor node
|
|
341
|
+
*/
|
|
342
|
+
const anchorForgetters = new WeakMap<TreeNode, () => void>();
|
|
343
|
+
|
|
198
344
|
const kernelEvents = ["childrenChangedAfterBatch", "subtreeChangedAfterBatch"] as const;
|
|
199
345
|
|
|
200
346
|
type KernelEvents = Pick<AnchorEvents, (typeof kernelEvents)[number]>;
|
|
347
|
+
|
|
348
|
+
/**
|
|
349
|
+
* For "cooked" nodes this is a FlexTreeNode thats a projection of forest content.
|
|
350
|
+
* For {@link Unhydrated} nodes this is a MapTreeNode.
|
|
351
|
+
* For "marinated" nodes, some code (ex: getOrCreateInnerNode) returns the FlexTreeNode thats a projection of forest content, and some code (ex: tryGetInnerNode) returns undefined.
|
|
352
|
+
*
|
|
353
|
+
* @remarks
|
|
354
|
+
* Currently MapTreeNode extends FlexTreeNode, and most code which can work with either just uses FlexTreeNode.
|
|
355
|
+
* TODO: Code should be migrating toward using this type to distinguish to two use-cases.
|
|
356
|
+
*
|
|
357
|
+
* TODO: The inconsistent handling of "marinated" cases should be cleaned up.
|
|
358
|
+
* Maybe getOrCreateInnerNode should cook marinated nodes so they have a proper InnerNode?
|
|
359
|
+
*/
|
|
360
|
+
export type InnerNode = FlexTreeNode | MapTreeNode;
|
|
361
|
+
|
|
362
|
+
/**
|
|
363
|
+
* {@inheritdoc proxyToMapTreeNode}
|
|
364
|
+
*/
|
|
365
|
+
const mapTreeNodeToProxy = new WeakMap<MapTreeNode, TreeNode>();
|
|
366
|
+
|
|
367
|
+
/**
|
|
368
|
+
* An anchor slot which associates an anchor with its corresponding TreeNode, if there is one.
|
|
369
|
+
* @remarks
|
|
370
|
+
* For this to work, we have to require that there is at most a single view using a given AnchorSet.
|
|
371
|
+
* FlexTree already has this assumption, and we also assume there is a single simple-tree per FlexTree, so this is valid.
|
|
372
|
+
*/
|
|
373
|
+
const proxySlot = anchorSlot<TreeNode>();
|
|
374
|
+
|
|
375
|
+
/**
|
|
376
|
+
* Retrieves the proxy associated with the given flex node via {@link setInnerNode}, if any.
|
|
377
|
+
*/
|
|
378
|
+
export function tryGetCachedTreeNode(flexNode: InnerNode): TreeNode | undefined {
|
|
379
|
+
if (isMapTreeNode(flexNode)) {
|
|
380
|
+
// Unhydrated case
|
|
381
|
+
return mapTreeNodeToProxy.get(flexNode);
|
|
382
|
+
}
|
|
383
|
+
// Hydrated case
|
|
384
|
+
return flexNode.anchorNode.slots.get(proxySlot);
|
|
385
|
+
}
|
|
386
|
+
|
|
387
|
+
export function tryDisposeTreeNode(anchorNode: AnchorNode): void {
|
|
388
|
+
const treeNode = anchorNode.slots.get(proxySlot);
|
|
389
|
+
if (treeNode !== undefined) {
|
|
390
|
+
const kernel = getKernel(treeNode);
|
|
391
|
+
kernel.dispose();
|
|
392
|
+
}
|
|
393
|
+
}
|
|
@@ -33,7 +33,7 @@ export type TreeNodeSchema<
|
|
|
33
33
|
* This is used for schema which cannot have their instances constructed using constructors, like leaf schema.
|
|
34
34
|
* @privateRemarks
|
|
35
35
|
* Non-class based schema can have issues with recursive types due to https://github.com/microsoft/TypeScript/issues/55832.
|
|
36
|
-
* @sealed @public
|
|
36
|
+
* @system @sealed @public
|
|
37
37
|
*/
|
|
38
38
|
export interface TreeNodeSchemaNonClass<
|
|
39
39
|
out Name extends string = string,
|
|
@@ -20,28 +20,20 @@ import { isFlexTreeNode, type FlexTreeNode } from "../../feature-libraries/index
|
|
|
20
20
|
*
|
|
21
21
|
* Since un-hydrated nodes become hydrated when inserted, strong typing can't be used to distinguish them.
|
|
22
22
|
* This no-op wrapper is used instead.
|
|
23
|
+
* @remarks
|
|
24
|
+
* Nodes which are Unhydrated report {@link TreeStatus}.new from `Tree.status(node)`.
|
|
25
|
+
* @privateRemarks
|
|
26
|
+
* TODO: Linking tree status is failing in intellisense and linking directly to its .new item is failing in API extractor as well.
|
|
27
|
+
* WOuld be nice to have a working link here.
|
|
23
28
|
* @public
|
|
24
29
|
*/
|
|
25
30
|
export type Unhydrated<T> = T;
|
|
26
31
|
|
|
27
|
-
/**
|
|
28
|
-
* Data included for {@link TreeChangeEvents.nodeChanged}.
|
|
29
|
-
* @public
|
|
30
|
-
*/
|
|
31
|
-
export interface NodeChangedData {
|
|
32
|
-
/**
|
|
33
|
-
* When the node changed is an object or Map node, this lists all the properties which changed.
|
|
34
|
-
* @remarks
|
|
35
|
-
* This only includes changes to the node itself (which would trigger {@link TreeChangeEvents.nodeChanged}).
|
|
36
|
-
*/
|
|
37
|
-
readonly changedProperties?: ReadonlySet<string>;
|
|
38
|
-
}
|
|
39
|
-
|
|
40
32
|
/**
|
|
41
33
|
* A collection of events that can be emitted by a {@link TreeNode}.
|
|
42
34
|
*
|
|
43
35
|
* @remarks
|
|
44
|
-
* Currently events can be subscribed to for {@link Unhydrated} nodes, however no events will be triggered for the nodes until after they are hydrated.
|
|
36
|
+
* Currently, events can be subscribed to for {@link Unhydrated} nodes, however no events will be triggered for the nodes until after they are hydrated.
|
|
45
37
|
* This is considered a known issue, and should be fixed in future versions.
|
|
46
38
|
* Do not rely on the fact that editing unhydrated nodes does not trigger their events.
|
|
47
39
|
*
|
|
@@ -63,16 +55,21 @@ export interface NodeChangedData {
|
|
|
63
55
|
*
|
|
64
56
|
* @sealed @public
|
|
65
57
|
*/
|
|
66
|
-
export interface TreeChangeEvents
|
|
58
|
+
export interface TreeChangeEvents {
|
|
67
59
|
/**
|
|
68
60
|
* Emitted by a node after a batch of changes has been applied to the tree, if any of the changes affected the node.
|
|
69
61
|
*
|
|
70
|
-
* - Object nodes define a change as the value of one of its properties
|
|
62
|
+
* - Object nodes define a change as being when the value of one of its properties changes (i.e., the property's value is set, including when set to `undefined`).
|
|
71
63
|
*
|
|
72
|
-
* - Array
|
|
64
|
+
* - Array nodes define a change as when an element is added, removed, moved or replaced.
|
|
73
65
|
*
|
|
74
66
|
* - Map nodes define a change as when an entry is added, updated, or removed.
|
|
75
67
|
*
|
|
68
|
+
* @param unstable - Future versions of this API (such as the one in beta on TreeBeta) may use this argument to provide additional data to the event.
|
|
69
|
+
* users of this event should ensure that they do not provide a listener callback which has an optional parameter in this position, since unexpected data might get provided to it.
|
|
70
|
+
* This parameter exists to capture this fact in the type system.
|
|
71
|
+
* Using an inline lambda expression as the listener callback is a good pattern to avoid cases like this were arguments are added from breaking due to optional arguments.
|
|
72
|
+
*
|
|
76
73
|
* @remarks
|
|
77
74
|
* This event is not emitted when:
|
|
78
75
|
*
|
|
@@ -94,15 +91,9 @@ export interface TreeChangeEvents<TNode = TreeNode> {
|
|
|
94
91
|
* node, or when the node has to be updated due to resolution of a merge conflict
|
|
95
92
|
* (for example a previously applied local change might be undone, then reapplied differently or not at all).
|
|
96
93
|
*
|
|
97
|
-
* TODO:
|
|
94
|
+
* TODO: define and document event ordering (ex: bottom up, with nodeChanged before treeChange on each level).
|
|
98
95
|
*/
|
|
99
|
-
nodeChanged(
|
|
100
|
-
data: NodeChangedData &
|
|
101
|
-
// For object and Map nodes, make properties specific to them required instead of optional:
|
|
102
|
-
(TNode extends WithType<string, NodeKind.Map | NodeKind.Object>
|
|
103
|
-
? Required<Pick<NodeChangedData, "changedProperties">>
|
|
104
|
-
: unknown),
|
|
105
|
-
): void;
|
|
96
|
+
nodeChanged(unstable?: unknown): void;
|
|
106
97
|
|
|
107
98
|
/**
|
|
108
99
|
* Emitted by a node after a batch of changes has been applied to the tree, when something changed anywhere in the
|
|
@@ -123,8 +114,6 @@ export interface TreeChangeEvents<TNode = TreeNode> {
|
|
|
123
114
|
treeChanged(): void;
|
|
124
115
|
}
|
|
125
116
|
|
|
126
|
-
export type IsListener2<TListener> = TListener extends (...args: any[]) => void ? true : false;
|
|
127
|
-
|
|
128
117
|
/**
|
|
129
118
|
* A non-{@link NodeKind.Leaf|leaf} SharedTree node. Includes objects, arrays, and maps.
|
|
130
119
|
*
|
|
@@ -43,6 +43,7 @@ export const typeSchemaSymbol: unique symbol = Symbol("TreeNode Schema");
|
|
|
43
43
|
*
|
|
44
44
|
* @typeParam TName - Same as {@link TreeNodeSchema}'s "Name" parameter.
|
|
45
45
|
* @typeParam TKind - Same as {@link TreeNodeSchema}'s "Kind" parameter.
|
|
46
|
+
* @typeParam TInfo - Same as {@link TreeNodeSchema}'s "Info" parameter: format depends on the Kind.
|
|
46
47
|
* @remarks
|
|
47
48
|
* Powers {@link TreeNode}'s strong typing setup.
|
|
48
49
|
* @example Narrow types for overloading based on NodeKind
|
|
@@ -75,6 +76,7 @@ export const typeSchemaSymbol: unique symbol = Symbol("TreeNode Schema");
|
|
|
75
76
|
export interface WithType<
|
|
76
77
|
out TName extends string = string,
|
|
77
78
|
out TKind extends NodeKind = NodeKind,
|
|
79
|
+
out TInfo = unknown,
|
|
78
80
|
> {
|
|
79
81
|
/**
|
|
80
82
|
* Type symbol, marking a type in a way to increase type safety via strong type checking.
|
|
@@ -85,5 +87,5 @@ export interface WithType<
|
|
|
85
87
|
/**
|
|
86
88
|
* Type symbol, marking a type in a way to increase type safety via strong type checking.
|
|
87
89
|
*/
|
|
88
|
-
get [typeSchemaSymbol](): TreeNodeSchemaClass<TName, TKind>;
|
|
90
|
+
get [typeSchemaSymbol](): TreeNodeSchemaClass<TName, TKind, unknown, never, boolean, TInfo>;
|
|
89
91
|
}
|
package/src/simple-tree/index.ts
CHANGED
|
@@ -19,7 +19,7 @@ export {
|
|
|
19
19
|
type Unhydrated,
|
|
20
20
|
type InternalTreeNode,
|
|
21
21
|
isTreeNode,
|
|
22
|
-
|
|
22
|
+
tryDisposeTreeNode,
|
|
23
23
|
} from "./core/index.js";
|
|
24
24
|
export {
|
|
25
25
|
type ITree,
|
|
@@ -45,6 +45,25 @@ export {
|
|
|
45
45
|
type TreeNodeApi,
|
|
46
46
|
cursorFromInsertable,
|
|
47
47
|
createFromInsertable,
|
|
48
|
+
type NodeChangedData,
|
|
49
|
+
TreeBeta,
|
|
50
|
+
type TreeChangeEventsBeta,
|
|
51
|
+
type SimpleTreeSchema,
|
|
52
|
+
type JsonSchemaId,
|
|
53
|
+
type JsonSchemaType,
|
|
54
|
+
type JsonObjectNodeSchema,
|
|
55
|
+
type JsonArrayNodeSchema,
|
|
56
|
+
type JsonMapNodeSchema,
|
|
57
|
+
type JsonLeafNodeSchema,
|
|
58
|
+
type JsonSchemaRef,
|
|
59
|
+
type JsonRefPath,
|
|
60
|
+
type JsonNodeSchema,
|
|
61
|
+
type JsonNodeSchemaBase,
|
|
62
|
+
type JsonTreeSchema,
|
|
63
|
+
type JsonFieldSchema,
|
|
64
|
+
type JsonLeafSchemaType,
|
|
65
|
+
getJsonSchema,
|
|
66
|
+
getSimpleSchema,
|
|
48
67
|
} from "./api/index.js";
|
|
49
68
|
export {
|
|
50
69
|
type NodeFromSchema,
|
|
@@ -66,7 +85,7 @@ export {
|
|
|
66
85
|
normalizeFieldSchema,
|
|
67
86
|
type ApplyKind,
|
|
68
87
|
} from "./schemaTypes.js";
|
|
69
|
-
export { getOrCreateInnerNode
|
|
88
|
+
export { getOrCreateInnerNode } from "./proxyBinding.js";
|
|
70
89
|
export { toFlexSchema } from "./toFlexSchema.js";
|
|
71
90
|
export type {
|
|
72
91
|
FieldHasDefaultUnsafe,
|
|
@@ -87,7 +106,6 @@ export type {
|
|
|
87
106
|
} from "./typesUnsafe.js";
|
|
88
107
|
export {
|
|
89
108
|
getTreeNodeForField,
|
|
90
|
-
type InsertableContent,
|
|
91
109
|
prepareContentForHydration,
|
|
92
110
|
} from "./proxies.js";
|
|
93
111
|
|
|
@@ -104,22 +122,12 @@ export {
|
|
|
104
122
|
setField,
|
|
105
123
|
} from "./objectNode.js";
|
|
106
124
|
export type { TreeMapNode, MapNodeInsertableData } from "./mapNode.js";
|
|
107
|
-
export { mapTreeFromNodeData } from "./toMapTree.js";
|
|
108
|
-
export
|
|
125
|
+
export { mapTreeFromNodeData, type InsertableContent } from "./toMapTree.js";
|
|
126
|
+
export { toStoredSchema, getStoredSchema, getFlexSchema } from "./toFlexSchema.js";
|
|
109
127
|
export {
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
type JsonSchemaRef,
|
|
117
|
-
type JsonRefPath,
|
|
118
|
-
type JsonNodeSchema,
|
|
119
|
-
type JsonNodeSchemaBase,
|
|
120
|
-
type JsonTreeSchema,
|
|
121
|
-
type JsonFieldSchema,
|
|
122
|
-
type JsonLeafSchemaType,
|
|
123
|
-
} from "./jsonSchema.js";
|
|
124
|
-
export { getJsonSchema } from "./getJsonSchema.js";
|
|
125
|
-
export { getSimpleSchema } from "./getSimpleSchema.js";
|
|
128
|
+
numberSchema,
|
|
129
|
+
stringSchema,
|
|
130
|
+
booleanSchema,
|
|
131
|
+
handleSchema,
|
|
132
|
+
nullSchema,
|
|
133
|
+
} from "./leafNodeSchema.js";
|
|
@@ -5,10 +5,9 @@
|
|
|
5
5
|
|
|
6
6
|
import { assert } from "@fluidframework/core-utils/internal";
|
|
7
7
|
|
|
8
|
-
import
|
|
9
|
-
import { leaf } from "../domains/index.js";
|
|
8
|
+
import { type TreeValue, ValueSchema } from "../core/index.js";
|
|
10
9
|
import {
|
|
11
|
-
|
|
10
|
+
LeafNodeSchema as FlexLeafNodeSchema,
|
|
12
11
|
type FlexTreeNode,
|
|
13
12
|
isFlexTreeNode,
|
|
14
13
|
valueSchemaAllows,
|
|
@@ -20,12 +19,6 @@ import {
|
|
|
20
19
|
type TreeNodeSchemaNonClass,
|
|
21
20
|
} from "./core/index.js";
|
|
22
21
|
|
|
23
|
-
type UnbrandedName<T extends FlexLeafNodeSchema> = T["name"] extends TreeNodeSchemaIdentifier<
|
|
24
|
-
infer Name extends string
|
|
25
|
-
>
|
|
26
|
-
? Name
|
|
27
|
-
: T["name"];
|
|
28
|
-
|
|
29
22
|
/**
|
|
30
23
|
* Instances of this class are schema for leaf nodes.
|
|
31
24
|
* @remarks
|
|
@@ -35,14 +28,14 @@ type UnbrandedName<T extends FlexLeafNodeSchema> = T["name"] extends TreeNodeSch
|
|
|
35
28
|
* @privateRemarks
|
|
36
29
|
* This class refers to the underlying flex tree schema in its constructor, so this class can't be included in the package API.
|
|
37
30
|
*/
|
|
38
|
-
export class LeafNodeSchema<T extends
|
|
39
|
-
implements TreeNodeSchemaNonClass<
|
|
31
|
+
export class LeafNodeSchema<Name extends string, const T extends ValueSchema>
|
|
32
|
+
implements TreeNodeSchemaNonClass<Name, NodeKind.Leaf, TreeValue<T>, TreeValue<T>>
|
|
40
33
|
{
|
|
41
|
-
public readonly identifier:
|
|
34
|
+
public readonly identifier: Name;
|
|
42
35
|
public readonly kind = NodeKind.Leaf;
|
|
43
|
-
public readonly info: T
|
|
36
|
+
public readonly info: T;
|
|
44
37
|
public readonly implicitlyConstructable = true as const;
|
|
45
|
-
public create(data: TreeValue<T
|
|
38
|
+
public create(data: TreeValue<T> | FlexTreeNode): TreeValue<T> {
|
|
46
39
|
if (isFlexTreeNode(data)) {
|
|
47
40
|
const value = data.value;
|
|
48
41
|
assert(valueSchemaAllows(this.info, value), 0x916 /* invalid value */);
|
|
@@ -51,30 +44,33 @@ export class LeafNodeSchema<T extends FlexLeafNodeSchema>
|
|
|
51
44
|
return data;
|
|
52
45
|
}
|
|
53
46
|
|
|
54
|
-
public constructor(
|
|
47
|
+
public constructor(name: Name, t: T) {
|
|
48
|
+
const schema: FlexLeafNodeSchema = new FlexLeafNodeSchema({ name: "makeLeaf" }, name, t);
|
|
55
49
|
setFlexSchemaFromClassSchema(this, schema);
|
|
56
|
-
this.identifier =
|
|
57
|
-
this.info =
|
|
50
|
+
this.identifier = name;
|
|
51
|
+
this.info = t;
|
|
58
52
|
}
|
|
59
53
|
}
|
|
60
54
|
|
|
61
55
|
/**
|
|
62
56
|
* Wrapper around LeafNodeSchema's constructor that provides the return type that is desired in the package public API.
|
|
63
57
|
*/
|
|
64
|
-
function makeLeaf<T extends
|
|
65
|
-
|
|
58
|
+
function makeLeaf<Name extends string, const T extends ValueSchema>(
|
|
59
|
+
name: Name,
|
|
60
|
+
t: T,
|
|
66
61
|
): TreeNodeSchema<
|
|
67
|
-
|
|
62
|
+
`com.fluidframework.leaf.${Name}`,
|
|
68
63
|
NodeKind.Leaf,
|
|
69
|
-
TreeValue<T
|
|
70
|
-
TreeValue<T
|
|
64
|
+
TreeValue<T>,
|
|
65
|
+
TreeValue<T>
|
|
71
66
|
> {
|
|
72
|
-
|
|
67
|
+
// Names in this domain follow https://en.wikipedia.org/wiki/Reverse_domain_name_notation
|
|
68
|
+
return new LeafNodeSchema(`com.fluidframework.leaf.${name}`, t);
|
|
73
69
|
}
|
|
74
70
|
|
|
75
71
|
// Leaf schema shared between all SchemaFactory instances.
|
|
76
|
-
export const stringSchema = makeLeaf(
|
|
77
|
-
export const numberSchema = makeLeaf(
|
|
78
|
-
export const booleanSchema = makeLeaf(
|
|
79
|
-
export const nullSchema = makeLeaf(
|
|
80
|
-
export const handleSchema = makeLeaf(
|
|
72
|
+
export const stringSchema = makeLeaf("string", ValueSchema.String);
|
|
73
|
+
export const numberSchema = makeLeaf("number", ValueSchema.Number);
|
|
74
|
+
export const booleanSchema = makeLeaf("boolean", ValueSchema.Boolean);
|
|
75
|
+
export const nullSchema = makeLeaf("null", ValueSchema.Null);
|
|
76
|
+
export const handleSchema = makeLeaf("handle", ValueSchema.FluidHandle);
|