@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
|
@@ -4,6 +4,8 @@
|
|
|
4
4
|
*/
|
|
5
5
|
|
|
6
6
|
import { assert, oob } from "@fluidframework/core-utils/internal";
|
|
7
|
+
import { UsageError } from "@fluidframework/telemetry-utils/internal";
|
|
8
|
+
|
|
7
9
|
import {
|
|
8
10
|
type AnchorNode,
|
|
9
11
|
EmptyKey,
|
|
@@ -11,43 +13,40 @@ import {
|
|
|
11
13
|
type FieldKey,
|
|
12
14
|
type FieldUpPath,
|
|
13
15
|
type MapTree,
|
|
16
|
+
type TreeFieldStoredSchema,
|
|
14
17
|
type TreeNodeSchemaIdentifier,
|
|
15
|
-
type
|
|
18
|
+
type TreeStoredSchema,
|
|
16
19
|
type Value,
|
|
17
20
|
} from "../../core/index.js";
|
|
18
|
-
import { brand, fail, getOrCreate, mapIterable } from "../../util/index.js";
|
|
21
|
+
import { brand, fail, getOrCreate, isReadonlyArray, mapIterable } from "../../util/index.js";
|
|
19
22
|
import {
|
|
23
|
+
type FlexTreeContext,
|
|
20
24
|
FlexTreeEntityKind,
|
|
21
25
|
type FlexTreeField,
|
|
22
|
-
type FlexTreeLeafNode,
|
|
23
|
-
type FlexTreeMapNode,
|
|
24
26
|
type FlexTreeNode,
|
|
25
27
|
type FlexTreeOptionalField,
|
|
26
28
|
type FlexTreeRequiredField,
|
|
27
29
|
type FlexTreeSequenceField,
|
|
28
30
|
type FlexTreeTypedField,
|
|
29
|
-
type
|
|
30
|
-
type FlexTreeTypedNodeUnion,
|
|
31
|
-
type FlexTreeUnboxField,
|
|
32
|
-
type FlexTreeUnboxNodeUnion,
|
|
31
|
+
type FlexTreeUnknownUnboxed,
|
|
33
32
|
flexTreeMarker,
|
|
34
33
|
indexForAt,
|
|
34
|
+
type FlexTreeHydratedContext,
|
|
35
35
|
} from "../flex-tree/index.js";
|
|
36
36
|
import {
|
|
37
37
|
type FlexAllowedTypes,
|
|
38
38
|
FlexFieldSchema,
|
|
39
|
-
type FlexMapNodeSchema,
|
|
40
39
|
type FlexTreeNodeSchema,
|
|
41
|
-
type
|
|
40
|
+
type FlexTreeSchema,
|
|
41
|
+
intoStoredSchemaCollection,
|
|
42
42
|
isLazy,
|
|
43
|
-
schemaIsLeaf,
|
|
44
|
-
schemaIsMap,
|
|
45
|
-
schemaIsObjectNode,
|
|
46
43
|
} from "../typed-schema/index.js";
|
|
47
|
-
import { type FlexImplicitAllowedTypes, normalizeAllowedTypes } from "../schemaBuilderBase.js";
|
|
48
44
|
import type { FlexFieldKind } from "../modular-schema/index.js";
|
|
49
|
-
import {
|
|
50
|
-
|
|
45
|
+
import {
|
|
46
|
+
defaultSchemaPolicy,
|
|
47
|
+
FieldKinds,
|
|
48
|
+
type SequenceFieldEditBuilder,
|
|
49
|
+
} from "../default-schema/index.js";
|
|
51
50
|
|
|
52
51
|
// #region Nodes
|
|
53
52
|
|
|
@@ -70,9 +69,9 @@ export function isMapTreeNode(flexNode: FlexTreeNode): flexNode is MapTreeNode {
|
|
|
70
69
|
/**
|
|
71
70
|
* Checks if the given {@link FlexTreeField} is a {@link MapTreeSequenceField}.
|
|
72
71
|
*/
|
|
73
|
-
export function isMapTreeSequenceField
|
|
74
|
-
field: FlexTreeSequenceField
|
|
75
|
-
): field is MapTreeSequenceField
|
|
72
|
+
export function isMapTreeSequenceField(
|
|
73
|
+
field: FlexTreeSequenceField | FlexTreeField,
|
|
74
|
+
): field is MapTreeSequenceField {
|
|
76
75
|
return field instanceof EagerMapTreeSequenceField;
|
|
77
76
|
}
|
|
78
77
|
|
|
@@ -80,8 +79,7 @@ export function isMapTreeSequenceField<T extends FlexAllowedTypes>(
|
|
|
80
79
|
* An unhydrated {@link FlexTreeSequenceField}, which has additional editing capabilities.
|
|
81
80
|
* @remarks When doing a removal edit, a {@link MapTreeSequenceField}'s `editor` returns ownership of the removed {@link ExclusiveMapTree}s to the caller.
|
|
82
81
|
*/
|
|
83
|
-
export interface MapTreeSequenceField
|
|
84
|
-
extends FlexTreeSequenceField<T> {
|
|
82
|
+
export interface MapTreeSequenceField extends FlexTreeSequenceField {
|
|
85
83
|
readonly editor: MapTreeSequenceFieldEditBuilder;
|
|
86
84
|
}
|
|
87
85
|
|
|
@@ -109,7 +107,11 @@ interface LocationInField {
|
|
|
109
107
|
* MapTreeNodes are unconditionally cached -
|
|
110
108
|
* when retrieved via {@link getOrCreateNode}, the same {@link MapTree} object will always produce the same `MapTreeNode` object.
|
|
111
109
|
*/
|
|
112
|
-
export class EagerMapTreeNode
|
|
110
|
+
export class EagerMapTreeNode implements MapTreeNode {
|
|
111
|
+
public get schema(): TreeNodeSchemaIdentifier {
|
|
112
|
+
return this.flexSchema.name;
|
|
113
|
+
}
|
|
114
|
+
|
|
113
115
|
public readonly [flexTreeMarker] = FlexTreeEntityKind.Node as const;
|
|
114
116
|
|
|
115
117
|
/**
|
|
@@ -121,7 +123,8 @@ export class EagerMapTreeNode<TSchema extends FlexTreeNodeSchema> implements Map
|
|
|
121
123
|
* Instead, it should always be acquired via {@link getOrCreateNode}.
|
|
122
124
|
*/
|
|
123
125
|
public constructor(
|
|
124
|
-
public readonly
|
|
126
|
+
public readonly context: UnhydratedContext,
|
|
127
|
+
public readonly flexSchema: FlexTreeNodeSchema,
|
|
125
128
|
/** The underlying {@link MapTree} that this `MapTreeNode` reads its data from */
|
|
126
129
|
public readonly mapTree: ExclusiveMapTree,
|
|
127
130
|
private location = unparentedLocation,
|
|
@@ -140,7 +143,7 @@ export class EagerMapTreeNode<TSchema extends FlexTreeNodeSchema> implements Map
|
|
|
140
143
|
}
|
|
141
144
|
|
|
142
145
|
public get type(): TreeNodeSchemaIdentifier {
|
|
143
|
-
return this.
|
|
146
|
+
return this.flexSchema.name;
|
|
144
147
|
}
|
|
145
148
|
|
|
146
149
|
/**
|
|
@@ -177,37 +180,38 @@ export class EagerMapTreeNode<TSchema extends FlexTreeNodeSchema> implements Map
|
|
|
177
180
|
return this.location;
|
|
178
181
|
}
|
|
179
182
|
|
|
180
|
-
public is
|
|
181
|
-
schema
|
|
182
|
-
): this is FlexTreeTypedNode<TSchemaInner> {
|
|
183
|
-
return (schema as unknown) === this.schema;
|
|
183
|
+
public is(schema: FlexTreeNodeSchema): boolean {
|
|
184
|
+
return (schema as unknown) === this.flexSchema;
|
|
184
185
|
}
|
|
185
186
|
|
|
186
|
-
public tryGetField(key: FieldKey): EagerMapTreeField
|
|
187
|
+
public tryGetField(key: FieldKey): EagerMapTreeField | undefined {
|
|
187
188
|
const field = this.mapTree.fields.get(key);
|
|
188
189
|
// Only return the field if it is not empty, in order to fulfill the contract of `tryGetField`.
|
|
189
190
|
if (field !== undefined && field.length > 0) {
|
|
190
|
-
return getOrCreateField(this, key, this.
|
|
191
|
+
return getOrCreateField(this, key, this.flexSchema.getFieldSchema(key));
|
|
191
192
|
}
|
|
192
193
|
}
|
|
193
194
|
|
|
194
195
|
public getBoxed(key: string): FlexTreeField {
|
|
195
196
|
const fieldKey: FieldKey = brand(key);
|
|
196
|
-
return getOrCreateField(this, fieldKey, this.
|
|
197
|
+
return getOrCreateField(this, fieldKey, this.flexSchema.getFieldSchema(fieldKey));
|
|
197
198
|
}
|
|
198
199
|
|
|
199
200
|
public boxedIterator(): IterableIterator<FlexTreeField> {
|
|
200
201
|
return mapIterable(this.mapTree.fields.entries(), ([key]) =>
|
|
201
|
-
getOrCreateField(this, key, this.
|
|
202
|
+
getOrCreateField(this, key, this.flexSchema.getFieldSchema(key)),
|
|
202
203
|
);
|
|
203
204
|
}
|
|
204
205
|
|
|
206
|
+
public keys(): IterableIterator<FieldKey> {
|
|
207
|
+
// TODO: how this should handle missing defaults (and empty keys if they end up being allowed) needs to be determined.
|
|
208
|
+
return this.mapTree.fields.keys();
|
|
209
|
+
}
|
|
210
|
+
|
|
205
211
|
public get value(): Value {
|
|
206
212
|
return this.mapTree.value;
|
|
207
213
|
}
|
|
208
214
|
|
|
209
|
-
public context = undefined;
|
|
210
|
-
|
|
211
215
|
public get anchorNode(): AnchorNode {
|
|
212
216
|
// This API is relevant to `LazyTreeNode`s, but not `MapTreeNode`s.
|
|
213
217
|
// TODO: Refactor the FlexTreeNode interface so that stubbing this out isn't necessary.
|
|
@@ -216,11 +220,12 @@ export class EagerMapTreeNode<TSchema extends FlexTreeNodeSchema> implements Map
|
|
|
216
220
|
|
|
217
221
|
private walkTree(): void {
|
|
218
222
|
for (const [key, mapTrees] of this.mapTree.fields) {
|
|
219
|
-
const field = getOrCreateField(this, key, this.
|
|
223
|
+
const field = getOrCreateField(this, key, this.flexSchema.getFieldSchema(key));
|
|
220
224
|
for (let index = 0; index < field.length; index++) {
|
|
221
225
|
const child = getOrCreateChild(
|
|
226
|
+
this.context,
|
|
222
227
|
mapTrees[index] ?? oob(),
|
|
223
|
-
this.
|
|
228
|
+
this.flexSchema.getFieldSchema(key).allowedTypes,
|
|
224
229
|
{ parent: field, index },
|
|
225
230
|
);
|
|
226
231
|
// These next asserts detect the case where `getOrCreateChild` gets a cache hit of a different node than the one we're trying to create
|
|
@@ -236,66 +241,31 @@ export class EagerMapTreeNode<TSchema extends FlexTreeNodeSchema> implements Map
|
|
|
236
241
|
}
|
|
237
242
|
}
|
|
238
243
|
|
|
244
|
+
// #endregion Nodes
|
|
245
|
+
|
|
239
246
|
/**
|
|
240
|
-
*
|
|
247
|
+
* Implementation of `FlexTreeContext`.
|
|
248
|
+
*
|
|
249
|
+
* @remarks An editor is required to edit the FlexTree.
|
|
241
250
|
*/
|
|
242
|
-
export class
|
|
243
|
-
|
|
244
|
-
implements FlexTreeMapNode<TSchema>
|
|
245
|
-
{
|
|
246
|
-
public keys(): IterableIterator<FieldKey> {
|
|
247
|
-
return this.mapTree.fields.keys();
|
|
248
|
-
}
|
|
249
|
-
|
|
250
|
-
public values(): IterableIterator<FlexTreeUnboxField<TSchema["info"], "notEmpty">> {
|
|
251
|
-
return mapIterable(
|
|
252
|
-
this.mapTree.fields.keys(),
|
|
253
|
-
(key) =>
|
|
254
|
-
unboxedField(
|
|
255
|
-
this.tryGetField(key) ?? fail("Unexpected empty map field"),
|
|
256
|
-
key,
|
|
257
|
-
this.mapTree,
|
|
258
|
-
this,
|
|
259
|
-
) as FlexTreeUnboxField<TSchema["info"], "notEmpty">,
|
|
260
|
-
);
|
|
261
|
-
}
|
|
262
|
-
|
|
263
|
-
public entries(): IterableIterator<
|
|
264
|
-
[FieldKey, FlexTreeUnboxField<TSchema["info"], "notEmpty">]
|
|
265
|
-
> {
|
|
266
|
-
return mapIterable(this.mapTree.fields.keys(), (key) => [
|
|
267
|
-
key,
|
|
268
|
-
unboxedField(
|
|
269
|
-
this.tryGetField(key) ?? fail("Unexpected empty map field"),
|
|
270
|
-
key,
|
|
271
|
-
this.mapTree,
|
|
272
|
-
this,
|
|
273
|
-
) as FlexTreeUnboxField<TSchema["info"], "notEmpty">,
|
|
274
|
-
]);
|
|
275
|
-
}
|
|
276
|
-
|
|
277
|
-
public override getBoxed(key: string): FlexTreeTypedField<TSchema["info"]> {
|
|
278
|
-
return super.getBoxed(key) as FlexTreeTypedField<TSchema["info"]>;
|
|
279
|
-
}
|
|
251
|
+
export class UnhydratedContext implements FlexTreeContext {
|
|
252
|
+
public readonly schema: TreeStoredSchema;
|
|
280
253
|
|
|
281
|
-
|
|
282
|
-
|
|
283
|
-
|
|
284
|
-
|
|
254
|
+
/**
|
|
255
|
+
* @param flexSchema - Schema to use when working with the tree.
|
|
256
|
+
*/
|
|
257
|
+
public constructor(public readonly flexSchema: FlexTreeSchema) {
|
|
258
|
+
this.schema = {
|
|
259
|
+
rootFieldSchema: flexSchema.rootFieldSchema.stored,
|
|
260
|
+
...intoStoredSchemaCollection(flexSchema),
|
|
261
|
+
};
|
|
285
262
|
}
|
|
286
|
-
}
|
|
287
263
|
|
|
288
|
-
|
|
289
|
-
|
|
290
|
-
implements FlexTreeLeafNode<TSchema>
|
|
291
|
-
{
|
|
292
|
-
public override get value(): TreeValue<TSchema["info"]> {
|
|
293
|
-
return super.value as TreeValue<TSchema["info"]>;
|
|
264
|
+
public isHydrated(): this is FlexTreeHydratedContext {
|
|
265
|
+
return false;
|
|
294
266
|
}
|
|
295
267
|
}
|
|
296
268
|
|
|
297
|
-
// #endregion Nodes
|
|
298
|
-
|
|
299
269
|
// #region Fields
|
|
300
270
|
|
|
301
271
|
/**
|
|
@@ -307,6 +277,13 @@ interface MapTreeField extends FlexTreeField {
|
|
|
307
277
|
readonly mapTrees: readonly MapTree[];
|
|
308
278
|
}
|
|
309
279
|
|
|
280
|
+
const emptyContext = new UnhydratedContext({
|
|
281
|
+
adapters: {},
|
|
282
|
+
nodeSchema: new Map(),
|
|
283
|
+
policy: defaultSchemaPolicy,
|
|
284
|
+
rootFieldSchema: FlexFieldSchema.empty,
|
|
285
|
+
});
|
|
286
|
+
|
|
310
287
|
/**
|
|
311
288
|
* A special singleton that is the implicit {@link LocationInField} of all un-parented {@link EagerMapTreeNode}s.
|
|
312
289
|
* @remarks This exists because {@link EagerMapTreeNode.parentField} must return a field.
|
|
@@ -321,8 +298,8 @@ const unparentedLocation: LocationInField = {
|
|
|
321
298
|
length: 0,
|
|
322
299
|
key: EmptyKey,
|
|
323
300
|
parent: undefined,
|
|
324
|
-
is<
|
|
325
|
-
return schema ===
|
|
301
|
+
is<TKind2 extends FlexFieldKind>(kind: TKind2) {
|
|
302
|
+
return this.schema.kind === kind.identifier;
|
|
326
303
|
},
|
|
327
304
|
boxedIterator(): IterableIterator<FlexTreeNode> {
|
|
328
305
|
return [].values();
|
|
@@ -330,20 +307,28 @@ const unparentedLocation: LocationInField = {
|
|
|
330
307
|
boxedAt(index: number): FlexTreeNode | undefined {
|
|
331
308
|
return undefined;
|
|
332
309
|
},
|
|
333
|
-
schema: FlexFieldSchema.empty,
|
|
334
|
-
context:
|
|
310
|
+
schema: FlexFieldSchema.empty.stored,
|
|
311
|
+
context: emptyContext,
|
|
335
312
|
mapTrees: [],
|
|
313
|
+
getFieldPath() {
|
|
314
|
+
fail("unsupported");
|
|
315
|
+
},
|
|
336
316
|
},
|
|
337
317
|
index: -1,
|
|
338
318
|
};
|
|
339
319
|
|
|
340
|
-
class EagerMapTreeField
|
|
320
|
+
class EagerMapTreeField implements MapTreeField {
|
|
341
321
|
public [flexTreeMarker] = FlexTreeEntityKind.Field as const;
|
|
342
322
|
|
|
323
|
+
public get schema(): TreeFieldStoredSchema {
|
|
324
|
+
return this.flexSchema.stored;
|
|
325
|
+
}
|
|
326
|
+
|
|
343
327
|
public constructor(
|
|
344
|
-
public readonly
|
|
328
|
+
public readonly context: UnhydratedContext,
|
|
329
|
+
public readonly flexSchema: FlexFieldSchema,
|
|
345
330
|
public readonly key: FieldKey,
|
|
346
|
-
public readonly parent: EagerMapTreeNode
|
|
331
|
+
public readonly parent: EagerMapTreeNode,
|
|
347
332
|
) {
|
|
348
333
|
const fieldKeyCache = getFieldKeyCache(parent);
|
|
349
334
|
assert(!fieldKeyCache.has(key), 0x990 /* A field already exists for the given MapTrees */);
|
|
@@ -370,40 +355,36 @@ class EagerMapTreeField<T extends FlexAllowedTypes> implements MapTreeField {
|
|
|
370
355
|
return this.mapTrees.length;
|
|
371
356
|
}
|
|
372
357
|
|
|
373
|
-
public is<
|
|
374
|
-
schema
|
|
375
|
-
): this is FlexTreeTypedField<TSchemaInner> {
|
|
376
|
-
return this.schema.equals(schema);
|
|
358
|
+
public is<TKind2 extends FlexFieldKind>(kind: TKind2): this is FlexTreeTypedField<TKind2> {
|
|
359
|
+
return this.schema.kind === kind.identifier;
|
|
377
360
|
}
|
|
378
361
|
|
|
379
|
-
public boxedIterator(): IterableIterator<
|
|
362
|
+
public boxedIterator(): IterableIterator<FlexTreeNode> {
|
|
380
363
|
return this.mapTrees
|
|
381
364
|
.map(
|
|
382
365
|
(m, index) =>
|
|
383
|
-
getOrCreateChild(m, this.
|
|
366
|
+
getOrCreateChild(this.context, m, this.flexSchema.allowedTypes, {
|
|
384
367
|
parent: this,
|
|
385
368
|
index,
|
|
386
|
-
}) as FlexTreeNode
|
|
369
|
+
}) as FlexTreeNode,
|
|
387
370
|
)
|
|
388
371
|
.values();
|
|
389
372
|
}
|
|
390
373
|
|
|
391
|
-
public boxedAt(index: number):
|
|
374
|
+
public boxedAt(index: number): FlexTreeNode | undefined {
|
|
392
375
|
const i = indexForAt(index, this.length);
|
|
393
376
|
if (i === undefined) {
|
|
394
377
|
return undefined;
|
|
395
378
|
}
|
|
396
379
|
const m = this.mapTrees[i];
|
|
397
380
|
if (m !== undefined) {
|
|
398
|
-
return getOrCreateChild(m, this.
|
|
381
|
+
return getOrCreateChild(this.context, m, this.flexSchema.allowedTypes, {
|
|
399
382
|
parent: this,
|
|
400
383
|
index: i,
|
|
401
|
-
}) as FlexTreeNode
|
|
384
|
+
}) as FlexTreeNode;
|
|
402
385
|
}
|
|
403
386
|
}
|
|
404
387
|
|
|
405
|
-
public context: undefined;
|
|
406
|
-
|
|
407
388
|
/**
|
|
408
389
|
* Mutate this field.
|
|
409
390
|
* @param edit - A function which receives the current `MapTree`s that comprise the contents of the field so that it may be mutated.
|
|
@@ -421,12 +402,13 @@ class EagerMapTreeField<T extends FlexAllowedTypes> implements MapTreeField {
|
|
|
421
402
|
this.parent.mapTree.fields.delete(this.key);
|
|
422
403
|
}
|
|
423
404
|
}
|
|
405
|
+
|
|
406
|
+
public getFieldPath(): FieldUpPath {
|
|
407
|
+
throw unsupportedUsageError("Editing an array");
|
|
408
|
+
}
|
|
424
409
|
}
|
|
425
410
|
|
|
426
|
-
class EagerMapTreeOptionalField
|
|
427
|
-
extends EagerMapTreeField<T>
|
|
428
|
-
implements FlexTreeOptionalField<T>
|
|
429
|
-
{
|
|
411
|
+
class EagerMapTreeOptionalField extends EagerMapTreeField implements FlexTreeOptionalField {
|
|
430
412
|
public readonly editor = {
|
|
431
413
|
set: (newContent: ExclusiveMapTree | undefined): void => {
|
|
432
414
|
// If the new content is a MapTreeNode, it needs to have its parent pointer updated
|
|
@@ -449,10 +431,10 @@ class EagerMapTreeOptionalField<T extends FlexAllowedTypes>
|
|
|
449
431
|
},
|
|
450
432
|
};
|
|
451
433
|
|
|
452
|
-
public get content():
|
|
434
|
+
public get content(): FlexTreeUnknownUnboxed | undefined {
|
|
453
435
|
const value = this.mapTrees[0];
|
|
454
436
|
if (value !== undefined) {
|
|
455
|
-
return
|
|
437
|
+
return unboxed(this.flexSchema, value, {
|
|
456
438
|
parent: this,
|
|
457
439
|
index: 0,
|
|
458
440
|
});
|
|
@@ -462,19 +444,16 @@ class EagerMapTreeOptionalField<T extends FlexAllowedTypes>
|
|
|
462
444
|
}
|
|
463
445
|
}
|
|
464
446
|
|
|
465
|
-
class EagerMapTreeRequiredField
|
|
466
|
-
extends EagerMapTreeOptionalField
|
|
467
|
-
implements FlexTreeRequiredField
|
|
447
|
+
class EagerMapTreeRequiredField
|
|
448
|
+
extends EagerMapTreeOptionalField
|
|
449
|
+
implements FlexTreeRequiredField
|
|
468
450
|
{
|
|
469
|
-
public override get content():
|
|
451
|
+
public override get content(): FlexTreeUnknownUnboxed {
|
|
470
452
|
return super.content ?? fail("Expected EagerMapTree required field to have a value");
|
|
471
453
|
}
|
|
472
454
|
}
|
|
473
455
|
|
|
474
|
-
class EagerMapTreeSequenceField
|
|
475
|
-
extends EagerMapTreeField<T>
|
|
476
|
-
implements FlexTreeSequenceField<T>
|
|
477
|
-
{
|
|
456
|
+
class EagerMapTreeSequenceField extends EagerMapTreeField implements FlexTreeSequenceField {
|
|
478
457
|
public readonly editor: MapTreeSequenceFieldEditBuilder = {
|
|
479
458
|
insert: (index, newContent): void => {
|
|
480
459
|
for (let i = 0; i < newContent.length; i++) {
|
|
@@ -506,41 +485,32 @@ class EagerMapTreeSequenceField<T extends FlexAllowedTypes>
|
|
|
506
485
|
},
|
|
507
486
|
};
|
|
508
487
|
|
|
509
|
-
public at(index: number):
|
|
488
|
+
public at(index: number): FlexTreeUnknownUnboxed | undefined {
|
|
510
489
|
const i = indexForAt(index, this.length);
|
|
511
490
|
if (i === undefined) {
|
|
512
491
|
return undefined;
|
|
513
492
|
}
|
|
514
|
-
return
|
|
493
|
+
return unboxed(this.flexSchema, this.mapTrees[i] ?? oob(), { parent: this, index: i });
|
|
515
494
|
}
|
|
516
|
-
public map<U>(callbackfn: (value:
|
|
495
|
+
public map<U>(callbackfn: (value: FlexTreeUnknownUnboxed, index: number) => U): U[] {
|
|
517
496
|
return Array.from(this, callbackfn);
|
|
518
497
|
}
|
|
519
498
|
|
|
520
|
-
public *[Symbol.iterator](): IterableIterator<
|
|
499
|
+
public *[Symbol.iterator](): IterableIterator<FlexTreeUnknownUnboxed> {
|
|
521
500
|
for (const [i, mapTree] of this.mapTrees.entries()) {
|
|
522
|
-
yield
|
|
501
|
+
yield unboxed(this.flexSchema, mapTree, { parent: this, index: i });
|
|
523
502
|
}
|
|
524
503
|
}
|
|
525
|
-
|
|
526
|
-
public getFieldPath(): FieldUpPath {
|
|
527
|
-
throw unsupportedUsageError("Editing an array");
|
|
528
|
-
}
|
|
529
504
|
}
|
|
530
505
|
|
|
531
506
|
// #endregion Fields
|
|
532
507
|
|
|
533
508
|
// #region Caching and unboxing utilities
|
|
534
509
|
|
|
535
|
-
const nodeCache = new WeakMap<MapTree, EagerMapTreeNode
|
|
510
|
+
const nodeCache = new WeakMap<MapTree, EagerMapTreeNode>();
|
|
536
511
|
/** Node Parent -\> Field Key -\> Field */
|
|
537
|
-
const fieldCache = new WeakMap<
|
|
538
|
-
|
|
539
|
-
Map<FieldKey, EagerMapTreeField<FlexAllowedTypes>>
|
|
540
|
-
>();
|
|
541
|
-
function getFieldKeyCache(
|
|
542
|
-
parent: MapTreeNode,
|
|
543
|
-
): WeakMap<FieldKey, EagerMapTreeField<FlexAllowedTypes>> {
|
|
512
|
+
const fieldCache = new WeakMap<MapTreeNode, Map<FieldKey, EagerMapTreeField>>();
|
|
513
|
+
function getFieldKeyCache(parent: MapTreeNode): WeakMap<FieldKey, EagerMapTreeField> {
|
|
544
514
|
return getOrCreate(fieldCache, parent, () => new Map());
|
|
545
515
|
}
|
|
546
516
|
|
|
@@ -559,59 +529,52 @@ export function tryGetMapTreeNode(mapTree: MapTree): MapTreeNode | undefined {
|
|
|
559
529
|
* @remarks It must conform to the `nodeSchema`.
|
|
560
530
|
*/
|
|
561
531
|
export function getOrCreateMapTreeNode(
|
|
532
|
+
context: UnhydratedContext,
|
|
562
533
|
nodeSchema: FlexTreeNodeSchema,
|
|
563
534
|
mapTree: ExclusiveMapTree,
|
|
564
|
-
): EagerMapTreeNode
|
|
565
|
-
return nodeCache.get(mapTree) ?? createNode(nodeSchema, mapTree, undefined);
|
|
535
|
+
): EagerMapTreeNode {
|
|
536
|
+
return nodeCache.get(mapTree) ?? createNode(context, nodeSchema, mapTree, undefined);
|
|
566
537
|
}
|
|
567
538
|
|
|
568
539
|
/** Helper for creating a `MapTreeNode` given the parent field (e.g. when "walking down") */
|
|
569
540
|
function getOrCreateChild(
|
|
541
|
+
context: UnhydratedContext,
|
|
570
542
|
mapTree: ExclusiveMapTree,
|
|
571
|
-
|
|
543
|
+
allowedTypes: FlexAllowedTypes,
|
|
572
544
|
parent: LocationInField | undefined,
|
|
573
|
-
): EagerMapTreeNode
|
|
545
|
+
): EagerMapTreeNode {
|
|
574
546
|
const cached = nodeCache.get(mapTree);
|
|
575
547
|
if (cached !== undefined) {
|
|
576
548
|
return cached;
|
|
577
549
|
}
|
|
578
550
|
|
|
579
|
-
|
|
551
|
+
assert(isReadonlyArray(allowedTypes), 0xa25 /* invalid types */);
|
|
580
552
|
const nodeSchema =
|
|
581
553
|
allowedTypes
|
|
582
554
|
.map((t) => (isLazy(t) ? t() : t))
|
|
583
555
|
.find((t): t is FlexTreeNodeSchema => {
|
|
584
|
-
assert(t !== "Any", 0x993 /* 'Any' type is not supported */);
|
|
585
556
|
return t.name === mapTree.type;
|
|
586
557
|
}) ?? fail("Unsupported node schema");
|
|
587
558
|
|
|
588
|
-
return createNode(nodeSchema, mapTree, parent);
|
|
559
|
+
return createNode(context, nodeSchema, mapTree, parent);
|
|
589
560
|
}
|
|
590
561
|
|
|
591
562
|
/** Always constructs a new node, therefore may not be called twice for the same `MapTree`. */
|
|
592
|
-
function createNode
|
|
593
|
-
|
|
563
|
+
function createNode(
|
|
564
|
+
context: UnhydratedContext,
|
|
565
|
+
nodeSchema: FlexTreeNodeSchema,
|
|
594
566
|
mapTree: ExclusiveMapTree,
|
|
595
567
|
parentField: LocationInField | undefined,
|
|
596
|
-
): EagerMapTreeNode
|
|
597
|
-
|
|
598
|
-
return new EagerMapTreeLeafNode(nodeSchema, mapTree, parentField);
|
|
599
|
-
}
|
|
600
|
-
if (schemaIsMap(nodeSchema)) {
|
|
601
|
-
return new EagerMapTreeMapNode(nodeSchema, mapTree, parentField);
|
|
602
|
-
}
|
|
603
|
-
if (schemaIsObjectNode(nodeSchema)) {
|
|
604
|
-
return new EagerMapTreeNode(nodeSchema, mapTree, parentField);
|
|
605
|
-
}
|
|
606
|
-
assert(false, 0x994 /* Unrecognized node kind */);
|
|
568
|
+
): EagerMapTreeNode {
|
|
569
|
+
return new EagerMapTreeNode(context, nodeSchema, mapTree, parentField);
|
|
607
570
|
}
|
|
608
571
|
|
|
609
572
|
/** Creates a field with the given attributes, or returns a cached field if there is one */
|
|
610
573
|
function getOrCreateField(
|
|
611
|
-
parent: EagerMapTreeNode
|
|
574
|
+
parent: EagerMapTreeNode,
|
|
612
575
|
key: FieldKey,
|
|
613
576
|
schema: FlexFieldSchema,
|
|
614
|
-
): EagerMapTreeField
|
|
577
|
+
): EagerMapTreeField {
|
|
615
578
|
const cached = getFieldKeyCache(parent).get(key);
|
|
616
579
|
if (cached !== undefined) {
|
|
617
580
|
return cached;
|
|
@@ -621,70 +584,32 @@ function getOrCreateField(
|
|
|
621
584
|
schema.kind.identifier === FieldKinds.required.identifier ||
|
|
622
585
|
schema.kind.identifier === FieldKinds.identifier.identifier
|
|
623
586
|
) {
|
|
624
|
-
return new EagerMapTreeRequiredField(schema, key, parent);
|
|
587
|
+
return new EagerMapTreeRequiredField(parent.context, schema, key, parent);
|
|
625
588
|
}
|
|
626
589
|
|
|
627
590
|
if (schema.kind.identifier === FieldKinds.optional.identifier) {
|
|
628
|
-
return new EagerMapTreeOptionalField(schema, key, parent);
|
|
591
|
+
return new EagerMapTreeOptionalField(parent.context, schema, key, parent);
|
|
629
592
|
}
|
|
630
593
|
|
|
631
594
|
if (schema.kind.identifier === FieldKinds.sequence.identifier) {
|
|
632
|
-
return new EagerMapTreeSequenceField(schema, key, parent);
|
|
595
|
+
return new EagerMapTreeSequenceField(parent.context, schema, key, parent);
|
|
633
596
|
}
|
|
634
597
|
|
|
635
|
-
return new EagerMapTreeField(schema, key, parent);
|
|
598
|
+
return new EagerMapTreeField(parent.context, schema, key, parent);
|
|
636
599
|
}
|
|
637
600
|
|
|
638
|
-
/** Unboxes
|
|
639
|
-
function
|
|
640
|
-
schema: FlexFieldSchema
|
|
601
|
+
/** Unboxes leaf nodes to their values */
|
|
602
|
+
function unboxed(
|
|
603
|
+
schema: FlexFieldSchema,
|
|
641
604
|
mapTree: ExclusiveMapTree,
|
|
642
605
|
parent: LocationInField,
|
|
643
|
-
):
|
|
644
|
-
const
|
|
645
|
-
if (
|
|
646
|
-
|
|
647
|
-
return mapTree.value as FlexTreeUnboxNodeUnion<TTypes>;
|
|
648
|
-
}
|
|
649
|
-
return getOrCreateChild(mapTree, type, parent) as FlexTreeUnboxNodeUnion<TTypes>;
|
|
606
|
+
): FlexTreeUnknownUnboxed {
|
|
607
|
+
const value = mapTree.value;
|
|
608
|
+
if (value !== undefined) {
|
|
609
|
+
return value;
|
|
650
610
|
}
|
|
651
611
|
|
|
652
|
-
return getOrCreateChild(
|
|
653
|
-
mapTree,
|
|
654
|
-
schema.allowedTypes,
|
|
655
|
-
parent,
|
|
656
|
-
) as FlexTreeUnboxNodeUnion<TTypes>;
|
|
657
|
-
}
|
|
658
|
-
|
|
659
|
-
/** Unboxes non-polymorphic required and optional fields holding leaf nodes to their values, if applicable */
|
|
660
|
-
function unboxedField<TFieldSchema extends FlexFieldSchema>(
|
|
661
|
-
field: EagerMapTreeField<FlexAllowedTypes>,
|
|
662
|
-
key: FieldKey,
|
|
663
|
-
mapTree: ExclusiveMapTree,
|
|
664
|
-
parentNode: EagerMapTreeNode<FlexTreeNodeSchema>,
|
|
665
|
-
): FlexTreeUnboxField<TFieldSchema> {
|
|
666
|
-
const fieldSchema = field.schema;
|
|
667
|
-
const mapTrees =
|
|
668
|
-
mapTree.fields.get(key) ?? fail("Key does not exist in unhydrated map tree");
|
|
669
|
-
|
|
670
|
-
if (fieldSchema.kind === FieldKinds.required) {
|
|
671
|
-
return unboxedUnion(fieldSchema, mapTrees[0] ?? oob(), {
|
|
672
|
-
parent: field,
|
|
673
|
-
index: 0,
|
|
674
|
-
}) as FlexTreeUnboxField<TFieldSchema>;
|
|
675
|
-
}
|
|
676
|
-
if (fieldSchema.kind === FieldKinds.optional) {
|
|
677
|
-
return (
|
|
678
|
-
mapTrees.length > 0
|
|
679
|
-
? unboxedUnion(fieldSchema, mapTrees[0] ?? oob(), {
|
|
680
|
-
parent: field,
|
|
681
|
-
index: 0,
|
|
682
|
-
})
|
|
683
|
-
: undefined
|
|
684
|
-
) as FlexTreeUnboxField<TFieldSchema>;
|
|
685
|
-
}
|
|
686
|
-
|
|
687
|
-
return getOrCreateField(parentNode, key, fieldSchema) as FlexTreeUnboxField<TFieldSchema>;
|
|
612
|
+
return getOrCreateChild(parent.parent.context, mapTree, schema.allowedTypes, parent);
|
|
688
613
|
}
|
|
689
614
|
|
|
690
615
|
// #endregion Caching and unboxing utilities
|