@fluidframework/tree 2.3.0-288113 → 2.3.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.dependency-cruiser-known-violations.json +28 -40
- package/.vscode/Tree.code-workspace +0 -2
- package/CHANGELOG.md +92 -0
- package/README.md +6 -0
- package/alpha.d.ts +11 -0
- package/api-extractor/api-extractor-lint-alpha.cjs.json +5 -0
- package/api-extractor/api-extractor-lint-alpha.esm.json +5 -0
- package/api-extractor/api-extractor-lint-legacy.cjs.json +5 -0
- package/api-extractor/api-extractor-lint-legacy.esm.json +5 -0
- package/api-extractor/api-extractor.current.json +8 -0
- package/api-extractor/api-extractor.legacy.json +4 -0
- package/api-extractor.json +1 -1
- package/api-report/tree.alpha.api.md +21 -42
- package/api-report/tree.beta.api.md +21 -11
- package/api-report/tree.legacy.alpha.api.md +562 -0
- package/api-report/tree.legacy.public.api.md +559 -0
- package/api-report/tree.public.api.md +8 -13
- package/dist/alpha.d.ts +102 -0
- package/dist/beta.d.ts +6 -2
- package/dist/core/index.d.ts +1 -1
- package/dist/core/index.d.ts.map +1 -1
- package/dist/core/index.js +2 -2
- package/dist/core/index.js.map +1 -1
- package/dist/core/{revertible/revertible.d.ts → revertible.d.ts} +12 -0
- package/dist/core/revertible.d.ts.map +1 -0
- package/dist/core/revertible.js.map +1 -0
- package/dist/core/schema-stored/format.d.ts +3 -3
- package/dist/core/schema-stored/format.js +1 -1
- package/dist/core/schema-stored/format.js.map +1 -1
- package/dist/core/schema-stored/schema.d.ts +2 -7
- package/dist/core/schema-stored/schema.d.ts.map +1 -1
- package/dist/core/schema-stored/schema.js +4 -6
- package/dist/core/schema-stored/schema.js.map +1 -1
- package/dist/core/schema-stored/storedSchemaRepository.d.ts +1 -1
- package/dist/core/schema-stored/storedSchemaRepository.d.ts.map +1 -1
- package/dist/core/tree/anchorSet.d.ts.map +1 -1
- package/dist/core/tree/anchorSet.js +6 -2
- package/dist/core/tree/anchorSet.js.map +1 -1
- package/dist/core/tree/detachedFieldIndex.d.ts +0 -1
- package/dist/core/tree/detachedFieldIndex.d.ts.map +1 -1
- package/dist/core/tree/detachedFieldIndex.js +1 -0
- package/dist/core/tree/detachedFieldIndex.js.map +1 -1
- package/dist/core/tree/visitDelta.d.ts +7 -2
- package/dist/core/tree/visitDelta.d.ts.map +1 -1
- package/dist/core/tree/visitDelta.js.map +1 -1
- package/dist/events/emitter.d.ts +127 -0
- package/dist/events/emitter.d.ts.map +1 -0
- package/dist/events/{events.js → emitter.js} +48 -30
- package/dist/events/emitter.js.map +1 -0
- package/dist/events/index.d.ts +2 -1
- package/dist/events/index.d.ts.map +1 -1
- package/dist/events/index.js +4 -5
- package/dist/events/index.js.map +1 -1
- package/dist/events/interop.d.ts +36 -0
- package/dist/events/interop.d.ts.map +1 -0
- package/dist/{core/revertible/index.d.ts → events/interop.js} +3 -2
- package/dist/events/interop.js.map +1 -0
- package/dist/events/listeners.d.ts +65 -0
- package/dist/events/listeners.d.ts.map +1 -0
- package/{lib/core/revertible/index.d.ts → dist/events/listeners.js} +3 -2
- package/dist/events/listeners.js.map +1 -0
- package/dist/feature-libraries/chunked-forest/chunkTree.d.ts +25 -7
- package/dist/feature-libraries/chunked-forest/chunkTree.d.ts.map +1 -1
- package/dist/feature-libraries/chunked-forest/chunkTree.js +36 -15
- package/dist/feature-libraries/chunked-forest/chunkTree.js.map +1 -1
- package/dist/feature-libraries/chunked-forest/chunkedForest.d.ts +4 -2
- package/dist/feature-libraries/chunked-forest/chunkedForest.d.ts.map +1 -1
- package/dist/feature-libraries/chunked-forest/chunkedForest.js +12 -5
- package/dist/feature-libraries/chunked-forest/chunkedForest.js.map +1 -1
- package/dist/feature-libraries/chunked-forest/uniformChunk.d.ts +15 -2
- package/dist/feature-libraries/chunked-forest/uniformChunk.d.ts.map +1 -1
- package/dist/feature-libraries/chunked-forest/uniformChunk.js +28 -2
- package/dist/feature-libraries/chunked-forest/uniformChunk.js.map +1 -1
- package/dist/feature-libraries/default-schema/defaultEditBuilder.d.ts +3 -1
- package/dist/feature-libraries/default-schema/defaultEditBuilder.d.ts.map +1 -1
- package/dist/feature-libraries/default-schema/defaultEditBuilder.js +5 -4
- package/dist/feature-libraries/default-schema/defaultEditBuilder.js.map +1 -1
- package/dist/feature-libraries/flex-map-tree/index.d.ts +1 -1
- package/dist/feature-libraries/flex-map-tree/index.d.ts.map +1 -1
- package/dist/feature-libraries/flex-map-tree/index.js +2 -1
- package/dist/feature-libraries/flex-map-tree/index.js.map +1 -1
- package/dist/feature-libraries/flex-map-tree/mapTreeNode.d.ts +35 -33
- package/dist/feature-libraries/flex-map-tree/mapTreeNode.d.ts.map +1 -1
- package/dist/feature-libraries/flex-map-tree/mapTreeNode.js +82 -103
- package/dist/feature-libraries/flex-map-tree/mapTreeNode.js.map +1 -1
- package/dist/feature-libraries/flex-tree/context.d.ts +30 -14
- package/dist/feature-libraries/flex-tree/context.d.ts.map +1 -1
- package/dist/feature-libraries/flex-tree/context.js +10 -7
- package/dist/feature-libraries/flex-tree/context.js.map +1 -1
- package/dist/feature-libraries/flex-tree/flexTreeTypes.d.ts +57 -190
- package/dist/feature-libraries/flex-tree/flexTreeTypes.d.ts.map +1 -1
- package/dist/feature-libraries/flex-tree/flexTreeTypes.js +15 -3
- package/dist/feature-libraries/flex-tree/flexTreeTypes.js.map +1 -1
- package/dist/feature-libraries/flex-tree/index.d.ts +2 -3
- package/dist/feature-libraries/flex-tree/index.d.ts.map +1 -1
- package/dist/feature-libraries/flex-tree/index.js.map +1 -1
- package/dist/feature-libraries/flex-tree/lazyEntity.d.ts +3 -3
- package/dist/feature-libraries/flex-tree/lazyEntity.d.ts.map +1 -1
- package/dist/feature-libraries/flex-tree/lazyEntity.js +2 -10
- package/dist/feature-libraries/flex-tree/lazyEntity.js.map +1 -1
- package/dist/feature-libraries/flex-tree/lazyField.d.ts +26 -28
- package/dist/feature-libraries/flex-tree/lazyField.d.ts.map +1 -1
- package/dist/feature-libraries/flex-tree/lazyField.js +11 -14
- package/dist/feature-libraries/flex-tree/lazyField.js.map +1 -1
- package/dist/feature-libraries/flex-tree/lazyNode.d.ts +5 -26
- package/dist/feature-libraries/flex-tree/lazyNode.d.ts.map +1 -1
- package/dist/feature-libraries/flex-tree/lazyNode.js +23 -74
- package/dist/feature-libraries/flex-tree/lazyNode.js.map +1 -1
- package/dist/feature-libraries/flex-tree/unboxed.d.ts +4 -16
- package/dist/feature-libraries/flex-tree/unboxed.d.ts.map +1 -1
- package/dist/feature-libraries/flex-tree/unboxed.js +7 -41
- package/dist/feature-libraries/flex-tree/unboxed.js.map +1 -1
- package/dist/feature-libraries/flex-tree/utilities.d.ts +2 -2
- package/dist/feature-libraries/flex-tree/utilities.d.ts.map +1 -1
- package/dist/feature-libraries/flex-tree/utilities.js +3 -6
- package/dist/feature-libraries/flex-tree/utilities.js.map +1 -1
- package/dist/feature-libraries/forest-summary/forestSummarizer.d.ts.map +1 -1
- package/dist/feature-libraries/forest-summary/forestSummarizer.js +4 -1
- package/dist/feature-libraries/forest-summary/forestSummarizer.js.map +1 -1
- package/dist/feature-libraries/index.d.ts +3 -5
- package/dist/feature-libraries/index.d.ts.map +1 -1
- package/dist/feature-libraries/index.js +5 -11
- package/dist/feature-libraries/index.js.map +1 -1
- package/dist/feature-libraries/modular-schema/comparison.d.ts.map +1 -1
- package/dist/feature-libraries/modular-schema/comparison.js +3 -6
- package/dist/feature-libraries/modular-schema/comparison.js.map +1 -1
- package/dist/feature-libraries/modular-schema/discrepancies.d.ts.map +1 -1
- package/dist/feature-libraries/modular-schema/discrepancies.js +3 -13
- package/dist/feature-libraries/modular-schema/discrepancies.js.map +1 -1
- package/dist/feature-libraries/modular-schema/modularChangeCodecs.js +4 -1
- package/dist/feature-libraries/modular-schema/modularChangeCodecs.js.map +1 -1
- package/dist/feature-libraries/modular-schema/modularChangeFamily.d.ts +2 -1
- package/dist/feature-libraries/modular-schema/modularChangeFamily.d.ts.map +1 -1
- package/dist/feature-libraries/modular-schema/modularChangeFamily.js +12 -5
- package/dist/feature-libraries/modular-schema/modularChangeFamily.js.map +1 -1
- package/dist/feature-libraries/schema-edits/schemaChangeFormat.d.ts +6 -6
- package/dist/feature-libraries/schema-index/format.d.ts +3 -3
- package/dist/feature-libraries/storedToViewSchema.d.ts.map +1 -1
- package/dist/feature-libraries/storedToViewSchema.js +2 -4
- package/dist/feature-libraries/storedToViewSchema.js.map +1 -1
- package/dist/feature-libraries/typed-schema/flexList.d.ts +3 -3
- package/dist/feature-libraries/typed-schema/flexList.js.map +1 -1
- package/dist/feature-libraries/typed-schema/index.d.ts +2 -2
- package/dist/feature-libraries/typed-schema/index.d.ts.map +1 -1
- package/dist/feature-libraries/typed-schema/index.js +2 -2
- package/dist/feature-libraries/typed-schema/index.js.map +1 -1
- package/dist/feature-libraries/typed-schema/schemaCollection.d.ts.map +1 -1
- package/dist/feature-libraries/typed-schema/schemaCollection.js +8 -10
- package/dist/feature-libraries/typed-schema/schemaCollection.js.map +1 -1
- package/dist/feature-libraries/typed-schema/typedTreeSchema.d.ts +17 -48
- package/dist/feature-libraries/typed-schema/typedTreeSchema.d.ts.map +1 -1
- package/dist/feature-libraries/typed-schema/typedTreeSchema.js +5 -37
- package/dist/feature-libraries/typed-schema/typedTreeSchema.js.map +1 -1
- package/dist/feature-libraries/typed-schema/view.d.ts +4 -6
- package/dist/feature-libraries/typed-schema/view.d.ts.map +1 -1
- package/dist/feature-libraries/typed-schema/view.js +5 -4
- package/dist/feature-libraries/typed-schema/view.js.map +1 -1
- package/dist/index.d.ts +4 -4
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +33 -36
- package/dist/index.js.map +1 -1
- package/dist/legacy.d.ts +83 -0
- package/dist/packageVersion.d.ts +1 -1
- package/dist/packageVersion.d.ts.map +1 -1
- package/dist/packageVersion.js +1 -1
- package/dist/packageVersion.js.map +1 -1
- package/dist/public.d.ts +0 -1
- package/dist/shared-tree/checkoutFlexTreeView.d.ts +53 -0
- package/dist/shared-tree/checkoutFlexTreeView.d.ts.map +1 -0
- package/dist/shared-tree/{treeView.js → checkoutFlexTreeView.js} +28 -6
- package/dist/shared-tree/checkoutFlexTreeView.js.map +1 -0
- package/dist/shared-tree/index.d.ts +3 -3
- package/dist/shared-tree/index.d.ts.map +1 -1
- package/dist/shared-tree/index.js +2 -2
- package/dist/shared-tree/index.js.map +1 -1
- package/dist/shared-tree/schematizeTree.d.ts +15 -4
- package/dist/shared-tree/schematizeTree.d.ts.map +1 -1
- package/dist/shared-tree/schematizeTree.js +7 -8
- package/dist/shared-tree/schematizeTree.js.map +1 -1
- package/dist/shared-tree/schematizingTreeView.d.ts +9 -4
- package/dist/shared-tree/schematizingTreeView.d.ts.map +1 -1
- package/dist/shared-tree/schematizingTreeView.js +25 -12
- package/dist/shared-tree/schematizingTreeView.js.map +1 -1
- package/dist/shared-tree/sharedTree.d.ts.map +1 -1
- package/dist/shared-tree/sharedTree.js +2 -2
- package/dist/shared-tree/sharedTree.js.map +1 -1
- package/dist/shared-tree/sharedTreeChangeEnricher.d.ts +3 -1
- package/dist/shared-tree/sharedTreeChangeEnricher.d.ts.map +1 -1
- package/dist/shared-tree/sharedTreeChangeEnricher.js +6 -2
- package/dist/shared-tree/sharedTreeChangeEnricher.js.map +1 -1
- package/dist/shared-tree/sharedTreeChangeFamily.d.ts +3 -1
- package/dist/shared-tree/sharedTreeChangeFamily.d.ts.map +1 -1
- package/dist/shared-tree/sharedTreeChangeFamily.js +3 -2
- package/dist/shared-tree/sharedTreeChangeFamily.js.map +1 -1
- package/dist/shared-tree/sharedTreeEditBuilder.d.ts +2 -1
- package/dist/shared-tree/sharedTreeEditBuilder.d.ts.map +1 -1
- package/dist/shared-tree/sharedTreeEditBuilder.js +2 -2
- package/dist/shared-tree/sharedTreeEditBuilder.js.map +1 -1
- package/dist/shared-tree/treeApi.d.ts +1 -3
- package/dist/shared-tree/treeApi.d.ts.map +1 -1
- package/dist/shared-tree/treeApi.js +6 -4
- package/dist/shared-tree/treeApi.js.map +1 -1
- package/dist/shared-tree/treeCheckout.d.ts +2 -13
- package/dist/shared-tree/treeCheckout.d.ts.map +1 -1
- package/dist/shared-tree/treeCheckout.js +17 -1
- package/dist/shared-tree/treeCheckout.js.map +1 -1
- package/dist/shared-tree-core/branch.js +1 -1
- package/dist/shared-tree-core/branch.js.map +1 -1
- package/dist/simple-tree/api/create.d.ts.map +1 -1
- package/dist/simple-tree/api/create.js +1 -1
- package/dist/simple-tree/api/create.js.map +1 -1
- package/{lib/simple-tree → dist/simple-tree/api}/getJsonSchema.d.ts +1 -1
- package/dist/simple-tree/api/getJsonSchema.d.ts.map +1 -0
- package/dist/simple-tree/{getJsonSchema.js → api/getJsonSchema.js} +1 -1
- package/dist/simple-tree/api/getJsonSchema.js.map +1 -0
- package/{lib/simple-tree → dist/simple-tree/api}/getSimpleSchema.d.ts +1 -1
- package/dist/simple-tree/api/getSimpleSchema.d.ts.map +1 -0
- package/dist/simple-tree/{getSimpleSchema.js → api/getSimpleSchema.js} +1 -1
- package/dist/simple-tree/api/getSimpleSchema.js.map +1 -0
- package/dist/simple-tree/api/index.d.ts +5 -0
- package/dist/simple-tree/api/index.d.ts.map +1 -1
- package/dist/simple-tree/api/index.js +7 -1
- package/dist/simple-tree/api/index.js.map +1 -1
- package/{lib/simple-tree → dist/simple-tree/api}/jsonSchema.d.ts +1 -1
- package/dist/simple-tree/api/jsonSchema.d.ts.map +1 -0
- package/dist/simple-tree/api/jsonSchema.js.map +1 -0
- package/dist/simple-tree/api/schemaFactory.d.ts +45 -14
- package/dist/simple-tree/api/schemaFactory.d.ts.map +1 -1
- package/dist/simple-tree/api/schemaFactory.js +43 -12
- package/dist/simple-tree/api/schemaFactory.js.map +1 -1
- package/dist/simple-tree/{simpleSchema.d.ts → api/simpleSchema.d.ts} +4 -4
- package/dist/simple-tree/api/simpleSchema.d.ts.map +1 -0
- package/dist/simple-tree/api/simpleSchema.js.map +1 -0
- package/dist/simple-tree/api/simpleSchemaToJsonSchema.d.ts.map +1 -0
- package/dist/simple-tree/{simpleSchemaToJsonSchema.js → api/simpleSchemaToJsonSchema.js} +4 -4
- package/dist/simple-tree/api/simpleSchemaToJsonSchema.js.map +1 -0
- package/dist/simple-tree/api/tree.d.ts +1 -21
- package/dist/simple-tree/api/tree.d.ts.map +1 -1
- package/dist/simple-tree/api/tree.js +3 -38
- package/dist/simple-tree/api/tree.js.map +1 -1
- package/dist/simple-tree/api/treeApiBeta.d.ts +79 -0
- package/dist/simple-tree/api/treeApiBeta.d.ts.map +1 -0
- package/dist/simple-tree/api/treeApiBeta.js +26 -0
- package/dist/simple-tree/api/treeApiBeta.js.map +1 -0
- package/dist/simple-tree/api/treeNodeApi.d.ts +1 -1
- package/dist/simple-tree/api/treeNodeApi.d.ts.map +1 -1
- package/dist/simple-tree/api/treeNodeApi.js +21 -19
- package/dist/simple-tree/api/treeNodeApi.js.map +1 -1
- package/dist/simple-tree/api/verboseTree.js +2 -2
- package/dist/simple-tree/api/verboseTree.js.map +1 -1
- package/dist/simple-tree/{viewSchemaToSimpleSchema.d.ts → api/viewSchemaToSimpleSchema.d.ts} +1 -1
- package/dist/simple-tree/api/viewSchemaToSimpleSchema.d.ts.map +1 -0
- package/dist/simple-tree/{viewSchemaToSimpleSchema.js → api/viewSchemaToSimpleSchema.js} +4 -4
- package/{lib/simple-tree → dist/simple-tree/api}/viewSchemaToSimpleSchema.js.map +1 -1
- package/dist/simple-tree/arrayNode.d.ts +2 -2
- package/dist/simple-tree/arrayNode.d.ts.map +1 -1
- package/dist/simple-tree/arrayNode.js +30 -21
- package/dist/simple-tree/arrayNode.js.map +1 -1
- package/dist/simple-tree/core/index.d.ts +3 -3
- package/dist/simple-tree/core/index.d.ts.map +1 -1
- package/dist/simple-tree/core/index.js +4 -1
- package/dist/simple-tree/core/index.js.map +1 -1
- package/dist/simple-tree/core/schemaCaching.d.ts +5 -0
- package/dist/simple-tree/core/schemaCaching.d.ts.map +1 -1
- package/dist/simple-tree/core/schemaCaching.js +10 -1
- package/dist/simple-tree/core/schemaCaching.js.map +1 -1
- package/dist/simple-tree/core/treeNodeKernel.d.ts +61 -3
- package/dist/simple-tree/core/treeNodeKernel.d.ts.map +1 -1
- package/dist/simple-tree/core/treeNodeKernel.js +166 -13
- package/dist/simple-tree/core/treeNodeKernel.js.map +1 -1
- package/dist/simple-tree/core/treeNodeSchema.d.ts +1 -1
- package/dist/simple-tree/core/treeNodeSchema.js.map +1 -1
- package/dist/simple-tree/core/types.d.ts +17 -20
- package/dist/simple-tree/core/types.d.ts.map +1 -1
- package/dist/simple-tree/core/types.js.map +1 -1
- package/dist/simple-tree/core/withType.d.ts +3 -2
- package/dist/simple-tree/core/withType.d.ts.map +1 -1
- package/dist/simple-tree/core/withType.js.map +1 -1
- package/dist/simple-tree/index.d.ts +7 -9
- package/dist/simple-tree/index.d.ts.map +1 -1
- package/dist/simple-tree/index.js +15 -6
- package/dist/simple-tree/index.js.map +1 -1
- package/dist/simple-tree/leafNodeSchema.d.ts +7 -9
- package/dist/simple-tree/leafNodeSchema.d.ts.map +1 -1
- package/dist/simple-tree/leafNodeSchema.js +13 -11
- package/dist/simple-tree/leafNodeSchema.js.map +1 -1
- package/dist/simple-tree/mapNode.d.ts +1 -1
- package/dist/simple-tree/mapNode.d.ts.map +1 -1
- package/dist/simple-tree/mapNode.js +38 -29
- package/dist/simple-tree/mapNode.js.map +1 -1
- package/dist/simple-tree/objectNode.d.ts +9 -7
- package/dist/simple-tree/objectNode.d.ts.map +1 -1
- package/dist/simple-tree/objectNode.js +37 -31
- package/dist/simple-tree/objectNode.js.map +1 -1
- package/dist/simple-tree/proxies.d.ts +1 -14
- package/dist/simple-tree/proxies.d.ts.map +1 -1
- package/dist/simple-tree/proxies.js +12 -15
- package/dist/simple-tree/proxies.js.map +1 -1
- package/dist/simple-tree/proxyBinding.d.ts +2 -62
- package/dist/simple-tree/proxyBinding.d.ts.map +1 -1
- package/dist/simple-tree/proxyBinding.js +8 -181
- package/dist/simple-tree/proxyBinding.js.map +1 -1
- package/dist/simple-tree/schemaTypes.d.ts +7 -7
- package/dist/simple-tree/schemaTypes.d.ts.map +1 -1
- package/dist/simple-tree/schemaTypes.js +4 -4
- package/dist/simple-tree/schemaTypes.js.map +1 -1
- package/dist/simple-tree/toFlexSchema.d.ts +11 -1
- package/dist/simple-tree/toFlexSchema.d.ts.map +1 -1
- package/dist/simple-tree/toFlexSchema.js +54 -31
- package/dist/simple-tree/toFlexSchema.js.map +1 -1
- package/dist/simple-tree/toMapTree.d.ts +25 -37
- package/dist/simple-tree/toMapTree.d.ts.map +1 -1
- package/dist/simple-tree/toMapTree.js +53 -16
- package/dist/simple-tree/toMapTree.js.map +1 -1
- package/dist/simple-tree/treeNodeValid.d.ts.map +1 -1
- package/dist/simple-tree/treeNodeValid.js +7 -10
- package/dist/simple-tree/treeNodeValid.js.map +1 -1
- package/dist/simple-tree/typesUnsafe.d.ts +13 -13
- package/dist/simple-tree/typesUnsafe.js.map +1 -1
- package/dist/simple-tree/walkSchema.d.ts +26 -0
- package/dist/simple-tree/walkSchema.d.ts.map +1 -0
- package/dist/simple-tree/walkSchema.js +49 -0
- package/dist/simple-tree/walkSchema.js.map +1 -0
- package/dist/treeFactory.d.ts +2 -1
- package/dist/treeFactory.d.ts.map +1 -1
- package/dist/treeFactory.js +2 -1
- package/dist/treeFactory.js.map +1 -1
- package/dist/util/typeUtils.d.ts +2 -2
- package/dist/util/typeUtils.js.map +1 -1
- package/legacy.d.ts +11 -0
- package/lib/alpha.d.ts +102 -0
- package/lib/beta.d.ts +6 -2
- package/lib/core/index.d.ts +1 -1
- package/lib/core/index.d.ts.map +1 -1
- package/lib/core/index.js +1 -1
- package/lib/core/index.js.map +1 -1
- package/lib/core/{revertible/revertible.d.ts → revertible.d.ts} +12 -0
- package/lib/core/revertible.d.ts.map +1 -0
- package/lib/core/revertible.js.map +1 -0
- package/lib/core/schema-stored/format.d.ts +3 -3
- package/lib/core/schema-stored/format.js +1 -1
- package/lib/core/schema-stored/format.js.map +1 -1
- package/lib/core/schema-stored/schema.d.ts +2 -7
- package/lib/core/schema-stored/schema.d.ts.map +1 -1
- package/lib/core/schema-stored/schema.js +4 -6
- package/lib/core/schema-stored/schema.js.map +1 -1
- package/lib/core/schema-stored/storedSchemaRepository.d.ts +1 -1
- package/lib/core/schema-stored/storedSchemaRepository.d.ts.map +1 -1
- package/lib/core/tree/anchorSet.d.ts.map +1 -1
- package/lib/core/tree/anchorSet.js +6 -2
- package/lib/core/tree/anchorSet.js.map +1 -1
- package/lib/core/tree/detachedFieldIndex.d.ts +0 -1
- package/lib/core/tree/detachedFieldIndex.d.ts.map +1 -1
- package/lib/core/tree/detachedFieldIndex.js +1 -0
- package/lib/core/tree/detachedFieldIndex.js.map +1 -1
- package/lib/core/tree/visitDelta.d.ts +7 -2
- package/lib/core/tree/visitDelta.d.ts.map +1 -1
- package/lib/core/tree/visitDelta.js.map +1 -1
- package/lib/events/emitter.d.ts +127 -0
- package/lib/events/emitter.d.ts.map +1 -0
- package/lib/events/{events.js → emitter.js} +48 -29
- package/lib/events/emitter.js.map +1 -0
- package/lib/events/index.d.ts +2 -1
- package/lib/events/index.d.ts.map +1 -1
- package/lib/events/index.js +1 -1
- package/lib/events/index.js.map +1 -1
- package/lib/events/interop.d.ts +36 -0
- package/lib/events/interop.d.ts.map +1 -0
- package/{src/core/revertible/index.ts → lib/events/interop.js} +2 -2
- package/lib/events/interop.js.map +1 -0
- package/lib/events/listeners.d.ts +65 -0
- package/lib/events/listeners.d.ts.map +1 -0
- package/lib/{core/revertible/index.js → events/listeners.js} +2 -2
- package/lib/events/listeners.js.map +1 -0
- package/lib/feature-libraries/chunked-forest/chunkTree.d.ts +25 -7
- package/lib/feature-libraries/chunked-forest/chunkTree.d.ts.map +1 -1
- package/lib/feature-libraries/chunked-forest/chunkTree.js +37 -16
- package/lib/feature-libraries/chunked-forest/chunkTree.js.map +1 -1
- package/lib/feature-libraries/chunked-forest/chunkedForest.d.ts +4 -2
- package/lib/feature-libraries/chunked-forest/chunkedForest.d.ts.map +1 -1
- package/lib/feature-libraries/chunked-forest/chunkedForest.js +12 -5
- package/lib/feature-libraries/chunked-forest/chunkedForest.js.map +1 -1
- package/lib/feature-libraries/chunked-forest/uniformChunk.d.ts +15 -2
- package/lib/feature-libraries/chunked-forest/uniformChunk.d.ts.map +1 -1
- package/lib/feature-libraries/chunked-forest/uniformChunk.js +28 -2
- package/lib/feature-libraries/chunked-forest/uniformChunk.js.map +1 -1
- package/lib/feature-libraries/default-schema/defaultEditBuilder.d.ts +3 -1
- package/lib/feature-libraries/default-schema/defaultEditBuilder.d.ts.map +1 -1
- package/lib/feature-libraries/default-schema/defaultEditBuilder.js +5 -4
- package/lib/feature-libraries/default-schema/defaultEditBuilder.js.map +1 -1
- package/lib/feature-libraries/flex-map-tree/index.d.ts +1 -1
- package/lib/feature-libraries/flex-map-tree/index.d.ts.map +1 -1
- package/lib/feature-libraries/flex-map-tree/index.js +1 -1
- package/lib/feature-libraries/flex-map-tree/index.js.map +1 -1
- package/lib/feature-libraries/flex-map-tree/mapTreeNode.d.ts +35 -33
- package/lib/feature-libraries/flex-map-tree/mapTreeNode.d.ts.map +1 -1
- package/lib/feature-libraries/flex-map-tree/mapTreeNode.js +83 -104
- package/lib/feature-libraries/flex-map-tree/mapTreeNode.js.map +1 -1
- package/lib/feature-libraries/flex-tree/context.d.ts +30 -14
- package/lib/feature-libraries/flex-tree/context.d.ts.map +1 -1
- package/lib/feature-libraries/flex-tree/context.js +10 -7
- package/lib/feature-libraries/flex-tree/context.js.map +1 -1
- package/lib/feature-libraries/flex-tree/flexTreeTypes.d.ts +57 -190
- package/lib/feature-libraries/flex-tree/flexTreeTypes.d.ts.map +1 -1
- package/lib/feature-libraries/flex-tree/flexTreeTypes.js +15 -2
- package/lib/feature-libraries/flex-tree/flexTreeTypes.js.map +1 -1
- package/lib/feature-libraries/flex-tree/index.d.ts +2 -3
- package/lib/feature-libraries/flex-tree/index.d.ts.map +1 -1
- package/lib/feature-libraries/flex-tree/index.js +1 -1
- package/lib/feature-libraries/flex-tree/index.js.map +1 -1
- package/lib/feature-libraries/flex-tree/lazyEntity.d.ts +3 -3
- package/lib/feature-libraries/flex-tree/lazyEntity.d.ts.map +1 -1
- package/lib/feature-libraries/flex-tree/lazyEntity.js +2 -10
- package/lib/feature-libraries/flex-tree/lazyEntity.js.map +1 -1
- package/lib/feature-libraries/flex-tree/lazyField.d.ts +26 -28
- package/lib/feature-libraries/flex-tree/lazyField.d.ts.map +1 -1
- package/lib/feature-libraries/flex-tree/lazyField.js +11 -13
- package/lib/feature-libraries/flex-tree/lazyField.js.map +1 -1
- package/lib/feature-libraries/flex-tree/lazyNode.d.ts +5 -26
- package/lib/feature-libraries/flex-tree/lazyNode.d.ts.map +1 -1
- package/lib/feature-libraries/flex-tree/lazyNode.js +23 -72
- package/lib/feature-libraries/flex-tree/lazyNode.js.map +1 -1
- package/lib/feature-libraries/flex-tree/unboxed.d.ts +4 -16
- package/lib/feature-libraries/flex-tree/unboxed.d.ts.map +1 -1
- package/lib/feature-libraries/flex-tree/unboxed.js +5 -37
- package/lib/feature-libraries/flex-tree/unboxed.js.map +1 -1
- package/lib/feature-libraries/flex-tree/utilities.d.ts +2 -2
- package/lib/feature-libraries/flex-tree/utilities.d.ts.map +1 -1
- package/lib/feature-libraries/flex-tree/utilities.js +3 -6
- package/lib/feature-libraries/flex-tree/utilities.js.map +1 -1
- package/lib/feature-libraries/forest-summary/forestSummarizer.d.ts.map +1 -1
- package/lib/feature-libraries/forest-summary/forestSummarizer.js +4 -1
- package/lib/feature-libraries/forest-summary/forestSummarizer.js.map +1 -1
- package/lib/feature-libraries/index.d.ts +3 -5
- package/lib/feature-libraries/index.d.ts.map +1 -1
- package/lib/feature-libraries/index.js +5 -5
- package/lib/feature-libraries/index.js.map +1 -1
- package/lib/feature-libraries/modular-schema/comparison.d.ts.map +1 -1
- package/lib/feature-libraries/modular-schema/comparison.js +3 -6
- package/lib/feature-libraries/modular-schema/comparison.js.map +1 -1
- package/lib/feature-libraries/modular-schema/discrepancies.d.ts.map +1 -1
- package/lib/feature-libraries/modular-schema/discrepancies.js +3 -13
- package/lib/feature-libraries/modular-schema/discrepancies.js.map +1 -1
- package/lib/feature-libraries/modular-schema/modularChangeCodecs.js +4 -1
- package/lib/feature-libraries/modular-schema/modularChangeCodecs.js.map +1 -1
- package/lib/feature-libraries/modular-schema/modularChangeFamily.d.ts +2 -1
- package/lib/feature-libraries/modular-schema/modularChangeFamily.d.ts.map +1 -1
- package/lib/feature-libraries/modular-schema/modularChangeFamily.js +12 -5
- package/lib/feature-libraries/modular-schema/modularChangeFamily.js.map +1 -1
- package/lib/feature-libraries/schema-edits/schemaChangeFormat.d.ts +6 -6
- package/lib/feature-libraries/schema-index/format.d.ts +3 -3
- package/lib/feature-libraries/storedToViewSchema.d.ts.map +1 -1
- package/lib/feature-libraries/storedToViewSchema.js +3 -5
- package/lib/feature-libraries/storedToViewSchema.js.map +1 -1
- package/lib/feature-libraries/typed-schema/flexList.d.ts +3 -3
- package/lib/feature-libraries/typed-schema/flexList.js.map +1 -1
- package/lib/feature-libraries/typed-schema/index.d.ts +2 -2
- package/lib/feature-libraries/typed-schema/index.d.ts.map +1 -1
- package/lib/feature-libraries/typed-schema/index.js +2 -2
- package/lib/feature-libraries/typed-schema/index.js.map +1 -1
- package/lib/feature-libraries/typed-schema/schemaCollection.d.ts.map +1 -1
- package/lib/feature-libraries/typed-schema/schemaCollection.js +9 -11
- package/lib/feature-libraries/typed-schema/schemaCollection.js.map +1 -1
- package/lib/feature-libraries/typed-schema/typedTreeSchema.d.ts +17 -48
- package/lib/feature-libraries/typed-schema/typedTreeSchema.d.ts.map +1 -1
- package/lib/feature-libraries/typed-schema/typedTreeSchema.js +5 -36
- package/lib/feature-libraries/typed-schema/typedTreeSchema.js.map +1 -1
- package/lib/feature-libraries/typed-schema/view.d.ts +4 -6
- package/lib/feature-libraries/typed-schema/view.d.ts.map +1 -1
- package/lib/feature-libraries/typed-schema/view.js +5 -4
- package/lib/feature-libraries/typed-schema/view.js.map +1 -1
- package/lib/index.d.ts +4 -4
- package/lib/index.d.ts.map +1 -1
- package/lib/index.js +3 -5
- package/lib/index.js.map +1 -1
- package/lib/legacy.d.ts +83 -0
- package/lib/packageVersion.d.ts +1 -1
- package/lib/packageVersion.d.ts.map +1 -1
- package/lib/packageVersion.js +1 -1
- package/lib/packageVersion.js.map +1 -1
- package/lib/public.d.ts +0 -1
- package/lib/shared-tree/checkoutFlexTreeView.d.ts +53 -0
- package/lib/shared-tree/checkoutFlexTreeView.d.ts.map +1 -0
- package/lib/shared-tree/{treeView.js → checkoutFlexTreeView.js} +26 -5
- package/lib/shared-tree/checkoutFlexTreeView.js.map +1 -0
- package/lib/shared-tree/index.d.ts +3 -3
- package/lib/shared-tree/index.d.ts.map +1 -1
- package/lib/shared-tree/index.js +1 -1
- package/lib/shared-tree/index.js.map +1 -1
- package/lib/shared-tree/schematizeTree.d.ts +15 -4
- package/lib/shared-tree/schematizeTree.d.ts.map +1 -1
- package/lib/shared-tree/schematizeTree.js +8 -9
- package/lib/shared-tree/schematizeTree.js.map +1 -1
- package/lib/shared-tree/schematizingTreeView.d.ts +9 -4
- package/lib/shared-tree/schematizingTreeView.d.ts.map +1 -1
- package/lib/shared-tree/schematizingTreeView.js +26 -13
- package/lib/shared-tree/schematizingTreeView.js.map +1 -1
- package/lib/shared-tree/sharedTree.d.ts.map +1 -1
- package/lib/shared-tree/sharedTree.js +2 -2
- package/lib/shared-tree/sharedTree.js.map +1 -1
- package/lib/shared-tree/sharedTreeChangeEnricher.d.ts +3 -1
- package/lib/shared-tree/sharedTreeChangeEnricher.d.ts.map +1 -1
- package/lib/shared-tree/sharedTreeChangeEnricher.js +6 -2
- package/lib/shared-tree/sharedTreeChangeEnricher.js.map +1 -1
- package/lib/shared-tree/sharedTreeChangeFamily.d.ts +3 -1
- package/lib/shared-tree/sharedTreeChangeFamily.d.ts.map +1 -1
- package/lib/shared-tree/sharedTreeChangeFamily.js +3 -2
- package/lib/shared-tree/sharedTreeChangeFamily.js.map +1 -1
- package/lib/shared-tree/sharedTreeEditBuilder.d.ts +2 -1
- package/lib/shared-tree/sharedTreeEditBuilder.d.ts.map +1 -1
- package/lib/shared-tree/sharedTreeEditBuilder.js +2 -2
- package/lib/shared-tree/sharedTreeEditBuilder.js.map +1 -1
- package/lib/shared-tree/treeApi.d.ts +1 -3
- package/lib/shared-tree/treeApi.d.ts.map +1 -1
- package/lib/shared-tree/treeApi.js +7 -5
- package/lib/shared-tree/treeApi.js.map +1 -1
- package/lib/shared-tree/treeCheckout.d.ts +2 -13
- package/lib/shared-tree/treeCheckout.d.ts.map +1 -1
- package/lib/shared-tree/treeCheckout.js +18 -2
- package/lib/shared-tree/treeCheckout.js.map +1 -1
- package/lib/shared-tree-core/branch.js +1 -1
- package/lib/shared-tree-core/branch.js.map +1 -1
- package/lib/simple-tree/api/create.d.ts.map +1 -1
- package/lib/simple-tree/api/create.js +2 -2
- package/lib/simple-tree/api/create.js.map +1 -1
- package/{dist/simple-tree → lib/simple-tree/api}/getJsonSchema.d.ts +1 -1
- package/lib/simple-tree/api/getJsonSchema.d.ts.map +1 -0
- package/lib/simple-tree/{getJsonSchema.js → api/getJsonSchema.js} +1 -1
- package/lib/simple-tree/api/getJsonSchema.js.map +1 -0
- package/{dist/simple-tree → lib/simple-tree/api}/getSimpleSchema.d.ts +1 -1
- package/lib/simple-tree/api/getSimpleSchema.d.ts.map +1 -0
- package/lib/simple-tree/{getSimpleSchema.js → api/getSimpleSchema.js} +1 -1
- package/lib/simple-tree/api/getSimpleSchema.js.map +1 -0
- package/lib/simple-tree/api/index.d.ts +5 -0
- package/lib/simple-tree/api/index.d.ts.map +1 -1
- package/lib/simple-tree/api/index.js +3 -0
- package/lib/simple-tree/api/index.js.map +1 -1
- package/{dist/simple-tree → lib/simple-tree/api}/jsonSchema.d.ts +1 -1
- package/lib/simple-tree/api/jsonSchema.d.ts.map +1 -0
- package/lib/simple-tree/api/jsonSchema.js.map +1 -0
- package/lib/simple-tree/api/schemaFactory.d.ts +45 -14
- package/lib/simple-tree/api/schemaFactory.d.ts.map +1 -1
- package/lib/simple-tree/api/schemaFactory.js +43 -12
- package/lib/simple-tree/api/schemaFactory.js.map +1 -1
- package/lib/simple-tree/{simpleSchema.d.ts → api/simpleSchema.d.ts} +4 -4
- package/lib/simple-tree/api/simpleSchema.d.ts.map +1 -0
- package/lib/simple-tree/api/simpleSchema.js.map +1 -0
- package/lib/simple-tree/api/simpleSchemaToJsonSchema.d.ts.map +1 -0
- package/lib/simple-tree/{simpleSchemaToJsonSchema.js → api/simpleSchemaToJsonSchema.js} +4 -4
- package/lib/simple-tree/api/simpleSchemaToJsonSchema.js.map +1 -0
- package/lib/simple-tree/api/tree.d.ts +1 -21
- package/lib/simple-tree/api/tree.d.ts.map +1 -1
- package/lib/simple-tree/api/tree.js +2 -34
- package/lib/simple-tree/api/tree.js.map +1 -1
- package/lib/simple-tree/api/treeApiBeta.d.ts +79 -0
- package/lib/simple-tree/api/treeApiBeta.d.ts.map +1 -0
- package/lib/simple-tree/api/treeApiBeta.js +23 -0
- package/lib/simple-tree/api/treeApiBeta.js.map +1 -0
- package/lib/simple-tree/api/treeNodeApi.d.ts +1 -1
- package/lib/simple-tree/api/treeNodeApi.d.ts.map +1 -1
- package/lib/simple-tree/api/treeNodeApi.js +23 -21
- package/lib/simple-tree/api/treeNodeApi.js.map +1 -1
- package/lib/simple-tree/api/verboseTree.js +1 -1
- package/lib/simple-tree/api/verboseTree.js.map +1 -1
- package/lib/simple-tree/{viewSchemaToSimpleSchema.d.ts → api/viewSchemaToSimpleSchema.d.ts} +1 -1
- package/lib/simple-tree/api/viewSchemaToSimpleSchema.d.ts.map +1 -0
- package/lib/simple-tree/{viewSchemaToSimpleSchema.js → api/viewSchemaToSimpleSchema.js} +4 -4
- package/lib/simple-tree/api/viewSchemaToSimpleSchema.js.map +1 -0
- package/lib/simple-tree/arrayNode.d.ts +2 -2
- package/lib/simple-tree/arrayNode.d.ts.map +1 -1
- package/lib/simple-tree/arrayNode.js +33 -24
- package/lib/simple-tree/arrayNode.js.map +1 -1
- package/lib/simple-tree/core/index.d.ts +3 -3
- package/lib/simple-tree/core/index.d.ts.map +1 -1
- package/lib/simple-tree/core/index.js +2 -2
- package/lib/simple-tree/core/index.js.map +1 -1
- package/lib/simple-tree/core/schemaCaching.d.ts +5 -0
- package/lib/simple-tree/core/schemaCaching.d.ts.map +1 -1
- package/lib/simple-tree/core/schemaCaching.js +8 -0
- package/lib/simple-tree/core/schemaCaching.js.map +1 -1
- package/lib/simple-tree/core/treeNodeKernel.d.ts +61 -3
- package/lib/simple-tree/core/treeNodeKernel.d.ts.map +1 -1
- package/lib/simple-tree/core/treeNodeKernel.js +156 -5
- package/lib/simple-tree/core/treeNodeKernel.js.map +1 -1
- package/lib/simple-tree/core/treeNodeSchema.d.ts +1 -1
- package/lib/simple-tree/core/treeNodeSchema.js.map +1 -1
- package/lib/simple-tree/core/types.d.ts +17 -20
- package/lib/simple-tree/core/types.d.ts.map +1 -1
- package/lib/simple-tree/core/types.js.map +1 -1
- package/lib/simple-tree/core/withType.d.ts +3 -2
- package/lib/simple-tree/core/withType.d.ts.map +1 -1
- package/lib/simple-tree/core/withType.js.map +1 -1
- package/lib/simple-tree/index.d.ts +7 -9
- package/lib/simple-tree/index.d.ts.map +1 -1
- package/lib/simple-tree/index.js +5 -5
- package/lib/simple-tree/index.js.map +1 -1
- package/lib/simple-tree/leafNodeSchema.d.ts +7 -9
- package/lib/simple-tree/leafNodeSchema.d.ts.map +1 -1
- package/lib/simple-tree/leafNodeSchema.js +14 -12
- package/lib/simple-tree/leafNodeSchema.js.map +1 -1
- package/lib/simple-tree/mapNode.d.ts +1 -1
- package/lib/simple-tree/mapNode.d.ts.map +1 -1
- package/lib/simple-tree/mapNode.js +38 -29
- package/lib/simple-tree/mapNode.js.map +1 -1
- package/lib/simple-tree/objectNode.d.ts +9 -7
- package/lib/simple-tree/objectNode.d.ts.map +1 -1
- package/lib/simple-tree/objectNode.js +40 -34
- package/lib/simple-tree/objectNode.js.map +1 -1
- package/lib/simple-tree/proxies.d.ts +1 -14
- package/lib/simple-tree/proxies.d.ts.map +1 -1
- package/lib/simple-tree/proxies.js +11 -14
- package/lib/simple-tree/proxies.js.map +1 -1
- package/lib/simple-tree/proxyBinding.d.ts +2 -62
- package/lib/simple-tree/proxyBinding.d.ts.map +1 -1
- package/lib/simple-tree/proxyBinding.js +6 -174
- package/lib/simple-tree/proxyBinding.js.map +1 -1
- package/lib/simple-tree/schemaTypes.d.ts +7 -7
- package/lib/simple-tree/schemaTypes.d.ts.map +1 -1
- package/lib/simple-tree/schemaTypes.js +4 -4
- package/lib/simple-tree/schemaTypes.js.map +1 -1
- package/lib/simple-tree/toFlexSchema.d.ts +11 -1
- package/lib/simple-tree/toFlexSchema.d.ts.map +1 -1
- package/lib/simple-tree/toFlexSchema.js +29 -8
- package/lib/simple-tree/toFlexSchema.js.map +1 -1
- package/lib/simple-tree/toMapTree.d.ts +25 -37
- package/lib/simple-tree/toMapTree.d.ts.map +1 -1
- package/lib/simple-tree/toMapTree.js +54 -17
- package/lib/simple-tree/toMapTree.js.map +1 -1
- package/lib/simple-tree/treeNodeValid.d.ts.map +1 -1
- package/lib/simple-tree/treeNodeValid.js +8 -11
- package/lib/simple-tree/treeNodeValid.js.map +1 -1
- package/lib/simple-tree/typesUnsafe.d.ts +13 -13
- package/lib/simple-tree/typesUnsafe.js.map +1 -1
- package/lib/simple-tree/walkSchema.d.ts +26 -0
- package/lib/simple-tree/walkSchema.d.ts.map +1 -0
- package/lib/simple-tree/walkSchema.js +43 -0
- package/lib/simple-tree/walkSchema.js.map +1 -0
- package/lib/treeFactory.d.ts +2 -1
- package/lib/treeFactory.d.ts.map +1 -1
- package/lib/treeFactory.js +2 -1
- package/lib/treeFactory.js.map +1 -1
- package/lib/tsdoc-metadata.json +1 -1
- package/lib/util/typeUtils.d.ts +2 -2
- package/lib/util/typeUtils.js.map +1 -1
- package/package.json +57 -25
- package/src/core/index.ts +1 -1
- package/src/core/{revertible/revertible.ts → revertible.ts} +15 -0
- package/src/core/schema-stored/format.ts +1 -1
- package/src/core/schema-stored/schema.ts +6 -13
- package/src/core/tree/anchorSet.ts +18 -3
- package/src/core/tree/detachedFieldIndex.ts +6 -5
- package/src/core/tree/visitDelta.ts +7 -2
- package/src/events/{events.ts → emitter.ts} +52 -139
- package/src/events/index.ts +7 -7
- package/src/events/interop.ts +49 -0
- package/src/events/listeners.ts +68 -0
- package/src/feature-libraries/chunked-forest/chunkTree.ts +63 -18
- package/src/feature-libraries/chunked-forest/chunkedForest.ts +18 -4
- package/src/feature-libraries/chunked-forest/uniformChunk.ts +33 -0
- package/src/feature-libraries/default-schema/defaultEditBuilder.ts +5 -3
- package/src/feature-libraries/flex-map-tree/index.ts +1 -0
- package/src/feature-libraries/flex-map-tree/mapTreeNode.ts +135 -210
- package/src/feature-libraries/flex-tree/README.md +4 -75
- package/src/feature-libraries/flex-tree/context.ts +37 -16
- package/src/feature-libraries/flex-tree/flexTreeTypes.ts +69 -291
- package/src/feature-libraries/flex-tree/index.ts +7 -13
- package/src/feature-libraries/flex-tree/lazyEntity.ts +2 -11
- package/src/feature-libraries/flex-tree/lazyField.ts +49 -73
- package/src/feature-libraries/flex-tree/lazyNode.ts +25 -154
- package/src/feature-libraries/flex-tree/unboxed.ts +9 -68
- package/src/feature-libraries/flex-tree/utilities.ts +4 -8
- package/src/feature-libraries/forest-summary/forestSummarizer.ts +4 -1
- package/src/feature-libraries/index.ts +2 -27
- package/src/feature-libraries/modular-schema/comparison.ts +4 -6
- package/src/feature-libraries/modular-schema/discrepancies.ts +7 -16
- package/src/feature-libraries/modular-schema/modularChangeCodecs.ts +4 -1
- package/src/feature-libraries/modular-schema/modularChangeFamily.ts +14 -4
- package/src/feature-libraries/storedToViewSchema.ts +5 -6
- package/src/feature-libraries/typed-schema/flexList.ts +3 -3
- package/src/feature-libraries/typed-schema/index.ts +1 -3
- package/src/feature-libraries/typed-schema/schemaCollection.ts +15 -17
- package/src/feature-libraries/typed-schema/typedTreeSchema.ts +35 -127
- package/src/feature-libraries/typed-schema/view.ts +4 -13
- package/src/index.ts +4 -8
- package/src/packageVersion.ts +1 -1
- package/src/shared-tree/checkoutFlexTreeView.ts +89 -0
- package/src/shared-tree/index.ts +2 -7
- package/src/shared-tree/schematizeTree.ts +23 -12
- package/src/shared-tree/schematizingTreeView.ts +34 -24
- package/src/shared-tree/sharedTree.ts +6 -1
- package/src/shared-tree/sharedTreeChangeEnricher.ts +6 -1
- package/src/shared-tree/sharedTreeChangeFamily.ts +7 -1
- package/src/shared-tree/sharedTreeEditBuilder.ts +9 -4
- package/src/shared-tree/treeApi.ts +10 -10
- package/src/shared-tree/treeCheckout.ts +26 -15
- package/src/shared-tree-core/branch.ts +1 -1
- package/src/simple-tree/ProxyBinding.md +23 -23
- package/src/simple-tree/api/create.ts +8 -3
- package/src/simple-tree/{getJsonSchema.ts → api/getJsonSchema.ts} +3 -3
- package/src/simple-tree/{getSimpleSchema.ts → api/getSimpleSchema.ts} +3 -3
- package/src/simple-tree/api/index.ts +20 -0
- package/src/simple-tree/{jsonSchema.ts → api/jsonSchema.ts} +1 -1
- package/src/simple-tree/api/schemaFactory.ts +44 -13
- package/src/simple-tree/{simpleSchema.ts → api/simpleSchema.ts} +4 -4
- package/src/simple-tree/{simpleSchemaToJsonSchema.ts → api/simpleSchemaToJsonSchema.ts} +4 -4
- package/src/simple-tree/api/tree.ts +2 -71
- package/src/simple-tree/api/treeApiBeta.ts +101 -0
- package/src/simple-tree/api/treeNodeApi.ts +32 -23
- package/src/simple-tree/api/verboseTree.ts +1 -1
- package/src/simple-tree/{viewSchemaToSimpleSchema.ts → api/viewSchemaToSimpleSchema.ts} +5 -5
- package/src/simple-tree/arrayNode.ts +37 -31
- package/src/simple-tree/core/index.ts +4 -1
- package/src/simple-tree/core/schemaCaching.ts +10 -0
- package/src/simple-tree/core/treeNodeKernel.ts +198 -5
- package/src/simple-tree/core/treeNodeSchema.ts +1 -1
- package/src/simple-tree/core/types.ts +16 -27
- package/src/simple-tree/core/withType.ts +3 -1
- package/src/simple-tree/index.ts +29 -21
- package/src/simple-tree/leafNodeSchema.ts +24 -28
- package/src/simple-tree/mapNode.ts +47 -29
- package/src/simple-tree/objectNode.ts +51 -46
- package/src/simple-tree/proxies.ts +22 -51
- package/src/simple-tree/proxyBinding.ts +3 -254
- package/src/simple-tree/schemaTypes.ts +8 -8
- package/src/simple-tree/toFlexSchema.ts +40 -7
- package/src/simple-tree/toMapTree.ts +113 -79
- package/src/simple-tree/treeNodeValid.ts +10 -13
- package/src/simple-tree/typesUnsafe.ts +13 -13
- package/src/simple-tree/walkSchema.ts +81 -0
- package/src/treeFactory.ts +2 -1
- package/src/util/typeUtils.ts +2 -2
- package/dist/core/revertible/index.d.ts.map +0 -1
- package/dist/core/revertible/index.js +0 -10
- package/dist/core/revertible/index.js.map +0 -1
- package/dist/core/revertible/revertible.d.ts.map +0 -1
- package/dist/core/revertible/revertible.js.map +0 -1
- package/dist/domains/index.d.ts +0 -8
- package/dist/domains/index.d.ts.map +0 -1
- package/dist/domains/index.js +0 -20
- package/dist/domains/index.js.map +0 -1
- package/dist/domains/json/index.d.ts +0 -7
- package/dist/domains/json/index.d.ts.map +0 -1
- package/dist/domains/json/index.js +0 -17
- package/dist/domains/json/index.js.map +0 -1
- package/dist/domains/json/jsonCursor.d.ts +0 -52
- package/dist/domains/json/jsonCursor.d.ts.map +0 -1
- package/dist/domains/json/jsonCursor.js +0 -197
- package/dist/domains/json/jsonCursor.js.map +0 -1
- package/dist/domains/json/jsonDomainSchema.d.ts +0 -24
- package/dist/domains/json/jsonDomainSchema.d.ts.map +0 -1
- package/dist/domains/json/jsonDomainSchema.js +0 -32
- package/dist/domains/json/jsonDomainSchema.js.map +0 -1
- package/dist/domains/leafDomain.d.ts +0 -72
- package/dist/domains/leafDomain.d.ts.map +0 -1
- package/dist/domains/leafDomain.js +0 -88
- package/dist/domains/leafDomain.js.map +0 -1
- package/dist/domains/schemaBuilder.d.ts +0 -103
- package/dist/domains/schemaBuilder.d.ts.map +0 -1
- package/dist/domains/schemaBuilder.js +0 -121
- package/dist/domains/schemaBuilder.js.map +0 -1
- package/dist/domains/testRecursiveDomain.d.ts +0 -17
- package/dist/domains/testRecursiveDomain.d.ts.map +0 -1
- package/dist/domains/testRecursiveDomain.js +0 -35
- package/dist/domains/testRecursiveDomain.js.map +0 -1
- package/dist/events/events.d.ts +0 -207
- package/dist/events/events.d.ts.map +0 -1
- package/dist/events/events.js.map +0 -1
- package/dist/feature-libraries/schemaBuilder.d.ts +0 -31
- package/dist/feature-libraries/schemaBuilder.d.ts.map +0 -1
- package/dist/feature-libraries/schemaBuilder.js +0 -40
- package/dist/feature-libraries/schemaBuilder.js.map +0 -1
- package/dist/feature-libraries/schemaBuilderBase.d.ts +0 -191
- package/dist/feature-libraries/schemaBuilderBase.d.ts.map +0 -1
- package/dist/feature-libraries/schemaBuilderBase.js +0 -201
- package/dist/feature-libraries/schemaBuilderBase.js.map +0 -1
- package/dist/shared-tree/treeView.d.ts +0 -73
- package/dist/shared-tree/treeView.d.ts.map +0 -1
- package/dist/shared-tree/treeView.js.map +0 -1
- package/dist/simple-tree/getJsonSchema.d.ts.map +0 -1
- package/dist/simple-tree/getJsonSchema.js.map +0 -1
- package/dist/simple-tree/getSimpleSchema.d.ts.map +0 -1
- package/dist/simple-tree/getSimpleSchema.js.map +0 -1
- package/dist/simple-tree/jsonSchema.d.ts.map +0 -1
- package/dist/simple-tree/jsonSchema.js.map +0 -1
- package/dist/simple-tree/simpleSchema.d.ts.map +0 -1
- package/dist/simple-tree/simpleSchema.js.map +0 -1
- package/dist/simple-tree/simpleSchemaToJsonSchema.d.ts.map +0 -1
- package/dist/simple-tree/simpleSchemaToJsonSchema.js.map +0 -1
- package/dist/simple-tree/viewSchemaToSimpleSchema.d.ts.map +0 -1
- package/dist/simple-tree/viewSchemaToSimpleSchema.js.map +0 -1
- package/lib/core/revertible/index.d.ts.map +0 -1
- package/lib/core/revertible/index.js.map +0 -1
- package/lib/core/revertible/revertible.d.ts.map +0 -1
- package/lib/core/revertible/revertible.js.map +0 -1
- package/lib/domains/index.d.ts +0 -8
- package/lib/domains/index.d.ts.map +0 -1
- package/lib/domains/index.js +0 -8
- package/lib/domains/index.js.map +0 -1
- package/lib/domains/json/index.d.ts +0 -7
- package/lib/domains/json/index.d.ts.map +0 -1
- package/lib/domains/json/index.js +0 -7
- package/lib/domains/json/index.js.map +0 -1
- package/lib/domains/json/jsonCursor.d.ts +0 -52
- package/lib/domains/json/jsonCursor.d.ts.map +0 -1
- package/lib/domains/json/jsonCursor.js +0 -192
- package/lib/domains/json/jsonCursor.js.map +0 -1
- package/lib/domains/json/jsonDomainSchema.d.ts +0 -24
- package/lib/domains/json/jsonDomainSchema.d.ts.map +0 -1
- package/lib/domains/json/jsonDomainSchema.js +0 -29
- package/lib/domains/json/jsonDomainSchema.js.map +0 -1
- package/lib/domains/leafDomain.d.ts +0 -72
- package/lib/domains/leafDomain.d.ts.map +0 -1
- package/lib/domains/leafDomain.js +0 -85
- package/lib/domains/leafDomain.js.map +0 -1
- package/lib/domains/schemaBuilder.d.ts +0 -103
- package/lib/domains/schemaBuilder.d.ts.map +0 -1
- package/lib/domains/schemaBuilder.js +0 -117
- package/lib/domains/schemaBuilder.js.map +0 -1
- package/lib/domains/testRecursiveDomain.d.ts +0 -17
- package/lib/domains/testRecursiveDomain.d.ts.map +0 -1
- package/lib/domains/testRecursiveDomain.js +0 -32
- package/lib/domains/testRecursiveDomain.js.map +0 -1
- package/lib/events/events.d.ts +0 -207
- package/lib/events/events.d.ts.map +0 -1
- package/lib/events/events.js.map +0 -1
- package/lib/feature-libraries/schemaBuilder.d.ts +0 -31
- package/lib/feature-libraries/schemaBuilder.d.ts.map +0 -1
- package/lib/feature-libraries/schemaBuilder.js +0 -36
- package/lib/feature-libraries/schemaBuilder.js.map +0 -1
- package/lib/feature-libraries/schemaBuilderBase.d.ts +0 -191
- package/lib/feature-libraries/schemaBuilderBase.d.ts.map +0 -1
- package/lib/feature-libraries/schemaBuilderBase.js +0 -195
- package/lib/feature-libraries/schemaBuilderBase.js.map +0 -1
- package/lib/shared-tree/treeView.d.ts +0 -73
- package/lib/shared-tree/treeView.d.ts.map +0 -1
- package/lib/shared-tree/treeView.js.map +0 -1
- package/lib/simple-tree/getJsonSchema.d.ts.map +0 -1
- package/lib/simple-tree/getJsonSchema.js.map +0 -1
- package/lib/simple-tree/getSimpleSchema.d.ts.map +0 -1
- package/lib/simple-tree/getSimpleSchema.js.map +0 -1
- package/lib/simple-tree/jsonSchema.d.ts.map +0 -1
- package/lib/simple-tree/jsonSchema.js.map +0 -1
- package/lib/simple-tree/simpleSchema.d.ts.map +0 -1
- package/lib/simple-tree/simpleSchema.js.map +0 -1
- package/lib/simple-tree/simpleSchemaToJsonSchema.d.ts.map +0 -1
- package/lib/simple-tree/simpleSchemaToJsonSchema.js.map +0 -1
- package/lib/simple-tree/viewSchemaToSimpleSchema.d.ts.map +0 -1
- package/src/domains/README.md +0 -6
- package/src/domains/fence.json +0 -5
- package/src/domains/index.ts +0 -19
- package/src/domains/json/fence.json +0 -5
- package/src/domains/json/index.ts +0 -13
- package/src/domains/json/jsonCursor.ts +0 -247
- package/src/domains/json/jsonDomainSchema.ts +0 -47
- package/src/domains/leafDomain.ts +0 -97
- package/src/domains/schemaBuilder.ts +0 -153
- package/src/domains/testRecursiveDomain.ts +0 -38
- package/src/events/fence.json +0 -5
- package/src/feature-libraries/schemaBuilder.ts +0 -45
- package/src/feature-libraries/schemaBuilderBase.ts +0 -393
- package/src/shared-tree/treeView.ts +0 -113
- /package/dist/core/{revertible/revertible.js → revertible.js} +0 -0
- /package/dist/simple-tree/{jsonSchema.js → api/jsonSchema.js} +0 -0
- /package/dist/simple-tree/{simpleSchema.js → api/simpleSchema.js} +0 -0
- /package/dist/simple-tree/{simpleSchemaToJsonSchema.d.ts → api/simpleSchemaToJsonSchema.d.ts} +0 -0
- /package/lib/core/{revertible/revertible.js → revertible.js} +0 -0
- /package/lib/simple-tree/{jsonSchema.js → api/jsonSchema.js} +0 -0
- /package/lib/simple-tree/{simpleSchema.js → api/simpleSchema.js} +0 -0
- /package/lib/simple-tree/{simpleSchemaToJsonSchema.d.ts → api/simpleSchemaToJsonSchema.d.ts} +0 -0
|
@@ -13,6 +13,7 @@ import {
|
|
|
13
13
|
type FieldUpPath,
|
|
14
14
|
type ITreeCursorSynchronous,
|
|
15
15
|
type ITreeSubscriptionCursor,
|
|
16
|
+
type TreeFieldStoredSchema,
|
|
16
17
|
type TreeNavigationResult,
|
|
17
18
|
inCursorNode,
|
|
18
19
|
iterateCursorField,
|
|
@@ -26,7 +27,7 @@ import {
|
|
|
26
27
|
type ValueFieldEditBuilder,
|
|
27
28
|
} from "../default-schema/index.js";
|
|
28
29
|
import type { FlexFieldKind } from "../modular-schema/index.js";
|
|
29
|
-
import type {
|
|
30
|
+
import type { FlexFieldSchema } from "../typed-schema/index.js";
|
|
30
31
|
|
|
31
32
|
import type { Context } from "./context.js";
|
|
32
33
|
import {
|
|
@@ -37,8 +38,7 @@ import {
|
|
|
37
38
|
type FlexTreeRequiredField,
|
|
38
39
|
type FlexTreeSequenceField,
|
|
39
40
|
type FlexTreeTypedField,
|
|
40
|
-
type
|
|
41
|
-
type FlexTreeUnboxNodeUnion,
|
|
41
|
+
type FlexTreeUnknownUnboxed,
|
|
42
42
|
TreeStatus,
|
|
43
43
|
flexTreeMarker,
|
|
44
44
|
flexTreeSlot,
|
|
@@ -52,7 +52,7 @@ import {
|
|
|
52
52
|
tryMoveCursorToAnchorSymbol,
|
|
53
53
|
} from "./lazyEntity.js";
|
|
54
54
|
import { type LazyTreeNode, makeTree } from "./lazyNode.js";
|
|
55
|
-
import {
|
|
55
|
+
import { unboxedFlexNode } from "./unboxed.js";
|
|
56
56
|
import { indexForAt, treeStatusFromAnchorCache } from "./utilities.js";
|
|
57
57
|
import { UsageError } from "@fluidframework/telemetry-utils/internal";
|
|
58
58
|
import { cursorForMapTreeField, cursorForMapTreeNode } from "../mapTreeCursor.js";
|
|
@@ -125,11 +125,8 @@ export function makeField(
|
|
|
125
125
|
/**
|
|
126
126
|
* Base type for fields implementing {@link FlexTreeField} using cursors.
|
|
127
127
|
*/
|
|
128
|
-
export abstract class LazyField<
|
|
129
|
-
|
|
130
|
-
TTypes extends FlexAllowedTypes,
|
|
131
|
-
>
|
|
132
|
-
extends LazyEntity<FlexFieldSchema<TKind, TTypes>, FieldAnchor>
|
|
128
|
+
export abstract class LazyField<out TKind extends FlexFieldKind>
|
|
129
|
+
extends LazyEntity<FlexFieldSchema<TKind>, FieldAnchor>
|
|
133
130
|
implements FlexTreeField
|
|
134
131
|
{
|
|
135
132
|
public get [flexTreeMarker](): FlexTreeEntityKind.Field {
|
|
@@ -137,6 +134,10 @@ export abstract class LazyField<
|
|
|
137
134
|
}
|
|
138
135
|
public readonly key: FieldKey;
|
|
139
136
|
|
|
137
|
+
public get schema(): TreeFieldStoredSchema {
|
|
138
|
+
return this.flexSchema.stored;
|
|
139
|
+
}
|
|
140
|
+
|
|
140
141
|
/**
|
|
141
142
|
* If this field ends its lifetime before the Anchor does, this needs to be invoked to avoid a double free
|
|
142
143
|
* if/when the Anchor is destroyed.
|
|
@@ -145,7 +146,7 @@ export abstract class LazyField<
|
|
|
145
146
|
|
|
146
147
|
public constructor(
|
|
147
148
|
context: Context,
|
|
148
|
-
schema: FlexFieldSchema<TKind
|
|
149
|
+
schema: FlexFieldSchema<TKind>,
|
|
149
150
|
cursor: ITreeSubscriptionCursor,
|
|
150
151
|
fieldAnchor: FieldAnchor,
|
|
151
152
|
) {
|
|
@@ -164,15 +165,13 @@ export abstract class LazyField<
|
|
|
164
165
|
}
|
|
165
166
|
}
|
|
166
167
|
|
|
167
|
-
public is<
|
|
168
|
-
schema: TSchema,
|
|
169
|
-
): this is FlexTreeTypedField<TSchema> {
|
|
168
|
+
public is<TKind2 extends FlexFieldKind>(kind: TKind2): this is FlexTreeTypedField<TKind2> {
|
|
170
169
|
assert(
|
|
171
|
-
this.context.
|
|
172
|
-
|
|
170
|
+
this.context.flexSchema.policy.fieldKinds.get(kind.identifier) === kind,
|
|
171
|
+
0xa26 /* Narrowing must be done to a kind that exists in this context */,
|
|
173
172
|
);
|
|
174
173
|
|
|
175
|
-
return this.
|
|
174
|
+
return this.flexSchema.kind === (kind as unknown);
|
|
176
175
|
}
|
|
177
176
|
|
|
178
177
|
public get parent(): FlexTreeNode | undefined {
|
|
@@ -203,13 +202,13 @@ export abstract class LazyField<
|
|
|
203
202
|
return this[cursorSymbol].getFieldLength();
|
|
204
203
|
}
|
|
205
204
|
|
|
206
|
-
public atIndex(index: number):
|
|
205
|
+
public atIndex(index: number): FlexTreeUnknownUnboxed {
|
|
207
206
|
return inCursorNode(this[cursorSymbol], index, (cursor) =>
|
|
208
|
-
|
|
207
|
+
unboxedFlexNode(this.context, cursor),
|
|
209
208
|
);
|
|
210
209
|
}
|
|
211
210
|
|
|
212
|
-
public boxedAt(index: number):
|
|
211
|
+
public boxedAt(index: number): FlexTreeNode | undefined {
|
|
213
212
|
const finalIndex = indexForAt(index, this.length);
|
|
214
213
|
|
|
215
214
|
if (finalIndex === undefined) {
|
|
@@ -218,23 +217,20 @@ export abstract class LazyField<
|
|
|
218
217
|
|
|
219
218
|
return inCursorNode(this[cursorSymbol], finalIndex, (cursor) =>
|
|
220
219
|
makeTree(this.context, cursor),
|
|
221
|
-
)
|
|
220
|
+
);
|
|
222
221
|
}
|
|
223
222
|
|
|
224
|
-
public map<U>(callbackfn: (value:
|
|
223
|
+
public map<U>(callbackfn: (value: FlexTreeUnknownUnboxed, index: number) => U): U[] {
|
|
225
224
|
return Array.from(this, callbackfn);
|
|
226
225
|
}
|
|
227
226
|
|
|
228
|
-
public boxedIterator(): IterableIterator<
|
|
229
|
-
return iterateCursorField(
|
|
230
|
-
this[cursorSymbol],
|
|
231
|
-
(cursor) => makeTree(this.context, cursor) as unknown as FlexTreeTypedNodeUnion<TTypes>,
|
|
232
|
-
);
|
|
227
|
+
public boxedIterator(): IterableIterator<FlexTreeNode> {
|
|
228
|
+
return iterateCursorField(this[cursorSymbol], (cursor) => makeTree(this.context, cursor));
|
|
233
229
|
}
|
|
234
230
|
|
|
235
|
-
public [Symbol.iterator](): IterableIterator<
|
|
231
|
+
public [Symbol.iterator](): IterableIterator<FlexTreeUnknownUnboxed> {
|
|
236
232
|
return iterateCursorField(this[cursorSymbol], (cursor) =>
|
|
237
|
-
|
|
233
|
+
unboxedFlexNode(this.context, cursor),
|
|
238
234
|
);
|
|
239
235
|
}
|
|
240
236
|
|
|
@@ -263,20 +259,20 @@ export abstract class LazyField<
|
|
|
263
259
|
}
|
|
264
260
|
}
|
|
265
261
|
|
|
266
|
-
export class LazySequence
|
|
267
|
-
extends LazyField<typeof FieldKinds.sequence
|
|
268
|
-
implements FlexTreeSequenceField
|
|
262
|
+
export class LazySequence
|
|
263
|
+
extends LazyField<typeof FieldKinds.sequence>
|
|
264
|
+
implements FlexTreeSequenceField
|
|
269
265
|
{
|
|
270
266
|
public constructor(
|
|
271
267
|
context: Context,
|
|
272
|
-
schema: FlexFieldSchema<typeof FieldKinds.sequence
|
|
268
|
+
schema: FlexFieldSchema<typeof FieldKinds.sequence>,
|
|
273
269
|
cursor: ITreeSubscriptionCursor,
|
|
274
270
|
fieldAnchor: FieldAnchor,
|
|
275
271
|
) {
|
|
276
272
|
super(context, schema, cursor, fieldAnchor);
|
|
277
273
|
}
|
|
278
274
|
|
|
279
|
-
public at(index: number):
|
|
275
|
+
public at(index: number): FlexTreeUnknownUnboxed | undefined {
|
|
280
276
|
const finalIndex = indexForAt(index, this.length);
|
|
281
277
|
|
|
282
278
|
if (finalIndex === undefined) {
|
|
@@ -284,10 +280,10 @@ export class LazySequence<TTypes extends FlexAllowedTypes>
|
|
|
284
280
|
}
|
|
285
281
|
|
|
286
282
|
return inCursorNode(this[cursorSymbol], finalIndex, (cursor) =>
|
|
287
|
-
|
|
283
|
+
unboxedFlexNode(this.context, cursor),
|
|
288
284
|
);
|
|
289
285
|
}
|
|
290
|
-
public get asArray(): readonly
|
|
286
|
+
public get asArray(): readonly FlexTreeUnknownUnboxed[] {
|
|
291
287
|
return this.map((x) => x);
|
|
292
288
|
}
|
|
293
289
|
|
|
@@ -306,13 +302,13 @@ export class LazySequence<TTypes extends FlexAllowedTypes>
|
|
|
306
302
|
}
|
|
307
303
|
}
|
|
308
304
|
|
|
309
|
-
export class ReadonlyLazyValueField
|
|
310
|
-
extends LazyField<typeof FieldKinds.required
|
|
311
|
-
implements FlexTreeRequiredField
|
|
305
|
+
export class ReadonlyLazyValueField
|
|
306
|
+
extends LazyField<typeof FieldKinds.required>
|
|
307
|
+
implements FlexTreeRequiredField
|
|
312
308
|
{
|
|
313
309
|
public constructor(
|
|
314
310
|
context: Context,
|
|
315
|
-
schema: FlexFieldSchema<typeof FieldKinds.required
|
|
311
|
+
schema: FlexFieldSchema<typeof FieldKinds.required>,
|
|
316
312
|
cursor: ITreeSubscriptionCursor,
|
|
317
313
|
fieldAnchor: FieldAnchor,
|
|
318
314
|
) {
|
|
@@ -325,18 +321,15 @@ export class ReadonlyLazyValueField<TTypes extends FlexAllowedTypes>
|
|
|
325
321
|
},
|
|
326
322
|
};
|
|
327
323
|
|
|
328
|
-
public get content():
|
|
324
|
+
public get content(): FlexTreeUnknownUnboxed {
|
|
329
325
|
return this.atIndex(0);
|
|
330
326
|
}
|
|
331
327
|
}
|
|
332
328
|
|
|
333
|
-
export class LazyValueField
|
|
334
|
-
extends ReadonlyLazyValueField<TTypes>
|
|
335
|
-
implements FlexTreeRequiredField<TTypes>
|
|
336
|
-
{
|
|
329
|
+
export class LazyValueField extends ReadonlyLazyValueField implements FlexTreeRequiredField {
|
|
337
330
|
public constructor(
|
|
338
331
|
context: Context,
|
|
339
|
-
schema: FlexFieldSchema<typeof FieldKinds.required
|
|
332
|
+
schema: FlexFieldSchema<typeof FieldKinds.required>,
|
|
340
333
|
cursor: ITreeSubscriptionCursor,
|
|
341
334
|
fieldAnchor: FieldAnchor,
|
|
342
335
|
) {
|
|
@@ -355,32 +348,18 @@ export class LazyValueField<TTypes extends FlexAllowedTypes>
|
|
|
355
348
|
return fieldEditor;
|
|
356
349
|
}
|
|
357
350
|
|
|
358
|
-
public override get content():
|
|
351
|
+
public override get content(): FlexTreeUnknownUnboxed {
|
|
359
352
|
return this.atIndex(0);
|
|
360
353
|
}
|
|
361
354
|
}
|
|
362
355
|
|
|
363
|
-
export class
|
|
364
|
-
extends
|
|
365
|
-
implements
|
|
366
|
-
{
|
|
367
|
-
public constructor(
|
|
368
|
-
context: Context,
|
|
369
|
-
schema: FlexFieldSchema<typeof FieldKinds.required, TTypes>,
|
|
370
|
-
cursor: ITreeSubscriptionCursor,
|
|
371
|
-
fieldAnchor: FieldAnchor,
|
|
372
|
-
) {
|
|
373
|
-
super(context, schema, cursor, fieldAnchor);
|
|
374
|
-
}
|
|
375
|
-
}
|
|
376
|
-
|
|
377
|
-
export class LazyOptionalField<TTypes extends FlexAllowedTypes>
|
|
378
|
-
extends LazyField<typeof FieldKinds.optional, TTypes>
|
|
379
|
-
implements FlexTreeOptionalField<TTypes>
|
|
356
|
+
export class LazyOptionalField
|
|
357
|
+
extends LazyField<typeof FieldKinds.optional>
|
|
358
|
+
implements FlexTreeOptionalField
|
|
380
359
|
{
|
|
381
360
|
public constructor(
|
|
382
361
|
context: Context,
|
|
383
|
-
schema: FlexFieldSchema<typeof FieldKinds.optional
|
|
362
|
+
schema: FlexFieldSchema<typeof FieldKinds.optional>,
|
|
384
363
|
cursor: ITreeSubscriptionCursor,
|
|
385
364
|
fieldAnchor: FieldAnchor,
|
|
386
365
|
) {
|
|
@@ -402,33 +381,30 @@ export class LazyOptionalField<TTypes extends FlexAllowedTypes>
|
|
|
402
381
|
return fieldEditor;
|
|
403
382
|
}
|
|
404
383
|
|
|
405
|
-
public get content():
|
|
384
|
+
public get content(): FlexTreeUnknownUnboxed | undefined {
|
|
406
385
|
return this.length === 0 ? undefined : this.atIndex(0);
|
|
407
386
|
}
|
|
408
387
|
}
|
|
409
388
|
|
|
410
|
-
export class LazyForbiddenField
|
|
411
|
-
typeof FieldKinds.forbidden,
|
|
412
|
-
TTypes
|
|
413
|
-
> {}
|
|
389
|
+
export class LazyForbiddenField extends LazyField<typeof FieldKinds.forbidden> {}
|
|
414
390
|
|
|
415
|
-
type Builder = new
|
|
391
|
+
type Builder = new (
|
|
416
392
|
context: Context,
|
|
417
393
|
// Correct use of these builders requires the builder of the matching type to be used.
|
|
418
394
|
// Since this has to be done at runtime anyway, trying to use safer typing than `any` here (such as `never`, which is only slightly safer)
|
|
419
395
|
// does not seem worth it (ends up requiring type casts that are just as unsafe).
|
|
420
396
|
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
421
|
-
schema: FlexFieldSchema<any
|
|
397
|
+
schema: FlexFieldSchema<any>,
|
|
422
398
|
cursor: ITreeSubscriptionCursor,
|
|
423
399
|
fieldAnchor: FieldAnchor,
|
|
424
|
-
) => LazyField<FlexFieldKind
|
|
400
|
+
) => LazyField<FlexFieldKind>;
|
|
425
401
|
|
|
426
402
|
const builderList: [FlexFieldKind, Builder][] = [
|
|
427
403
|
[FieldKinds.forbidden, LazyForbiddenField],
|
|
428
404
|
[FieldKinds.optional, LazyOptionalField],
|
|
429
405
|
[FieldKinds.sequence, LazySequence],
|
|
430
406
|
[FieldKinds.required, LazyValueField],
|
|
431
|
-
[FieldKinds.identifier,
|
|
407
|
+
[FieldKinds.identifier, LazyValueField],
|
|
432
408
|
];
|
|
433
409
|
|
|
434
410
|
const kindToClass: ReadonlyMap<FlexFieldKind, Builder> = new Map(builderList);
|
|
@@ -13,35 +13,20 @@ import {
|
|
|
13
13
|
type ITreeSubscriptionCursor,
|
|
14
14
|
type TreeNavigationResult,
|
|
15
15
|
type TreeNodeSchemaIdentifier,
|
|
16
|
-
type TreeValue,
|
|
17
16
|
type Value,
|
|
18
17
|
inCursorField,
|
|
19
18
|
mapCursorFields,
|
|
20
19
|
rootFieldKey,
|
|
21
20
|
} from "../../core/index.js";
|
|
22
|
-
import {
|
|
21
|
+
import { disposeSymbol, fail } from "../../util/index.js";
|
|
23
22
|
import { FieldKinds } from "../default-schema/index.js";
|
|
24
|
-
import {
|
|
25
|
-
Any,
|
|
26
|
-
FlexFieldSchema,
|
|
27
|
-
type FlexMapNodeSchema,
|
|
28
|
-
type FlexTreeNodeSchema,
|
|
29
|
-
type LeafNodeSchema,
|
|
30
|
-
schemaIsLeaf,
|
|
31
|
-
schemaIsMap,
|
|
32
|
-
schemaIsObjectNode,
|
|
33
|
-
} from "../typed-schema/index.js";
|
|
23
|
+
import { FlexFieldSchema, type FlexTreeNodeSchema } from "../typed-schema/index.js";
|
|
34
24
|
|
|
35
25
|
import type { Context } from "./context.js";
|
|
36
26
|
import {
|
|
37
27
|
FlexTreeEntityKind,
|
|
38
28
|
type FlexTreeField,
|
|
39
|
-
type FlexTreeLeafNode,
|
|
40
|
-
type FlexTreeMapNode,
|
|
41
29
|
type FlexTreeNode,
|
|
42
|
-
type FlexTreeTypedField,
|
|
43
|
-
type FlexTreeTypedNode,
|
|
44
|
-
type FlexTreeUnboxField,
|
|
45
30
|
flexTreeMarker,
|
|
46
31
|
flexTreeSlot,
|
|
47
32
|
} from "./flexTreeTypes.js";
|
|
@@ -53,7 +38,6 @@ import {
|
|
|
53
38
|
tryMoveCursorToAnchorSymbol,
|
|
54
39
|
} from "./lazyEntity.js";
|
|
55
40
|
import { makeField } from "./lazyField.js";
|
|
56
|
-
import { unboxedField } from "./unboxed.js";
|
|
57
41
|
|
|
58
42
|
/**
|
|
59
43
|
* @param cursor - This does not take ownership of this cursor: Node will fork it as needed.
|
|
@@ -70,8 +54,8 @@ export function makeTree(context: Context, cursor: ITreeSubscriptionCursor): Laz
|
|
|
70
54
|
assert(cached instanceof LazyTreeNode, 0x92c /* Expected LazyTreeNode */);
|
|
71
55
|
return cached as LazyTreeNode;
|
|
72
56
|
}
|
|
73
|
-
const schema = context.
|
|
74
|
-
return
|
|
57
|
+
const schema = context.flexSchema.nodeSchema.get(cursor.type) ?? fail("missing schema");
|
|
58
|
+
return new LazyTreeNode(context, schema, cursor, anchorNode, anchor);
|
|
75
59
|
}
|
|
76
60
|
|
|
77
61
|
function cleanupTree(anchor: AnchorNode): void {
|
|
@@ -80,26 +64,6 @@ function cleanupTree(anchor: AnchorNode): void {
|
|
|
80
64
|
cached[disposeSymbol]();
|
|
81
65
|
}
|
|
82
66
|
|
|
83
|
-
function buildSubclass(
|
|
84
|
-
context: Context,
|
|
85
|
-
schema: FlexTreeNodeSchema,
|
|
86
|
-
cursor: ITreeSubscriptionCursor,
|
|
87
|
-
anchorNode: AnchorNode,
|
|
88
|
-
anchor: Anchor,
|
|
89
|
-
): LazyTreeNode {
|
|
90
|
-
if (schemaIsMap(schema)) {
|
|
91
|
-
return new LazyMap(context, schema, cursor, anchorNode, anchor);
|
|
92
|
-
}
|
|
93
|
-
if (schemaIsLeaf(schema)) {
|
|
94
|
-
return new LazyLeaf(context, schema, cursor, anchorNode, anchor);
|
|
95
|
-
}
|
|
96
|
-
if (schemaIsObjectNode(schema)) {
|
|
97
|
-
return new LazyTreeNode(context, schema, cursor, anchorNode, anchor);
|
|
98
|
-
}
|
|
99
|
-
// TODO: there should be a common fallback that works for cases without a specialized implementation.
|
|
100
|
-
fail("unrecognized node kind");
|
|
101
|
-
}
|
|
102
|
-
|
|
103
67
|
/**
|
|
104
68
|
* Lazy implementation of {@link FlexTreeNode}.
|
|
105
69
|
*/
|
|
@@ -110,10 +74,10 @@ export class LazyTreeNode<TSchema extends FlexTreeNodeSchema = FlexTreeNodeSchem
|
|
|
110
74
|
public get [flexTreeMarker](): FlexTreeEntityKind.Node {
|
|
111
75
|
return FlexTreeEntityKind.Node;
|
|
112
76
|
}
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
77
|
+
|
|
78
|
+
public get schema(): TreeNodeSchemaIdentifier {
|
|
79
|
+
return this.flexSchema.name;
|
|
80
|
+
}
|
|
117
81
|
|
|
118
82
|
// Using JS private here prevents it from showing up as a enumerable own property, or conflicting with struct fields.
|
|
119
83
|
readonly #removeDeleteCallback: () => void;
|
|
@@ -131,21 +95,17 @@ export class LazyTreeNode<TSchema extends FlexTreeNodeSchema = FlexTreeNodeSchem
|
|
|
131
95
|
this.#removeDeleteCallback = anchorNode.on("afterDestroy", cleanupTree);
|
|
132
96
|
|
|
133
97
|
assert(
|
|
134
|
-
this.context.
|
|
98
|
+
this.context.flexSchema.nodeSchema.get(this.flexSchema.name) !== undefined,
|
|
135
99
|
0x784 /* There is no explicit schema for this node type. Ensure that the type is correct and the schema for it was added to the TreeStoredSchema */,
|
|
136
100
|
);
|
|
137
|
-
|
|
138
|
-
this.type = schema.name;
|
|
139
101
|
}
|
|
140
102
|
|
|
141
|
-
public is
|
|
142
|
-
schema: TSchemaInner,
|
|
143
|
-
): this is FlexTreeTypedNode<TSchemaInner> {
|
|
103
|
+
public is(schema: FlexTreeNodeSchema): boolean {
|
|
144
104
|
assert(
|
|
145
|
-
this.context.
|
|
105
|
+
this.context.flexSchema.nodeSchema.get(schema.name) === schema,
|
|
146
106
|
0x785 /* Narrowing must be done to a schema that exists in this context */,
|
|
147
107
|
);
|
|
148
|
-
return this.
|
|
108
|
+
return this.flexSchema === (schema as unknown);
|
|
149
109
|
}
|
|
150
110
|
|
|
151
111
|
protected override [tryMoveCursorToAnchorSymbol](
|
|
@@ -168,7 +128,7 @@ export class LazyTreeNode<TSchema extends FlexTreeNodeSchema = FlexTreeNodeSchem
|
|
|
168
128
|
}
|
|
169
129
|
|
|
170
130
|
public tryGetField(fieldKey: FieldKey): FlexTreeField | undefined {
|
|
171
|
-
const schema = this.
|
|
131
|
+
const schema = this.flexSchema.getFieldSchema(fieldKey);
|
|
172
132
|
return inCursorField(this[cursorSymbol], fieldKey, (cursor) => {
|
|
173
133
|
if (cursor.getFieldLength() === 0) {
|
|
174
134
|
return undefined;
|
|
@@ -178,12 +138,15 @@ export class LazyTreeNode<TSchema extends FlexTreeNodeSchema = FlexTreeNodeSchem
|
|
|
178
138
|
}
|
|
179
139
|
|
|
180
140
|
public getBoxed(key: FieldKey): FlexTreeField {
|
|
181
|
-
|
|
141
|
+
const fieldSchema = this.flexSchema.getFieldSchema(key);
|
|
142
|
+
return inCursorField(this[cursorSymbol], key, (cursor) => {
|
|
143
|
+
return makeField(this.context, fieldSchema, cursor);
|
|
144
|
+
});
|
|
182
145
|
}
|
|
183
146
|
|
|
184
147
|
public boxedIterator(): IterableIterator<FlexTreeField> {
|
|
185
148
|
return mapCursorFields(this[cursorSymbol], (cursor) =>
|
|
186
|
-
makeField(this.context, this.
|
|
149
|
+
makeField(this.context, this.flexSchema.getFieldSchema(cursor.getFieldKey()), cursor),
|
|
187
150
|
).values();
|
|
188
151
|
}
|
|
189
152
|
|
|
@@ -202,11 +165,11 @@ export class LazyTreeNode<TSchema extends FlexTreeNodeSchema = FlexTreeNodeSchem
|
|
|
202
165
|
// Parent field is a detached sequence, and thus needs special handling for its schema.
|
|
203
166
|
// eslint-disable-next-line unicorn/prefer-ternary
|
|
204
167
|
if (key === rootFieldKey) {
|
|
205
|
-
fieldSchema = this.context.
|
|
168
|
+
fieldSchema = this.context.flexSchema.rootFieldSchema;
|
|
206
169
|
} else {
|
|
207
170
|
// All fields (in the flex tree API) have a schema.
|
|
208
171
|
// Since currently there is no known schema for detached field other than the special default root:
|
|
209
|
-
// give all other detached fields a schema of sequence of
|
|
172
|
+
// give all other detached fields a schema of sequence of anything.
|
|
210
173
|
// That schema is the only one that is safe since its the only field schema that allows any possible field content.
|
|
211
174
|
//
|
|
212
175
|
// TODO:
|
|
@@ -215,16 +178,18 @@ export class LazyTreeNode<TSchema extends FlexTreeNodeSchema = FlexTreeNodeSchem
|
|
|
215
178
|
// 2. Remove (and its inverse) start working on subsequences or fields contents (like everything in a sequence or optional field) and not just single nodes.
|
|
216
179
|
// 3. Possibly other unknown cases.
|
|
217
180
|
// Additionally this approach makes it possible for a user to take a FlexTree node, get its parent, check its schema, down cast based on that, then edit that detached field (ex: removing the node in it).
|
|
218
|
-
// This MIGHT work properly with existing merge resolution logic (it must keep client in sync and be unable to violate schema), but this either needs robust testing or to be explicitly banned (error before
|
|
181
|
+
// This MIGHT work properly with existing merge resolution logic (it must keep client in sync and be unable to violate schema), but this either needs robust testing or to be explicitly banned (error before sending the op).
|
|
219
182
|
// Issues like replacing a node in the a removed sequenced then undoing the remove could easily violate schema if not everything works exactly right!
|
|
220
|
-
fieldSchema = FlexFieldSchema.create(FieldKinds.sequence, [
|
|
183
|
+
fieldSchema = FlexFieldSchema.create(FieldKinds.sequence, [
|
|
184
|
+
...this.context.flexSchema.nodeSchema.values(),
|
|
185
|
+
]);
|
|
221
186
|
}
|
|
222
187
|
} else {
|
|
223
188
|
cursor.exitField();
|
|
224
189
|
const parentType = cursor.type;
|
|
225
190
|
cursor.enterField(key);
|
|
226
191
|
const nodeSchema =
|
|
227
|
-
this.context.
|
|
192
|
+
this.context.flexSchema.nodeSchema.get(parentType) ??
|
|
228
193
|
fail("requested schema that does not exist");
|
|
229
194
|
fieldSchema = nodeSchema.getFieldSchema(key);
|
|
230
195
|
}
|
|
@@ -234,102 +199,8 @@ export class LazyTreeNode<TSchema extends FlexTreeNodeSchema = FlexTreeNodeSchem
|
|
|
234
199
|
|
|
235
200
|
return { parent: proxifiedField, index };
|
|
236
201
|
}
|
|
237
|
-
}
|
|
238
|
-
|
|
239
|
-
export class LazyMap<TSchema extends FlexMapNodeSchema>
|
|
240
|
-
extends LazyTreeNode<TSchema>
|
|
241
|
-
implements FlexTreeMapNode<TSchema>
|
|
242
|
-
{
|
|
243
|
-
public constructor(
|
|
244
|
-
context: Context,
|
|
245
|
-
schema: TSchema,
|
|
246
|
-
cursor: ITreeSubscriptionCursor,
|
|
247
|
-
anchorNode: AnchorNode,
|
|
248
|
-
anchor: Anchor,
|
|
249
|
-
) {
|
|
250
|
-
super(context, schema, cursor, anchorNode, anchor);
|
|
251
|
-
}
|
|
252
202
|
|
|
253
203
|
public keys(): IterableIterator<FieldKey> {
|
|
254
204
|
return mapCursorFields(this[cursorSymbol], (cursor) => cursor.getFieldKey()).values();
|
|
255
205
|
}
|
|
256
|
-
|
|
257
|
-
public values(): IterableIterator<FlexTreeUnboxField<TSchema["info"], "notEmpty">> {
|
|
258
|
-
return mapCursorFields(
|
|
259
|
-
this[cursorSymbol],
|
|
260
|
-
(cursor) =>
|
|
261
|
-
unboxedField(this.context, this.schema.info, cursor) as FlexTreeUnboxField<
|
|
262
|
-
TSchema["info"],
|
|
263
|
-
"notEmpty"
|
|
264
|
-
>,
|
|
265
|
-
).values();
|
|
266
|
-
}
|
|
267
|
-
|
|
268
|
-
public entries(): IterableIterator<
|
|
269
|
-
[FieldKey, FlexTreeUnboxField<TSchema["info"], "notEmpty">]
|
|
270
|
-
> {
|
|
271
|
-
return mapCursorFields(this[cursorSymbol], (cursor) => {
|
|
272
|
-
const entry: [FieldKey, FlexTreeUnboxField<TSchema["info"], "notEmpty">] = [
|
|
273
|
-
cursor.getFieldKey(),
|
|
274
|
-
unboxedField(this.context, this.schema.info, cursor) as FlexTreeUnboxField<
|
|
275
|
-
TSchema["info"],
|
|
276
|
-
"notEmpty"
|
|
277
|
-
>,
|
|
278
|
-
];
|
|
279
|
-
return entry;
|
|
280
|
-
}).values();
|
|
281
|
-
}
|
|
282
|
-
|
|
283
|
-
public forEach(
|
|
284
|
-
callbackFn: (
|
|
285
|
-
value: FlexTreeUnboxField<TSchema["info"], "notEmpty">,
|
|
286
|
-
key: FieldKey,
|
|
287
|
-
map: FlexTreeMapNode<TSchema>,
|
|
288
|
-
) => void,
|
|
289
|
-
thisArg?: unknown,
|
|
290
|
-
): void {
|
|
291
|
-
const fn = thisArg !== undefined ? callbackFn.bind(thisArg) : callbackFn;
|
|
292
|
-
for (const [key, value] of this.entries()) {
|
|
293
|
-
fn(value, key, this);
|
|
294
|
-
}
|
|
295
|
-
}
|
|
296
|
-
|
|
297
|
-
public override getBoxed(key: string): FlexTreeTypedField<TSchema["info"]> {
|
|
298
|
-
return super.getBoxed(brand(key)) as FlexTreeTypedField<TSchema["info"]>;
|
|
299
|
-
}
|
|
300
|
-
|
|
301
|
-
public [Symbol.iterator](): IterableIterator<
|
|
302
|
-
[FieldKey, FlexTreeUnboxField<TSchema["info"], "notEmpty">]
|
|
303
|
-
> {
|
|
304
|
-
return this.entries();
|
|
305
|
-
}
|
|
306
|
-
}
|
|
307
|
-
|
|
308
|
-
export class LazyLeaf<TSchema extends LeafNodeSchema>
|
|
309
|
-
extends LazyTreeNode<TSchema>
|
|
310
|
-
implements FlexTreeLeafNode<TSchema>
|
|
311
|
-
{
|
|
312
|
-
public constructor(
|
|
313
|
-
context: Context,
|
|
314
|
-
schema: TSchema,
|
|
315
|
-
cursor: ITreeSubscriptionCursor,
|
|
316
|
-
anchorNode: AnchorNode,
|
|
317
|
-
anchor: Anchor,
|
|
318
|
-
) {
|
|
319
|
-
super(context, schema, cursor, anchorNode, anchor);
|
|
320
|
-
}
|
|
321
|
-
|
|
322
|
-
public override get value(): TreeValue<TSchema["info"]> {
|
|
323
|
-
return super.value as TreeValue<TSchema["info"]>;
|
|
324
|
-
}
|
|
325
|
-
}
|
|
326
|
-
|
|
327
|
-
function getBoxedField(
|
|
328
|
-
objectNode: LazyTreeNode,
|
|
329
|
-
key: FieldKey,
|
|
330
|
-
fieldSchema: FlexFieldSchema,
|
|
331
|
-
): FlexTreeField {
|
|
332
|
-
return inCursorField(objectNode[cursorSymbol], key, (cursor) => {
|
|
333
|
-
return makeField(objectNode.context, fieldSchema, cursor);
|
|
334
|
-
});
|
|
335
206
|
}
|
|
@@ -3,81 +3,22 @@
|
|
|
3
3
|
* Licensed under the MIT License.
|
|
4
4
|
*/
|
|
5
5
|
|
|
6
|
-
import {
|
|
7
|
-
import { FieldKinds } from "../default-schema/index.js";
|
|
8
|
-
import type { FlexFieldKind } from "../modular-schema/index.js";
|
|
9
|
-
import {
|
|
10
|
-
type FlexAllowedTypes,
|
|
11
|
-
type FlexFieldSchema,
|
|
12
|
-
type FlexTreeNodeSchema,
|
|
13
|
-
schemaIsLeaf,
|
|
14
|
-
} from "../typed-schema/index.js";
|
|
6
|
+
import type { ITreeSubscriptionCursor } from "../../core/index.js";
|
|
15
7
|
|
|
16
8
|
import type { Context } from "./context.js";
|
|
17
|
-
import type {
|
|
18
|
-
FlexTreeNode,
|
|
19
|
-
FlexTreeUnboxField,
|
|
20
|
-
FlexTreeUnboxNode,
|
|
21
|
-
FlexTreeUnboxNodeUnion,
|
|
22
|
-
} from "./flexTreeTypes.js";
|
|
23
|
-
import { makeField } from "./lazyField.js";
|
|
9
|
+
import type { FlexTreeUnknownUnboxed } from "./flexTreeTypes.js";
|
|
24
10
|
import { makeTree } from "./lazyNode.js";
|
|
25
11
|
|
|
26
12
|
/**
|
|
27
|
-
*
|
|
13
|
+
* Returns the flex tree node, of the value if it has one.
|
|
28
14
|
*/
|
|
29
|
-
export function
|
|
15
|
+
export function unboxedFlexNode(
|
|
30
16
|
context: Context,
|
|
31
|
-
schema: TSchema,
|
|
32
17
|
cursor: ITreeSubscriptionCursor,
|
|
33
|
-
):
|
|
34
|
-
|
|
35
|
-
|
|
18
|
+
): FlexTreeUnknownUnboxed {
|
|
19
|
+
const value = cursor.value;
|
|
20
|
+
if (value !== undefined) {
|
|
21
|
+
return value;
|
|
36
22
|
}
|
|
37
|
-
|
|
38
|
-
return makeTree(context, cursor) as FlexTreeNode as FlexTreeUnboxNode<TSchema>;
|
|
39
|
-
}
|
|
40
|
-
|
|
41
|
-
/**
|
|
42
|
-
* See {@link FlexTreeUnboxNodeUnion} for documentation on what unwrapping this performs.
|
|
43
|
-
*/
|
|
44
|
-
export function unboxedUnion<TTypes extends FlexAllowedTypes>(
|
|
45
|
-
context: Context,
|
|
46
|
-
schema: FlexFieldSchema<FlexFieldKind, TTypes>,
|
|
47
|
-
cursor: ITreeSubscriptionCursor,
|
|
48
|
-
): FlexTreeUnboxNodeUnion<TTypes> {
|
|
49
|
-
const type = schema.monomorphicChildType;
|
|
50
|
-
if (type !== undefined) {
|
|
51
|
-
return unboxedTree(context, type, cursor) as FlexTreeUnboxNodeUnion<TTypes>;
|
|
52
|
-
}
|
|
53
|
-
return makeTree(context, cursor) as FlexTreeUnboxNodeUnion<TTypes>;
|
|
54
|
-
}
|
|
55
|
-
|
|
56
|
-
/**
|
|
57
|
-
* @param context - the common context of the field.
|
|
58
|
-
* @param schema - the TreeFieldStoredSchema of the field.
|
|
59
|
-
* @param cursor - the cursor, which must point to the field being proxified.
|
|
60
|
-
*/
|
|
61
|
-
export function unboxedField<TSchema extends FlexFieldSchema>(
|
|
62
|
-
context: Context,
|
|
63
|
-
schema: TSchema,
|
|
64
|
-
cursor: ITreeSubscriptionCursor,
|
|
65
|
-
): FlexTreeUnboxField<TSchema> {
|
|
66
|
-
const kind = schema.kind;
|
|
67
|
-
if (kind === FieldKinds.required) {
|
|
68
|
-
return inCursorNode(cursor, 0, (innerCursor) =>
|
|
69
|
-
unboxedUnion(context, schema, innerCursor),
|
|
70
|
-
) as FlexTreeUnboxField<TSchema>;
|
|
71
|
-
}
|
|
72
|
-
if (kind === FieldKinds.optional) {
|
|
73
|
-
if (cursor.getFieldLength() === 0) {
|
|
74
|
-
return undefined as FlexTreeUnboxField<TSchema>;
|
|
75
|
-
}
|
|
76
|
-
return inCursorNode(cursor, 0, (innerCursor) =>
|
|
77
|
-
unboxedUnion(context, schema, innerCursor),
|
|
78
|
-
) as FlexTreeUnboxField<TSchema>;
|
|
79
|
-
}
|
|
80
|
-
|
|
81
|
-
// TODO: forbidden and nodeKey
|
|
82
|
-
return makeField(context, schema, cursor) as FlexTreeUnboxField<TSchema>;
|
|
23
|
+
return makeTree(context, cursor);
|
|
83
24
|
}
|
|
@@ -78,16 +78,12 @@ export interface DetachedFieldCache {
|
|
|
78
78
|
* Utility function to get a {@link SchemaAndPolicy} object from a {@link FlexTreeNode} or {@link FlexTreeField}.
|
|
79
79
|
* @param nodeOrField - {@link FlexTreeNode} or {@link FlexTreeField} to get the schema and policy from.
|
|
80
80
|
* @returns A {@link SchemaAndPolicy} object with the stored schema and policy from the node or field provided.
|
|
81
|
-
*
|
|
81
|
+
* For {@link Unhydrated} nodes this schema may only describe the types allowed subtree for this particular entity.
|
|
82
82
|
*/
|
|
83
|
-
export function getSchemaAndPolicy(nodeOrField: FlexTreeEntity): SchemaAndPolicy
|
|
84
|
-
if (nodeOrField.context === undefined) {
|
|
85
|
-
return undefined;
|
|
86
|
-
}
|
|
87
|
-
|
|
83
|
+
export function getSchemaAndPolicy(nodeOrField: FlexTreeEntity): SchemaAndPolicy {
|
|
88
84
|
return {
|
|
89
|
-
schema: nodeOrField.context.
|
|
90
|
-
policy: nodeOrField.context.
|
|
85
|
+
schema: nodeOrField.context.schema,
|
|
86
|
+
policy: nodeOrField.context.flexSchema.policy,
|
|
91
87
|
};
|
|
92
88
|
}
|
|
93
89
|
|