@fluidframework/tree 2.3.0-288113 → 2.3.1
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
|
@@ -6,18 +6,15 @@
|
|
|
6
6
|
import {
|
|
7
7
|
type FlexMapNodeSchema,
|
|
8
8
|
type FlexTreeNode,
|
|
9
|
+
type FlexTreeOptionalField,
|
|
9
10
|
type MapTreeNode,
|
|
11
|
+
type OptionalFieldEditBuilder,
|
|
12
|
+
UnhydratedContext,
|
|
10
13
|
getOrCreateMapTreeNode,
|
|
11
14
|
getSchemaAndPolicy,
|
|
12
15
|
} from "../feature-libraries/index.js";
|
|
13
|
-
import {
|
|
14
|
-
type FactoryContent,
|
|
15
|
-
type InsertableContent,
|
|
16
|
-
getTreeNodeForField,
|
|
17
|
-
prepareContentForHydration,
|
|
18
|
-
} from "./proxies.js";
|
|
16
|
+
import { getTreeNodeForField, prepareContentForHydration } from "./proxies.js";
|
|
19
17
|
import { getOrCreateInnerNode } from "./proxyBinding.js";
|
|
20
|
-
import { getSimpleNodeSchema } from "./core/index.js";
|
|
21
18
|
import {
|
|
22
19
|
createFieldSchema,
|
|
23
20
|
FieldKind,
|
|
@@ -26,6 +23,8 @@ import {
|
|
|
26
23
|
type TreeNodeFromImplicitAllowedTypes,
|
|
27
24
|
} from "./schemaTypes.js";
|
|
28
25
|
import {
|
|
26
|
+
getKernel,
|
|
27
|
+
type InnerNode,
|
|
29
28
|
NodeKind,
|
|
30
29
|
type TreeNodeSchemaClass,
|
|
31
30
|
type TreeNodeSchema,
|
|
@@ -35,10 +34,15 @@ import {
|
|
|
35
34
|
type TreeNode,
|
|
36
35
|
typeSchemaSymbol,
|
|
37
36
|
} from "./core/index.js";
|
|
38
|
-
import {
|
|
39
|
-
|
|
37
|
+
import {
|
|
38
|
+
mapTreeFromNodeData,
|
|
39
|
+
type FactoryContent,
|
|
40
|
+
type InsertableContent,
|
|
41
|
+
} from "./toMapTree.js";
|
|
42
|
+
import { getFlexSchema, toFlexSchema } from "./toFlexSchema.js";
|
|
40
43
|
import { brand, count, type RestrictiveReadonlyRecord } from "../util/index.js";
|
|
41
44
|
import { TreeNodeValid, type MostDerivedData } from "./treeNodeValid.js";
|
|
45
|
+
import type { ExclusiveMapTree } from "../core/index.js";
|
|
42
46
|
|
|
43
47
|
/**
|
|
44
48
|
* A map of string keys to tree objects.
|
|
@@ -138,12 +142,22 @@ abstract class CustomMapNodeBase<const T extends ImplicitAllowedTypes> extends T
|
|
|
138
142
|
public [Symbol.iterator](): IterableIterator<[string, TreeNodeFromImplicitAllowedTypes<T>]> {
|
|
139
143
|
return this.entries();
|
|
140
144
|
}
|
|
145
|
+
|
|
146
|
+
private get innerNode(): InnerNode {
|
|
147
|
+
return getOrCreateInnerNode(this);
|
|
148
|
+
}
|
|
149
|
+
|
|
150
|
+
private editor(key: string): OptionalFieldEditBuilder<ExclusiveMapTree> {
|
|
151
|
+
const field = this.innerNode.getBoxed(brand(key)) as FlexTreeOptionalField;
|
|
152
|
+
return field.editor;
|
|
153
|
+
}
|
|
154
|
+
|
|
141
155
|
public delete(key: string): void {
|
|
142
|
-
const field =
|
|
143
|
-
|
|
156
|
+
const field = this.innerNode.getBoxed(brand(key));
|
|
157
|
+
this.editor(key).set(undefined, field.length === 0);
|
|
144
158
|
}
|
|
145
159
|
public *entries(): IterableIterator<[string, TreeNodeFromImplicitAllowedTypes<T>]> {
|
|
146
|
-
const node =
|
|
160
|
+
const node = this.innerNode;
|
|
147
161
|
for (const key of node.keys()) {
|
|
148
162
|
yield [
|
|
149
163
|
key,
|
|
@@ -152,37 +166,37 @@ abstract class CustomMapNodeBase<const T extends ImplicitAllowedTypes> extends T
|
|
|
152
166
|
}
|
|
153
167
|
}
|
|
154
168
|
public get(key: string): TreeNodeFromImplicitAllowedTypes<T> {
|
|
155
|
-
const node =
|
|
156
|
-
const field = node.getBoxed(key);
|
|
169
|
+
const node = this.innerNode;
|
|
170
|
+
const field = node.getBoxed(brand(key));
|
|
157
171
|
return getTreeNodeForField(field) as TreeNodeFromImplicitAllowedTypes<T>;
|
|
158
172
|
}
|
|
159
173
|
public has(key: string): boolean {
|
|
160
|
-
return
|
|
174
|
+
return this.innerNode.tryGetField(brand(key)) !== undefined;
|
|
161
175
|
}
|
|
162
176
|
public keys(): IterableIterator<string> {
|
|
163
|
-
const node =
|
|
177
|
+
const node = this.innerNode;
|
|
164
178
|
return node.keys();
|
|
165
179
|
}
|
|
166
180
|
public set(key: string, value: InsertableTreeNodeFromImplicitAllowedTypes<T>): TreeMapNode {
|
|
167
|
-
const
|
|
168
|
-
const
|
|
181
|
+
const kernel = getKernel(this);
|
|
182
|
+
const node = this.innerNode;
|
|
169
183
|
const mapTree = mapTreeFromNodeData(
|
|
170
184
|
value as InsertableContent | undefined,
|
|
171
|
-
createFieldSchema(FieldKind.Optional,
|
|
172
|
-
node.context
|
|
185
|
+
createFieldSchema(FieldKind.Optional, kernel.schema.info as ImplicitAllowedTypes),
|
|
186
|
+
node.context.isHydrated() ? node.context.nodeKeyManager : undefined,
|
|
173
187
|
getSchemaAndPolicy(node),
|
|
174
188
|
);
|
|
175
189
|
|
|
176
|
-
const field = node.getBoxed(key);
|
|
177
|
-
if (node.context
|
|
190
|
+
const field = node.getBoxed(brand(key));
|
|
191
|
+
if (node.context.isHydrated()) {
|
|
178
192
|
prepareContentForHydration(mapTree, node.context.checkout.forest);
|
|
179
193
|
}
|
|
180
194
|
|
|
181
|
-
|
|
195
|
+
this.editor(key).set(mapTree, field.length === 0);
|
|
182
196
|
return this;
|
|
183
197
|
}
|
|
184
198
|
public get size(): number {
|
|
185
|
-
return count(
|
|
199
|
+
return count(this.innerNode.keys());
|
|
186
200
|
}
|
|
187
201
|
public *values(): IterableIterator<TreeNodeFromImplicitAllowedTypes<T>> {
|
|
188
202
|
for (const [, value] of this.entries()) {
|
|
@@ -220,15 +234,16 @@ export function mapSchema<
|
|
|
220
234
|
useMapPrototype: boolean,
|
|
221
235
|
) {
|
|
222
236
|
let flexSchema: FlexMapNodeSchema;
|
|
237
|
+
let unhydratedContext: UnhydratedContext;
|
|
223
238
|
|
|
224
|
-
class
|
|
239
|
+
class Schema extends CustomMapNodeBase<T> implements TreeMapNode<T> {
|
|
225
240
|
public static override prepareInstance<T2>(
|
|
226
241
|
this: typeof TreeNodeValid<T2>,
|
|
227
242
|
instance: TreeNodeValid<T2>,
|
|
228
243
|
flexNode: FlexTreeNode,
|
|
229
244
|
): TreeNodeValid<T2> {
|
|
230
245
|
if (useMapPrototype) {
|
|
231
|
-
return new Proxy<
|
|
246
|
+
return new Proxy<Schema>(instance as Schema, handler);
|
|
232
247
|
}
|
|
233
248
|
return instance;
|
|
234
249
|
}
|
|
@@ -239,6 +254,7 @@ export function mapSchema<
|
|
|
239
254
|
input: T2,
|
|
240
255
|
): MapTreeNode {
|
|
241
256
|
return getOrCreateMapTreeNode(
|
|
257
|
+
unhydratedContext,
|
|
242
258
|
flexSchema,
|
|
243
259
|
mapTreeFromNodeData(input as FactoryContent, this as unknown as ImplicitAllowedTypes),
|
|
244
260
|
);
|
|
@@ -247,7 +263,9 @@ export function mapSchema<
|
|
|
247
263
|
protected static override constructorCached: MostDerivedData | undefined = undefined;
|
|
248
264
|
|
|
249
265
|
protected static override oneTimeSetup<T2>(this: typeof TreeNodeValid<T2>): void {
|
|
250
|
-
|
|
266
|
+
const schema = this as unknown as TreeNodeSchema;
|
|
267
|
+
flexSchema = getFlexSchema(schema) as FlexMapNodeSchema;
|
|
268
|
+
unhydratedContext = new UnhydratedContext(toFlexSchema(schema));
|
|
251
269
|
}
|
|
252
270
|
|
|
253
271
|
public static readonly identifier = identifier;
|
|
@@ -260,7 +278,7 @@ export function mapSchema<
|
|
|
260
278
|
return identifier;
|
|
261
279
|
}
|
|
262
280
|
public get [typeSchemaSymbol](): typeof schemaErased {
|
|
263
|
-
return
|
|
281
|
+
return Schema.constructorCached?.constructor as unknown as typeof schemaErased;
|
|
264
282
|
}
|
|
265
283
|
}
|
|
266
284
|
const schemaErased: TreeNodeSchemaClass<
|
|
@@ -270,7 +288,7 @@ export function mapSchema<
|
|
|
270
288
|
MapNodeInsertableData<T>,
|
|
271
289
|
ImplicitlyConstructable,
|
|
272
290
|
T
|
|
273
|
-
> =
|
|
291
|
+
> = Schema;
|
|
274
292
|
return schemaErased;
|
|
275
293
|
}
|
|
276
294
|
|
|
@@ -9,7 +9,6 @@ import { UsageError } from "@fluidframework/telemetry-utils/internal";
|
|
|
9
9
|
import type { FieldKey } from "../core/index.js";
|
|
10
10
|
import {
|
|
11
11
|
FieldKinds,
|
|
12
|
-
type FlexAllowedTypes,
|
|
13
12
|
type FlexObjectNodeSchema,
|
|
14
13
|
type FlexTreeField,
|
|
15
14
|
type FlexTreeNode,
|
|
@@ -19,12 +18,9 @@ import {
|
|
|
19
18
|
getSchemaAndPolicy,
|
|
20
19
|
isMapTreeNode,
|
|
21
20
|
type MapTreeNode,
|
|
21
|
+
UnhydratedContext,
|
|
22
22
|
} from "../feature-libraries/index.js";
|
|
23
|
-
import {
|
|
24
|
-
type InsertableContent,
|
|
25
|
-
getTreeNodeForField,
|
|
26
|
-
prepareContentForHydration,
|
|
27
|
-
} from "./proxies.js";
|
|
23
|
+
import { getTreeNodeForField, prepareContentForHydration } from "./proxies.js";
|
|
28
24
|
import { getOrCreateInnerNode } from "./proxyBinding.js";
|
|
29
25
|
import {
|
|
30
26
|
type ImplicitFieldSchema,
|
|
@@ -47,15 +43,15 @@ import {
|
|
|
47
43
|
type InternalTreeNode,
|
|
48
44
|
type TreeNode,
|
|
49
45
|
} from "./core/index.js";
|
|
50
|
-
import { mapTreeFromNodeData } from "./toMapTree.js";
|
|
46
|
+
import { mapTreeFromNodeData, type InsertableContent } from "./toMapTree.js";
|
|
51
47
|
import { type RestrictiveReadonlyRecord, fail, type FlattenKeys } from "../util/index.js";
|
|
52
|
-
import { getFlexSchema } from "./toFlexSchema.js";
|
|
48
|
+
import { getFlexSchema, toFlexSchema } from "./toFlexSchema.js";
|
|
53
49
|
import type { ObjectNodeSchema, ObjectNodeSchemaInternalData } from "./objectNodeTypes.js";
|
|
54
50
|
import { TreeNodeValid, type MostDerivedData } from "./treeNodeValid.js";
|
|
55
51
|
|
|
56
52
|
/**
|
|
57
53
|
* Helper used to produce types for object nodes.
|
|
58
|
-
* @public
|
|
54
|
+
* @system @public
|
|
59
55
|
*/
|
|
60
56
|
export type ObjectFromSchemaRecord<
|
|
61
57
|
T extends RestrictiveReadonlyRecord<string, ImplicitFieldSchema>,
|
|
@@ -77,7 +73,7 @@ export type ObjectFromSchemaRecord<
|
|
|
77
73
|
export type TreeObjectNode<
|
|
78
74
|
T extends RestrictiveReadonlyRecord<string, ImplicitFieldSchema>,
|
|
79
75
|
TypeName extends string = string,
|
|
80
|
-
> = TreeNode & ObjectFromSchemaRecord<T> & WithType<TypeName, NodeKind.Object>;
|
|
76
|
+
> = TreeNode & ObjectFromSchemaRecord<T> & WithType<TypeName, NodeKind.Object, T>;
|
|
81
77
|
|
|
82
78
|
/**
|
|
83
79
|
* Type utility for determining whether or not an implicit field schema has a default value.
|
|
@@ -86,7 +82,7 @@ export type TreeObjectNode<
|
|
|
86
82
|
* TODO: Account for field schemas with default value providers.
|
|
87
83
|
* For now, this only captures field kinds that we know always have defaults - optional fields and identifier fields.
|
|
88
84
|
*
|
|
89
|
-
* @public
|
|
85
|
+
* @system @public
|
|
90
86
|
*/
|
|
91
87
|
export type FieldHasDefault<T extends ImplicitFieldSchema> = T extends FieldSchema<
|
|
92
88
|
FieldKind.Optional | FieldKind.Identifier
|
|
@@ -98,6 +94,8 @@ export type FieldHasDefault<T extends ImplicitFieldSchema> = T extends FieldSche
|
|
|
98
94
|
* Helper used to produce types for:
|
|
99
95
|
*
|
|
100
96
|
* 1. Insertable content which can be used to construct an object node.
|
|
97
|
+
* In this case, only own properties are considered.
|
|
98
|
+
* This reduces the risk of incorrectly interpreting data at the cost of occasionally requiring users to convert data into a compatible format.
|
|
101
99
|
*
|
|
102
100
|
* 2. Insertable content which is an unhydrated object node.
|
|
103
101
|
*
|
|
@@ -105,7 +103,7 @@ export type FieldHasDefault<T extends ImplicitFieldSchema> = T extends FieldSche
|
|
|
105
103
|
*
|
|
106
104
|
* @privateRemarks TODO: consider separating these cases into different types.
|
|
107
105
|
*
|
|
108
|
-
* @public
|
|
106
|
+
* @system @public
|
|
109
107
|
*/
|
|
110
108
|
export type InsertableObjectFromSchemaRecord<
|
|
111
109
|
T extends RestrictiveReadonlyRecord<string, ImplicitFieldSchema>,
|
|
@@ -121,10 +119,10 @@ export type InsertableObjectFromSchemaRecord<
|
|
|
121
119
|
>;
|
|
122
120
|
|
|
123
121
|
/**
|
|
124
|
-
* Maps from simple field keys ("
|
|
122
|
+
* Maps from simple field keys ("property" keys) to information about the field.
|
|
125
123
|
*
|
|
126
124
|
* @remarks
|
|
127
|
-
* A missing entry for a given
|
|
125
|
+
* A missing entry for a given property key indicates that no such field exists.
|
|
128
126
|
* Keys with symbols are currently never used, but allowed to make lookups on non-field things
|
|
129
127
|
* (returning undefined) easier.
|
|
130
128
|
*/
|
|
@@ -134,13 +132,13 @@ export type SimpleKeyMap = ReadonlyMap<
|
|
|
134
132
|
>;
|
|
135
133
|
|
|
136
134
|
/**
|
|
137
|
-
* Caches the mappings from
|
|
135
|
+
* Caches the mappings from property keys to stored keys for the provided object field schemas in {@link simpleKeyToFlexKeyCache}.
|
|
138
136
|
*/
|
|
139
137
|
function createFlexKeyMapping(fields: Record<string, ImplicitFieldSchema>): SimpleKeyMap {
|
|
140
138
|
const keyMap: Map<string | symbol, { storedKey: FieldKey; schema: FieldSchema }> = new Map();
|
|
141
|
-
for (const [
|
|
142
|
-
const storedKey = getStoredKey(
|
|
143
|
-
keyMap.set(
|
|
139
|
+
for (const [propertyKey, fieldSchema] of Object.entries(fields)) {
|
|
140
|
+
const storedKey = getStoredKey(propertyKey, fieldSchema);
|
|
141
|
+
keyMap.set(propertyKey, { storedKey, schema: normalizeFieldSchema(fieldSchema) });
|
|
144
142
|
}
|
|
145
143
|
|
|
146
144
|
return keyMap;
|
|
@@ -167,8 +165,8 @@ function createProxyHandler(
|
|
|
167
165
|
// TODO: Although the target is an object literal, it's still worthwhile to try experimenting with
|
|
168
166
|
// a dispatch object to see if it improves performance.
|
|
169
167
|
const handler: ProxyHandler<TreeNode> = {
|
|
170
|
-
get(target,
|
|
171
|
-
const fieldInfo = flexKeyMap.get(
|
|
168
|
+
get(target, propertyKey, proxy): unknown {
|
|
169
|
+
const fieldInfo = flexKeyMap.get(propertyKey);
|
|
172
170
|
|
|
173
171
|
if (fieldInfo !== undefined) {
|
|
174
172
|
const flexNode = getOrCreateInnerNode(proxy);
|
|
@@ -177,6 +175,7 @@ function createProxyHandler(
|
|
|
177
175
|
return getTreeNodeForField(field);
|
|
178
176
|
}
|
|
179
177
|
|
|
178
|
+
// TODO: this special case logic should move to the inner node (who's schema claims it has an identifier), rather than here, after we already read undefined out of a required field.
|
|
180
179
|
// Check if the user is trying to read an identifier field of an unhydrated node, but the identifier is not present.
|
|
181
180
|
// This means the identifier is an "auto-generated identifier", because otherwise it would have been supplied by the user at construction time and would have been successfully read just above.
|
|
182
181
|
// In this case, it is categorically impossible to provide an identifier (auto-generated identifiers can't be created until hydration/insertion time), so we emit an error.
|
|
@@ -190,13 +189,15 @@ function createProxyHandler(
|
|
|
190
189
|
}
|
|
191
190
|
|
|
192
191
|
// Pass the proxy as the receiver here, so that any methods on the prototype receive `proxy` as `this`.
|
|
193
|
-
return Reflect.get(target,
|
|
192
|
+
return Reflect.get(target, propertyKey, proxy);
|
|
194
193
|
},
|
|
195
|
-
set(target,
|
|
196
|
-
const fieldInfo = flexKeyMap.get(
|
|
194
|
+
set(target, propertyKey, value: InsertableContent | undefined, proxy) {
|
|
195
|
+
const fieldInfo = flexKeyMap.get(propertyKey);
|
|
197
196
|
if (fieldInfo === undefined) {
|
|
198
197
|
// Pass the proxy as the receiver here, so that setters on the prototype receive `proxy` as `this`.
|
|
199
|
-
return allowAdditionalProperties
|
|
198
|
+
return allowAdditionalProperties
|
|
199
|
+
? Reflect.set(target, propertyKey, value, proxy)
|
|
200
|
+
: false;
|
|
200
201
|
}
|
|
201
202
|
|
|
202
203
|
setField(
|
|
@@ -206,16 +207,16 @@ function createProxyHandler(
|
|
|
206
207
|
);
|
|
207
208
|
return true;
|
|
208
209
|
},
|
|
209
|
-
deleteProperty(target,
|
|
210
|
+
deleteProperty(target, propertyKey): boolean {
|
|
210
211
|
// TODO: supporting delete when it makes sense (custom local fields, and optional field) could be added as a feature in the future.
|
|
211
212
|
throw new UsageError(
|
|
212
213
|
`Object nodes do not support the delete operator. Optional fields can be assigned to undefined instead.`,
|
|
213
214
|
);
|
|
214
215
|
},
|
|
215
|
-
has: (target,
|
|
216
|
+
has: (target, propertyKey) => {
|
|
216
217
|
return (
|
|
217
|
-
flexKeyMap.has(
|
|
218
|
-
(allowAdditionalProperties ? Reflect.has(target,
|
|
218
|
+
flexKeyMap.has(propertyKey) ||
|
|
219
|
+
(allowAdditionalProperties ? Reflect.has(target, propertyKey) : false)
|
|
219
220
|
);
|
|
220
221
|
},
|
|
221
222
|
ownKeys: (target) => {
|
|
@@ -224,12 +225,12 @@ function createProxyHandler(
|
|
|
224
225
|
...(allowAdditionalProperties ? Reflect.ownKeys(target) : []),
|
|
225
226
|
];
|
|
226
227
|
},
|
|
227
|
-
getOwnPropertyDescriptor: (target,
|
|
228
|
-
const fieldInfo = flexKeyMap.get(
|
|
228
|
+
getOwnPropertyDescriptor: (target, propertyKey) => {
|
|
229
|
+
const fieldInfo = flexKeyMap.get(propertyKey);
|
|
229
230
|
|
|
230
231
|
if (fieldInfo === undefined) {
|
|
231
232
|
return allowAdditionalProperties
|
|
232
|
-
? Reflect.getOwnPropertyDescriptor(target,
|
|
233
|
+
? Reflect.getOwnPropertyDescriptor(target, propertyKey)
|
|
233
234
|
: undefined;
|
|
234
235
|
}
|
|
235
236
|
|
|
@@ -263,23 +264,23 @@ export function setField(
|
|
|
263
264
|
const mapTree = mapTreeFromNodeData(
|
|
264
265
|
value,
|
|
265
266
|
simpleFieldSchema,
|
|
266
|
-
field.context
|
|
267
|
+
field.context.isHydrated() ? field.context.nodeKeyManager : undefined,
|
|
267
268
|
getSchemaAndPolicy(field),
|
|
268
269
|
);
|
|
269
270
|
|
|
270
|
-
if (field.context
|
|
271
|
+
if (field.context.isHydrated()) {
|
|
271
272
|
prepareContentForHydration(mapTree, field.context.checkout.forest);
|
|
272
273
|
}
|
|
273
274
|
|
|
274
275
|
switch (field.schema.kind) {
|
|
275
|
-
case FieldKinds.required: {
|
|
276
|
+
case FieldKinds.required.identifier: {
|
|
276
277
|
assert(mapTree !== undefined, 0xa04 /* Cannot set a required field to undefined */);
|
|
277
|
-
const typedField = field as FlexTreeRequiredField
|
|
278
|
+
const typedField = field as FlexTreeRequiredField;
|
|
278
279
|
typedField.editor.set(mapTree);
|
|
279
280
|
break;
|
|
280
281
|
}
|
|
281
|
-
case FieldKinds.optional: {
|
|
282
|
-
const typedField = field as FlexTreeOptionalField
|
|
282
|
+
case FieldKinds.optional.identifier: {
|
|
283
|
+
const typedField = field as FlexTreeOptionalField;
|
|
283
284
|
typedField.editor.set(mapTree, typedField.length === 0);
|
|
284
285
|
break;
|
|
285
286
|
}
|
|
@@ -310,16 +311,17 @@ export function objectSchema<
|
|
|
310
311
|
info: T,
|
|
311
312
|
implicitlyConstructable: ImplicitlyConstructable,
|
|
312
313
|
): ObjectNodeSchema<TName, T, ImplicitlyConstructable> & ObjectNodeSchemaInternalData {
|
|
313
|
-
// Ensure no collisions between final set of
|
|
314
|
-
// implicitly derived from
|
|
314
|
+
// Ensure no collisions between final set of property keys, and final set of stored keys (including those
|
|
315
|
+
// implicitly derived from property keys)
|
|
315
316
|
assertUniqueKeys(identifier, info);
|
|
316
317
|
|
|
317
|
-
// Performance optimization: cache
|
|
318
|
+
// Performance optimization: cache property key => stored key and schema.
|
|
318
319
|
const flexKeyMap: SimpleKeyMap = createFlexKeyMapping(info);
|
|
319
320
|
|
|
320
321
|
let handler: ProxyHandler<object>;
|
|
321
322
|
let customizable: boolean;
|
|
322
323
|
let flexSchema: FlexObjectNodeSchema;
|
|
324
|
+
let unhydratedContext: UnhydratedContext;
|
|
323
325
|
|
|
324
326
|
class CustomObjectNode extends CustomObjectNodeBase<T> {
|
|
325
327
|
public static readonly fields: ReadonlyMap<string, FieldSchema> = new Map(
|
|
@@ -372,6 +374,7 @@ export function objectSchema<
|
|
|
372
374
|
input: T2,
|
|
373
375
|
): MapTreeNode {
|
|
374
376
|
return getOrCreateMapTreeNode(
|
|
377
|
+
unhydratedContext,
|
|
375
378
|
flexSchema,
|
|
376
379
|
mapTreeFromNodeData(input as object, this as unknown as ImplicitAllowedTypes),
|
|
377
380
|
);
|
|
@@ -383,7 +386,9 @@ export function objectSchema<
|
|
|
383
386
|
// One time initialization that required knowing the most derived type (from this.constructor) and thus has to be lazy.
|
|
384
387
|
customizable = (this as unknown) !== CustomObjectNode;
|
|
385
388
|
handler = createProxyHandler(flexKeyMap, customizable);
|
|
386
|
-
|
|
389
|
+
const schema = this as unknown as TreeNodeSchema;
|
|
390
|
+
flexSchema = getFlexSchema(schema) as FlexObjectNodeSchema;
|
|
391
|
+
unhydratedContext = new UnhydratedContext(toFlexSchema(schema));
|
|
387
392
|
|
|
388
393
|
// First run, do extra validation.
|
|
389
394
|
// TODO: provide a way for TreeConfiguration to trigger this same validation to ensure it gets run early.
|
|
@@ -434,8 +439,8 @@ export function objectSchema<
|
|
|
434
439
|
const targetToProxy: WeakMap<object, TreeNode> = new WeakMap();
|
|
435
440
|
|
|
436
441
|
/**
|
|
437
|
-
* Ensures that the set of
|
|
438
|
-
* Also ensure that the final set of stored keys (including those implicitly derived from
|
|
442
|
+
* Ensures that the set of property keys in the schema is unique.
|
|
443
|
+
* Also ensure that the final set of stored keys (including those implicitly derived from property keys) is unique.
|
|
439
444
|
* @throws Throws a `UsageError` if either of the key uniqueness invariants is violated.
|
|
440
445
|
*/
|
|
441
446
|
function assertUniqueKeys<
|
|
@@ -458,10 +463,10 @@ function assertUniqueKeys<
|
|
|
458
463
|
}
|
|
459
464
|
|
|
460
465
|
// Verify that there are no duplicates among the derived
|
|
461
|
-
// (including those implicitly derived from
|
|
466
|
+
// (including those implicitly derived from property keys) stored keys.
|
|
462
467
|
const derivedStoredKeys = new Set<string>();
|
|
463
|
-
for (const [
|
|
464
|
-
const storedKey = getStoredKey(
|
|
468
|
+
for (const [propertyKey, schema] of Object.entries(fields)) {
|
|
469
|
+
const storedKey = getStoredKey(propertyKey, schema);
|
|
465
470
|
if (derivedStoredKeys.has(storedKey)) {
|
|
466
471
|
throw new UsageError(
|
|
467
472
|
`Stored key "${storedKey}" in schema "${schemaName}" conflicts with a property key of the same name, which is not overridden by a stored key. The final set of stored keys in an object schema must be unique.`,
|
|
@@ -3,9 +3,7 @@
|
|
|
3
3
|
* Licensed under the MIT License.
|
|
4
4
|
*/
|
|
5
5
|
|
|
6
|
-
import type { IFluidHandle } from "@fluidframework/core-interfaces";
|
|
7
6
|
import { UsageError } from "@fluidframework/telemetry-utils/internal";
|
|
8
|
-
import { assert } from "@fluidframework/core-utils/internal";
|
|
9
7
|
|
|
10
8
|
import {
|
|
11
9
|
EmptyKey,
|
|
@@ -17,26 +15,28 @@ import {
|
|
|
17
15
|
|
|
18
16
|
import {
|
|
19
17
|
FieldKinds,
|
|
20
|
-
type FlexFieldSchema,
|
|
21
18
|
type FlexTreeField,
|
|
22
19
|
type FlexTreeNode,
|
|
23
|
-
type FlexTreeTypedField,
|
|
24
20
|
tryGetMapTreeNode,
|
|
25
21
|
isFlexTreeNode,
|
|
22
|
+
type FlexTreeRequiredField,
|
|
23
|
+
type FlexTreeOptionalField,
|
|
26
24
|
} from "../feature-libraries/index.js";
|
|
27
25
|
import { type Mutable, fail, isReadonlyArray } from "../util/index.js";
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
26
|
+
import {
|
|
27
|
+
getKernel,
|
|
28
|
+
tryGetCachedTreeNode,
|
|
29
|
+
type TreeNode,
|
|
30
|
+
getSimpleNodeSchemaFromNode,
|
|
31
|
+
type InternalTreeNode,
|
|
32
|
+
} from "./core/index.js";
|
|
31
33
|
|
|
32
34
|
/**
|
|
33
35
|
* Retrieve the associated {@link TreeNode} for the given field's content.
|
|
34
36
|
*/
|
|
35
37
|
export function getTreeNodeForField(field: FlexTreeField): TreeNode | TreeValue | undefined {
|
|
36
38
|
function tryToUnboxLeaves(
|
|
37
|
-
flexField:
|
|
38
|
-
FlexFieldSchema<typeof FieldKinds.required | typeof FieldKinds.optional>
|
|
39
|
-
>,
|
|
39
|
+
flexField: FlexTreeOptionalField | FlexTreeRequiredField,
|
|
40
40
|
): TreeNode | TreeValue | undefined {
|
|
41
41
|
const maybeContent = flexField.content;
|
|
42
42
|
return isFlexTreeNode(maybeContent)
|
|
@@ -44,22 +44,17 @@ export function getTreeNodeForField(field: FlexTreeField): TreeNode | TreeValue
|
|
|
44
44
|
: maybeContent;
|
|
45
45
|
}
|
|
46
46
|
switch (field.schema.kind) {
|
|
47
|
-
case FieldKinds.required: {
|
|
48
|
-
const typedField = field as
|
|
49
|
-
FlexFieldSchema<typeof FieldKinds.required>
|
|
50
|
-
>;
|
|
47
|
+
case FieldKinds.required.identifier: {
|
|
48
|
+
const typedField = field as FlexTreeRequiredField;
|
|
51
49
|
return tryToUnboxLeaves(typedField);
|
|
52
50
|
}
|
|
53
|
-
case FieldKinds.optional: {
|
|
54
|
-
const typedField = field as
|
|
55
|
-
FlexFieldSchema<typeof FieldKinds.optional>
|
|
56
|
-
>;
|
|
51
|
+
case FieldKinds.optional.identifier: {
|
|
52
|
+
const typedField = field as FlexTreeOptionalField;
|
|
57
53
|
return tryToUnboxLeaves(typedField);
|
|
58
54
|
}
|
|
59
|
-
case FieldKinds.identifier: {
|
|
55
|
+
case FieldKinds.identifier.identifier: {
|
|
60
56
|
// Identifier fields are just value fields that hold strings
|
|
61
|
-
return (field as
|
|
62
|
-
.content as string;
|
|
57
|
+
return (field as FlexTreeRequiredField).content as string;
|
|
63
58
|
}
|
|
64
59
|
|
|
65
60
|
default:
|
|
@@ -73,14 +68,13 @@ export function getOrCreateNodeFromFlexTreeNode(flexNode: FlexTreeNode): TreeNod
|
|
|
73
68
|
return cachedProxy;
|
|
74
69
|
}
|
|
75
70
|
|
|
76
|
-
const
|
|
77
|
-
const
|
|
78
|
-
|
|
71
|
+
const classSchema = getSimpleNodeSchemaFromNode(flexNode);
|
|
72
|
+
const node = flexNode as unknown as InternalTreeNode;
|
|
73
|
+
// eslint-disable-next-line unicorn/prefer-ternary
|
|
79
74
|
if (typeof classSchema === "function") {
|
|
80
|
-
|
|
81
|
-
return new simpleSchema(flexNode);
|
|
75
|
+
return new classSchema(node) as TreeNode;
|
|
82
76
|
} else {
|
|
83
|
-
return (classSchema as { create(data: FlexTreeNode):
|
|
77
|
+
return (classSchema as { create(data: FlexTreeNode): TreeValue }).create(flexNode);
|
|
84
78
|
}
|
|
85
79
|
}
|
|
86
80
|
|
|
@@ -203,7 +197,7 @@ function bindProxies(proxies: RootedProxyPaths[], forest: IForestSubscription):
|
|
|
203
197
|
// Non null asserting here because of the length check above
|
|
204
198
|
// eslint-disable-next-line @typescript-eslint/no-non-null-assertion
|
|
205
199
|
for (const { path, proxy } of proxies[i]!.proxyPaths) {
|
|
206
|
-
anchorProxy(forest.anchors, path
|
|
200
|
+
getKernel(proxy).anchorProxy(forest.anchors, path);
|
|
207
201
|
}
|
|
208
202
|
if (++i === proxies.length) {
|
|
209
203
|
off();
|
|
@@ -213,26 +207,3 @@ function bindProxies(proxies: RootedProxyPaths[], forest: IForestSubscription):
|
|
|
213
207
|
}
|
|
214
208
|
|
|
215
209
|
// #endregion Content insertion and proxy binding
|
|
216
|
-
|
|
217
|
-
/**
|
|
218
|
-
* Content which can be used to build a node.
|
|
219
|
-
* @remarks
|
|
220
|
-
* Can contain unhydrated nodes, but can not be an unhydrated node at the root.
|
|
221
|
-
*/
|
|
222
|
-
export type FactoryContent =
|
|
223
|
-
| IFluidHandle
|
|
224
|
-
| string
|
|
225
|
-
| number
|
|
226
|
-
| boolean
|
|
227
|
-
// eslint-disable-next-line @rushstack/no-new-null
|
|
228
|
-
| null
|
|
229
|
-
| Iterable<readonly [string, InsertableContent]>
|
|
230
|
-
| readonly InsertableContent[]
|
|
231
|
-
| {
|
|
232
|
-
readonly [P in string]?: InsertableContent;
|
|
233
|
-
};
|
|
234
|
-
|
|
235
|
-
/**
|
|
236
|
-
* Content which can be inserted into a tree.
|
|
237
|
-
*/
|
|
238
|
-
export type InsertableContent = Unhydrated<TreeNode> | FactoryContent;
|