@fluidframework/tree 2.3.0-288113 → 2.4.0-294316
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 +42 -54
- package/api-report/tree.beta.api.md +35 -16
- package/api-report/tree.legacy.alpha.api.md +571 -0
- package/api-report/tree.legacy.public.api.md +568 -0
- package/api-report/tree.public.api.md +22 -18
- package/dist/alpha.d.ts +103 -0
- package/dist/beta.d.ts +7 -2
- package/dist/core/index.d.ts +2 -2
- package/dist/core/index.d.ts.map +1 -1
- package/dist/core/index.js +4 -3
- package/dist/core/index.js.map +1 -1
- package/dist/core/rebase/index.d.ts +1 -1
- package/dist/core/rebase/index.d.ts.map +1 -1
- package/dist/core/rebase/index.js +2 -1
- package/dist/core/rebase/index.js.map +1 -1
- package/dist/core/rebase/types.d.ts +1 -0
- package/dist/core/rebase/types.d.ts.map +1 -1
- package/dist/core/rebase/types.js +8 -1
- package/dist/core/rebase/types.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 +9 -1
- package/dist/feature-libraries/modular-schema/modularChangeFamily.d.ts.map +1 -1
- package/dist/feature-libraries/modular-schema/modularChangeFamily.js +73 -22
- 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/sequence-field/compose.d.ts.map +1 -1
- package/dist/feature-libraries/sequence-field/compose.js +3 -0
- package/dist/feature-libraries/sequence-field/compose.js.map +1 -1
- package/dist/feature-libraries/sequence-field/utils.d.ts.map +1 -1
- package/dist/feature-libraries/sequence-field/utils.js +1 -4
- package/dist/feature-libraries/sequence-field/utils.js.map +1 -1
- 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 +84 -0
- package/dist/packageVersion.d.ts +1 -1
- package/dist/packageVersion.js +1 -1
- package/dist/packageVersion.js.map +1 -1
- package/dist/public.d.ts +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 +10 -4
- package/dist/shared-tree/schematizingTreeView.d.ts.map +1 -1
- package/dist/shared-tree/schematizingTreeView.js +28 -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 +14 -15
- 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 +53 -16
- package/dist/simple-tree/api/schemaFactory.d.ts.map +1 -1
- package/dist/simple-tree/api/schemaFactory.js +49 -12
- package/dist/simple-tree/api/schemaFactory.js.map +1 -1
- package/dist/simple-tree/{simpleSchema.d.ts → api/simpleSchema.d.ts} +8 -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} +34 -21
- package/dist/simple-tree/api/simpleSchemaToJsonSchema.js.map +1 -0
- package/dist/simple-tree/api/tree.d.ts +5 -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} +8 -4
- package/dist/simple-tree/api/viewSchemaToSimpleSchema.js.map +1 -0
- 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 +8 -10
- 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 +51 -11
- package/dist/simple-tree/schemaTypes.d.ts.map +1 -1
- package/dist/simple-tree/schemaTypes.js +14 -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 +103 -0
- package/lib/beta.d.ts +7 -2
- package/lib/core/index.d.ts +2 -2
- package/lib/core/index.d.ts.map +1 -1
- package/lib/core/index.js +2 -2
- package/lib/core/index.js.map +1 -1
- package/lib/core/rebase/index.d.ts +1 -1
- package/lib/core/rebase/index.d.ts.map +1 -1
- package/lib/core/rebase/index.js +1 -1
- package/lib/core/rebase/index.js.map +1 -1
- package/lib/core/rebase/types.d.ts +1 -0
- package/lib/core/rebase/types.d.ts.map +1 -1
- package/lib/core/rebase/types.js +6 -0
- package/lib/core/rebase/types.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 +9 -1
- package/lib/feature-libraries/modular-schema/modularChangeFamily.d.ts.map +1 -1
- package/lib/feature-libraries/modular-schema/modularChangeFamily.js +74 -23
- 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/sequence-field/compose.d.ts.map +1 -1
- package/lib/feature-libraries/sequence-field/compose.js +3 -0
- package/lib/feature-libraries/sequence-field/compose.js.map +1 -1
- package/lib/feature-libraries/sequence-field/utils.d.ts.map +1 -1
- package/lib/feature-libraries/sequence-field/utils.js +2 -5
- package/lib/feature-libraries/sequence-field/utils.js.map +1 -1
- 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 +84 -0
- package/lib/packageVersion.d.ts +1 -1
- package/lib/packageVersion.js +1 -1
- package/lib/packageVersion.js.map +1 -1
- package/lib/public.d.ts +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 +10 -4
- package/lib/shared-tree/schematizingTreeView.d.ts.map +1 -1
- package/lib/shared-tree/schematizingTreeView.js +29 -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 +14 -15
- 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 +53 -16
- package/lib/simple-tree/api/schemaFactory.d.ts.map +1 -1
- package/lib/simple-tree/api/schemaFactory.js +49 -12
- package/lib/simple-tree/api/schemaFactory.js.map +1 -1
- package/lib/simple-tree/{simpleSchema.d.ts → api/simpleSchema.d.ts} +8 -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} +35 -22
- package/lib/simple-tree/api/simpleSchemaToJsonSchema.js.map +1 -0
- package/lib/simple-tree/api/tree.d.ts +5 -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} +8 -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 +8 -10
- 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 +51 -11
- package/lib/simple-tree/schemaTypes.d.ts.map +1 -1
- package/lib/simple-tree/schemaTypes.js +14 -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 +68 -26
- package/src/core/index.ts +2 -1
- package/src/core/rebase/index.ts +1 -0
- package/src/core/rebase/types.ts +11 -0
- 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 +7 -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 +111 -14
- package/src/feature-libraries/sequence-field/compose.ts +3 -0
- package/src/feature-libraries/sequence-field/utils.ts +2 -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 -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 +38 -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} +20 -18
- package/src/simple-tree/api/schemaFactory.ts +56 -19
- package/src/simple-tree/{simpleSchema.ts → api/simpleSchema.ts} +9 -4
- package/src/simple-tree/{simpleSchemaToJsonSchema.ts → api/simpleSchemaToJsonSchema.ts} +43 -22
- package/src/simple-tree/api/tree.ts +7 -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} +11 -6
- 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 +30 -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 +63 -13
- 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/lib/simple-tree/viewSchemaToSimpleSchema.js.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
|
@@ -138,7 +138,10 @@ export class ForestSummarizer implements Summarizable {
|
|
|
138
138
|
const fieldChanges: [FieldKey, DeltaFieldChanges][] = [];
|
|
139
139
|
const build: DeltaDetachedNodeBuild[] = [];
|
|
140
140
|
for (const [fieldKey, field] of fields) {
|
|
141
|
-
const chunked = chunkField(field,
|
|
141
|
+
const chunked = chunkField(field, {
|
|
142
|
+
policy: defaultChunkPolicy,
|
|
143
|
+
idCompressor: this.idCompressor,
|
|
144
|
+
});
|
|
142
145
|
const nodeCursors = chunked.flatMap((chunk) =>
|
|
143
146
|
mapCursorField(chunk.cursor(), (cursor) => cursor.fork()),
|
|
144
147
|
);
|
|
@@ -120,7 +120,6 @@ export {
|
|
|
120
120
|
type FlexAllowedTypes,
|
|
121
121
|
FlexFieldSchema,
|
|
122
122
|
type FlexTreeSchema,
|
|
123
|
-
Any,
|
|
124
123
|
type SchemaLibraryData,
|
|
125
124
|
type LazyTreeNodeSchema,
|
|
126
125
|
ViewSchema,
|
|
@@ -141,8 +140,6 @@ export {
|
|
|
141
140
|
type FlexListToUnion,
|
|
142
141
|
type ExtractItemType,
|
|
143
142
|
isLazy,
|
|
144
|
-
type NormalizeObjectNodeFields,
|
|
145
|
-
type NormalizeField as NormalizeFieldSchema,
|
|
146
143
|
type FlexObjectNodeFields,
|
|
147
144
|
intoStoredSchema,
|
|
148
145
|
intoStoredSchemaCollection,
|
|
@@ -150,19 +147,6 @@ export {
|
|
|
150
147
|
type FlexList,
|
|
151
148
|
} from "./typed-schema/index.js";
|
|
152
149
|
|
|
153
|
-
export {
|
|
154
|
-
SchemaBuilderBase,
|
|
155
|
-
type SchemaLibrary,
|
|
156
|
-
type FlexImplicitFieldSchema,
|
|
157
|
-
type NormalizeField,
|
|
158
|
-
type FlexImplicitAllowedTypes,
|
|
159
|
-
type NormalizeAllowedTypes,
|
|
160
|
-
type SchemaBuilderOptions,
|
|
161
|
-
normalizeAllowedTypes,
|
|
162
|
-
normalizeField,
|
|
163
|
-
} from "./schemaBuilderBase.js";
|
|
164
|
-
export { SchemaBuilderInternal } from "./schemaBuilder.js";
|
|
165
|
-
|
|
166
150
|
export { mapRootChanges } from "./deltaUtils.js";
|
|
167
151
|
|
|
168
152
|
export {
|
|
@@ -214,25 +198,17 @@ export {
|
|
|
214
198
|
} from "./default-schema/index.js";
|
|
215
199
|
|
|
216
200
|
export {
|
|
217
|
-
type AssignableFieldKinds,
|
|
218
|
-
type FlexibleFieldContent,
|
|
219
|
-
type FlexibleNodeContent,
|
|
220
|
-
type FlexTreeLeafNode,
|
|
221
|
-
type FlexTreeMapNode,
|
|
222
201
|
type FlexTreeOptionalField,
|
|
223
202
|
type FlexTreeRequiredField,
|
|
224
203
|
type FlexTreeSequenceField,
|
|
225
204
|
Skip,
|
|
226
|
-
type FlexTreeObjectNode,
|
|
227
205
|
type FlexTreeContext,
|
|
206
|
+
type FlexTreeHydratedContext,
|
|
228
207
|
type FlexTreeTypedField,
|
|
229
|
-
type FlexTreeTypedNode,
|
|
230
|
-
type FlexTreeTypedNodeUnion,
|
|
231
208
|
type FlexTreeEntity,
|
|
232
209
|
type FlexTreeField,
|
|
233
210
|
type FlexTreeNode,
|
|
234
211
|
getTreeContext,
|
|
235
|
-
type CheckTypesOverlap,
|
|
236
212
|
TreeStatus,
|
|
237
213
|
Context,
|
|
238
214
|
type FlexTreeNodeEvents,
|
|
@@ -240,9 +216,7 @@ export {
|
|
|
240
216
|
isFlexTreeNode,
|
|
241
217
|
ContextSlot,
|
|
242
218
|
// Internal
|
|
243
|
-
type FlexTreeUnboxField,
|
|
244
219
|
flexTreeMarker,
|
|
245
|
-
FlexTreeEntityKind,
|
|
246
220
|
assertFlexTreeEntityNotFreed,
|
|
247
221
|
flexTreeSlot,
|
|
248
222
|
getSchemaAndPolicy,
|
|
@@ -274,4 +248,5 @@ export {
|
|
|
274
248
|
isMapTreeSequenceField,
|
|
275
249
|
getOrCreateMapTreeNode,
|
|
276
250
|
tryGetMapTreeNode,
|
|
251
|
+
UnhydratedContext,
|
|
277
252
|
} from "./flex-map-tree/index.js";
|
|
@@ -22,6 +22,10 @@ import type { FullSchemaPolicy } from "./fieldKind.js";
|
|
|
22
22
|
import { withEditor } from "./fieldKindWithEditor.js";
|
|
23
23
|
import { isNeverTree } from "./isNeverTree.js";
|
|
24
24
|
|
|
25
|
+
// TODO:
|
|
26
|
+
// The comparisons in this file seem redundant with those in discrepancies.ts.
|
|
27
|
+
// Rather than both existing, one of which just returns boolean and the other which returns additional details, a simple comparison which returns everything needed should be used.
|
|
28
|
+
|
|
25
29
|
/**
|
|
26
30
|
* @returns true iff `superset` is a superset of `original`.
|
|
27
31
|
*
|
|
@@ -153,12 +157,6 @@ export function allowsTreeSchemaIdentifierSuperset(
|
|
|
153
157
|
original: TreeTypeSet,
|
|
154
158
|
superset: TreeTypeSet,
|
|
155
159
|
): boolean {
|
|
156
|
-
if (superset === undefined) {
|
|
157
|
-
return true;
|
|
158
|
-
}
|
|
159
|
-
if (original === undefined) {
|
|
160
|
-
return false;
|
|
161
|
-
}
|
|
162
160
|
for (const originalType of original) {
|
|
163
161
|
if (!superset.has(originalType)) {
|
|
164
162
|
return false;
|
|
@@ -18,6 +18,10 @@ import {
|
|
|
18
18
|
type ValueSchema,
|
|
19
19
|
} from "../../core/index.js";
|
|
20
20
|
|
|
21
|
+
// TODO:
|
|
22
|
+
// The comparisons in this file seem redundant with those in comparison.ts.
|
|
23
|
+
// Rather than both existing, one of which just returns boolean and the other which returns additional details, a simple comparison which returns everything needed should be used.
|
|
24
|
+
|
|
21
25
|
/**
|
|
22
26
|
* @remarks
|
|
23
27
|
*
|
|
@@ -298,22 +302,9 @@ function trackFieldDiscrepancies(
|
|
|
298
302
|
a: TreeTypeSet,
|
|
299
303
|
b: TreeTypeSet,
|
|
300
304
|
): [TreeNodeSchemaIdentifier[], TreeNodeSchemaIdentifier[]] => {
|
|
301
|
-
|
|
302
|
-
|
|
303
|
-
|
|
304
|
-
|
|
305
|
-
if (a !== undefined && b !== undefined) {
|
|
306
|
-
const aDiff = [...a].filter((value) => !b.has(value));
|
|
307
|
-
const bDiff = [...b].filter((value) => !a.has(value));
|
|
308
|
-
return [aDiff, bDiff];
|
|
309
|
-
}
|
|
310
|
-
|
|
311
|
-
if (a !== undefined) {
|
|
312
|
-
return [[...a], []];
|
|
313
|
-
}
|
|
314
|
-
|
|
315
|
-
// eslint-disable-next-line @typescript-eslint/no-non-null-assertion
|
|
316
|
-
return [[], [...b!]];
|
|
305
|
+
const aDiff = [...a].filter((value) => !b.has(value));
|
|
306
|
+
const bDiff = [...b].filter((value) => !a.has(value));
|
|
307
|
+
return [aDiff, bDiff];
|
|
317
308
|
};
|
|
318
309
|
|
|
319
310
|
const allowedTypesDiscrepancies = findSetDiscrepancies(view.types, stored.types);
|
|
@@ -382,7 +382,10 @@ function makeModularChangeCodec(
|
|
|
382
382
|
});
|
|
383
383
|
const getChunk = (index: number): TreeChunk => {
|
|
384
384
|
assert(index < chunks.length, 0x898 /* out of bounds index for build chunk */);
|
|
385
|
-
return chunkFieldSingle(chunks[index] ?? oob(),
|
|
385
|
+
return chunkFieldSingle(chunks[index] ?? oob(), {
|
|
386
|
+
policy: defaultChunkPolicy,
|
|
387
|
+
idCompressor: context.idCompressor,
|
|
388
|
+
});
|
|
386
389
|
};
|
|
387
390
|
|
|
388
391
|
const map: ModularChangeset["builds"] = newTupleBTree();
|
|
@@ -38,6 +38,7 @@ import {
|
|
|
38
38
|
revisionMetadataSourceFromInfo,
|
|
39
39
|
areEqualChangeAtomIds,
|
|
40
40
|
type ChangeAtomId,
|
|
41
|
+
areEqualChangeAtomIdOpts,
|
|
41
42
|
} from "../../core/index.js";
|
|
42
43
|
import {
|
|
43
44
|
type IdAllocationState,
|
|
@@ -87,6 +88,7 @@ import type {
|
|
|
87
88
|
NodeId,
|
|
88
89
|
TupleBTree,
|
|
89
90
|
} from "./modularChangeTypes.js";
|
|
91
|
+
import type { IIdCompressor } from "@fluidframework/id-compressor";
|
|
90
92
|
|
|
91
93
|
/**
|
|
92
94
|
* Implementation of ChangeFamily which delegates work in a given field to the appropriate FieldKind
|
|
@@ -262,8 +264,6 @@ export class ModularChangeFamily
|
|
|
262
264
|
const genId: IdAllocator = idAllocatorFromState(idState);
|
|
263
265
|
const revisionMetadata: RevisionMetadataSource = revisionMetadataSourceFromInfo(revInfos);
|
|
264
266
|
|
|
265
|
-
const crossFieldTable = newComposeTable(change1, change2);
|
|
266
|
-
|
|
267
267
|
// We merge nodeChanges, nodeToParent, and nodeAliases from the two changesets.
|
|
268
268
|
// The merged tables will have correct entries for all nodes which are only referenced in one of the input changesets.
|
|
269
269
|
// During composeFieldMaps and composeInvalidatedElements we will find all nodes referenced in both input changesets
|
|
@@ -283,9 +283,12 @@ export class ModularChangeFamily
|
|
|
283
283
|
mergeBTrees(change1.nodeAliases, change2.nodeAliases),
|
|
284
284
|
);
|
|
285
285
|
|
|
286
|
+
const crossFieldTable = newComposeTable(change1, change2, composedNodeToParent);
|
|
287
|
+
|
|
286
288
|
const composedFields = this.composeFieldMaps(
|
|
287
289
|
change1.fieldChanges,
|
|
288
290
|
change2.fieldChanges,
|
|
291
|
+
undefined,
|
|
289
292
|
genId,
|
|
290
293
|
crossFieldTable,
|
|
291
294
|
revisionMetadata,
|
|
@@ -320,7 +323,7 @@ export class ModularChangeFamily
|
|
|
320
323
|
): void {
|
|
321
324
|
const context = crossFieldTable.fieldToContext.get(fieldChange);
|
|
322
325
|
assert(context !== undefined, 0x8cc /* Should have context for every invalidated field */);
|
|
323
|
-
const { change1: fieldChange1, change2: fieldChange2, composedChange } = context;
|
|
326
|
+
const { fieldId, change1: fieldChange1, change2: fieldChange2, composedChange } = context;
|
|
324
327
|
|
|
325
328
|
const rebaser = getChangeHandler(this.fieldKinds, composedChange.fieldKind).rebaser;
|
|
326
329
|
const composeNodes = (child1: NodeId | undefined, child2: NodeId | undefined): NodeId => {
|
|
@@ -341,7 +344,7 @@ export class ModularChangeFamily
|
|
|
341
344
|
fieldChange2,
|
|
342
345
|
composeNodes,
|
|
343
346
|
genId,
|
|
344
|
-
new ComposeManager(crossFieldTable, fieldChange, false),
|
|
347
|
+
new ComposeManager(crossFieldTable, fieldChange, fieldId, false),
|
|
345
348
|
revisionMetadata,
|
|
346
349
|
);
|
|
347
350
|
composedChange.change = brand(amendedChange);
|
|
@@ -469,7 +472,14 @@ export class ModularChangeFamily
|
|
|
469
472
|
? [fieldChange, emptyChange]
|
|
470
473
|
: [emptyChange, fieldChange];
|
|
471
474
|
|
|
472
|
-
const composedField = this.composeFieldChanges(
|
|
475
|
+
const composedField = this.composeFieldChanges(
|
|
476
|
+
fieldId,
|
|
477
|
+
change1,
|
|
478
|
+
change2,
|
|
479
|
+
genId,
|
|
480
|
+
table,
|
|
481
|
+
metadata,
|
|
482
|
+
);
|
|
473
483
|
|
|
474
484
|
if (fieldId.nodeId === undefined) {
|
|
475
485
|
composedFields.set(fieldId.field, composedField);
|
|
@@ -498,6 +508,7 @@ export class ModularChangeFamily
|
|
|
498
508
|
private composeFieldMaps(
|
|
499
509
|
change1: FieldChangeMap | undefined,
|
|
500
510
|
change2: FieldChangeMap | undefined,
|
|
511
|
+
parentId: NodeId | undefined,
|
|
501
512
|
genId: IdAllocator,
|
|
502
513
|
crossFieldTable: ComposeTable,
|
|
503
514
|
revisionMetadata: RevisionMetadataSource,
|
|
@@ -508,10 +519,12 @@ export class ModularChangeFamily
|
|
|
508
519
|
}
|
|
509
520
|
|
|
510
521
|
for (const [field, fieldChange1] of change1) {
|
|
522
|
+
const fieldId: FieldId = { nodeId: parentId, field };
|
|
511
523
|
const fieldChange2 = change2.get(field);
|
|
512
524
|
const composedField =
|
|
513
525
|
fieldChange2 !== undefined
|
|
514
526
|
? this.composeFieldChanges(
|
|
527
|
+
fieldId,
|
|
515
528
|
fieldChange1,
|
|
516
529
|
fieldChange2,
|
|
517
530
|
genId,
|
|
@@ -544,6 +557,7 @@ export class ModularChangeFamily
|
|
|
544
557
|
* Any composed `FieldChange` which is invalidated by new cross-field information will be added to `crossFieldTable.invalidatedFields`.
|
|
545
558
|
*/
|
|
546
559
|
private composeFieldChanges(
|
|
560
|
+
fieldId: FieldId,
|
|
547
561
|
change1: FieldChange,
|
|
548
562
|
change2: FieldChange,
|
|
549
563
|
idAllocator: IdAllocator,
|
|
@@ -557,7 +571,7 @@ export class ModularChangeFamily
|
|
|
557
571
|
change2: change2Normalized,
|
|
558
572
|
} = this.normalizeFieldChanges(change1, change2, idAllocator, revisionMetadata);
|
|
559
573
|
|
|
560
|
-
const manager = new ComposeManager(crossFieldTable, change1);
|
|
574
|
+
const manager = new ComposeManager(crossFieldTable, change1, fieldId);
|
|
561
575
|
|
|
562
576
|
const composedChange = changeHandler.rebaser.compose(
|
|
563
577
|
change1Normalized,
|
|
@@ -580,6 +594,7 @@ export class ModularChangeFamily
|
|
|
580
594
|
};
|
|
581
595
|
|
|
582
596
|
crossFieldTable.fieldToContext.set(change1, {
|
|
597
|
+
fieldId,
|
|
583
598
|
change1: change1Normalized,
|
|
584
599
|
change2: change2Normalized,
|
|
585
600
|
composedChange: composedField,
|
|
@@ -604,6 +619,7 @@ export class ModularChangeFamily
|
|
|
604
619
|
const nodeChangeset1 = nodeChangeFromId(nodeChanges1, id1);
|
|
605
620
|
const nodeChangeset2 = nodeChangeFromId(nodeChanges2, id2);
|
|
606
621
|
const composedNodeChangeset = this.composeNodeChanges(
|
|
622
|
+
id1,
|
|
607
623
|
nodeChangeset1,
|
|
608
624
|
nodeChangeset2,
|
|
609
625
|
idAllocator,
|
|
@@ -626,6 +642,7 @@ export class ModularChangeFamily
|
|
|
626
642
|
}
|
|
627
643
|
|
|
628
644
|
private composeNodeChanges(
|
|
645
|
+
nodeId: NodeId,
|
|
629
646
|
change1: NodeChangeset,
|
|
630
647
|
change2: NodeChangeset,
|
|
631
648
|
genId: IdAllocator,
|
|
@@ -637,6 +654,7 @@ export class ModularChangeFamily
|
|
|
637
654
|
const composedFieldChanges = this.composeFieldMaps(
|
|
638
655
|
change1.fieldChanges,
|
|
639
656
|
change2.fieldChanges,
|
|
657
|
+
nodeId,
|
|
640
658
|
genId,
|
|
641
659
|
crossFieldTable,
|
|
642
660
|
revisionMetadata,
|
|
@@ -673,7 +691,7 @@ export class ModularChangeFamily
|
|
|
673
691
|
0x89a /* Unexpected destroys in change to invert */,
|
|
674
692
|
);
|
|
675
693
|
|
|
676
|
-
if ((change.change
|
|
694
|
+
if (hasConflicts(change.change)) {
|
|
677
695
|
return makeModularChangeset(
|
|
678
696
|
undefined,
|
|
679
697
|
undefined,
|
|
@@ -827,6 +845,10 @@ export class ModularChangeFamily
|
|
|
827
845
|
over: TaggedChange<ModularChangeset>,
|
|
828
846
|
revisionMetadata: RevisionMetadataSource,
|
|
829
847
|
): ModularChangeset {
|
|
848
|
+
if (hasConflicts(over.change)) {
|
|
849
|
+
return taggedChange.change;
|
|
850
|
+
}
|
|
851
|
+
|
|
830
852
|
const change = taggedChange.change;
|
|
831
853
|
const maxId = Math.max(change.maxId ?? -1, over.change.maxId ?? -1);
|
|
832
854
|
const idState: IdAllocationState = { maxId };
|
|
@@ -882,7 +904,7 @@ export class ModularChangeFamily
|
|
|
882
904
|
rebasedNodes,
|
|
883
905
|
);
|
|
884
906
|
|
|
885
|
-
|
|
907
|
+
const rebased = makeModularChangeset(
|
|
886
908
|
this.pruneFieldMap(rebasedFields, rebasedNodes),
|
|
887
909
|
rebasedNodes,
|
|
888
910
|
crossFieldTable.rebasedNodeToParent,
|
|
@@ -895,6 +917,8 @@ export class ModularChangeFamily
|
|
|
895
917
|
change.destroys,
|
|
896
918
|
change.refreshers,
|
|
897
919
|
);
|
|
920
|
+
|
|
921
|
+
return rebased;
|
|
898
922
|
}
|
|
899
923
|
|
|
900
924
|
// This performs a first pass on all fields which have both new and base changes.
|
|
@@ -1579,6 +1603,57 @@ export class ModularChangeFamily
|
|
|
1579
1603
|
const emptyChange = getChangeHandler(this.fieldKinds, fieldKind).createEmpty();
|
|
1580
1604
|
return { fieldKind, change: brand(emptyChange) };
|
|
1581
1605
|
}
|
|
1606
|
+
|
|
1607
|
+
public validateChangeset(change: ModularChangeset): void {
|
|
1608
|
+
let numNodes = this.validateFieldChanges(change, change.fieldChanges, undefined);
|
|
1609
|
+
|
|
1610
|
+
for (const [[revision, localId], node] of change.nodeChanges.entries()) {
|
|
1611
|
+
if (node.fieldChanges === undefined) {
|
|
1612
|
+
continue;
|
|
1613
|
+
}
|
|
1614
|
+
|
|
1615
|
+
const nodeId: NodeId = { revision, localId };
|
|
1616
|
+
const numChildren = this.validateFieldChanges(change, node.fieldChanges, nodeId);
|
|
1617
|
+
|
|
1618
|
+
numNodes += numChildren;
|
|
1619
|
+
}
|
|
1620
|
+
|
|
1621
|
+
assert(numNodes === change.nodeChanges.size, "Node table contains unparented nodes");
|
|
1622
|
+
}
|
|
1623
|
+
|
|
1624
|
+
/**
|
|
1625
|
+
* Asserts that each child and cross field key in each field has a correct entry in
|
|
1626
|
+
* `nodeToParent` or `crossFieldKeyTable`.
|
|
1627
|
+
* @returns the number of children found.
|
|
1628
|
+
*/
|
|
1629
|
+
private validateFieldChanges(
|
|
1630
|
+
change: ModularChangeset,
|
|
1631
|
+
fieldChanges: FieldChangeMap,
|
|
1632
|
+
nodeParent: NodeId | undefined,
|
|
1633
|
+
): number {
|
|
1634
|
+
let numChildren = 0;
|
|
1635
|
+
for (const [field, fieldChange] of fieldChanges.entries()) {
|
|
1636
|
+
const fieldId = { nodeId: nodeParent, field };
|
|
1637
|
+
const handler = getChangeHandler(this.fieldKinds, fieldChange.fieldKind);
|
|
1638
|
+
for (const [child, _index] of handler.getNestedChanges(fieldChange.change)) {
|
|
1639
|
+
const parentFieldId = getParentFieldId(change, child);
|
|
1640
|
+
assert(areEqualFieldIds(parentFieldId, fieldId), "Inconsistent node parentage");
|
|
1641
|
+
numChildren += 1;
|
|
1642
|
+
}
|
|
1643
|
+
|
|
1644
|
+
for (const keyRange of handler.getCrossFieldKeys(fieldChange.change)) {
|
|
1645
|
+
const fields = getFieldsForCrossFieldKey(change, keyRange);
|
|
1646
|
+
assert(
|
|
1647
|
+
fields.length === 1 &&
|
|
1648
|
+
fields[0] !== undefined &&
|
|
1649
|
+
areEqualFieldIds(fields[0], fieldId),
|
|
1650
|
+
"Inconsistent cross field keys",
|
|
1651
|
+
);
|
|
1652
|
+
}
|
|
1653
|
+
}
|
|
1654
|
+
|
|
1655
|
+
return numChildren;
|
|
1656
|
+
}
|
|
1582
1657
|
}
|
|
1583
1658
|
|
|
1584
1659
|
function replaceCrossFieldKeyTableRevisions(
|
|
@@ -1845,7 +1920,7 @@ export function intoDelta(
|
|
|
1845
1920
|
const idAllocator = MemoizedIdRangeAllocator.fromNextId();
|
|
1846
1921
|
const rootDelta: Mutable<DeltaRoot> = {};
|
|
1847
1922
|
|
|
1848
|
-
if ((change
|
|
1923
|
+
if (!hasConflicts(change)) {
|
|
1849
1924
|
// If there are no constraint violations, then tree changes apply.
|
|
1850
1925
|
const fieldDeltas = intoDeltaImpl(
|
|
1851
1926
|
change.fieldChanges,
|
|
@@ -2054,6 +2129,7 @@ interface RebaseFieldContext {
|
|
|
2054
2129
|
function newComposeTable(
|
|
2055
2130
|
baseChange: ModularChangeset,
|
|
2056
2131
|
newChange: ModularChangeset,
|
|
2132
|
+
composedNodeToParent: ChangeAtomIdBTree<FieldId>,
|
|
2057
2133
|
): ComposeTable {
|
|
2058
2134
|
return {
|
|
2059
2135
|
...newCrossFieldTable<FieldChange>(),
|
|
@@ -2063,6 +2139,7 @@ function newComposeTable(
|
|
|
2063
2139
|
newFieldToBaseField: new Map(),
|
|
2064
2140
|
newToBaseNodeId: newTupleBTree(),
|
|
2065
2141
|
composedNodes: new Set(),
|
|
2142
|
+
composedNodeToParent,
|
|
2066
2143
|
pendingCompositions: {
|
|
2067
2144
|
nodeIdsToCompose: [],
|
|
2068
2145
|
affectedBaseFields: newTupleBTree(),
|
|
@@ -2082,6 +2159,7 @@ interface ComposeTable extends CrossFieldTable<FieldChange> {
|
|
|
2082
2159
|
readonly newFieldToBaseField: Map<FieldChange, FieldChange>;
|
|
2083
2160
|
readonly newToBaseNodeId: ChangeAtomIdBTree<NodeId>;
|
|
2084
2161
|
readonly composedNodes: Set<NodeChangeset>;
|
|
2162
|
+
readonly composedNodeToParent: ChangeAtomIdBTree<FieldId>;
|
|
2085
2163
|
readonly pendingCompositions: PendingCompositions;
|
|
2086
2164
|
}
|
|
2087
2165
|
|
|
@@ -2104,6 +2182,10 @@ interface PendingCompositions {
|
|
|
2104
2182
|
}
|
|
2105
2183
|
|
|
2106
2184
|
interface ComposeFieldContext {
|
|
2185
|
+
/**
|
|
2186
|
+
* The field ID for this field in the composed changeset.
|
|
2187
|
+
*/
|
|
2188
|
+
fieldId: FieldId;
|
|
2107
2189
|
change1: FieldChangeset;
|
|
2108
2190
|
change2: FieldChangeset;
|
|
2109
2191
|
composedChange: FieldChange;
|
|
@@ -2319,7 +2401,12 @@ class RebaseManager extends CrossFieldManagerI<FieldChange> {
|
|
|
2319
2401
|
|
|
2320
2402
|
// TODO: Deduplicate this with RebaseTable
|
|
2321
2403
|
class ComposeManager extends CrossFieldManagerI<FieldChange> {
|
|
2322
|
-
public constructor(
|
|
2404
|
+
public constructor(
|
|
2405
|
+
table: ComposeTable,
|
|
2406
|
+
currentField: FieldChange,
|
|
2407
|
+
private readonly fieldId: FieldId,
|
|
2408
|
+
allowInval = true,
|
|
2409
|
+
) {
|
|
2323
2410
|
super(table, currentField, allowInval);
|
|
2324
2411
|
}
|
|
2325
2412
|
|
|
@@ -2372,15 +2459,16 @@ class ComposeManager extends CrossFieldManagerI<FieldChange> {
|
|
|
2372
2459
|
}
|
|
2373
2460
|
|
|
2374
2461
|
public override onMoveIn(id: ChangeAtomId): void {
|
|
2375
|
-
|
|
2462
|
+
setInChangeAtomIdMap(this.table.composedNodeToParent, id, this.fieldId);
|
|
2376
2463
|
}
|
|
2464
|
+
|
|
2377
2465
|
public override moveKey(
|
|
2378
2466
|
target: CrossFieldTarget,
|
|
2379
2467
|
revision: RevisionTag | undefined,
|
|
2380
2468
|
id: ChangesetLocalId,
|
|
2381
2469
|
count: number,
|
|
2382
2470
|
): void {
|
|
2383
|
-
throw new Error("
|
|
2471
|
+
throw new Error("Moving cross-field keys during compose is currently unsupported");
|
|
2384
2472
|
}
|
|
2385
2473
|
|
|
2386
2474
|
private get table(): ComposeTable {
|
|
@@ -2466,15 +2554,20 @@ export class ModularEditBuilder extends EditBuilder<ModularChangeset> {
|
|
|
2466
2554
|
public buildTrees(
|
|
2467
2555
|
firstId: ChangesetLocalId,
|
|
2468
2556
|
content: ITreeCursorSynchronous,
|
|
2557
|
+
idCompressor?: IIdCompressor,
|
|
2469
2558
|
): GlobalEditDescription {
|
|
2470
2559
|
if (content.mode === CursorLocationType.Fields && content.getFieldLength() === 0) {
|
|
2471
2560
|
return { type: "global" };
|
|
2472
2561
|
}
|
|
2473
2562
|
const builds: ChangeAtomIdBTree<TreeChunk> = newTupleBTree();
|
|
2563
|
+
const chunkCompressor = {
|
|
2564
|
+
policy: defaultChunkPolicy,
|
|
2565
|
+
idCompressor,
|
|
2566
|
+
};
|
|
2474
2567
|
const chunk =
|
|
2475
2568
|
content.mode === CursorLocationType.Fields
|
|
2476
|
-
? chunkFieldSingle(content,
|
|
2477
|
-
: chunkTree(content,
|
|
2569
|
+
? chunkFieldSingle(content, chunkCompressor)
|
|
2570
|
+
: chunkTree(content, chunkCompressor);
|
|
2478
2571
|
builds.set([undefined, firstId], chunk);
|
|
2479
2572
|
|
|
2480
2573
|
return {
|
|
@@ -3012,3 +3105,7 @@ function getFromChangeAtomIdMap<T>(
|
|
|
3012
3105
|
function setInChangeAtomIdMap<T>(map: ChangeAtomIdBTree<T>, id: ChangeAtomId, value: T): void {
|
|
3013
3106
|
map.set([id.revision, id.localId], value);
|
|
3014
3107
|
}
|
|
3108
|
+
|
|
3109
|
+
function areEqualFieldIds(a: FieldId, b: FieldId): boolean {
|
|
3110
|
+
return areEqualChangeAtomIdOpts(a.nodeId, b.nodeId) && a.field === b.field;
|
|
3111
|
+
}
|
|
@@ -576,6 +576,9 @@ export class ComposeQueue {
|
|
|
576
576
|
private dequeueBase(length: number = Infinity): ComposeMarks {
|
|
577
577
|
const baseMark = this.baseMarks.dequeueUpTo(length);
|
|
578
578
|
const movedChanges = getMovedChangesFromMark(this.moveEffects, baseMark);
|
|
579
|
+
if (movedChanges !== undefined) {
|
|
580
|
+
this.moveEffects.onMoveIn(movedChanges);
|
|
581
|
+
}
|
|
579
582
|
|
|
580
583
|
const newMark = createNoopMark(baseMark.count, movedChanges, getOutputCellId(baseMark));
|
|
581
584
|
return { baseMark, newMark };
|
|
@@ -10,6 +10,7 @@ import {
|
|
|
10
10
|
type ChangesetLocalId,
|
|
11
11
|
type RevisionMetadataSource,
|
|
12
12
|
type RevisionTag,
|
|
13
|
+
areEqualChangeAtomIdOpts,
|
|
13
14
|
areEqualChangeAtomIds,
|
|
14
15
|
makeChangeAtomId,
|
|
15
16
|
} from "../../core/index.js";
|
|
@@ -118,10 +119,7 @@ export function isActiveReattach(
|
|
|
118
119
|
}
|
|
119
120
|
|
|
120
121
|
export function areEqualCellIds(a: CellId | undefined, b: CellId | undefined): boolean {
|
|
121
|
-
|
|
122
|
-
return a === b;
|
|
123
|
-
}
|
|
124
|
-
return areEqualChangeAtomIds(a, b);
|
|
122
|
+
return areEqualChangeAtomIdOpts(a, b);
|
|
125
123
|
}
|
|
126
124
|
|
|
127
125
|
export function getInputCellId(mark: Mark): CellId | undefined {
|
|
@@ -17,7 +17,6 @@ import { fail } from "../util/index.js";
|
|
|
17
17
|
|
|
18
18
|
import { defaultSchemaPolicy } from "./default-schema/index.js";
|
|
19
19
|
import {
|
|
20
|
-
Any,
|
|
21
20
|
type FlexAllowedTypes,
|
|
22
21
|
FlexFieldSchema,
|
|
23
22
|
type FlexMapFieldSchema,
|
|
@@ -42,7 +41,7 @@ export function treeSchemaFromStoredSchema(schema: TreeStoredSchema): FlexTreeSc
|
|
|
42
41
|
if (innerSchema instanceof LeafNodeStoredSchema) {
|
|
43
42
|
map.set(
|
|
44
43
|
identifier,
|
|
45
|
-
LeafNodeSchema
|
|
44
|
+
new LeafNodeSchema({ name: "intoTypedSchema" }, identifier, innerSchema.leafValue),
|
|
46
45
|
);
|
|
47
46
|
} else if (innerSchema instanceof MapNodeStoredSchema) {
|
|
48
47
|
map.set(
|
|
@@ -93,9 +92,9 @@ export function fieldSchemaFromStoredSchema(
|
|
|
93
92
|
map: ReadonlyMap<TreeNodeSchemaIdentifier, FlexTreeNodeSchema>,
|
|
94
93
|
): FlexFieldSchema {
|
|
95
94
|
const kind = defaultSchemaPolicy.fieldKinds.get(schema.kind) ?? fail("missing field kind");
|
|
96
|
-
const types: FlexAllowedTypes =
|
|
97
|
-
schema.types
|
|
98
|
-
|
|
99
|
-
|
|
95
|
+
const types: FlexAllowedTypes = Array.from(
|
|
96
|
+
schema.types,
|
|
97
|
+
(v) => () => map.get(v) ?? fail("missing schema"),
|
|
98
|
+
);
|
|
100
99
|
return FlexFieldSchema.create(kind, types);
|
|
101
100
|
}
|
|
@@ -45,7 +45,7 @@ export function markEager<T>(t: T): T {
|
|
|
45
45
|
* To force a `"function"` item to be treated as an eager item, call `markEager` before putting it in the list.
|
|
46
46
|
* This is necessary e.g. when the eager list items are function types and the lazy items are functions that _return_ function types.
|
|
47
47
|
* `FlexList`s are processed by `normalizeFlexList` and `normalizeFlexListEager`.
|
|
48
|
-
* @public
|
|
48
|
+
* @system @public
|
|
49
49
|
*/
|
|
50
50
|
export type FlexList<Item = unknown> = readonly LazyItem<Item>[];
|
|
51
51
|
|
|
@@ -94,7 +94,7 @@ export type NormalizedLazyFlexList<Item> = (() => Item)[];
|
|
|
94
94
|
|
|
95
95
|
/**
|
|
96
96
|
* Get the `Item` type from a `LazyItem<Item>`.
|
|
97
|
-
* @public
|
|
97
|
+
* @system @public
|
|
98
98
|
*/
|
|
99
99
|
export type ExtractItemType<Item extends LazyItem> = Item extends () => infer Result
|
|
100
100
|
? Result
|
|
@@ -120,7 +120,7 @@ export type FlexListToNonLazyArray<List extends FlexList> =
|
|
|
120
120
|
|
|
121
121
|
/**
|
|
122
122
|
* Normalize FlexList type to a union.
|
|
123
|
-
* @public
|
|
123
|
+
* @system @public
|
|
124
124
|
*/
|
|
125
125
|
export type FlexListToUnion<TList extends FlexList> = ExtractItemType<TList[number]>;
|
|
126
126
|
|
|
@@ -6,7 +6,6 @@
|
|
|
6
6
|
export {
|
|
7
7
|
type FlexTreeNodeSchema,
|
|
8
8
|
FlexFieldSchema,
|
|
9
|
-
Any,
|
|
10
9
|
allowedTypesToTypeSet,
|
|
11
10
|
type FlexAllowedTypes,
|
|
12
11
|
type LazyTreeNodeSchema,
|
|
@@ -23,8 +22,6 @@ export {
|
|
|
23
22
|
schemaIsLeaf,
|
|
24
23
|
schemaIsMap,
|
|
25
24
|
schemaIsObjectNode,
|
|
26
|
-
type NormalizeObjectNodeFields,
|
|
27
|
-
type NormalizeField,
|
|
28
25
|
intoStoredSchema,
|
|
29
26
|
allowedTypesSchemaSet,
|
|
30
27
|
intoStoredSchemaCollection,
|
|
@@ -47,4 +44,5 @@ export {
|
|
|
47
44
|
type NormalizeLazyItem,
|
|
48
45
|
type FlexListToUnion,
|
|
49
46
|
type ExtractItemType,
|
|
47
|
+
normalizeFlexListEager,
|
|
50
48
|
} from "./flexList.js";
|
|
@@ -22,7 +22,6 @@ import {
|
|
|
22
22
|
type FlexTreeNodeSchema,
|
|
23
23
|
LeafNodeSchema,
|
|
24
24
|
type SchemaCollection,
|
|
25
|
-
allowedTypesIsAny,
|
|
26
25
|
} from "./typedTreeSchema.js";
|
|
27
26
|
import type { Sourced } from "./view.js";
|
|
28
27
|
|
|
@@ -168,11 +167,11 @@ export function validateSchemaCollection(
|
|
|
168
167
|
validateField(
|
|
169
168
|
lintConfiguration,
|
|
170
169
|
collection,
|
|
171
|
-
tree.info,
|
|
170
|
+
tree.info as FlexFieldSchema,
|
|
172
171
|
() => `Map fields of "${identifier}" schema from library "${tree.builder.name}"`,
|
|
173
172
|
errors,
|
|
174
173
|
);
|
|
175
|
-
if ((tree.info.kind.multiplicity
|
|
174
|
+
if ((tree.info as FlexFieldSchema).kind.multiplicity === Multiplicity.Single) {
|
|
176
175
|
errors.push(
|
|
177
176
|
`Map fields of "${identifier}" schema from library "${tree.builder.name}" has kind with multiplicity "Single". This is invalid since it requires all possible field keys to have a value under them.`,
|
|
178
177
|
);
|
|
@@ -213,24 +212,23 @@ export function validateField(
|
|
|
213
212
|
errors: string[],
|
|
214
213
|
): void {
|
|
215
214
|
const types = field.allowedTypes;
|
|
216
|
-
|
|
217
|
-
|
|
218
|
-
|
|
219
|
-
|
|
220
|
-
|
|
221
|
-
errors.push(
|
|
222
|
-
`${describeField()} references type "${type.name}" from library "${
|
|
223
|
-
type.builder.name
|
|
224
|
-
}" which is not defined. Perhaps another type was intended, or that library needs to be added.`,
|
|
225
|
-
);
|
|
226
|
-
}
|
|
227
|
-
}
|
|
228
|
-
if (types.length === 0 && lintConfiguration.rejectEmpty) {
|
|
215
|
+
|
|
216
|
+
const normalizedTypes = normalizeFlexListEager(types);
|
|
217
|
+
for (const type of normalizedTypes) {
|
|
218
|
+
const referenced = collection.nodeSchema.get(type.name);
|
|
219
|
+
if (referenced === undefined) {
|
|
229
220
|
errors.push(
|
|
230
|
-
`${describeField()}
|
|
221
|
+
`${describeField()} references type "${type.name}" from library "${
|
|
222
|
+
type.builder.name
|
|
223
|
+
}" which is not defined. Perhaps another type was intended, or that library needs to be added.`,
|
|
231
224
|
);
|
|
232
225
|
}
|
|
233
226
|
}
|
|
227
|
+
if (types.length === 0 && lintConfiguration.rejectEmpty) {
|
|
228
|
+
errors.push(
|
|
229
|
+
`${describeField()} requires children to have a type from a set of zero types. This means the field must always be empty.`,
|
|
230
|
+
);
|
|
231
|
+
}
|
|
234
232
|
|
|
235
233
|
const kind = field.kind;
|
|
236
234
|
const kindFromPolicy = defaultSchemaPolicy.fieldKinds.get(kind.identifier);
|