@fluidframework/tree 2.2.0 → 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 -6
- package/api-report/tree.beta.api.md +21 -6
- 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 +6 -6
- package/dist/alpha.d.ts +102 -0
- package/dist/beta.d.ts +6 -1
- 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 +4 -6
- package/dist/core/tree/anchorSet.d.ts.map +1 -1
- package/dist/core/tree/anchorSet.js +15 -1
- 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} +49 -28
- 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 -35
- package/dist/feature-libraries/flex-map-tree/mapTreeNode.d.ts.map +1 -1
- package/dist/feature-libraries/flex-map-tree/mapTreeNode.js +82 -115
- 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 -281
- package/dist/feature-libraries/flex-tree/flexTreeTypes.d.ts.map +1 -1
- package/dist/feature-libraries/flex-tree/flexTreeTypes.js +15 -32
- 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 +1 -3
- 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 -29
- package/dist/feature-libraries/flex-tree/lazyField.d.ts.map +1 -1
- package/dist/feature-libraries/flex-tree/lazyField.js +11 -17
- package/dist/feature-libraries/flex-tree/lazyField.js.map +1 -1
- package/dist/feature-libraries/flex-tree/lazyNode.d.ts +6 -34
- package/dist/feature-libraries/flex-tree/lazyNode.d.ts.map +1 -1
- package/dist/feature-libraries/flex-tree/lazyNode.js +23 -159
- 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 -13
- 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 +3 -3
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +3 -1
- package/dist/index.js.map +1 -1
- package/dist/legacy.d.ts +83 -0
- package/dist/packageVersion.d.ts +1 -1
- package/dist/packageVersion.js +1 -1
- package/dist/packageVersion.js.map +1 -1
- package/dist/shared-tree/checkoutFlexTreeView.d.ts +53 -0
- package/dist/shared-tree/checkoutFlexTreeView.d.ts.map +1 -0
- package/dist/shared-tree/{treeView.js → checkoutFlexTreeView.js} +28 -6
- package/dist/shared-tree/checkoutFlexTreeView.js.map +1 -0
- package/dist/shared-tree/index.d.ts +3 -3
- package/dist/shared-tree/index.d.ts.map +1 -1
- package/dist/shared-tree/index.js +2 -2
- package/dist/shared-tree/index.js.map +1 -1
- package/dist/shared-tree/schematizeTree.d.ts +15 -4
- package/dist/shared-tree/schematizeTree.d.ts.map +1 -1
- package/dist/shared-tree/schematizeTree.js +7 -8
- package/dist/shared-tree/schematizeTree.js.map +1 -1
- package/dist/shared-tree/schematizingTreeView.d.ts +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.map +1 -1
- package/dist/simple-tree/api/treeNodeApi.js +51 -21
- 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 +33 -38
- package/dist/simple-tree/arrayNode.js.map +1 -1
- package/dist/simple-tree/core/index.d.ts +2 -2
- 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 +78 -7
- package/dist/simple-tree/core/treeNodeKernel.d.ts.map +1 -1
- package/dist/simple-tree/core/treeNodeKernel.js +219 -30
- 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 +23 -8
- 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 -1
- 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 +4 -6
- package/lib/core/tree/anchorSet.d.ts.map +1 -1
- package/lib/core/tree/anchorSet.js +15 -1
- 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} +49 -27
- 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 -35
- package/lib/feature-libraries/flex-map-tree/mapTreeNode.d.ts.map +1 -1
- package/lib/feature-libraries/flex-map-tree/mapTreeNode.js +83 -116
- 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 -281
- package/lib/feature-libraries/flex-tree/flexTreeTypes.d.ts.map +1 -1
- package/lib/feature-libraries/flex-tree/flexTreeTypes.js +15 -31
- 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 +2 -2
- 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 -29
- package/lib/feature-libraries/flex-tree/lazyField.d.ts.map +1 -1
- package/lib/feature-libraries/flex-tree/lazyField.js +11 -16
- package/lib/feature-libraries/flex-tree/lazyField.js.map +1 -1
- package/lib/feature-libraries/flex-tree/lazyNode.d.ts +6 -34
- package/lib/feature-libraries/flex-tree/lazyNode.d.ts.map +1 -1
- package/lib/feature-libraries/flex-tree/lazyNode.js +24 -156
- 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 +3 -3
- package/lib/index.d.ts.map +1 -1
- package/lib/index.js +3 -1
- package/lib/index.js.map +1 -1
- package/lib/legacy.d.ts +83 -0
- package/lib/packageVersion.d.ts +1 -1
- package/lib/packageVersion.js +1 -1
- package/lib/packageVersion.js.map +1 -1
- package/lib/shared-tree/checkoutFlexTreeView.d.ts +53 -0
- package/lib/shared-tree/checkoutFlexTreeView.d.ts.map +1 -0
- package/lib/shared-tree/{treeView.js → checkoutFlexTreeView.js} +26 -5
- package/lib/shared-tree/checkoutFlexTreeView.js.map +1 -0
- package/lib/shared-tree/index.d.ts +3 -3
- package/lib/shared-tree/index.d.ts.map +1 -1
- package/lib/shared-tree/index.js +1 -1
- package/lib/shared-tree/index.js.map +1 -1
- package/lib/shared-tree/schematizeTree.d.ts +15 -4
- package/lib/shared-tree/schematizeTree.d.ts.map +1 -1
- package/lib/shared-tree/schematizeTree.js +8 -9
- package/lib/shared-tree/schematizeTree.js.map +1 -1
- package/lib/shared-tree/schematizingTreeView.d.ts +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.map +1 -1
- package/lib/simple-tree/api/treeNodeApi.js +53 -23
- 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 +36 -41
- package/lib/simple-tree/arrayNode.js.map +1 -1
- package/lib/simple-tree/core/index.d.ts +2 -2
- 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 +78 -7
- package/lib/simple-tree/core/treeNodeKernel.d.ts.map +1 -1
- package/lib/simple-tree/core/treeNodeKernel.js +211 -24
- 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 +23 -8
- 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 +58 -36
- 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 +35 -9
- package/src/core/tree/detachedFieldIndex.ts +6 -5
- package/src/core/tree/visitDelta.ts +7 -2
- package/src/events/{events.ts → emitter.ts} +55 -134
- 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 -231
- 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 -458
- package/src/feature-libraries/flex-tree/index.ts +7 -29
- package/src/feature-libraries/flex-tree/lazyEntity.ts +2 -11
- package/src/feature-libraries/flex-tree/lazyField.ts +49 -79
- package/src/feature-libraries/flex-tree/lazyNode.ts +26 -306
- 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 -41
- 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 +5 -1
- 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 +63 -22
- 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 +38 -41
- package/src/simple-tree/core/index.ts +4 -0
- package/src/simple-tree/core/schemaCaching.ts +10 -0
- package/src/simple-tree/core/treeNodeKernel.ts +279 -27
- package/src/simple-tree/core/treeNodeSchema.ts +1 -1
- package/src/simple-tree/core/types.ts +23 -8
- package/src/simple-tree/core/withType.ts +3 -1
- package/src/simple-tree/index.ts +29 -20
- 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 -201
- 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 -201
- 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
|
@@ -25,7 +25,6 @@ import {
|
|
|
25
25
|
import { brand, fail, isReadonlyArray, find } from "../util/index.js";
|
|
26
26
|
|
|
27
27
|
import { nullSchema } from "./leafNodeSchema.js";
|
|
28
|
-
import type { InsertableContent } from "./proxies.js";
|
|
29
28
|
import {
|
|
30
29
|
type FieldSchema,
|
|
31
30
|
type ImplicitAllowedTypes,
|
|
@@ -38,10 +37,19 @@ import {
|
|
|
38
37
|
FieldKind,
|
|
39
38
|
type TreeLeafValue,
|
|
40
39
|
} from "./schemaTypes.js";
|
|
41
|
-
import {
|
|
40
|
+
import {
|
|
41
|
+
getKernel,
|
|
42
|
+
getSimpleNodeSchemaFromNode,
|
|
43
|
+
isTreeNode,
|
|
44
|
+
NodeKind,
|
|
45
|
+
type InnerNode,
|
|
46
|
+
type TreeNode,
|
|
47
|
+
type TreeNodeSchema,
|
|
48
|
+
type Unhydrated,
|
|
49
|
+
} from "./core/index.js";
|
|
42
50
|
import { SchemaValidationErrors, isNodeInSchema } from "../feature-libraries/index.js";
|
|
43
|
-
import { tryGetInnerNode } from "./proxyBinding.js";
|
|
44
51
|
import { isObjectNodeSchema } from "./objectNodeTypes.js";
|
|
52
|
+
import type { IFluidHandle } from "@fluidframework/core-interfaces";
|
|
45
53
|
|
|
46
54
|
/**
|
|
47
55
|
* Module notes:
|
|
@@ -125,11 +133,14 @@ export function mapTreeFromNodeData(
|
|
|
125
133
|
// Add what defaults can be provided. If no `context` is providing, some defaults may still be missing.
|
|
126
134
|
addDefaultsToMapTree(mapTree, normalizedFieldSchema.allowedTypes, context);
|
|
127
135
|
|
|
128
|
-
// TODO:
|
|
129
|
-
// Since some defaults may still be missing, this can give false positives when context is undefined but schemaValidationPolicy is provided.
|
|
130
136
|
if (schemaValidationPolicy?.policy.validateSchema === true) {
|
|
131
|
-
|
|
132
|
-
|
|
137
|
+
// TODO: BUG: AB#9131
|
|
138
|
+
// Since some defaults may still be missing, this can give false positives when context is undefined but schemaValidationPolicy is provided.
|
|
139
|
+
// For now disable this check when context is undefined:
|
|
140
|
+
if (context !== undefined) {
|
|
141
|
+
const maybeError = isNodeInSchema(mapTree, schemaValidationPolicy);
|
|
142
|
+
inSchemaOrThrow(maybeError);
|
|
143
|
+
}
|
|
133
144
|
}
|
|
134
145
|
|
|
135
146
|
return mapTree;
|
|
@@ -148,12 +159,10 @@ function nodeDataToMapTree(
|
|
|
148
159
|
): ExclusiveMapTree {
|
|
149
160
|
// A special cache path for processing unhydrated nodes.
|
|
150
161
|
// They already have the mapTree, so there is no need to recompute it.
|
|
151
|
-
const
|
|
152
|
-
if (
|
|
153
|
-
if (isMapTreeNode(
|
|
154
|
-
if (
|
|
155
|
-
!allowedTypes.has(tryGetSimpleNodeSchema(flexNode.schema) ?? fail("missing schema"))
|
|
156
|
-
) {
|
|
162
|
+
const innerNode = tryGetInnerNode(data);
|
|
163
|
+
if (innerNode !== undefined) {
|
|
164
|
+
if (isMapTreeNode(innerNode)) {
|
|
165
|
+
if (!allowedTypes.has(getSimpleNodeSchemaFromNode(innerNode))) {
|
|
157
166
|
throw new UsageError("Invalid schema for this context.");
|
|
158
167
|
}
|
|
159
168
|
// TODO: mapTreeFromNodeData modifies the trees it gets to add defaults.
|
|
@@ -161,13 +170,15 @@ function nodeDataToMapTree(
|
|
|
161
170
|
// This is unnecessary and inefficient, but should be a no-op if all calls provide the same context (which they might not).
|
|
162
171
|
// A cleaner design (avoiding this cast) might be to apply defaults eagerly if they don't need a context, and lazily (when hydrating) if they do.
|
|
163
172
|
// This could avoid having to mutate the map tree to apply defaults, removing the need for this cast.
|
|
164
|
-
return
|
|
173
|
+
return innerNode.mapTree as ExclusiveMapTree;
|
|
165
174
|
} else {
|
|
166
175
|
// The node is already hydrated, meaning that it already got inserted into the tree previously
|
|
167
176
|
throw new UsageError("A node may not be inserted into the tree more than once");
|
|
168
177
|
}
|
|
169
178
|
}
|
|
170
179
|
|
|
180
|
+
assert(!isTreeNode(data), 0xa23 /* data without an inner node cannot be TreeNode */);
|
|
181
|
+
|
|
171
182
|
const schema = getType(data, allowedTypes);
|
|
172
183
|
|
|
173
184
|
let result: ExclusiveMapTree;
|
|
@@ -208,7 +219,7 @@ export function inSchemaOrThrow(maybeError: SchemaValidationErrors): void {
|
|
|
208
219
|
* Used to determine which fallback values may be appropriate.
|
|
209
220
|
*/
|
|
210
221
|
function leafToMapTree(
|
|
211
|
-
data:
|
|
222
|
+
data: FactoryContent,
|
|
212
223
|
schema: TreeNodeSchema,
|
|
213
224
|
allowedTypes: ReadonlySet<TreeNodeSchema>,
|
|
214
225
|
): ExclusiveMapTree {
|
|
@@ -310,7 +321,7 @@ function arrayChildToMapTree(
|
|
|
310
321
|
* validation should happen. If it does, the input tree will be validated against this schema + policy, and an error will
|
|
311
322
|
* be thrown if the tree does not conform to the schema. If undefined, no validation against the stored schema is done.
|
|
312
323
|
*/
|
|
313
|
-
function arrayToMapTree(data:
|
|
324
|
+
function arrayToMapTree(data: FactoryContent, schema: TreeNodeSchema): ExclusiveMapTree {
|
|
314
325
|
assert(schema.kind === NodeKind.Array, 0x922 /* Expected an array schema. */);
|
|
315
326
|
if (!(typeof data === "object" && data !== null && Symbol.iterator in data)) {
|
|
316
327
|
throw new UsageError(`Input data is incompatible with Array schema: ${data}`);
|
|
@@ -339,7 +350,7 @@ function arrayToMapTree(data: InsertableContent, schema: TreeNodeSchema): Exclus
|
|
|
339
350
|
* validation should happen. If it does, the input tree will be validated against this schema + policy, and an error will
|
|
340
351
|
* be thrown if the tree does not conform to the schema. If undefined, no validation against the stored schema is done.
|
|
341
352
|
*/
|
|
342
|
-
function mapToMapTree(data:
|
|
353
|
+
function mapToMapTree(data: FactoryContent, schema: TreeNodeSchema): ExclusiveMapTree {
|
|
343
354
|
assert(schema.kind === NodeKind.Map, 0x923 /* Expected a Map schema. */);
|
|
344
355
|
if (!(typeof data === "object" && data !== null)) {
|
|
345
356
|
throw new UsageError(`Input data is incompatible with Map schema: ${data}`);
|
|
@@ -381,9 +392,14 @@ function mapToMapTree(data: InsertableContent, schema: TreeNodeSchema): Exclusiv
|
|
|
381
392
|
* @param data - The tree data to be transformed. Must be a Record-like object.
|
|
382
393
|
* @param schema - The schema associated with the value.
|
|
383
394
|
*/
|
|
384
|
-
function objectToMapTree(data:
|
|
395
|
+
function objectToMapTree(data: FactoryContent, schema: TreeNodeSchema): ExclusiveMapTree {
|
|
385
396
|
assert(isObjectNodeSchema(schema), 0x924 /* Expected an Object schema. */);
|
|
386
|
-
if (
|
|
397
|
+
if (
|
|
398
|
+
typeof data !== "object" ||
|
|
399
|
+
data === null ||
|
|
400
|
+
Symbol.iterator in data ||
|
|
401
|
+
isFluidHandle(data)
|
|
402
|
+
) {
|
|
387
403
|
throw new UsageError(`Input data is incompatible with Object schema: ${data}`);
|
|
388
404
|
}
|
|
389
405
|
|
|
@@ -392,7 +408,7 @@ function objectToMapTree(data: InsertableContent, schema: TreeNodeSchema): Exclu
|
|
|
392
408
|
// Loop through field keys without data.
|
|
393
409
|
// This does NOT apply defaults.
|
|
394
410
|
for (const [key, fieldInfo] of schema.flexKeyMap) {
|
|
395
|
-
if (
|
|
411
|
+
if (checkFieldProperty(data, key)) {
|
|
396
412
|
const value = (data as Record<string, InsertableContent>)[key as string];
|
|
397
413
|
setFieldValue(fields, value, fieldInfo.schema, fieldInfo.storedKey);
|
|
398
414
|
}
|
|
@@ -404,6 +420,24 @@ function objectToMapTree(data: InsertableContent, schema: TreeNodeSchema): Exclu
|
|
|
404
420
|
};
|
|
405
421
|
}
|
|
406
422
|
|
|
423
|
+
/**
|
|
424
|
+
* Check {@link FactoryContentObject} for a property which could be store a field.
|
|
425
|
+
* @remarks
|
|
426
|
+
* The currently policy is to only consider own properties.
|
|
427
|
+
* See {@link InsertableObjectFromSchemaRecord} for where this policy is documented in the public API.
|
|
428
|
+
*
|
|
429
|
+
* Explicit undefined members are considered to exist, as long as they are own properties.
|
|
430
|
+
*/
|
|
431
|
+
function checkFieldProperty(
|
|
432
|
+
data: FactoryContentObject,
|
|
433
|
+
key: string | symbol,
|
|
434
|
+
): data is {
|
|
435
|
+
readonly [P in string]: InsertableContent | undefined;
|
|
436
|
+
} {
|
|
437
|
+
// This policy only allows own properties.
|
|
438
|
+
return Object.hasOwnProperty.call(data, key);
|
|
439
|
+
}
|
|
440
|
+
|
|
407
441
|
function setFieldValue(
|
|
408
442
|
fields: Map<FieldKey, readonly MapTree[]>,
|
|
409
443
|
fieldValue: InsertableContent | undefined,
|
|
@@ -419,10 +453,10 @@ function setFieldValue(
|
|
|
419
453
|
}
|
|
420
454
|
|
|
421
455
|
function getType(
|
|
422
|
-
data:
|
|
456
|
+
data: FactoryContent,
|
|
423
457
|
allowedTypes: ReadonlySet<TreeNodeSchema>,
|
|
424
458
|
): TreeNodeSchema {
|
|
425
|
-
const possibleTypes = getPossibleTypes(allowedTypes, data
|
|
459
|
+
const possibleTypes = getPossibleTypes(allowedTypes, data);
|
|
426
460
|
if (possibleTypes.length === 0) {
|
|
427
461
|
throw new UsageError(
|
|
428
462
|
`The provided data is incompatible with all of the types allowed by the schema. The set of allowed types is: ${JSON.stringify(
|
|
@@ -452,7 +486,7 @@ For class-based schema, this can be done by replacing an expression like "{foo:
|
|
|
452
486
|
*/
|
|
453
487
|
export function getPossibleTypes(
|
|
454
488
|
allowedTypes: ReadonlySet<TreeNodeSchema>,
|
|
455
|
-
data:
|
|
489
|
+
data: FactoryContent,
|
|
456
490
|
): TreeNodeSchema[] {
|
|
457
491
|
let best = CompatibilityLevel.None;
|
|
458
492
|
const possibleTypes: TreeNodeSchema[] = [];
|
|
@@ -500,12 +534,9 @@ enum CompatibilityLevel {
|
|
|
500
534
|
*/
|
|
501
535
|
function shallowCompatibilityTest(
|
|
502
536
|
schema: TreeNodeSchema,
|
|
503
|
-
data:
|
|
537
|
+
data: FactoryContent,
|
|
504
538
|
): CompatibilityLevel {
|
|
505
|
-
assert(
|
|
506
|
-
data !== undefined,
|
|
507
|
-
0x889 /* undefined cannot be used as contextually typed data. Use ContextuallyTypedFieldData. */,
|
|
508
|
-
);
|
|
539
|
+
assert(data !== undefined, 0x889 /* undefined cannot be used as FactoryContent. */);
|
|
509
540
|
|
|
510
541
|
if (isTreeValue(data)) {
|
|
511
542
|
return allowsValue(schema, data) ? CompatibilityLevel.Normal : CompatibilityLevel.None;
|
|
@@ -574,8 +605,14 @@ function shallowCompatibilityTest(
|
|
|
574
605
|
|
|
575
606
|
// If the schema has a required key which is not present in the input object, reject it.
|
|
576
607
|
for (const [fieldKey, fieldSchema] of schema.fields) {
|
|
577
|
-
if (
|
|
578
|
-
|
|
608
|
+
if (fieldSchema.requiresValue) {
|
|
609
|
+
if (checkFieldProperty(data, fieldKey)) {
|
|
610
|
+
if (data[fieldKey] === undefined) {
|
|
611
|
+
return CompatibilityLevel.None;
|
|
612
|
+
}
|
|
613
|
+
} else {
|
|
614
|
+
return CompatibilityLevel.None;
|
|
615
|
+
}
|
|
579
616
|
}
|
|
580
617
|
}
|
|
581
618
|
|
|
@@ -589,54 +626,6 @@ function allowsValue(schema: TreeNodeSchema, value: TreeValue): boolean {
|
|
|
589
626
|
return false;
|
|
590
627
|
}
|
|
591
628
|
|
|
592
|
-
/**
|
|
593
|
-
* Content of a tree which needs external schema information to interpret.
|
|
594
|
-
*
|
|
595
|
-
* This format is intended for concise authoring of tree literals when the schema is statically known.
|
|
596
|
-
*
|
|
597
|
-
* Once schema aware APIs are implemented, they can be used to provide schema specific subsets of this type.
|
|
598
|
-
*/
|
|
599
|
-
export type ContextuallyTypedNodeData =
|
|
600
|
-
| ContextuallyTypedNodeDataObject
|
|
601
|
-
| number
|
|
602
|
-
| string
|
|
603
|
-
| boolean
|
|
604
|
-
// eslint-disable-next-line @rushstack/no-new-null
|
|
605
|
-
| null
|
|
606
|
-
| readonly ContextuallyTypedNodeData[]
|
|
607
|
-
| ReadonlyMap<string, ContextuallyTypedNodeData>
|
|
608
|
-
| Iterable<ContextuallyTypedNodeData>
|
|
609
|
-
| Iterable<[string, ContextuallyTypedNodeData]>;
|
|
610
|
-
|
|
611
|
-
/**
|
|
612
|
-
* Content of a field which needs external schema information to interpret.
|
|
613
|
-
*
|
|
614
|
-
* This format is intended for concise authoring of tree literals when the schema is statically known.
|
|
615
|
-
*
|
|
616
|
-
* Once schema aware APIs are implemented, they can be used to provide schema specific subsets of this type.
|
|
617
|
-
*/
|
|
618
|
-
export type ContextuallyTypedFieldData = ContextuallyTypedNodeData | undefined;
|
|
619
|
-
|
|
620
|
-
/**
|
|
621
|
-
* Object case of {@link ContextuallyTypedNodeData}.
|
|
622
|
-
*/
|
|
623
|
-
export interface ContextuallyTypedNodeDataObject {
|
|
624
|
-
/**
|
|
625
|
-
* Fields of this node, indexed by their field keys.
|
|
626
|
-
*
|
|
627
|
-
* Allow explicit undefined for compatibility with FlexTree, and type-safety on read.
|
|
628
|
-
*/
|
|
629
|
-
// TODO: make sure explicit undefined is actually handled correctly.
|
|
630
|
-
[key: FieldKey]: ContextuallyTypedFieldData;
|
|
631
|
-
|
|
632
|
-
/**
|
|
633
|
-
* Fields of this node, indexed by their field keys as strings.
|
|
634
|
-
*
|
|
635
|
-
* Allow unbranded field keys as a convenience for literals.
|
|
636
|
-
*/
|
|
637
|
-
[key: string]: ContextuallyTypedFieldData;
|
|
638
|
-
}
|
|
639
|
-
|
|
640
629
|
/**
|
|
641
630
|
* Walk the given {@link ExclusiveMapTree} and deeply provide any field defaults for fields that are missing in the tree but present in the schema.
|
|
642
631
|
* @param mapTree - The tree to populate with defaults. This is borrowed: no references to it are kept by this function.
|
|
@@ -714,8 +703,53 @@ function provideDefault(
|
|
|
714
703
|
if (isConstant(fieldProvider)) {
|
|
715
704
|
return fieldProvider();
|
|
716
705
|
} else {
|
|
717
|
-
// Leaving field empty despite it needing a default value since a context was required and
|
|
706
|
+
// Leaving field empty despite it needing a default value since a context was required and none was provided.
|
|
718
707
|
// Caller better handle this case by providing the default at some other point in time when the context becomes known.
|
|
719
708
|
}
|
|
720
709
|
}
|
|
721
710
|
}
|
|
711
|
+
|
|
712
|
+
/**
|
|
713
|
+
* Retrieves the InnerNode associated with the given target via {@link setInnerNode}, if any.
|
|
714
|
+
* @remarks
|
|
715
|
+
* If `target` is a unhydrated node, returns its MapTreeNode.
|
|
716
|
+
* If `target` is a cooked node (or marinated but a FlexTreeNode exists) returns the FlexTreeNode.
|
|
717
|
+
* If the target is not a node, or a marinated node with no FlexTreeNode for its anchor, returns undefined.
|
|
718
|
+
*/
|
|
719
|
+
function tryGetInnerNode(target: unknown): InnerNode | undefined {
|
|
720
|
+
if (isTreeNode(target)) {
|
|
721
|
+
return getKernel(target).tryGetInnerNode();
|
|
722
|
+
}
|
|
723
|
+
}
|
|
724
|
+
|
|
725
|
+
/**
|
|
726
|
+
* Content which can be used to build a node.
|
|
727
|
+
* @remarks
|
|
728
|
+
* Can contain unhydrated nodes, but can not be an unhydrated node at the root.
|
|
729
|
+
*/
|
|
730
|
+
export type FactoryContent =
|
|
731
|
+
| IFluidHandle
|
|
732
|
+
| string
|
|
733
|
+
| number
|
|
734
|
+
| boolean
|
|
735
|
+
// eslint-disable-next-line @rushstack/no-new-null
|
|
736
|
+
| null
|
|
737
|
+
| Iterable<readonly [string, InsertableContent]>
|
|
738
|
+
| readonly InsertableContent[]
|
|
739
|
+
| FactoryContentObject;
|
|
740
|
+
|
|
741
|
+
/**
|
|
742
|
+
* Record-like object which can be used to build some kinds of nodes.
|
|
743
|
+
* @remarks
|
|
744
|
+
* Can contain unhydrated nodes, but can not be an unhydrated node at the root.
|
|
745
|
+
*
|
|
746
|
+
* Supports object and map nodes.
|
|
747
|
+
*/
|
|
748
|
+
type FactoryContentObject = {
|
|
749
|
+
readonly [P in string]?: InsertableContent;
|
|
750
|
+
};
|
|
751
|
+
|
|
752
|
+
/**
|
|
753
|
+
* Content which can be inserted into a tree.
|
|
754
|
+
*/
|
|
755
|
+
export type InsertableContent = Unhydrated<TreeNode> | FactoryContent;
|
|
@@ -7,7 +7,6 @@ import { assert } from "@fluidframework/core-utils/internal";
|
|
|
7
7
|
|
|
8
8
|
import {
|
|
9
9
|
type TreeNodeSchema,
|
|
10
|
-
type TreeNodeSchemaClass,
|
|
11
10
|
NodeKind,
|
|
12
11
|
tryGetSimpleNodeSchema,
|
|
13
12
|
isTreeNode,
|
|
@@ -15,6 +14,8 @@ import {
|
|
|
15
14
|
privateToken,
|
|
16
15
|
TreeNode,
|
|
17
16
|
type InternalTreeNode,
|
|
17
|
+
typeSchemaSymbol,
|
|
18
|
+
type InnerNode,
|
|
18
19
|
} from "./core/index.js";
|
|
19
20
|
import {
|
|
20
21
|
type FlexTreeNode,
|
|
@@ -26,7 +27,6 @@ import { UsageError } from "@fluidframework/telemetry-utils/internal";
|
|
|
26
27
|
import { fail } from "../util/index.js";
|
|
27
28
|
|
|
28
29
|
import { getFlexSchema } from "./toFlexSchema.js";
|
|
29
|
-
import { getOrCreateInnerNode, setInnerNode } from "./proxyBinding.js";
|
|
30
30
|
|
|
31
31
|
/**
|
|
32
32
|
* Class which all {@link TreeNode}s must extend.
|
|
@@ -150,17 +150,18 @@ export abstract class TreeNodeValid<TInput> extends TreeNode {
|
|
|
150
150
|
);
|
|
151
151
|
}
|
|
152
152
|
|
|
153
|
-
const node:
|
|
154
|
-
? input
|
|
155
|
-
: schema.buildRawNode(this, input);
|
|
153
|
+
const node: InnerNode = isFlexTreeNode(input) ? input : schema.buildRawNode(this, input);
|
|
156
154
|
assert(
|
|
157
|
-
tryGetSimpleNodeSchema(node.
|
|
155
|
+
tryGetSimpleNodeSchema(node.flexSchema) === schema,
|
|
158
156
|
0x83b /* building node with wrong schema */,
|
|
159
157
|
);
|
|
160
158
|
|
|
161
159
|
const result = schema.prepareInstance(this, node);
|
|
162
|
-
|
|
163
|
-
|
|
160
|
+
// The TreeNodeKernel associates itself the TreeNode (result here, not node) so it can be looked up later via getKernel.
|
|
161
|
+
// If desired this could be put in a non-enumerable symbol property for lookup instead, but that gets messy going through proxies,
|
|
162
|
+
// so just relying on the WeakMap seems like the cleanest approach.
|
|
163
|
+
new TreeNodeKernel(result, schema, node);
|
|
164
|
+
|
|
164
165
|
return result;
|
|
165
166
|
}
|
|
166
167
|
}
|
|
@@ -203,11 +204,7 @@ function inspectNodeFunction(
|
|
|
203
204
|
options?: unknown,
|
|
204
205
|
inspect?: unknown,
|
|
205
206
|
): unknown {
|
|
206
|
-
|
|
207
|
-
// This case could be optimized, for example by placing the simple schema in a symbol on tree nodes.
|
|
208
|
-
const schema = tryGetSimpleNodeSchema(
|
|
209
|
-
getOrCreateInnerNode(this).schema,
|
|
210
|
-
) as TreeNodeSchemaClass;
|
|
207
|
+
const schema = this[typeSchemaSymbol];
|
|
211
208
|
const title = `${schema.name}: ${NodeKind[schema.kind]} Node (${schema.identifier})`;
|
|
212
209
|
|
|
213
210
|
if (depth < 2) {
|
|
@@ -41,7 +41,7 @@ import type { TreeArrayNodeBase, TreeArrayNode } from "./arrayNode.js";
|
|
|
41
41
|
* {@link Unenforced} version of `ObjectFromSchemaRecord`.
|
|
42
42
|
* @remarks
|
|
43
43
|
* Do note use this type directly: its only needed in the implementation of generic logic which define recursive schema, not when using recursive schema.
|
|
44
|
-
* @public
|
|
44
|
+
* @system @public
|
|
45
45
|
*/
|
|
46
46
|
export type ObjectFromSchemaRecordUnsafe<
|
|
47
47
|
T extends Unenforced<RestrictiveReadonlyRecord<string, ImplicitFieldSchema>>,
|
|
@@ -53,7 +53,7 @@ export type ObjectFromSchemaRecordUnsafe<
|
|
|
53
53
|
* {@link Unenforced} version of {@link TreeObjectNode}.
|
|
54
54
|
* @remarks
|
|
55
55
|
* Do note use this type directly: its only needed in the implementation of generic logic which define recursive schema, not when using recursive schema.
|
|
56
|
-
* @public
|
|
56
|
+
* @system @public
|
|
57
57
|
*/
|
|
58
58
|
export type TreeObjectNodeUnsafe<
|
|
59
59
|
T extends Unenforced<RestrictiveReadonlyRecord<string, ImplicitFieldSchema>>,
|
|
@@ -64,7 +64,7 @@ export type TreeObjectNodeUnsafe<
|
|
|
64
64
|
* {@link Unenforced} version of {@link TreeFieldFromImplicitField}.
|
|
65
65
|
* @remarks
|
|
66
66
|
* Do note use this type directly: its only needed in the implementation of generic logic which define recursive schema, not when using recursive schema.
|
|
67
|
-
* @public
|
|
67
|
+
* @system @public
|
|
68
68
|
*/
|
|
69
69
|
export type TreeFieldFromImplicitFieldUnsafe<TSchema extends Unenforced<ImplicitFieldSchema>> =
|
|
70
70
|
TSchema extends FieldSchemaUnsafe<infer Kind, infer Types>
|
|
@@ -77,7 +77,7 @@ export type TreeFieldFromImplicitFieldUnsafe<TSchema extends Unenforced<Implicit
|
|
|
77
77
|
* {@link Unenforced} version of {@link TreeNodeFromImplicitAllowedTypes}.
|
|
78
78
|
* @remarks
|
|
79
79
|
* Do note use this type directly: its only needed in the implementation of generic logic which define recursive schema, not when using recursive schema.
|
|
80
|
-
* @public
|
|
80
|
+
* @system @public
|
|
81
81
|
*/
|
|
82
82
|
export type TreeNodeFromImplicitAllowedTypesUnsafe<
|
|
83
83
|
TSchema extends Unenforced<ImplicitAllowedTypes>,
|
|
@@ -93,7 +93,7 @@ export type TreeNodeFromImplicitAllowedTypesUnsafe<
|
|
|
93
93
|
* {@link Unenforced} version of {@link InsertableTreeNodeFromImplicitAllowedTypes}.
|
|
94
94
|
* @remarks
|
|
95
95
|
* Do note use this type directly: its only needed in the implementation of generic logic which define recursive schema, not when using recursive schema.
|
|
96
|
-
* @public
|
|
96
|
+
* @system @public
|
|
97
97
|
*/
|
|
98
98
|
export type InsertableTreeNodeFromImplicitAllowedTypesUnsafe<
|
|
99
99
|
TSchema extends Unenforced<ImplicitAllowedTypes>,
|
|
@@ -105,7 +105,7 @@ export type InsertableTreeNodeFromImplicitAllowedTypesUnsafe<
|
|
|
105
105
|
* {@link Unenforced} version of {@link InsertableTypedNode}.
|
|
106
106
|
* @remarks
|
|
107
107
|
* Do note use this type directly: its only needed in the implementation of generic logic which define recursive schema, not when using recursive schema.
|
|
108
|
-
* @public
|
|
108
|
+
* @system @public
|
|
109
109
|
*/
|
|
110
110
|
export type InsertableTypedNodeUnsafe<T extends Unenforced<TreeNodeSchema>> = [
|
|
111
111
|
| Unhydrated<NodeFromSchemaUnsafe<T>>
|
|
@@ -116,7 +116,7 @@ export type InsertableTypedNodeUnsafe<T extends Unenforced<TreeNodeSchema>> = [
|
|
|
116
116
|
* {@link Unenforced} version of {@link NodeFromSchema}.
|
|
117
117
|
* @remarks
|
|
118
118
|
* Do note use this type directly: its only needed in the implementation of generic logic which define recursive schema, not when using recursive schema.
|
|
119
|
-
* @public
|
|
119
|
+
* @system @public
|
|
120
120
|
*/
|
|
121
121
|
export type NodeFromSchemaUnsafe<T extends Unenforced<TreeNodeSchema>> =
|
|
122
122
|
T extends TreeNodeSchema<string, NodeKind, infer TNode> ? TNode : never;
|
|
@@ -125,7 +125,7 @@ export type NodeFromSchemaUnsafe<T extends Unenforced<TreeNodeSchema>> =
|
|
|
125
125
|
* {@link Unenforced} version of {@link InsertableTreeNodeFromImplicitAllowedTypes}.
|
|
126
126
|
* @remarks
|
|
127
127
|
* Do note use this type directly: its only needed in the implementation of generic logic which define recursive schema, not when using recursive schema.
|
|
128
|
-
* @public
|
|
128
|
+
* @system @public
|
|
129
129
|
*/
|
|
130
130
|
export type NodeBuilderDataUnsafe<T extends Unenforced<TreeNodeSchema>> =
|
|
131
131
|
T extends TreeNodeSchema<string, NodeKind, unknown, infer TBuild> ? TBuild : never;
|
|
@@ -134,7 +134,7 @@ export type NodeBuilderDataUnsafe<T extends Unenforced<TreeNodeSchema>> =
|
|
|
134
134
|
* {@link Unenforced} version of {@link (TreeArrayNode:interface)}.
|
|
135
135
|
* @remarks
|
|
136
136
|
* Do note use this type directly: its only needed in the implementation of generic logic which define recursive schema, not when using recursive schema.
|
|
137
|
-
* @sealed @public
|
|
137
|
+
* @system @sealed @public
|
|
138
138
|
*/
|
|
139
139
|
export interface TreeArrayNodeUnsafe<TAllowedTypes extends Unenforced<ImplicitAllowedTypes>>
|
|
140
140
|
extends TreeArrayNodeBase<
|
|
@@ -147,7 +147,7 @@ export interface TreeArrayNodeUnsafe<TAllowedTypes extends Unenforced<ImplicitAl
|
|
|
147
147
|
* {@link Unenforced} version of {@link TreeMapNode}.
|
|
148
148
|
* @remarks
|
|
149
149
|
* Do note use this type directly: its only needed in the implementation of generic logic which define recursive schema, not when using recursive schema.
|
|
150
|
-
* @sealed @public
|
|
150
|
+
* @system @sealed @public
|
|
151
151
|
*/
|
|
152
152
|
export interface TreeMapNodeUnsafe<T extends Unenforced<ImplicitAllowedTypes>>
|
|
153
153
|
extends ReadonlyMapInlined<string, T>,
|
|
@@ -213,7 +213,7 @@ export interface ReadonlyMapInlined<K, T extends Unenforced<ImplicitAllowedTypes
|
|
|
213
213
|
* {@link Unenforced} version of `FieldHasDefault`.
|
|
214
214
|
* @remarks
|
|
215
215
|
* Do note use this type directly: its only needed in the implementation of generic logic which define recursive schema, not when using recursive schema.
|
|
216
|
-
* @sealed @public
|
|
216
|
+
* @system @sealed @public
|
|
217
217
|
*/
|
|
218
218
|
export type FieldHasDefaultUnsafe<T extends Unenforced<ImplicitFieldSchema>> =
|
|
219
219
|
T extends FieldSchemaUnsafe<
|
|
@@ -227,7 +227,7 @@ export type FieldHasDefaultUnsafe<T extends Unenforced<ImplicitFieldSchema>> =
|
|
|
227
227
|
* {@link Unenforced} version of `InsertableObjectFromSchemaRecord`.
|
|
228
228
|
* @remarks
|
|
229
229
|
* Do note use this type directly: its only needed in the implementation of generic logic which define recursive schema, not when using recursive schema.
|
|
230
|
-
* @public
|
|
230
|
+
* @system @public
|
|
231
231
|
*/
|
|
232
232
|
export type InsertableObjectFromSchemaRecordUnsafe<
|
|
233
233
|
T extends Unenforced<RestrictiveReadonlyRecord<string, ImplicitFieldSchema>>,
|
|
@@ -248,7 +248,7 @@ export type InsertableObjectFromSchemaRecordUnsafe<
|
|
|
248
248
|
* {@link Unenforced} version of {@link InsertableTreeFieldFromImplicitField}.
|
|
249
249
|
* @remarks
|
|
250
250
|
* Do note use this type directly: its only needed in the implementation of generic logic which define recursive schema, not when using recursive schema.
|
|
251
|
-
* @public
|
|
251
|
+
* @system @public
|
|
252
252
|
*/
|
|
253
253
|
export type InsertableTreeFieldFromImplicitFieldUnsafe<
|
|
254
254
|
TSchema extends Unenforced<ImplicitFieldSchema>,
|
|
@@ -0,0 +1,81 @@
|
|
|
1
|
+
/*!
|
|
2
|
+
* Copyright (c) Microsoft Corporation and contributors. All rights reserved.
|
|
3
|
+
* Licensed under the MIT License.
|
|
4
|
+
*/
|
|
5
|
+
|
|
6
|
+
import { assert } from "@fluidframework/core-utils/internal";
|
|
7
|
+
import { type TreeNodeSchema, NodeKind } from "./core/index.js";
|
|
8
|
+
import { LeafNodeSchema } from "./leafNodeSchema.js";
|
|
9
|
+
import { isObjectNodeSchema } from "./objectNodeTypes.js";
|
|
10
|
+
import {
|
|
11
|
+
type ImplicitAllowedTypes,
|
|
12
|
+
normalizeAllowedTypes,
|
|
13
|
+
type ImplicitFieldSchema,
|
|
14
|
+
normalizeFieldSchema,
|
|
15
|
+
} from "./schemaTypes.js";
|
|
16
|
+
|
|
17
|
+
export function walkNodeSchema(
|
|
18
|
+
schema: TreeNodeSchema,
|
|
19
|
+
visitor: SchemaVisitor,
|
|
20
|
+
visitedSet: Set<TreeNodeSchema>,
|
|
21
|
+
): void {
|
|
22
|
+
if (visitedSet.has(schema)) {
|
|
23
|
+
return;
|
|
24
|
+
}
|
|
25
|
+
visitedSet.add(schema);
|
|
26
|
+
if (schema instanceof LeafNodeSchema) {
|
|
27
|
+
// nothing to do
|
|
28
|
+
} else if (isObjectNodeSchema(schema)) {
|
|
29
|
+
for (const field of schema.fields.values()) {
|
|
30
|
+
walkFieldSchema(field, visitor, visitedSet);
|
|
31
|
+
}
|
|
32
|
+
} else {
|
|
33
|
+
assert(
|
|
34
|
+
schema.kind === NodeKind.Array || schema.kind === NodeKind.Map,
|
|
35
|
+
0x9b3 /* invalid schema */,
|
|
36
|
+
);
|
|
37
|
+
const childTypes = schema.info as ImplicitAllowedTypes;
|
|
38
|
+
walkAllowedTypes(normalizeAllowedTypes(childTypes), visitor, visitedSet);
|
|
39
|
+
}
|
|
40
|
+
// This visit is done at the end so the traversal order is most inner types first.
|
|
41
|
+
// This was picked since when fixing errors,
|
|
42
|
+
// working from the inner types out to the types that use them will probably go better than the reverse.
|
|
43
|
+
// This does not however ensure all types referenced by a type are visited before it, since in recursive cases thats impossible.
|
|
44
|
+
visitor.node?.(schema);
|
|
45
|
+
}
|
|
46
|
+
|
|
47
|
+
export function walkFieldSchema(
|
|
48
|
+
schema: ImplicitFieldSchema,
|
|
49
|
+
visitor: SchemaVisitor,
|
|
50
|
+
visitedSet: Set<TreeNodeSchema> = new Set(),
|
|
51
|
+
): void {
|
|
52
|
+
walkAllowedTypes(normalizeFieldSchema(schema).allowedTypeSet, visitor, visitedSet);
|
|
53
|
+
}
|
|
54
|
+
|
|
55
|
+
export function walkAllowedTypes(
|
|
56
|
+
allowedTypes: Iterable<TreeNodeSchema>,
|
|
57
|
+
visitor: SchemaVisitor,
|
|
58
|
+
visitedSet: Set<TreeNodeSchema>,
|
|
59
|
+
): void {
|
|
60
|
+
for (const childType of allowedTypes) {
|
|
61
|
+
walkNodeSchema(childType, visitor, visitedSet);
|
|
62
|
+
}
|
|
63
|
+
visitor.allowedTypes?.(allowedTypes);
|
|
64
|
+
}
|
|
65
|
+
/**
|
|
66
|
+
* Callbacks for use in {@link walkFieldSchema} / {@link walkAllowedTypes} / {@link walkNodeSchema}.
|
|
67
|
+
*/
|
|
68
|
+
|
|
69
|
+
export interface SchemaVisitor {
|
|
70
|
+
/**
|
|
71
|
+
* Called once for each node schema.
|
|
72
|
+
*/
|
|
73
|
+
node?: (schema: TreeNodeSchema) => void;
|
|
74
|
+
/**
|
|
75
|
+
* Called once for each set of allowed types.
|
|
76
|
+
* Includes implicit allowed types (when a single type was used instead of an array).
|
|
77
|
+
*
|
|
78
|
+
* This includes every field, but also the allowed types array for maps and arrays and the root if starting at {@link walkAllowedTypes}.
|
|
79
|
+
*/
|
|
80
|
+
allowedTypes?: (allowedTypes: Iterable<TreeNodeSchema>) => void;
|
|
81
|
+
}
|
package/src/treeFactory.ts
CHANGED
|
@@ -56,7 +56,8 @@ export class TreeFactory implements IChannelFactory<ITree> {
|
|
|
56
56
|
/**
|
|
57
57
|
* SharedTree is a hierarchical data structure for collaboratively editing strongly typed JSON-like trees
|
|
58
58
|
* of objects, arrays, and other data types.
|
|
59
|
-
* @
|
|
59
|
+
* @legacy
|
|
60
|
+
* @alpha
|
|
60
61
|
*/
|
|
61
62
|
export const SharedTree = configuredSharedTree({});
|
|
62
63
|
|
package/src/util/typeUtils.ts
CHANGED
|
@@ -10,7 +10,7 @@
|
|
|
10
10
|
/**
|
|
11
11
|
* Return a type thats equivalent to the input, but with different IntelliSense.
|
|
12
12
|
* This tends to convert unions and intersections into objects.
|
|
13
|
-
* @public
|
|
13
|
+
* @system @public
|
|
14
14
|
*/
|
|
15
15
|
export type FlattenKeys<T> = [{ [Property in keyof T]: T[Property] }][_InlineTrick];
|
|
16
16
|
|
|
@@ -81,7 +81,7 @@ export type AllowOptional<T> = [
|
|
|
81
81
|
*
|
|
82
82
|
* This constant is defined to provide a way to find this documentation from types which use this pattern,
|
|
83
83
|
* and to locate types which use this pattern in case they need updating for compiler changes.
|
|
84
|
-
* @public
|
|
84
|
+
* @system @public
|
|
85
85
|
*/
|
|
86
86
|
export type _InlineTrick = 0;
|
|
87
87
|
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/core/revertible/index.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,KAAK,UAAU,EAAE,gBAAgB,EAAE,MAAM,iBAAiB,CAAC"}
|
|
@@ -1,10 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
/*!
|
|
3
|
-
* Copyright (c) Microsoft Corporation and contributors. All rights reserved.
|
|
4
|
-
* Licensed under the MIT License.
|
|
5
|
-
*/
|
|
6
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
7
|
-
exports.RevertibleStatus = void 0;
|
|
8
|
-
var revertible_js_1 = require("./revertible.js");
|
|
9
|
-
Object.defineProperty(exports, "RevertibleStatus", { enumerable: true, get: function () { return revertible_js_1.RevertibleStatus; } });
|
|
10
|
-
//# sourceMappingURL=index.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/core/revertible/index.ts"],"names":[],"mappings":";AAAA;;;GAGG;;;AAEH,iDAAoE;AAA1C,iHAAA,gBAAgB,OAAA","sourcesContent":["/*!\n * Copyright (c) Microsoft Corporation and contributors. All rights reserved.\n * Licensed under the MIT License.\n */\n\nexport { type Revertible, RevertibleStatus } from \"./revertible.js\";\n"]}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"revertible.d.ts","sourceRoot":"","sources":["../../../src/core/revertible/revertible.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH;;;;;;;GAOG;AACH,MAAM,WAAW,UAAU;IAC1B;;OAEG;IACH,QAAQ,CAAC,MAAM,EAAE,gBAAgB,CAAC;IAElC;;OAEG;IACH,MAAM,IAAI,IAAI,CAAC;IACf;;;;;;OAMG;IACH,MAAM,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CAAC;IAE/B;;OAEG;IACH,OAAO,IAAI,IAAI,CAAC;CAChB;AAED;;;;GAIG;AACH,oBAAY,gBAAgB;IAC3B,sCAAsC;IACtC,KAAK,IAAA;IACL,0EAA0E;IAC1E,QAAQ,IAAA;CACR"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"revertible.js","sourceRoot":"","sources":["../../../src/core/revertible/revertible.ts"],"names":[],"mappings":";AAAA;;;GAGG;;;AAmCH;;;;GAIG;AACH,IAAY,gBAKX;AALD,WAAY,gBAAgB;IAC3B,sCAAsC;IACtC,yDAAK,CAAA;IACL,0EAA0E;IAC1E,+DAAQ,CAAA;AACT,CAAC,EALW,gBAAgB,gCAAhB,gBAAgB,QAK3B","sourcesContent":["/*!\n * Copyright (c) Microsoft Corporation and contributors. All rights reserved.\n * Licensed under the MIT License.\n */\n\n/**\n * Allows reversion of a change made to SharedTree.\n *\n * @remarks\n * Applications wanting to implement undo/redo support might typically maintain two stacks of Revertibles, with optional eviction policy to free up memory.\n *\n * @sealed @public\n */\nexport interface Revertible {\n\t/**\n\t * The current status of the revertible.\n\t */\n\treadonly status: RevertibleStatus;\n\n\t/**\n\t * Reverts the associated change and disposes it.\n\t */\n\trevert(): void;\n\t/**\n\t * Reverts the associated change and optionally disposes it.\n\t *\n\t * @param dispose - If true, the revertible will be disposed after being reverted.\n\t * If false, the revertible will remain valid. This can be useful for scenarios where the revert may be dropped\n\t * due to merge conflicts, and one wants to attempt reverting again.\n\t */\n\trevert(dispose: boolean): void;\n\n\t/**\n\t * Disposes this revertible, allowing associated resources to be released.\n\t */\n\tdispose(): void;\n}\n\n/**\n * The status of a {@link Revertible}.\n *\n * @public\n */\nexport enum RevertibleStatus {\n\t/** The revertible can be reverted. */\n\tValid,\n\t/** The revertible has been disposed. Reverting it will have no effect. */\n\tDisposed,\n}\n"]}
|
package/dist/domains/index.d.ts
DELETED
|
@@ -1,8 +0,0 @@
|
|
|
1
|
-
/*!
|
|
2
|
-
* Copyright (c) Microsoft Corporation and contributors. All rights reserved.
|
|
3
|
-
* Licensed under the MIT License.
|
|
4
|
-
*/
|
|
5
|
-
export { SchemaBuilder } from "./schemaBuilder.js";
|
|
6
|
-
export { cursorToJsonObject, jsonArray, jsonObject, jsonRoot, jsonSchema, singleJsonCursor, typedJsonCursor, type TypedJsonCompatible, type TypedJsonCompatibleObject, } from "./json/index.js";
|
|
7
|
-
export { leaf } from "./leafDomain.js";
|
|
8
|
-
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/domains/index.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AACnD,OAAO,EACN,kBAAkB,EAClB,SAAS,EACT,UAAU,EACV,QAAQ,EACR,UAAU,EACV,gBAAgB,EAChB,eAAe,EACf,KAAK,mBAAmB,EACxB,KAAK,yBAAyB,GAC9B,MAAM,iBAAiB,CAAC;AAEzB,OAAO,EAAE,IAAI,EAAE,MAAM,iBAAiB,CAAC"}
|
package/dist/domains/index.js
DELETED
|
@@ -1,20 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
/*!
|
|
3
|
-
* Copyright (c) Microsoft Corporation and contributors. All rights reserved.
|
|
4
|
-
* Licensed under the MIT License.
|
|
5
|
-
*/
|
|
6
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
7
|
-
exports.leaf = exports.typedJsonCursor = exports.singleJsonCursor = exports.jsonSchema = exports.jsonRoot = exports.jsonObject = exports.jsonArray = exports.cursorToJsonObject = exports.SchemaBuilder = void 0;
|
|
8
|
-
var schemaBuilder_js_1 = require("./schemaBuilder.js");
|
|
9
|
-
Object.defineProperty(exports, "SchemaBuilder", { enumerable: true, get: function () { return schemaBuilder_js_1.SchemaBuilder; } });
|
|
10
|
-
var index_js_1 = require("./json/index.js");
|
|
11
|
-
Object.defineProperty(exports, "cursorToJsonObject", { enumerable: true, get: function () { return index_js_1.cursorToJsonObject; } });
|
|
12
|
-
Object.defineProperty(exports, "jsonArray", { enumerable: true, get: function () { return index_js_1.jsonArray; } });
|
|
13
|
-
Object.defineProperty(exports, "jsonObject", { enumerable: true, get: function () { return index_js_1.jsonObject; } });
|
|
14
|
-
Object.defineProperty(exports, "jsonRoot", { enumerable: true, get: function () { return index_js_1.jsonRoot; } });
|
|
15
|
-
Object.defineProperty(exports, "jsonSchema", { enumerable: true, get: function () { return index_js_1.jsonSchema; } });
|
|
16
|
-
Object.defineProperty(exports, "singleJsonCursor", { enumerable: true, get: function () { return index_js_1.singleJsonCursor; } });
|
|
17
|
-
Object.defineProperty(exports, "typedJsonCursor", { enumerable: true, get: function () { return index_js_1.typedJsonCursor; } });
|
|
18
|
-
var leafDomain_js_1 = require("./leafDomain.js");
|
|
19
|
-
Object.defineProperty(exports, "leaf", { enumerable: true, get: function () { return leafDomain_js_1.leaf; } });
|
|
20
|
-
//# sourceMappingURL=index.js.map
|