@fluidframework/tree 2.3.1 → 2.4.0-297027
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/api-report/tree.alpha.api.md +77 -38
- package/api-report/tree.beta.api.md +50 -30
- package/api-report/tree.legacy.alpha.api.md +50 -30
- package/api-report/tree.legacy.public.api.md +50 -30
- package/api-report/tree.public.api.md +50 -30
- package/dist/alpha.d.ts +7 -0
- package/dist/beta.d.ts +4 -0
- package/dist/core/index.d.ts +1 -1
- package/dist/core/index.d.ts.map +1 -1
- package/dist/core/index.js +2 -1
- 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/schema-stored/schema.d.ts +7 -0
- package/dist/core/schema-stored/schema.d.ts.map +1 -1
- package/dist/core/schema-stored/schema.js +9 -0
- package/dist/core/schema-stored/schema.js.map +1 -1
- package/dist/core/tree/anchorSet.d.ts +1 -2
- package/dist/core/tree/anchorSet.d.ts.map +1 -1
- package/dist/core/tree/anchorSet.js +2 -2
- package/dist/core/tree/anchorSet.js.map +1 -1
- package/dist/core/tree/detachedFieldIndex.d.ts.map +1 -1
- package/dist/core/tree/detachedFieldIndex.js +13 -2
- package/dist/core/tree/detachedFieldIndex.js.map +1 -1
- package/dist/core/tree/detachedFieldIndexTypes.d.ts +1 -1
- package/dist/core/tree/detachedFieldIndexTypes.js.map +1 -1
- package/dist/feature-libraries/editableTreeBinder.d.ts +3 -230
- package/dist/feature-libraries/editableTreeBinder.d.ts.map +1 -1
- package/dist/feature-libraries/editableTreeBinder.js +1 -539
- package/dist/feature-libraries/editableTreeBinder.js.map +1 -1
- package/dist/feature-libraries/flex-tree/context.d.ts +7 -14
- package/dist/feature-libraries/flex-tree/context.d.ts.map +1 -1
- package/dist/feature-libraries/flex-tree/context.js +3 -3
- package/dist/feature-libraries/flex-tree/context.js.map +1 -1
- package/dist/feature-libraries/flex-tree/flexTreeTypes.d.ts +2 -16
- package/dist/feature-libraries/flex-tree/flexTreeTypes.d.ts.map +1 -1
- package/dist/feature-libraries/flex-tree/flexTreeTypes.js.map +1 -1
- package/dist/feature-libraries/flex-tree/lazyEntity.d.ts +2 -3
- package/dist/feature-libraries/flex-tree/lazyEntity.d.ts.map +1 -1
- package/dist/feature-libraries/flex-tree/lazyEntity.js +1 -2
- package/dist/feature-libraries/flex-tree/lazyEntity.js.map +1 -1
- package/dist/feature-libraries/flex-tree/lazyField.d.ts +10 -15
- package/dist/feature-libraries/flex-tree/lazyField.d.ts.map +1 -1
- package/dist/feature-libraries/flex-tree/lazyField.js +18 -20
- package/dist/feature-libraries/flex-tree/lazyField.js.map +1 -1
- package/dist/feature-libraries/flex-tree/lazyNode.d.ts +4 -5
- package/dist/feature-libraries/flex-tree/lazyNode.d.ts.map +1 -1
- package/dist/feature-libraries/flex-tree/lazyNode.js +13 -23
- package/dist/feature-libraries/flex-tree/lazyNode.js.map +1 -1
- package/dist/feature-libraries/flex-tree/utilities.js +1 -1
- package/dist/feature-libraries/flex-tree/utilities.js.map +1 -1
- package/dist/feature-libraries/index.d.ts +4 -7
- package/dist/feature-libraries/index.d.ts.map +1 -1
- package/dist/feature-libraries/index.js +5 -31
- package/dist/feature-libraries/index.js.map +1 -1
- package/dist/feature-libraries/modular-schema/modularChangeFamily.d.ts +7 -0
- package/dist/feature-libraries/modular-schema/modularChangeFamily.d.ts.map +1 -1
- package/dist/feature-libraries/modular-schema/modularChangeFamily.js +61 -17
- package/dist/feature-libraries/modular-schema/modularChangeFamily.js.map +1 -1
- 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/formatV1.d.ts +18 -18
- package/dist/feature-libraries/sequence-field/formatV2.d.ts +18 -18
- package/dist/feature-libraries/sequence-field/formatV3.d.ts +27 -27
- 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/typed-schema/flexList.d.ts +1 -46
- package/dist/feature-libraries/typed-schema/flexList.d.ts.map +1 -1
- package/dist/feature-libraries/typed-schema/flexList.js +1 -13
- package/dist/feature-libraries/typed-schema/flexList.js.map +1 -1
- package/dist/feature-libraries/typed-schema/index.d.ts +2 -4
- package/dist/feature-libraries/typed-schema/index.d.ts.map +1 -1
- package/dist/feature-libraries/typed-schema/index.js +1 -19
- package/dist/feature-libraries/typed-schema/index.js.map +1 -1
- package/dist/feature-libraries/typed-schema/typedTreeSchema.d.ts +0 -212
- package/dist/feature-libraries/typed-schema/typedTreeSchema.d.ts.map +1 -1
- package/dist/feature-libraries/typed-schema/typedTreeSchema.js +0 -266
- package/dist/feature-libraries/typed-schema/typedTreeSchema.js.map +1 -1
- package/dist/index.d.ts +3 -3
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +2 -1
- package/dist/index.js.map +1 -1
- package/dist/internalTypes.d.ts +1 -1
- package/dist/internalTypes.d.ts.map +1 -1
- package/dist/internalTypes.js.map +1 -1
- package/dist/legacy.d.ts +4 -0
- package/dist/packageVersion.d.ts +1 -1
- package/dist/packageVersion.d.ts.map +1 -1
- package/dist/packageVersion.js +1 -1
- package/dist/packageVersion.js.map +1 -1
- package/dist/public.d.ts +4 -0
- package/dist/shared-tree/checkoutFlexTreeView.d.ts +3 -3
- package/dist/shared-tree/checkoutFlexTreeView.d.ts.map +1 -1
- package/dist/shared-tree/checkoutFlexTreeView.js +1 -1
- package/dist/shared-tree/checkoutFlexTreeView.js.map +1 -1
- 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 -3
- package/dist/shared-tree/index.js.map +1 -1
- package/dist/shared-tree/schematizeTree.d.ts +1 -40
- package/dist/shared-tree/schematizeTree.d.ts.map +1 -1
- package/dist/shared-tree/schematizeTree.js +2 -11
- package/dist/shared-tree/schematizeTree.js.map +1 -1
- package/dist/shared-tree/schematizingTreeView.d.ts +9 -7
- package/dist/shared-tree/schematizingTreeView.d.ts.map +1 -1
- package/dist/shared-tree/schematizingTreeView.js +19 -8
- package/dist/shared-tree/schematizingTreeView.js.map +1 -1
- package/dist/shared-tree/sharedTree.d.ts +19 -2
- package/dist/shared-tree/sharedTree.d.ts.map +1 -1
- package/dist/shared-tree/sharedTree.js +10 -2
- package/dist/shared-tree/sharedTree.js.map +1 -1
- package/dist/shared-tree/treeCheckout.d.ts +71 -41
- package/dist/shared-tree/treeCheckout.d.ts.map +1 -1
- package/dist/shared-tree/treeCheckout.js +116 -84
- package/dist/shared-tree/treeCheckout.js.map +1 -1
- package/dist/shared-tree-core/branch.d.ts +8 -11
- package/dist/shared-tree-core/branch.d.ts.map +1 -1
- package/dist/shared-tree-core/branch.js +12 -15
- package/dist/shared-tree-core/branch.js.map +1 -1
- package/dist/simple-tree/api/create.d.ts +1 -1
- package/dist/simple-tree/api/create.d.ts.map +1 -1
- package/dist/simple-tree/api/create.js +11 -13
- package/dist/simple-tree/api/create.js.map +1 -1
- package/dist/simple-tree/api/getJsonSchema.d.ts +3 -3
- package/dist/simple-tree/api/getJsonSchema.d.ts.map +1 -1
- package/dist/simple-tree/api/getJsonSchema.js +1 -1
- package/dist/simple-tree/api/getJsonSchema.js.map +1 -1
- package/dist/simple-tree/api/getSimpleSchema.d.ts +2 -2
- package/dist/simple-tree/api/getSimpleSchema.d.ts.map +1 -1
- package/dist/simple-tree/api/getSimpleSchema.js.map +1 -1
- package/dist/simple-tree/api/index.d.ts +2 -1
- package/dist/simple-tree/api/index.d.ts.map +1 -1
- package/dist/simple-tree/api/index.js +3 -1
- package/dist/simple-tree/api/index.js.map +1 -1
- package/dist/simple-tree/api/jsonSchema.d.ts +13 -14
- package/dist/simple-tree/api/jsonSchema.d.ts.map +1 -1
- package/dist/simple-tree/api/jsonSchema.js.map +1 -1
- package/dist/simple-tree/api/schemaFactory.d.ts +14 -8
- package/dist/simple-tree/api/schemaFactory.d.ts.map +1 -1
- package/dist/simple-tree/api/schemaFactory.js +21 -2
- package/dist/simple-tree/api/schemaFactory.js.map +1 -1
- package/dist/simple-tree/api/schemaFactoryRecursive.d.ts +3 -3
- package/dist/simple-tree/api/schemaFactoryRecursive.d.ts.map +1 -1
- package/dist/simple-tree/api/schemaFactoryRecursive.js.map +1 -1
- package/dist/simple-tree/api/simpleSchema.d.ts +18 -10
- package/dist/simple-tree/api/simpleSchema.d.ts.map +1 -1
- package/dist/simple-tree/api/simpleSchema.js.map +1 -1
- package/dist/simple-tree/api/simpleSchemaToJsonSchema.d.ts.map +1 -1
- package/dist/simple-tree/api/simpleSchemaToJsonSchema.js +30 -17
- package/dist/simple-tree/api/simpleSchemaToJsonSchema.js.map +1 -1
- package/dist/simple-tree/api/tree.d.ts +16 -6
- package/dist/simple-tree/api/tree.d.ts.map +1 -1
- package/dist/simple-tree/api/tree.js +4 -4
- package/dist/simple-tree/api/tree.js.map +1 -1
- package/dist/simple-tree/api/treeNodeApi.d.ts.map +1 -1
- package/dist/simple-tree/api/treeNodeApi.js +8 -6
- package/dist/simple-tree/api/treeNodeApi.js.map +1 -1
- package/dist/simple-tree/api/verboseTree.d.ts.map +1 -1
- package/dist/simple-tree/api/verboseTree.js +6 -10
- package/dist/simple-tree/api/verboseTree.js.map +1 -1
- package/{lib/feature-libraries/typed-schema → dist/simple-tree/api}/view.d.ts +4 -11
- package/dist/simple-tree/api/view.d.ts.map +1 -0
- package/dist/{feature-libraries/typed-schema → simple-tree/api}/view.js +9 -9
- package/dist/simple-tree/api/view.js.map +1 -0
- package/dist/simple-tree/api/viewSchemaToSimpleSchema.d.ts +2 -2
- package/dist/simple-tree/api/viewSchemaToSimpleSchema.d.ts.map +1 -1
- package/dist/simple-tree/api/viewSchemaToSimpleSchema.js +11 -1
- package/dist/simple-tree/api/viewSchemaToSimpleSchema.js.map +1 -1
- package/dist/simple-tree/arrayNode.d.ts +147 -14
- package/dist/simple-tree/arrayNode.d.ts.map +1 -1
- package/dist/simple-tree/arrayNode.js +32 -20
- package/dist/simple-tree/arrayNode.js.map +1 -1
- package/dist/simple-tree/core/context.d.ts +55 -0
- package/dist/simple-tree/core/context.d.ts.map +1 -0
- package/dist/simple-tree/core/context.js +60 -0
- package/dist/simple-tree/core/context.js.map +1 -0
- package/dist/simple-tree/core/getOrCreateNode.d.ts +15 -0
- package/dist/simple-tree/core/getOrCreateNode.d.ts.map +1 -0
- package/dist/simple-tree/core/getOrCreateNode.js +36 -0
- package/dist/simple-tree/core/getOrCreateNode.js.map +1 -0
- package/dist/simple-tree/core/index.d.ts +7 -3
- package/dist/simple-tree/core/index.d.ts.map +1 -1
- package/dist/simple-tree/core/index.js +16 -7
- package/dist/simple-tree/core/index.js.map +1 -1
- package/dist/simple-tree/core/schemaCaching.d.ts +5 -13
- package/dist/simple-tree/core/schemaCaching.d.ts.map +1 -1
- package/dist/simple-tree/core/schemaCaching.js +16 -45
- package/dist/simple-tree/core/schemaCaching.js.map +1 -1
- package/dist/simple-tree/core/treeNodeKernel.d.ts +29 -7
- package/dist/simple-tree/core/treeNodeKernel.d.ts.map +1 -1
- package/dist/simple-tree/core/treeNodeKernel.js +94 -58
- package/dist/simple-tree/core/treeNodeKernel.js.map +1 -1
- package/dist/simple-tree/core/treeNodeSchema.d.ts +24 -0
- package/dist/simple-tree/core/treeNodeSchema.d.ts.map +1 -1
- package/dist/simple-tree/core/treeNodeSchema.js.map +1 -1
- package/dist/simple-tree/core/types.d.ts +0 -5
- 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/unhydratedFlexTree.d.ts +139 -0
- package/dist/simple-tree/core/unhydratedFlexTree.d.ts.map +1 -0
- package/dist/{feature-libraries/flex-map-tree/mapTreeNode.js → simple-tree/core/unhydratedFlexTree.js} +112 -132
- package/dist/simple-tree/core/unhydratedFlexTree.js.map +1 -0
- package/dist/simple-tree/{walkSchema.d.ts → core/walkSchema.d.ts} +8 -4
- package/dist/simple-tree/core/walkSchema.d.ts.map +1 -0
- package/dist/simple-tree/core/walkSchema.js +34 -0
- package/dist/simple-tree/core/walkSchema.js.map +1 -0
- package/dist/simple-tree/createContext.d.ts +11 -0
- package/dist/simple-tree/createContext.d.ts.map +1 -0
- package/dist/simple-tree/createContext.js +25 -0
- package/dist/simple-tree/createContext.js.map +1 -0
- package/dist/simple-tree/index.d.ts +4 -5
- package/dist/simple-tree/index.d.ts.map +1 -1
- package/dist/simple-tree/index.js +7 -7
- package/dist/simple-tree/index.js.map +1 -1
- package/dist/simple-tree/leafNodeSchema.d.ts +1 -0
- package/dist/simple-tree/leafNodeSchema.d.ts.map +1 -1
- package/dist/simple-tree/leafNodeSchema.js +1 -2
- package/dist/simple-tree/leafNodeSchema.js.map +1 -1
- package/dist/simple-tree/mapNode.d.ts +4 -4
- package/dist/simple-tree/mapNode.d.ts.map +1 -1
- package/dist/simple-tree/mapNode.js +9 -5
- package/dist/simple-tree/mapNode.js.map +1 -1
- package/dist/simple-tree/objectNode.d.ts +8 -8
- package/dist/simple-tree/objectNode.d.ts.map +1 -1
- package/dist/simple-tree/objectNode.js +33 -14
- package/dist/simple-tree/objectNode.js.map +1 -1
- package/dist/simple-tree/objectNodeTypes.d.ts +7 -3
- package/dist/simple-tree/objectNodeTypes.d.ts.map +1 -1
- package/dist/simple-tree/objectNodeTypes.js.map +1 -1
- package/dist/simple-tree/proxies.d.ts +1 -2
- package/dist/simple-tree/proxies.d.ts.map +1 -1
- package/dist/simple-tree/proxies.js +6 -22
- package/dist/simple-tree/proxies.js.map +1 -1
- package/dist/simple-tree/schemaTypes.d.ts +44 -4
- package/dist/simple-tree/schemaTypes.d.ts.map +1 -1
- package/dist/simple-tree/schemaTypes.js +10 -0
- package/dist/simple-tree/schemaTypes.js.map +1 -1
- package/dist/simple-tree/toFlexSchema.d.ts +6 -36
- package/dist/simple-tree/toFlexSchema.d.ts.map +1 -1
- package/dist/simple-tree/toFlexSchema.js +58 -142
- package/dist/simple-tree/toFlexSchema.js.map +1 -1
- package/dist/simple-tree/toMapTree.d.ts.map +1 -1
- package/dist/simple-tree/toMapTree.js +2 -2
- package/dist/simple-tree/toMapTree.js.map +1 -1
- package/dist/simple-tree/treeNodeValid.d.ts +13 -5
- package/dist/simple-tree/treeNodeValid.d.ts.map +1 -1
- package/dist/simple-tree/treeNodeValid.js +19 -10
- package/dist/simple-tree/treeNodeValid.js.map +1 -1
- package/dist/simple-tree/typesUnsafe.d.ts +4 -4
- package/dist/simple-tree/typesUnsafe.d.ts.map +1 -1
- package/dist/simple-tree/typesUnsafe.js.map +1 -1
- package/dist/simple-tree/walkFieldSchema.d.ts +11 -0
- package/dist/simple-tree/walkFieldSchema.d.ts.map +1 -0
- package/dist/simple-tree/walkFieldSchema.js +17 -0
- package/dist/simple-tree/walkFieldSchema.js.map +1 -0
- package/dist/util/index.d.ts +1 -1
- package/dist/util/index.d.ts.map +1 -1
- package/dist/util/index.js.map +1 -1
- package/dist/util/typeUtils.d.ts +14 -45
- package/dist/util/typeUtils.d.ts.map +1 -1
- package/dist/util/typeUtils.js.map +1 -1
- package/lib/alpha.d.ts +7 -0
- package/lib/beta.d.ts +4 -0
- 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/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/schema-stored/schema.d.ts +7 -0
- package/lib/core/schema-stored/schema.d.ts.map +1 -1
- package/lib/core/schema-stored/schema.js +9 -0
- package/lib/core/schema-stored/schema.js.map +1 -1
- package/lib/core/tree/anchorSet.d.ts +1 -2
- package/lib/core/tree/anchorSet.d.ts.map +1 -1
- package/lib/core/tree/anchorSet.js +2 -2
- package/lib/core/tree/anchorSet.js.map +1 -1
- package/lib/core/tree/detachedFieldIndex.d.ts.map +1 -1
- package/lib/core/tree/detachedFieldIndex.js +13 -2
- package/lib/core/tree/detachedFieldIndex.js.map +1 -1
- package/lib/core/tree/detachedFieldIndexTypes.d.ts +1 -1
- package/lib/core/tree/detachedFieldIndexTypes.js.map +1 -1
- package/lib/feature-libraries/editableTreeBinder.d.ts +3 -230
- package/lib/feature-libraries/editableTreeBinder.d.ts.map +1 -1
- package/lib/feature-libraries/editableTreeBinder.js +1 -532
- package/lib/feature-libraries/editableTreeBinder.js.map +1 -1
- package/lib/feature-libraries/flex-tree/context.d.ts +7 -14
- package/lib/feature-libraries/flex-tree/context.d.ts.map +1 -1
- package/lib/feature-libraries/flex-tree/context.js +3 -3
- package/lib/feature-libraries/flex-tree/context.js.map +1 -1
- package/lib/feature-libraries/flex-tree/flexTreeTypes.d.ts +2 -16
- package/lib/feature-libraries/flex-tree/flexTreeTypes.d.ts.map +1 -1
- package/lib/feature-libraries/flex-tree/flexTreeTypes.js.map +1 -1
- package/lib/feature-libraries/flex-tree/lazyEntity.d.ts +2 -3
- package/lib/feature-libraries/flex-tree/lazyEntity.d.ts.map +1 -1
- package/lib/feature-libraries/flex-tree/lazyEntity.js +1 -2
- package/lib/feature-libraries/flex-tree/lazyEntity.js.map +1 -1
- package/lib/feature-libraries/flex-tree/lazyField.d.ts +10 -15
- package/lib/feature-libraries/flex-tree/lazyField.d.ts.map +1 -1
- package/lib/feature-libraries/flex-tree/lazyField.js +18 -20
- package/lib/feature-libraries/flex-tree/lazyField.js.map +1 -1
- package/lib/feature-libraries/flex-tree/lazyNode.d.ts +4 -5
- package/lib/feature-libraries/flex-tree/lazyNode.d.ts.map +1 -1
- package/lib/feature-libraries/flex-tree/lazyNode.js +13 -23
- package/lib/feature-libraries/flex-tree/lazyNode.js.map +1 -1
- package/lib/feature-libraries/flex-tree/utilities.js +1 -1
- package/lib/feature-libraries/flex-tree/utilities.js.map +1 -1
- package/lib/feature-libraries/index.d.ts +4 -7
- package/lib/feature-libraries/index.d.ts.map +1 -1
- package/lib/feature-libraries/index.js +4 -6
- package/lib/feature-libraries/index.js.map +1 -1
- package/lib/feature-libraries/modular-schema/modularChangeFamily.d.ts +7 -0
- package/lib/feature-libraries/modular-schema/modularChangeFamily.d.ts.map +1 -1
- package/lib/feature-libraries/modular-schema/modularChangeFamily.js +62 -18
- package/lib/feature-libraries/modular-schema/modularChangeFamily.js.map +1 -1
- 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/formatV1.d.ts +18 -18
- package/lib/feature-libraries/sequence-field/formatV2.d.ts +18 -18
- package/lib/feature-libraries/sequence-field/formatV3.d.ts +27 -27
- 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/typed-schema/flexList.d.ts +1 -46
- package/lib/feature-libraries/typed-schema/flexList.d.ts.map +1 -1
- package/lib/feature-libraries/typed-schema/flexList.js +0 -11
- package/lib/feature-libraries/typed-schema/flexList.js.map +1 -1
- package/lib/feature-libraries/typed-schema/index.d.ts +2 -4
- package/lib/feature-libraries/typed-schema/index.d.ts.map +1 -1
- package/lib/feature-libraries/typed-schema/index.js +0 -3
- package/lib/feature-libraries/typed-schema/index.js.map +1 -1
- package/lib/feature-libraries/typed-schema/typedTreeSchema.d.ts +0 -212
- package/lib/feature-libraries/typed-schema/typedTreeSchema.d.ts.map +1 -1
- package/lib/feature-libraries/typed-schema/typedTreeSchema.js +1 -253
- package/lib/feature-libraries/typed-schema/typedTreeSchema.js.map +1 -1
- package/lib/index.d.ts +3 -3
- package/lib/index.d.ts.map +1 -1
- package/lib/index.js +1 -1
- package/lib/index.js.map +1 -1
- package/lib/internalTypes.d.ts +1 -1
- package/lib/internalTypes.d.ts.map +1 -1
- package/lib/internalTypes.js.map +1 -1
- package/lib/legacy.d.ts +4 -0
- package/lib/packageVersion.d.ts +1 -1
- package/lib/packageVersion.d.ts.map +1 -1
- package/lib/packageVersion.js +1 -1
- package/lib/packageVersion.js.map +1 -1
- package/lib/public.d.ts +4 -0
- package/lib/shared-tree/checkoutFlexTreeView.d.ts +3 -3
- package/lib/shared-tree/checkoutFlexTreeView.d.ts.map +1 -1
- package/lib/shared-tree/checkoutFlexTreeView.js +1 -1
- package/lib/shared-tree/checkoutFlexTreeView.js.map +1 -1
- 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 -2
- package/lib/shared-tree/index.js.map +1 -1
- package/lib/shared-tree/schematizeTree.d.ts +1 -40
- package/lib/shared-tree/schematizeTree.d.ts.map +1 -1
- package/lib/shared-tree/schematizeTree.js +1 -9
- package/lib/shared-tree/schematizeTree.js.map +1 -1
- package/lib/shared-tree/schematizingTreeView.d.ts +9 -7
- package/lib/shared-tree/schematizingTreeView.d.ts.map +1 -1
- package/lib/shared-tree/schematizingTreeView.js +22 -11
- package/lib/shared-tree/schematizingTreeView.js.map +1 -1
- package/lib/shared-tree/sharedTree.d.ts +19 -2
- package/lib/shared-tree/sharedTree.d.ts.map +1 -1
- package/lib/shared-tree/sharedTree.js +10 -3
- package/lib/shared-tree/sharedTree.js.map +1 -1
- package/lib/shared-tree/treeCheckout.d.ts +71 -41
- package/lib/shared-tree/treeCheckout.d.ts.map +1 -1
- package/lib/shared-tree/treeCheckout.js +118 -86
- package/lib/shared-tree/treeCheckout.js.map +1 -1
- package/lib/shared-tree-core/branch.d.ts +8 -11
- package/lib/shared-tree-core/branch.d.ts.map +1 -1
- package/lib/shared-tree-core/branch.js +12 -15
- package/lib/shared-tree-core/branch.js.map +1 -1
- package/lib/simple-tree/api/create.d.ts +1 -1
- package/lib/simple-tree/api/create.d.ts.map +1 -1
- package/lib/simple-tree/api/create.js +14 -16
- package/lib/simple-tree/api/create.js.map +1 -1
- package/lib/simple-tree/api/getJsonSchema.d.ts +3 -3
- package/lib/simple-tree/api/getJsonSchema.d.ts.map +1 -1
- package/lib/simple-tree/api/getJsonSchema.js +1 -1
- package/lib/simple-tree/api/getJsonSchema.js.map +1 -1
- package/lib/simple-tree/api/getSimpleSchema.d.ts +2 -2
- package/lib/simple-tree/api/getSimpleSchema.d.ts.map +1 -1
- package/lib/simple-tree/api/getSimpleSchema.js.map +1 -1
- package/lib/simple-tree/api/index.d.ts +2 -1
- package/lib/simple-tree/api/index.d.ts.map +1 -1
- package/lib/simple-tree/api/index.js +1 -0
- package/lib/simple-tree/api/index.js.map +1 -1
- package/lib/simple-tree/api/jsonSchema.d.ts +13 -14
- package/lib/simple-tree/api/jsonSchema.d.ts.map +1 -1
- package/lib/simple-tree/api/jsonSchema.js.map +1 -1
- package/lib/simple-tree/api/schemaFactory.d.ts +14 -8
- package/lib/simple-tree/api/schemaFactory.d.ts.map +1 -1
- package/lib/simple-tree/api/schemaFactory.js +21 -2
- package/lib/simple-tree/api/schemaFactory.js.map +1 -1
- package/lib/simple-tree/api/schemaFactoryRecursive.d.ts +3 -3
- package/lib/simple-tree/api/schemaFactoryRecursive.d.ts.map +1 -1
- package/lib/simple-tree/api/schemaFactoryRecursive.js.map +1 -1
- package/lib/simple-tree/api/simpleSchema.d.ts +18 -10
- package/lib/simple-tree/api/simpleSchema.d.ts.map +1 -1
- package/lib/simple-tree/api/simpleSchema.js.map +1 -1
- package/lib/simple-tree/api/simpleSchemaToJsonSchema.d.ts.map +1 -1
- package/lib/simple-tree/api/simpleSchemaToJsonSchema.js +31 -18
- package/lib/simple-tree/api/simpleSchemaToJsonSchema.js.map +1 -1
- package/lib/simple-tree/api/tree.d.ts +16 -6
- package/lib/simple-tree/api/tree.d.ts.map +1 -1
- package/lib/simple-tree/api/tree.js +4 -4
- package/lib/simple-tree/api/tree.js.map +1 -1
- package/lib/simple-tree/api/treeNodeApi.d.ts.map +1 -1
- package/lib/simple-tree/api/treeNodeApi.js +10 -8
- package/lib/simple-tree/api/treeNodeApi.js.map +1 -1
- package/lib/simple-tree/api/verboseTree.d.ts.map +1 -1
- package/lib/simple-tree/api/verboseTree.js +6 -10
- package/lib/simple-tree/api/verboseTree.js.map +1 -1
- package/{dist/feature-libraries/typed-schema → lib/simple-tree/api}/view.d.ts +4 -11
- package/lib/simple-tree/api/view.d.ts.map +1 -0
- package/lib/{feature-libraries/typed-schema → simple-tree/api}/view.js +9 -9
- package/lib/simple-tree/api/view.js.map +1 -0
- package/lib/simple-tree/api/viewSchemaToSimpleSchema.d.ts +2 -2
- package/lib/simple-tree/api/viewSchemaToSimpleSchema.d.ts.map +1 -1
- package/lib/simple-tree/api/viewSchemaToSimpleSchema.js +11 -1
- package/lib/simple-tree/api/viewSchemaToSimpleSchema.js.map +1 -1
- package/lib/simple-tree/arrayNode.d.ts +147 -14
- package/lib/simple-tree/arrayNode.d.ts.map +1 -1
- package/lib/simple-tree/arrayNode.js +37 -25
- package/lib/simple-tree/arrayNode.js.map +1 -1
- package/lib/simple-tree/core/context.d.ts +55 -0
- package/lib/simple-tree/core/context.d.ts.map +1 -0
- package/lib/simple-tree/core/context.js +55 -0
- package/lib/simple-tree/core/context.js.map +1 -0
- package/lib/simple-tree/core/getOrCreateNode.d.ts +15 -0
- package/lib/simple-tree/core/getOrCreateNode.d.ts.map +1 -0
- package/lib/simple-tree/core/getOrCreateNode.js +32 -0
- package/lib/simple-tree/core/getOrCreateNode.js.map +1 -0
- package/lib/simple-tree/core/index.d.ts +7 -3
- package/lib/simple-tree/core/index.d.ts.map +1 -1
- package/lib/simple-tree/core/index.js +6 -2
- package/lib/simple-tree/core/index.js.map +1 -1
- package/lib/simple-tree/core/schemaCaching.d.ts +5 -13
- package/lib/simple-tree/core/schemaCaching.d.ts.map +1 -1
- package/lib/simple-tree/core/schemaCaching.js +13 -39
- package/lib/simple-tree/core/schemaCaching.js.map +1 -1
- package/lib/simple-tree/core/treeNodeKernel.d.ts +29 -7
- package/lib/simple-tree/core/treeNodeKernel.d.ts.map +1 -1
- package/lib/simple-tree/core/treeNodeKernel.js +89 -54
- package/lib/simple-tree/core/treeNodeKernel.js.map +1 -1
- package/lib/simple-tree/core/treeNodeSchema.d.ts +24 -0
- package/lib/simple-tree/core/treeNodeSchema.d.ts.map +1 -1
- package/lib/simple-tree/core/treeNodeSchema.js.map +1 -1
- package/lib/simple-tree/core/types.d.ts +0 -5
- 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/unhydratedFlexTree.d.ts +139 -0
- package/lib/simple-tree/core/unhydratedFlexTree.d.ts.map +1 -0
- package/lib/{feature-libraries/flex-map-tree/mapTreeNode.js → simple-tree/core/unhydratedFlexTree.js} +110 -128
- package/lib/simple-tree/core/unhydratedFlexTree.js.map +1 -0
- package/lib/simple-tree/{walkSchema.d.ts → core/walkSchema.d.ts} +8 -4
- package/lib/simple-tree/core/walkSchema.d.ts.map +1 -0
- package/lib/simple-tree/core/walkSchema.js +29 -0
- package/lib/simple-tree/core/walkSchema.js.map +1 -0
- package/lib/simple-tree/createContext.d.ts +11 -0
- package/lib/simple-tree/createContext.d.ts.map +1 -0
- package/lib/simple-tree/createContext.js +21 -0
- package/lib/simple-tree/createContext.js.map +1 -0
- package/lib/simple-tree/index.d.ts +4 -5
- package/lib/simple-tree/index.d.ts.map +1 -1
- package/lib/simple-tree/index.js +3 -4
- package/lib/simple-tree/index.js.map +1 -1
- package/lib/simple-tree/leafNodeSchema.d.ts +1 -0
- package/lib/simple-tree/leafNodeSchema.d.ts.map +1 -1
- package/lib/simple-tree/leafNodeSchema.js +3 -4
- package/lib/simple-tree/leafNodeSchema.js.map +1 -1
- package/lib/simple-tree/mapNode.d.ts +4 -4
- package/lib/simple-tree/mapNode.d.ts.map +1 -1
- package/lib/simple-tree/mapNode.js +12 -8
- package/lib/simple-tree/mapNode.js.map +1 -1
- package/lib/simple-tree/objectNode.d.ts +8 -8
- package/lib/simple-tree/objectNode.d.ts.map +1 -1
- package/lib/simple-tree/objectNode.js +36 -17
- package/lib/simple-tree/objectNode.js.map +1 -1
- package/lib/simple-tree/objectNodeTypes.d.ts +7 -3
- package/lib/simple-tree/objectNodeTypes.d.ts.map +1 -1
- package/lib/simple-tree/objectNodeTypes.js.map +1 -1
- package/lib/simple-tree/proxies.d.ts +1 -2
- package/lib/simple-tree/proxies.d.ts.map +1 -1
- package/lib/simple-tree/proxies.js +7 -22
- package/lib/simple-tree/proxies.js.map +1 -1
- package/lib/simple-tree/schemaTypes.d.ts +44 -4
- package/lib/simple-tree/schemaTypes.d.ts.map +1 -1
- package/lib/simple-tree/schemaTypes.js +10 -0
- package/lib/simple-tree/schemaTypes.js.map +1 -1
- package/lib/simple-tree/toFlexSchema.d.ts +6 -36
- package/lib/simple-tree/toFlexSchema.d.ts.map +1 -1
- package/lib/simple-tree/toFlexSchema.js +61 -142
- package/lib/simple-tree/toFlexSchema.js.map +1 -1
- package/lib/simple-tree/toMapTree.d.ts.map +1 -1
- package/lib/simple-tree/toMapTree.js +4 -4
- package/lib/simple-tree/toMapTree.js.map +1 -1
- package/lib/simple-tree/treeNodeValid.d.ts +13 -5
- package/lib/simple-tree/treeNodeValid.d.ts.map +1 -1
- package/lib/simple-tree/treeNodeValid.js +21 -12
- package/lib/simple-tree/treeNodeValid.js.map +1 -1
- package/lib/simple-tree/typesUnsafe.d.ts +4 -4
- package/lib/simple-tree/typesUnsafe.d.ts.map +1 -1
- package/lib/simple-tree/typesUnsafe.js.map +1 -1
- package/lib/simple-tree/walkFieldSchema.d.ts +11 -0
- package/lib/simple-tree/walkFieldSchema.d.ts.map +1 -0
- package/lib/simple-tree/walkFieldSchema.js +13 -0
- package/lib/simple-tree/walkFieldSchema.js.map +1 -0
- package/lib/util/index.d.ts +1 -1
- package/lib/util/index.d.ts.map +1 -1
- package/lib/util/index.js.map +1 -1
- package/lib/util/typeUtils.d.ts +14 -45
- package/lib/util/typeUtils.d.ts.map +1 -1
- package/lib/util/typeUtils.js.map +1 -1
- package/package.json +41 -22
- package/src/core/index.ts +1 -0
- package/src/core/rebase/index.ts +1 -0
- package/src/core/rebase/types.ts +11 -0
- package/src/core/schema-stored/schema.ts +18 -0
- package/src/core/tree/anchorSet.ts +3 -4
- package/src/core/tree/detachedFieldIndex.ts +14 -3
- package/src/core/tree/detachedFieldIndexTypes.ts +1 -1
- package/src/feature-libraries/editableTreeBinder.ts +2 -915
- package/src/feature-libraries/flex-tree/context.ts +7 -20
- package/src/feature-libraries/flex-tree/flexTreeTypes.ts +2 -18
- package/src/feature-libraries/flex-tree/lazyEntity.ts +1 -4
- package/src/feature-libraries/flex-tree/lazyField.ts +22 -78
- package/src/feature-libraries/flex-tree/lazyNode.ts +24 -39
- package/src/feature-libraries/flex-tree/utilities.ts +1 -1
- package/src/feature-libraries/index.ts +3 -71
- package/src/feature-libraries/modular-schema/modularChangeFamily.ts +97 -10
- package/src/feature-libraries/sequence-field/compose.ts +3 -0
- package/src/feature-libraries/sequence-field/utils.ts +2 -4
- package/src/feature-libraries/typed-schema/flexList.ts +3 -84
- package/src/feature-libraries/typed-schema/index.ts +1 -33
- package/src/feature-libraries/typed-schema/typedTreeSchema.ts +0 -458
- package/src/index.ts +7 -0
- package/src/internalTypes.ts +0 -1
- package/src/packageVersion.ts +1 -1
- package/src/shared-tree/checkoutFlexTreeView.ts +3 -3
- package/src/shared-tree/index.ts +4 -8
- package/src/shared-tree/schematizeTree.ts +2 -56
- package/src/shared-tree/schematizingTreeView.ts +38 -15
- package/src/shared-tree/sharedTree.ts +36 -8
- package/src/shared-tree/treeCheckout.ts +225 -128
- package/src/shared-tree-core/branch.ts +15 -26
- package/src/simple-tree/api/create.ts +18 -20
- package/src/simple-tree/api/getJsonSchema.ts +3 -3
- package/src/simple-tree/api/getSimpleSchema.ts +2 -2
- package/src/simple-tree/api/index.ts +2 -0
- package/src/simple-tree/api/jsonSchema.ts +19 -17
- package/src/simple-tree/api/schemaFactory.ts +53 -18
- package/src/simple-tree/api/schemaFactoryRecursive.ts +3 -6
- package/src/simple-tree/api/simpleSchema.ts +20 -10
- package/src/simple-tree/api/simpleSchemaToJsonSchema.ts +40 -19
- package/src/simple-tree/api/tree.ts +20 -9
- package/src/simple-tree/api/treeNodeApi.ts +12 -10
- package/src/simple-tree/api/verboseTree.ts +6 -12
- package/src/{feature-libraries/typed-schema → simple-tree/api}/view.ts +9 -22
- package/src/simple-tree/api/viewSchemaToSimpleSchema.ts +18 -4
- package/src/simple-tree/arrayNode.ts +202 -53
- package/src/simple-tree/core/context.ts +78 -0
- package/src/simple-tree/core/getOrCreateNode.ts +38 -0
- package/src/simple-tree/core/index.ts +11 -7
- package/src/simple-tree/core/schemaCaching.ts +13 -50
- package/src/simple-tree/core/treeNodeKernel.ts +117 -78
- package/src/simple-tree/core/treeNodeSchema.ts +35 -1
- package/src/simple-tree/core/types.ts +0 -5
- package/src/{feature-libraries/flex-map-tree/mapTreeNode.ts → simple-tree/core/unhydratedFlexTree.ts} +167 -210
- package/src/simple-tree/{walkSchema.ts → core/walkSchema.ts} +12 -34
- package/src/simple-tree/createContext.ts +24 -0
- package/src/simple-tree/index.ts +6 -2
- package/src/simple-tree/leafNodeSchema.ts +3 -9
- package/src/simple-tree/mapNode.ts +20 -17
- package/src/simple-tree/objectNode.ts +63 -38
- package/src/simple-tree/objectNodeTypes.ts +8 -5
- package/src/simple-tree/proxies.ts +8 -26
- package/src/simple-tree/schemaTypes.ts +55 -5
- package/src/simple-tree/toFlexSchema.ts +71 -204
- package/src/simple-tree/toMapTree.ts +5 -5
- package/src/simple-tree/treeNodeValid.ts +28 -22
- package/src/simple-tree/typesUnsafe.ts +4 -4
- package/src/simple-tree/walkFieldSchema.ts +19 -0
- package/src/util/index.ts +1 -5
- package/src/util/typeUtils.ts +14 -56
- package/dist/feature-libraries/fieldGenerator.d.ts +0 -43
- package/dist/feature-libraries/fieldGenerator.d.ts.map +0 -1
- package/dist/feature-libraries/fieldGenerator.js +0 -13
- package/dist/feature-libraries/fieldGenerator.js.map +0 -1
- package/dist/feature-libraries/flex-map-tree/index.d.ts +0 -6
- package/dist/feature-libraries/flex-map-tree/index.d.ts.map +0 -1
- package/dist/feature-libraries/flex-map-tree/index.js +0 -14
- package/dist/feature-libraries/flex-map-tree/index.js.map +0 -1
- package/dist/feature-libraries/flex-map-tree/mapTreeNode.d.ts +0 -157
- package/dist/feature-libraries/flex-map-tree/mapTreeNode.d.ts.map +0 -1
- package/dist/feature-libraries/flex-map-tree/mapTreeNode.js.map +0 -1
- package/dist/feature-libraries/storedToViewSchema.d.ts +0 -17
- package/dist/feature-libraries/storedToViewSchema.d.ts.map +0 -1
- package/dist/feature-libraries/storedToViewSchema.js +0 -67
- package/dist/feature-libraries/storedToViewSchema.js.map +0 -1
- package/dist/feature-libraries/typed-schema/schemaCollection.d.ts +0 -58
- package/dist/feature-libraries/typed-schema/schemaCollection.d.ts.map +0 -1
- package/dist/feature-libraries/typed-schema/schemaCollection.js +0 -160
- package/dist/feature-libraries/typed-schema/schemaCollection.js.map +0 -1
- package/dist/feature-libraries/typed-schema/typeUtils.d.ts +0 -15
- package/dist/feature-libraries/typed-schema/typeUtils.d.ts.map +0 -1
- package/dist/feature-libraries/typed-schema/typeUtils.js +0 -14
- package/dist/feature-libraries/typed-schema/typeUtils.js.map +0 -1
- package/dist/feature-libraries/typed-schema/view.d.ts.map +0 -1
- package/dist/feature-libraries/typed-schema/view.js.map +0 -1
- package/dist/simple-tree/getSimpleFieldSchema.d.ts +0 -14
- package/dist/simple-tree/getSimpleFieldSchema.d.ts.map +0 -1
- package/dist/simple-tree/getSimpleFieldSchema.js +0 -29
- package/dist/simple-tree/getSimpleFieldSchema.js.map +0 -1
- package/dist/simple-tree/walkSchema.d.ts.map +0 -1
- package/dist/simple-tree/walkSchema.js +0 -49
- package/dist/simple-tree/walkSchema.js.map +0 -1
- package/lib/feature-libraries/fieldGenerator.d.ts +0 -43
- package/lib/feature-libraries/fieldGenerator.d.ts.map +0 -1
- package/lib/feature-libraries/fieldGenerator.js +0 -12
- package/lib/feature-libraries/fieldGenerator.js.map +0 -1
- package/lib/feature-libraries/flex-map-tree/index.d.ts +0 -6
- package/lib/feature-libraries/flex-map-tree/index.d.ts.map +0 -1
- package/lib/feature-libraries/flex-map-tree/index.js +0 -6
- package/lib/feature-libraries/flex-map-tree/index.js.map +0 -1
- package/lib/feature-libraries/flex-map-tree/mapTreeNode.d.ts +0 -157
- package/lib/feature-libraries/flex-map-tree/mapTreeNode.d.ts.map +0 -1
- package/lib/feature-libraries/flex-map-tree/mapTreeNode.js.map +0 -1
- package/lib/feature-libraries/storedToViewSchema.d.ts +0 -17
- package/lib/feature-libraries/storedToViewSchema.d.ts.map +0 -1
- package/lib/feature-libraries/storedToViewSchema.js +0 -62
- package/lib/feature-libraries/storedToViewSchema.js.map +0 -1
- package/lib/feature-libraries/typed-schema/schemaCollection.d.ts +0 -58
- package/lib/feature-libraries/typed-schema/schemaCollection.d.ts.map +0 -1
- package/lib/feature-libraries/typed-schema/schemaCollection.js +0 -153
- package/lib/feature-libraries/typed-schema/schemaCollection.js.map +0 -1
- package/lib/feature-libraries/typed-schema/typeUtils.d.ts +0 -15
- package/lib/feature-libraries/typed-schema/typeUtils.d.ts.map +0 -1
- package/lib/feature-libraries/typed-schema/typeUtils.js +0 -10
- package/lib/feature-libraries/typed-schema/typeUtils.js.map +0 -1
- package/lib/feature-libraries/typed-schema/view.d.ts.map +0 -1
- package/lib/feature-libraries/typed-schema/view.js.map +0 -1
- package/lib/simple-tree/getSimpleFieldSchema.d.ts +0 -14
- package/lib/simple-tree/getSimpleFieldSchema.d.ts.map +0 -1
- package/lib/simple-tree/getSimpleFieldSchema.js +0 -25
- package/lib/simple-tree/getSimpleFieldSchema.js.map +0 -1
- package/lib/simple-tree/walkSchema.d.ts.map +0 -1
- package/lib/simple-tree/walkSchema.js +0 -43
- package/lib/simple-tree/walkSchema.js.map +0 -1
- package/src/feature-libraries/fieldGenerator.ts +0 -47
- package/src/feature-libraries/flex-map-tree/index.ts +0 -14
- package/src/feature-libraries/storedToViewSchema.ts +0 -100
- package/src/feature-libraries/typed-schema/schemaCollection.ts +0 -254
- package/src/feature-libraries/typed-schema/typeUtils.ts +0 -29
- package/src/simple-tree/getSimpleFieldSchema.ts +0 -36
package/lib/internalTypes.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"internalTypes.js","sourceRoot":"","sources":["../src/internalTypes.ts"],"names":[],"mappings":"AAAA;;;GAGG","sourcesContent":["/*!\n * Copyright (c) Microsoft Corporation and contributors. All rights reserved.\n * Licensed under the MIT License.\n */\n\n// Used by public types, but not part of the desired API surface.\n// Since these are used in the public API, changing them can still be a breaking change, but renaming or inlining them should not be.\n// Note that this should only contain types which are `@public` since this is reexported as a namespace and our rollup generator does not filter that.\n\nexport type { _InlineTrick, FlattenKeys } from \"./util/index.js\";\nexport type {\n\tApplyKind,\n\tNodeBuilderData,\n\tFieldHasDefault,\n\
|
|
1
|
+
{"version":3,"file":"internalTypes.js","sourceRoot":"","sources":["../src/internalTypes.ts"],"names":[],"mappings":"AAAA;;;GAGG","sourcesContent":["/*!\n * Copyright (c) Microsoft Corporation and contributors. All rights reserved.\n * Licensed under the MIT License.\n */\n\n// Used by public types, but not part of the desired API surface.\n// Since these are used in the public API, changing them can still be a breaking change, but renaming or inlining them should not be.\n// Note that this should only contain types which are `@public` since this is reexported as a namespace and our rollup generator does not filter that.\n\nexport type { _InlineTrick, FlattenKeys } from \"./util/index.js\";\nexport type {\n\tApplyKind,\n\tNodeBuilderData,\n\tFieldHasDefault,\n\tTreeArrayNodeBase,\n\tScopedSchemaName,\n\tDefaultProvider,\n\ttypeNameSymbol,\n\tInsertableObjectFromSchemaRecord,\n\tObjectFromSchemaRecord,\n\t// Recursive Schema APIs\n\tFieldHasDefaultUnsafe,\n\tObjectFromSchemaRecordUnsafe,\n\tTreeObjectNodeUnsafe,\n\tTreeFieldFromImplicitFieldUnsafe,\n\tTreeNodeFromImplicitAllowedTypesUnsafe,\n\tInsertableTreeNodeFromImplicitAllowedTypesUnsafe,\n\tTreeArrayNodeUnsafe,\n\tTreeMapNodeUnsafe,\n\tInsertableObjectFromSchemaRecordUnsafe,\n\tInsertableTreeFieldFromImplicitFieldUnsafe,\n\tInsertableTypedNodeUnsafe,\n\tNodeBuilderDataUnsafe,\n\tNodeFromSchemaUnsafe,\n\tReadonlyMapInlined,\n} from \"./simple-tree/index.js\";\nexport type { FlexList, FlexListToUnion, ExtractItemType } from \"./feature-libraries/index.js\";\n\nexport type { TreeApi } from \"./shared-tree/index.js\";\n"]}
|
package/lib/legacy.d.ts
CHANGED
|
@@ -19,6 +19,7 @@ export {
|
|
|
19
19
|
FieldKind,
|
|
20
20
|
FieldProps,
|
|
21
21
|
FieldSchema,
|
|
22
|
+
FieldSchemaMetadata,
|
|
22
23
|
FieldSchemaUnsafe,
|
|
23
24
|
ITree,
|
|
24
25
|
ITreeConfigurationOptions,
|
|
@@ -44,6 +45,7 @@ export {
|
|
|
44
45
|
NodeKind,
|
|
45
46
|
Off,
|
|
46
47
|
RestrictiveReadonlyRecord,
|
|
48
|
+
RestrictiveStringRecord,
|
|
47
49
|
Revertible,
|
|
48
50
|
RevertibleFactory,
|
|
49
51
|
RevertibleStatus,
|
|
@@ -65,6 +67,7 @@ export {
|
|
|
65
67
|
TreeNodeSchema,
|
|
66
68
|
TreeNodeSchemaClass,
|
|
67
69
|
TreeNodeSchemaCore,
|
|
70
|
+
TreeNodeSchemaNonClass,
|
|
68
71
|
TreeObjectNode,
|
|
69
72
|
TreeObjectNodeUnsafe,
|
|
70
73
|
TreeStatus,
|
|
@@ -74,6 +77,7 @@ export {
|
|
|
74
77
|
Unenforced,
|
|
75
78
|
Unhydrated,
|
|
76
79
|
ValidateRecursiveSchema,
|
|
80
|
+
ViewableTree,
|
|
77
81
|
WithType,
|
|
78
82
|
rollback,
|
|
79
83
|
typeSchemaSymbol,
|
package/lib/packageVersion.d.ts
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"packageVersion.d.ts","sourceRoot":"","sources":["../src/packageVersion.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,eAAO,MAAM,OAAO,yBAAyB,CAAC;AAC9C,eAAO,MAAM,UAAU,
|
|
1
|
+
{"version":3,"file":"packageVersion.d.ts","sourceRoot":"","sources":["../src/packageVersion.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,eAAO,MAAM,OAAO,yBAAyB,CAAC;AAC9C,eAAO,MAAM,UAAU,iBAAiB,CAAC"}
|
package/lib/packageVersion.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"packageVersion.js","sourceRoot":"","sources":["../src/packageVersion.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,MAAM,CAAC,MAAM,OAAO,GAAG,sBAAsB,CAAC;AAC9C,MAAM,CAAC,MAAM,UAAU,GAAG,
|
|
1
|
+
{"version":3,"file":"packageVersion.js","sourceRoot":"","sources":["../src/packageVersion.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,MAAM,CAAC,MAAM,OAAO,GAAG,sBAAsB,CAAC;AAC9C,MAAM,CAAC,MAAM,UAAU,GAAG,cAAc,CAAC","sourcesContent":["/*!\n * Copyright (c) Microsoft Corporation and contributors. All rights reserved.\n * Licensed under the MIT License.\n *\n * THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY\n */\n\nexport const pkgName = \"@fluidframework/tree\";\nexport const pkgVersion = \"2.4.0-297027\";\n"]}
|
package/lib/public.d.ts
CHANGED
|
@@ -19,6 +19,7 @@ export {
|
|
|
19
19
|
FieldKind,
|
|
20
20
|
FieldProps,
|
|
21
21
|
FieldSchema,
|
|
22
|
+
FieldSchemaMetadata,
|
|
22
23
|
FieldSchemaUnsafe,
|
|
23
24
|
ITree,
|
|
24
25
|
ITreeConfigurationOptions,
|
|
@@ -44,6 +45,7 @@ export {
|
|
|
44
45
|
NodeKind,
|
|
45
46
|
Off,
|
|
46
47
|
RestrictiveReadonlyRecord,
|
|
48
|
+
RestrictiveStringRecord,
|
|
47
49
|
Revertible,
|
|
48
50
|
RevertibleFactory,
|
|
49
51
|
RevertibleStatus,
|
|
@@ -65,6 +67,7 @@ export {
|
|
|
65
67
|
TreeNodeSchema,
|
|
66
68
|
TreeNodeSchemaClass,
|
|
67
69
|
TreeNodeSchemaCore,
|
|
70
|
+
TreeNodeSchemaNonClass,
|
|
68
71
|
TreeObjectNode,
|
|
69
72
|
TreeObjectNodeUnsafe,
|
|
70
73
|
TreeStatus,
|
|
@@ -74,6 +77,7 @@ export {
|
|
|
74
77
|
Unenforced,
|
|
75
78
|
Unhydrated,
|
|
76
79
|
ValidateRecursiveSchema,
|
|
80
|
+
ViewableTree,
|
|
77
81
|
WithType,
|
|
78
82
|
rollback,
|
|
79
83
|
typeSchemaSymbol
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
* Copyright (c) Microsoft Corporation and contributors. All rights reserved.
|
|
3
3
|
* Licensed under the MIT License.
|
|
4
4
|
*/
|
|
5
|
-
import { type Context, type FlexTreeField, type
|
|
5
|
+
import { type Context, type FlexTreeField, type NodeKeyManager, type FlexTreeHydratedContext, type FullSchemaPolicy } from "../feature-libraries/index.js";
|
|
6
6
|
import { disposeSymbol } from "../util/index.js";
|
|
7
7
|
import type { ITreeCheckout, ITreeCheckoutFork } from "./treeCheckout.js";
|
|
8
8
|
/**
|
|
@@ -16,7 +16,7 @@ export declare class CheckoutFlexTreeView<out TCheckout extends ITreeCheckout =
|
|
|
16
16
|
* This is a non-owning reference: disposing of this view does not impact the branch.
|
|
17
17
|
*/
|
|
18
18
|
readonly checkout: TCheckout;
|
|
19
|
-
readonly schema:
|
|
19
|
+
readonly schema: FullSchemaPolicy;
|
|
20
20
|
readonly nodeKeyManager: NodeKeyManager;
|
|
21
21
|
private readonly onDispose?;
|
|
22
22
|
/**
|
|
@@ -37,7 +37,7 @@ export declare class CheckoutFlexTreeView<out TCheckout extends ITreeCheckout =
|
|
|
37
37
|
* @remarks
|
|
38
38
|
* This is a non-owning reference: disposing of this view does not impact the branch.
|
|
39
39
|
*/
|
|
40
|
-
checkout: TCheckout, schema:
|
|
40
|
+
checkout: TCheckout, schema: FullSchemaPolicy, nodeKeyManager: NodeKeyManager, onDispose?: (() => void) | undefined);
|
|
41
41
|
[disposeSymbol](): void;
|
|
42
42
|
/**
|
|
43
43
|
* Spawn a new view which is based off of the current state of this view.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"checkoutFlexTreeView.d.ts","sourceRoot":"","sources":["../../src/shared-tree/checkoutFlexTreeView.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAGH,OAAO,EACN,KAAK,OAAO,EACZ,KAAK,aAAa,EAClB,KAAK,cAAc,
|
|
1
|
+
{"version":3,"file":"checkoutFlexTreeView.d.ts","sourceRoot":"","sources":["../../src/shared-tree/checkoutFlexTreeView.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAGH,OAAO,EACN,KAAK,OAAO,EACZ,KAAK,aAAa,EAClB,KAAK,cAAc,EAEnB,KAAK,uBAAuB,EAC5B,KAAK,gBAAgB,EACrB,MAAM,+BAA+B,CAAC;AAEvC,OAAO,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AAEjD,OAAO,KAAK,EAAE,aAAa,EAAE,iBAAiB,EAAE,MAAM,mBAAmB,CAAC;AAE1E;;GAEG;AACH,qBAAa,oBAAoB,CAAC,GAAG,CAAC,SAAS,SAAS,aAAa,GAAG,aAAa;IAenF;;;;;OAKG;aACa,QAAQ,EAAE,SAAS;aACnB,MAAM,EAAE,gBAAgB;aACxB,cAAc,EAAE,cAAc;IAC9C,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAC;IAvB5B;;;;;OAKG;IACH,SAAgB,OAAO,EAAE,OAAO,CAAC;IAEjC;;OAEG;IACH,SAAgB,QAAQ,EAAE,aAAa,CAAC;;IAGvC;;;;;OAKG;IACa,QAAQ,EAAE,SAAS,EACnB,MAAM,EAAE,gBAAgB,EACxB,cAAc,EAAE,cAAc,EAC7B,SAAS,CAAC,SAAQ,IAAI,aAAA;IAOjC,CAAC,aAAa,CAAC,IAAI,IAAI;IAS9B;;;OAGG;IACI,IAAI,IAAI,oBAAoB,CAAC,aAAa,GAAG,iBAAiB,CAAC;CAItE;AAQD;;;GAGG;AACH,wBAAgB,uBAAuB,CACtC,OAAO,EAAE,uBAAuB,GAC9B,oBAAoB,CAItB"}
|
|
@@ -38,7 +38,7 @@ export class CheckoutFlexTreeView {
|
|
|
38
38
|
* Any mutations of the new view will not apply to this view until the new view is merged back into this view via `merge()`.
|
|
39
39
|
*/
|
|
40
40
|
fork() {
|
|
41
|
-
const branch = this.checkout.
|
|
41
|
+
const branch = this.checkout.branch();
|
|
42
42
|
return new CheckoutFlexTreeView(branch, this.schema, this.nodeKeyManager);
|
|
43
43
|
}
|
|
44
44
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"checkoutFlexTreeView.js","sourceRoot":"","sources":["../../src/shared-tree/checkoutFlexTreeView.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,MAAM,EAAE,MAAM,qCAAqC,CAAC;AAC7D,OAAO,
|
|
1
|
+
{"version":3,"file":"checkoutFlexTreeView.js","sourceRoot":"","sources":["../../src/shared-tree/checkoutFlexTreeView.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,MAAM,EAAE,MAAM,qCAAqC,CAAC;AAC7D,OAAO,EAIN,cAAc,GAGd,MAAM,+BAA+B,CAAC;AACvC,OAAO,EAAE,kBAAkB,EAAE,MAAM,yBAAyB,CAAC;AAC7D,OAAO,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AAIjD;;GAEG;AACH,MAAM,OAAO,oBAAoB;IAchC;IACC;;;;;OAKG;IACa,QAAmB,EACnB,MAAwB,EACxB,cAA8B,EAC7B,SAAsB;QAHvB,aAAQ,GAAR,QAAQ,CAAW;QACnB,WAAM,GAAN,MAAM,CAAkB;QACxB,mBAAc,GAAd,cAAc,CAAgB;QAC7B,cAAS,GAAT,SAAS,CAAa;QAEvC,IAAI,CAAC,OAAO,GAAG,cAAc,CAAC,MAAM,EAAE,IAAI,CAAC,QAAQ,EAAE,cAAc,CAAC,CAAC;QACrE,oBAAoB,CAAC,GAAG,CAAC,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;QAC7C,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC;IACnC,CAAC;IAEM,CAAC,aAAa,CAAC;QACrB,KAAK,MAAM,UAAU,IAAI,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;YACvD,kBAAkB,CAAC,UAAU,CAAC,CAAC;QAChC,CAAC;QAED,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,EAAE,CAAC;QAC9B,IAAI,CAAC,SAAS,EAAE,EAAE,CAAC;IACpB,CAAC;IAED;;;OAGG;IACI,IAAI;QACV,MAAM,MAAM,GAAG,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE,CAAC;QACtC,OAAO,IAAI,oBAAoB,CAAC,MAAM,EAAE,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,cAAc,CAAC,CAAC;IAC3E,CAAC;CACD;AAED;;;GAGG;AACH,MAAM,oBAAoB,GAAG,IAAI,OAAO,EAAiD,CAAC;AAE1F;;;GAGG;AACH,MAAM,UAAU,uBAAuB,CACtC,OAAgC;IAEhC,MAAM,IAAI,GAAG,oBAAoB,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;IAC/C,MAAM,CAAC,IAAI,KAAK,SAAS,EAAE,KAAK,CAAC,gDAAgD,CAAC,CAAC;IACnF,OAAO,IAAI,CAAC;AACb,CAAC","sourcesContent":["/*!\n * Copyright (c) Microsoft Corporation and contributors. All rights reserved.\n * Licensed under the MIT License.\n */\n\nimport { assert } from \"@fluidframework/core-utils/internal\";\nimport {\n\ttype Context,\n\ttype FlexTreeField,\n\ttype NodeKeyManager,\n\tgetTreeContext,\n\ttype FlexTreeHydratedContext,\n\ttype FullSchemaPolicy,\n} from \"../feature-libraries/index.js\";\nimport { tryDisposeTreeNode } from \"../simple-tree/index.js\";\nimport { disposeSymbol } from \"../util/index.js\";\n\nimport type { ITreeCheckout, ITreeCheckoutFork } from \"./treeCheckout.js\";\n\n/**\n * An editable view of a (version control style) branch of a shared tree.\n */\nexport class CheckoutFlexTreeView<out TCheckout extends ITreeCheckout = ITreeCheckout> {\n\t/**\n\t * Context for controlling the FlexTree nodes produced from {@link FlexTreeView.flexTree}.\n\t *\n\t * @remarks\n\t * This is an owning reference: disposing of this view disposes its context.\n\t */\n\tpublic readonly context: Context;\n\n\t/**\n\t * Get a typed view of the tree content using the flex-tree API.\n\t */\n\tpublic readonly flexTree: FlexTreeField;\n\n\tpublic constructor(\n\t\t/**\n\t\t * Access non-view schema specific aspects of this branch.\n\t\t *\n\t\t * @remarks\n\t\t * This is a non-owning reference: disposing of this view does not impact the branch.\n\t\t */\n\t\tpublic readonly checkout: TCheckout,\n\t\tpublic readonly schema: FullSchemaPolicy,\n\t\tpublic readonly nodeKeyManager: NodeKeyManager,\n\t\tprivate readonly onDispose?: () => void,\n\t) {\n\t\tthis.context = getTreeContext(schema, this.checkout, nodeKeyManager);\n\t\tcontextToTreeViewMap.set(this.context, this);\n\t\tthis.flexTree = this.context.root;\n\t}\n\n\tpublic [disposeSymbol](): void {\n\t\tfor (const anchorNode of this.checkout.forest.anchors) {\n\t\t\ttryDisposeTreeNode(anchorNode);\n\t\t}\n\n\t\tthis.context[disposeSymbol]();\n\t\tthis.onDispose?.();\n\t}\n\n\t/**\n\t * Spawn a new view which is based off of the current state of this view.\n\t * Any mutations of the new view will not apply to this view until the new view is merged back into this view via `merge()`.\n\t */\n\tpublic fork(): CheckoutFlexTreeView<ITreeCheckout & ITreeCheckoutFork> {\n\t\tconst branch = this.checkout.branch();\n\t\treturn new CheckoutFlexTreeView(branch, this.schema, this.nodeKeyManager);\n\t}\n}\n\n/**\n * Maps the context of every {@link CheckoutFlexTreeView} to the view.\n * In practice, this allows the view or checkout to be obtained from a flex node by first getting the context from the flex node and then using this map.\n */\nconst contextToTreeViewMap = new WeakMap<FlexTreeHydratedContext, CheckoutFlexTreeView>();\n\n/**\n * Retrieve the {@link CheckoutFlexTreeView | view} for the given {@link FlexTreeHydratedContext | context}.\n * @remarks Every {@link CheckoutFlexTreeView} is associated with its context upon creation.\n */\nexport function getCheckoutFlexTreeView(\n\tcontext: FlexTreeHydratedContext,\n): CheckoutFlexTreeView {\n\tconst view = contextToTreeViewMap.get(context);\n\tassert(view !== undefined, 0xa41 /* Expected view to be registered for context */);\n\treturn view;\n}\n"]}
|
|
@@ -2,9 +2,9 @@
|
|
|
2
2
|
* Copyright (c) Microsoft Corporation and contributors. All rights reserved.
|
|
3
3
|
* Licensed under the MIT License.
|
|
4
4
|
*/
|
|
5
|
-
export { type ISharedTree, SharedTreeFactory, type SharedTreeOptions, SharedTree, ForestType, type SharedTreeContentSnapshot, type SharedTreeFormatOptions, SharedTreeFormatVersion, } from "./sharedTree.js";
|
|
6
|
-
export { createTreeCheckout, TreeCheckout, type ITreeCheckout, runSynchronous, type CheckoutEvents, type ITransaction, type ITreeCheckoutFork, } from "./treeCheckout.js";
|
|
7
|
-
export { type
|
|
5
|
+
export { type ISharedTree, SharedTreeFactory, type SharedTreeOptions, SharedTree, getBranch, ForestType, type SharedTreeContentSnapshot, type SharedTreeFormatOptions, SharedTreeFormatVersion, } from "./sharedTree.js";
|
|
6
|
+
export { createTreeCheckout, TreeCheckout, type ITreeCheckout, runSynchronous, type CheckoutEvents, type ITransaction, type ITreeCheckoutFork, type TreeBranch, type TreeBranchFork, } from "./treeCheckout.js";
|
|
7
|
+
export { type TreeStoredContent } from "./schematizeTree.js";
|
|
8
8
|
export { CheckoutFlexTreeView } from "./checkoutFlexTreeView.js";
|
|
9
9
|
export type { ISharedTreeEditor, ISchemaEditor } from "./sharedTreeEditBuilder.js";
|
|
10
10
|
export { treeApi as Tree, type TreeApi, type TransactionConstraint, type NodeInDocumentConstraint, type RunTransaction, rollback, } from "./treeApi.js";
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/shared-tree/index.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EACN,KAAK,WAAW,EAChB,iBAAiB,EACjB,KAAK,iBAAiB,EACtB,UAAU,EACV,UAAU,EACV,KAAK,yBAAyB,EAC9B,KAAK,uBAAuB,EAC5B,uBAAuB,GACvB,MAAM,iBAAiB,CAAC;AAEzB,OAAO,EACN,kBAAkB,EAClB,YAAY,EACZ,KAAK,aAAa,EAClB,cAAc,EACd,KAAK,cAAc,EACnB,KAAK,YAAY,EACjB,KAAK,iBAAiB,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/shared-tree/index.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EACN,KAAK,WAAW,EAChB,iBAAiB,EACjB,KAAK,iBAAiB,EACtB,UAAU,EACV,SAAS,EACT,UAAU,EACV,KAAK,yBAAyB,EAC9B,KAAK,uBAAuB,EAC5B,uBAAuB,GACvB,MAAM,iBAAiB,CAAC;AAEzB,OAAO,EACN,kBAAkB,EAClB,YAAY,EACZ,KAAK,aAAa,EAClB,cAAc,EACd,KAAK,cAAc,EACnB,KAAK,YAAY,EACjB,KAAK,iBAAiB,EACtB,KAAK,UAAU,EACf,KAAK,cAAc,GACnB,MAAM,mBAAmB,CAAC;AAE3B,OAAO,EAAE,KAAK,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AAE7D,OAAO,EAAE,oBAAoB,EAAE,MAAM,2BAA2B,CAAC;AAEjE,YAAY,EAAE,iBAAiB,EAAE,aAAa,EAAE,MAAM,4BAA4B,CAAC;AAEnF,OAAO,EACN,OAAO,IAAI,IAAI,EACf,KAAK,OAAO,EACZ,KAAK,qBAAqB,EAC1B,KAAK,wBAAwB,EAC7B,KAAK,cAAc,EACnB,QAAQ,GACR,MAAM,cAAc,CAAC"}
|
package/lib/shared-tree/index.js
CHANGED
|
@@ -2,9 +2,8 @@
|
|
|
2
2
|
* Copyright (c) Microsoft Corporation and contributors. All rights reserved.
|
|
3
3
|
* Licensed under the MIT License.
|
|
4
4
|
*/
|
|
5
|
-
export { SharedTreeFactory, SharedTree, ForestType, SharedTreeFormatVersion, } from "./sharedTree.js";
|
|
5
|
+
export { SharedTreeFactory, SharedTree, getBranch, ForestType, SharedTreeFormatVersion, } from "./sharedTree.js";
|
|
6
6
|
export { createTreeCheckout, TreeCheckout, runSynchronous, } from "./treeCheckout.js";
|
|
7
|
-
export { buildTreeConfiguration, } from "./schematizeTree.js";
|
|
8
7
|
export { CheckoutFlexTreeView } from "./checkoutFlexTreeView.js";
|
|
9
8
|
export { treeApi as Tree, rollback, } from "./treeApi.js";
|
|
10
9
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/shared-tree/index.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAEN,iBAAiB,EAEjB,UAAU,EACV,UAAU,EAGV,uBAAuB,GACvB,MAAM,iBAAiB,CAAC;AAEzB,OAAO,EACN,kBAAkB,EAClB,YAAY,EAEZ,cAAc,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/shared-tree/index.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAEN,iBAAiB,EAEjB,UAAU,EACV,SAAS,EACT,UAAU,EAGV,uBAAuB,GACvB,MAAM,iBAAiB,CAAC;AAEzB,OAAO,EACN,kBAAkB,EAClB,YAAY,EAEZ,cAAc,GAMd,MAAM,mBAAmB,CAAC;AAI3B,OAAO,EAAE,oBAAoB,EAAE,MAAM,2BAA2B,CAAC;AAIjE,OAAO,EACN,OAAO,IAAI,IAAI,EAKf,QAAQ,GACR,MAAM,cAAc,CAAC","sourcesContent":["/*!\n * Copyright (c) Microsoft Corporation and contributors. All rights reserved.\n * Licensed under the MIT License.\n */\n\nexport {\n\ttype ISharedTree,\n\tSharedTreeFactory,\n\ttype SharedTreeOptions,\n\tSharedTree,\n\tgetBranch,\n\tForestType,\n\ttype SharedTreeContentSnapshot,\n\ttype SharedTreeFormatOptions,\n\tSharedTreeFormatVersion,\n} from \"./sharedTree.js\";\n\nexport {\n\tcreateTreeCheckout,\n\tTreeCheckout,\n\ttype ITreeCheckout,\n\trunSynchronous,\n\ttype CheckoutEvents,\n\ttype ITransaction,\n\ttype ITreeCheckoutFork,\n\ttype TreeBranch,\n\ttype TreeBranchFork,\n} from \"./treeCheckout.js\";\n\nexport { type TreeStoredContent } from \"./schematizeTree.js\";\n\nexport { CheckoutFlexTreeView } from \"./checkoutFlexTreeView.js\";\n\nexport type { ISharedTreeEditor, ISchemaEditor } from \"./sharedTreeEditBuilder.js\";\n\nexport {\n\ttreeApi as Tree,\n\ttype TreeApi,\n\ttype TransactionConstraint,\n\ttype NodeInDocumentConstraint,\n\ttype RunTransaction,\n\trollback,\n} from \"./treeApi.js\";\n"]}
|
|
@@ -3,8 +3,8 @@
|
|
|
3
3
|
* Licensed under the MIT License.
|
|
4
4
|
*/
|
|
5
5
|
import { AllowedUpdateType, type ITreeCursorSynchronous, type TreeStoredSchema } from "../core/index.js";
|
|
6
|
-
import { type FlexFieldSchema, type FlexTreeSchema, type ViewSchema } from "../feature-libraries/index.js";
|
|
7
6
|
import type { ITreeCheckout } from "./treeCheckout.js";
|
|
7
|
+
import type { ViewSchema } from "../simple-tree/index.js";
|
|
8
8
|
/**
|
|
9
9
|
* Modify `storedSchema` and invoke `setInitialTree` when it's time to set the tree content.
|
|
10
10
|
*
|
|
@@ -63,25 +63,6 @@ export declare function initialize(checkout: ITreeCheckout, treeContent: TreeSto
|
|
|
63
63
|
* @returns true iff checkout now is compatible with `viewSchema`.
|
|
64
64
|
*/
|
|
65
65
|
export declare function ensureSchema(viewSchema: ViewSchema, allowedSchemaModifications: AllowedUpdateType, checkout: ITreeCheckout, treeContent: TreeStoredContent | undefined): boolean;
|
|
66
|
-
/**
|
|
67
|
-
* View Schema for a `SharedTree`.
|
|
68
|
-
*/
|
|
69
|
-
export interface SchemaConfiguration<TRoot extends FlexFieldSchema = FlexFieldSchema> {
|
|
70
|
-
/**
|
|
71
|
-
* The schema which the application wants to view the tree with.
|
|
72
|
-
*/
|
|
73
|
-
readonly schema: FlexTreeSchema<TRoot>;
|
|
74
|
-
}
|
|
75
|
-
/**
|
|
76
|
-
* Content that can populate a `SharedTree`.
|
|
77
|
-
*/
|
|
78
|
-
export interface TreeContent<TRoot extends FlexFieldSchema = FlexFieldSchema> extends SchemaConfiguration<TRoot> {
|
|
79
|
-
/**
|
|
80
|
-
* Default tree content to initialize the tree with iff the tree is uninitialized
|
|
81
|
-
* (meaning it does not even have any schema set at all).
|
|
82
|
-
*/
|
|
83
|
-
readonly initialTree: readonly ITreeCursorSynchronous[] | ITreeCursorSynchronous | undefined;
|
|
84
|
-
}
|
|
85
66
|
/**
|
|
86
67
|
* Content that can populate a `SharedTree`.
|
|
87
68
|
*/
|
|
@@ -93,24 +74,4 @@ export interface TreeStoredContent {
|
|
|
93
74
|
*/
|
|
94
75
|
readonly initialTree: readonly ITreeCursorSynchronous[] | ITreeCursorSynchronous | undefined;
|
|
95
76
|
}
|
|
96
|
-
/**
|
|
97
|
-
* Options used to schematize a `SharedTree`.
|
|
98
|
-
*/
|
|
99
|
-
export interface SchematizeConfiguration<TRoot extends FlexFieldSchema = FlexFieldSchema> extends SchemaConfiguration<TRoot> {
|
|
100
|
-
/**
|
|
101
|
-
* Controls if and how schema from existing documents can be updated to accommodate the view schema.
|
|
102
|
-
*/
|
|
103
|
-
readonly allowedSchemaModifications: AllowedUpdateType;
|
|
104
|
-
}
|
|
105
|
-
/**
|
|
106
|
-
* Options used to initialize (if needed) and schematize a `SharedTree`.
|
|
107
|
-
*/
|
|
108
|
-
export interface InitializeAndSchematizeConfiguration<TRoot extends FlexFieldSchema = FlexFieldSchema> extends TreeContent<TRoot>, SchematizeConfiguration<TRoot> {
|
|
109
|
-
}
|
|
110
|
-
/**
|
|
111
|
-
* Options used to initialize (if needed) and schematize a `SharedTree`.
|
|
112
|
-
* @remarks
|
|
113
|
-
* Using this builder improves type safety and error quality over just constructing the configuration as a object.
|
|
114
|
-
*/
|
|
115
|
-
export declare function buildTreeConfiguration<T extends FlexFieldSchema>(config: InitializeAndSchematizeConfiguration<T>): InitializeAndSchematizeConfiguration<T>;
|
|
116
77
|
//# sourceMappingURL=schematizeTree.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"schematizeTree.d.ts","sourceRoot":"","sources":["../../src/shared-tree/schematizeTree.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAIH,OAAO,EACN,iBAAiB,EAGjB,KAAK,sBAAsB,EAC3B,KAAK,gBAAgB,EAGrB,MAAM,kBAAkB,CAAC;
|
|
1
|
+
{"version":3,"file":"schematizeTree.d.ts","sourceRoot":"","sources":["../../src/shared-tree/schematizeTree.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAIH,OAAO,EACN,iBAAiB,EAGjB,KAAK,sBAAsB,EAC3B,KAAK,gBAAgB,EAGrB,MAAM,kBAAkB,CAAC;AAU1B,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;AACvD,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,yBAAyB,CAAC;AAE1D;;;;;;;;;;;GAWG;AACH,wBAAgB,iBAAiB,CAChC,gBAAgB,EAAE;IACjB,YAAY,EAAE,aAAa,CAAC,cAAc,CAAC,CAAC;IAC5C,YAAY,EAAE,aAAa,CAAC,cAAc,CAAC,CAAC;CAC5C,EACD,SAAS,EAAE,gBAAgB,EAC3B,cAAc,EAAE,MAAM,IAAI,GACxB,IAAI,CA+CN;AAED,oBAAY,UAAU;IACrB;;OAEG;IACH,IAAI,IAAA;IACJ;;OAEG;IACH,UAAU,IAAA;IACV;;OAEG;IACH,gBAAgB,IAAA;IAChB;;OAEG;IACH,YAAY,IAAA;CACZ;AAED,wBAAgB,cAAc,CAC7B,UAAU,EAAE,UAAU,EACtB,0BAA0B,EAAE,iBAAiB,EAC7C,QAAQ,EAAE,aAAa,GACrB,UAAU,CA4BZ;AAED,wBAAgB,aAAa,CAAC,QAAQ,EAAE,aAAa,GAAG,OAAO,CAG9D;AAoBD;;;;;;;GAOG;AACH,wBAAgB,UAAU,CAAC,QAAQ,EAAE,aAAa,EAAE,WAAW,EAAE,iBAAiB,GAAG,IAAI,CA+BxF;AAED;;;;;;;;;;;GAWG;AACH,wBAAgB,YAAY,CAC3B,UAAU,EAAE,UAAU,EACtB,0BAA0B,EAAE,iBAAiB,EAC7C,QAAQ,EAAE,aAAa,EACvB,WAAW,EAAE,iBAAiB,GAAG,SAAS,GACxC,OAAO,CAiCT;AAED;;GAEG;AACH,MAAM,WAAW,iBAAiB;IACjC,QAAQ,CAAC,MAAM,EAAE,gBAAgB,CAAC;IAElC;;;OAGG;IACH,QAAQ,CAAC,WAAW,EAAE,SAAS,sBAAsB,EAAE,GAAG,sBAAsB,GAAG,SAAS,CAAC;CAC7F"}
|
|
@@ -177,7 +177,7 @@ export function ensureSchema(viewSchema, allowedSchemaModifications, checkout, t
|
|
|
177
177
|
return false;
|
|
178
178
|
}
|
|
179
179
|
case UpdateType.SchemaCompatible: {
|
|
180
|
-
checkout.updateSchema(viewSchema.
|
|
180
|
+
checkout.updateSchema(viewSchema.schema);
|
|
181
181
|
return true;
|
|
182
182
|
}
|
|
183
183
|
case UpdateType.Initialize: {
|
|
@@ -195,12 +195,4 @@ export function ensureSchema(viewSchema, allowedSchemaModifications, checkout, t
|
|
|
195
195
|
}
|
|
196
196
|
}
|
|
197
197
|
}
|
|
198
|
-
/**
|
|
199
|
-
* Options used to initialize (if needed) and schematize a `SharedTree`.
|
|
200
|
-
* @remarks
|
|
201
|
-
* Using this builder improves type safety and error quality over just constructing the configuration as a object.
|
|
202
|
-
*/
|
|
203
|
-
export function buildTreeConfiguration(config) {
|
|
204
|
-
return config;
|
|
205
|
-
}
|
|
206
198
|
//# sourceMappingURL=schematizeTree.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"schematizeTree.js","sourceRoot":"","sources":["../../src/shared-tree/schematizeTree.ts"],"names":[],"mappings":"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","sourcesContent":["/*!\n * Copyright (c) Microsoft Corporation and contributors. All rights reserved.\n * Licensed under the MIT License.\n */\n\nimport { assert, unreachableCase } from \"@fluidframework/core-utils/internal\";\n\nimport {\n\tAllowedUpdateType,\n\tCompatibility,\n\tCursorLocationType,\n\ttype ITreeCursorSynchronous,\n\ttype TreeStoredSchema,\n\trootFieldKey,\n\tschemaDataIsEmpty,\n} from \"../core/index.js\";\nimport {\n\tFieldKinds,\n\ttype FlexFieldSchema,\n\ttype FlexTreeSchema,\n\ttype ViewSchema,\n\tallowsRepoSuperset,\n\tcursorForMapTreeField,\n\tdefaultSchemaPolicy,\n\tmapTreeFromCursor,\n} from \"../feature-libraries/index.js\";\nimport { fail, isReadonlyArray } from \"../util/index.js\";\n\nimport type { ITreeCheckout } from \"./treeCheckout.js\";\n\n/**\n * Modify `storedSchema` and invoke `setInitialTree` when it's time to set the tree content.\n *\n * Requires `storedSchema` to be in its default/empty state.\n *\n * This is done in such a way that if the content (implicitly assumed to start empty)\n * is never out of schema.\n * This means that if the root field of the new schema requires content (like a value field),\n * a temporary intermediate schema is used so the initial empty state is not out of schema.\n *\n * Since this makes multiple changes, callers may want to wrap it in a transaction.\n */\nexport function initializeContent(\n\tschemaRepository: {\n\t\tstoredSchema: ITreeCheckout[\"storedSchema\"];\n\t\tupdateSchema: ITreeCheckout[\"updateSchema\"];\n\t},\n\tnewSchema: TreeStoredSchema,\n\tsetInitialTree: () => void,\n): void {\n\tassert(\n\t\tschemaDataIsEmpty(schemaRepository.storedSchema),\n\t\t0x743 /* cannot initialize after a schema is set */,\n\t);\n\n\tconst rootSchema = newSchema.rootFieldSchema;\n\tconst rootKind = rootSchema.kind;\n\n\t// To keep the data in schema during the update, first define a schema that tolerates the current (empty) tree as well as the final (initial) tree.\n\tlet incrementalSchemaUpdate: TreeStoredSchema;\n\tif (\n\t\trootKind === FieldKinds.sequence.identifier ||\n\t\trootKind === FieldKinds.optional.identifier\n\t) {\n\t\t// These kinds are known to tolerate empty, so use the schema as is:\n\t\tincrementalSchemaUpdate = newSchema;\n\t} else {\n\t\tassert(rootKind === FieldKinds.required.identifier, 0x5c8 /* Unexpected kind */);\n\t\t// Replace value kind with optional kind in root field schema:\n\t\tincrementalSchemaUpdate = {\n\t\t\tnodeSchema: newSchema.nodeSchema,\n\t\t\trootFieldSchema: {\n\t\t\t\tkind: FieldKinds.optional.identifier,\n\t\t\t\ttypes: rootSchema.types,\n\t\t\t},\n\t\t};\n\t}\n\n\t// TODO: fix issues with schema comparison and enable this.\n\t// assert(\n\t// \tallowsRepoSuperset(defaultSchemaPolicy, tree.storedSchema, incrementalSchemaUpdate),\n\t// \t\"Incremental Schema update should support the existing empty tree\",\n\t// );\n\tassert(\n\t\tallowsRepoSuperset(defaultSchemaPolicy, newSchema, incrementalSchemaUpdate),\n\t\t0x5c9 /* Incremental Schema during update should be a allow a superset of the final schema */,\n\t);\n\t// Update to intermediate schema\n\tschemaRepository.updateSchema(incrementalSchemaUpdate);\n\t// Insert initial tree\n\tsetInitialTree();\n\n\t// If intermediate schema is not final desired schema, update to the final schema:\n\tif (incrementalSchemaUpdate !== newSchema) {\n\t\tschemaRepository.updateSchema(newSchema);\n\t}\n}\n\nexport enum UpdateType {\n\t/**\n\t * Already compatible, no update needed.\n\t */\n\tNone,\n\t/**\n\t * Empty: needs initializing.\n\t */\n\tInitialize,\n\t/**\n\t * Schema can be upgraded leaving tree as is.\n\t */\n\tSchemaCompatible,\n\t/**\n\t * No update currently supported.\n\t */\n\tIncompatible,\n}\n\nexport function evaluateUpdate(\n\tviewSchema: ViewSchema,\n\tallowedSchemaModifications: AllowedUpdateType,\n\tcheckout: ITreeCheckout,\n): UpdateType {\n\tconst compatibility = viewSchema.checkCompatibility(checkout.storedSchema);\n\n\tif (\n\t\tcompatibility.read === Compatibility.Compatible &&\n\t\tcompatibility.write === Compatibility.Compatible\n\t) {\n\t\t// Compatible as is\n\t\treturn UpdateType.None;\n\t}\n\n\t// eslint-disable-next-line no-bitwise\n\tif (allowedSchemaModifications & AllowedUpdateType.Initialize && canInitialize(checkout)) {\n\t\treturn UpdateType.Initialize;\n\t}\n\n\tif (compatibility.read !== Compatibility.Compatible) {\n\t\t// Existing stored schema permits trees which are incompatible with the view schema, so schema can not be updated\n\t\treturn UpdateType.Incompatible;\n\t}\n\n\tassert(compatibility.write === Compatibility.Incompatible, 0x8bd /* unexpected case */);\n\tassert(compatibility.read === Compatibility.Compatible, 0x8be /* unexpected case */);\n\n\t// eslint-disable-next-line no-bitwise\n\treturn allowedSchemaModifications & AllowedUpdateType.SchemaCompatible\n\t\t? UpdateType.SchemaCompatible\n\t\t: UpdateType.Incompatible;\n}\n\nexport function canInitialize(checkout: ITreeCheckout): boolean {\n\t// Check for empty.\n\treturn checkout.forest.isEmpty && schemaDataIsEmpty(checkout.storedSchema);\n}\n\nfunction normalizeNewFieldContent(\n\tcontent: readonly ITreeCursorSynchronous[] | ITreeCursorSynchronous | undefined,\n): ITreeCursorSynchronous {\n\tif (content === undefined) {\n\t\treturn cursorForMapTreeField([]);\n\t}\n\n\tif (isReadonlyArray(content)) {\n\t\treturn cursorForMapTreeField(content.map((c) => mapTreeFromCursor(c)));\n\t}\n\n\tif (content.mode === CursorLocationType.Fields) {\n\t\treturn content;\n\t}\n\n\treturn cursorForMapTreeField([mapTreeFromCursor(content)]);\n}\n\n/**\n * Initialize a checkout with a schema and tree content.\n * This function should only be called when the tree is uninitialized (no schema or content).\n * @remarks\n *\n * If the proposed schema (from `treeContent`) is not compatible with the emptry tree, this function handles using an intermediate schema\n * which supports the empty tree as well as the final tree content.\n */\nexport function initialize(checkout: ITreeCheckout, treeContent: TreeStoredContent): void {\n\tcheckout.transaction.start();\n\ttry {\n\t\tinitializeContent(checkout, treeContent.schema, () => {\n\t\t\tconst field = { field: rootFieldKey, parent: undefined };\n\t\t\tconst content = normalizeNewFieldContent(treeContent.initialTree);\n\n\t\t\tswitch (checkout.storedSchema.rootFieldSchema.kind) {\n\t\t\t\tcase FieldKinds.optional.identifier: {\n\t\t\t\t\tconst fieldEditor = checkout.editor.optionalField(field);\n\t\t\t\t\tassert(\n\t\t\t\t\t\tcontent.getFieldLength() <= 1,\n\t\t\t\t\t\t0x7f4 /* optional field content should normalize at most one item */,\n\t\t\t\t\t);\n\t\t\t\t\tfieldEditor.set(content.getFieldLength() === 0 ? undefined : content, true);\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t\tcase FieldKinds.sequence.identifier: {\n\t\t\t\t\tconst fieldEditor = checkout.editor.sequenceField(field);\n\t\t\t\t\t// TODO: should do an idempotent edit here.\n\t\t\t\t\tfieldEditor.insert(0, content);\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t\tdefault: {\n\t\t\t\t\tfail(\"unexpected root field kind during initialize\");\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\t} finally {\n\t\tcheckout.transaction.commit();\n\t}\n}\n\n/**\n * Ensure a {@link ITreeCheckout} can be used with a given {@link ViewSchema}.\n *\n * @remarks\n * It is up to the caller to ensure that compatibility is reevaluated if the checkout's stored schema is edited in the future.\n *\n * @param viewSchema - View schema that `checkout` should be made compatible with.\n * @param allowedSchemaModifications - Flags enum describing the ways this is allowed to modify `checkout`.\n * @param checkout - To be modified as needed to be compatible with `viewSchema`.\n * @param treeContent - Content to be used to initialize `checkout`'s the tree if needed and allowed.\n * @returns true iff checkout now is compatible with `viewSchema`.\n */\nexport function ensureSchema(\n\tviewSchema: ViewSchema,\n\tallowedSchemaModifications: AllowedUpdateType,\n\tcheckout: ITreeCheckout,\n\ttreeContent: TreeStoredContent | undefined,\n): boolean {\n\tlet possibleModifications = allowedSchemaModifications;\n\tif (treeContent === undefined) {\n\t\t// Clear bit for Initialize if initial tree is not provided.\n\t\t// eslint-disable-next-line no-bitwise\n\t\tpossibleModifications &= ~AllowedUpdateType.Initialize;\n\t}\n\tconst updatedNeeded = evaluateUpdate(viewSchema, possibleModifications, checkout);\n\tswitch (updatedNeeded) {\n\t\tcase UpdateType.None: {\n\t\t\treturn true;\n\t\t}\n\t\tcase UpdateType.Incompatible: {\n\t\t\treturn false;\n\t\t}\n\t\tcase UpdateType.SchemaCompatible: {\n\t\t\tcheckout.updateSchema(viewSchema.storedSchema);\n\t\t\treturn true;\n\t\t}\n\t\tcase UpdateType.Initialize: {\n\t\t\tif (treeContent === undefined) {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t\t// TODO:\n\t\t\t// When this becomes a more proper out of schema adapter, editing should be made lazy.\n\t\t\t// This will improve support for readonly documents, cross version collaboration and attribution.\n\t\t\tinitialize(checkout, treeContent);\n\t\t\treturn true;\n\t\t}\n\t\tdefault: {\n\t\t\tunreachableCase(updatedNeeded);\n\t\t}\n\t}\n}\n\n/**\n * View Schema for a `SharedTree`.\n */\nexport interface SchemaConfiguration<TRoot extends FlexFieldSchema = FlexFieldSchema> {\n\t/**\n\t * The schema which the application wants to view the tree with.\n\t */\n\treadonly schema: FlexTreeSchema<TRoot>;\n}\n\n/**\n * Content that can populate a `SharedTree`.\n */\nexport interface TreeContent<TRoot extends FlexFieldSchema = FlexFieldSchema>\n\textends SchemaConfiguration<TRoot> {\n\t/**\n\t * Default tree content to initialize the tree with iff the tree is uninitialized\n\t * (meaning it does not even have any schema set at all).\n\t */\n\treadonly initialTree: readonly ITreeCursorSynchronous[] | ITreeCursorSynchronous | undefined;\n}\n\n/**\n * Content that can populate a `SharedTree`.\n */\nexport interface TreeStoredContent {\n\treadonly schema: TreeStoredSchema;\n\n\t/**\n\t * Default tree content to initialize the tree with iff the tree is uninitialized\n\t * (meaning it does not even have any schema set at all).\n\t */\n\treadonly initialTree: readonly ITreeCursorSynchronous[] | ITreeCursorSynchronous | undefined;\n}\n\n/**\n * Options used to schematize a `SharedTree`.\n */\nexport interface SchematizeConfiguration<TRoot extends FlexFieldSchema = FlexFieldSchema>\n\textends SchemaConfiguration<TRoot> {\n\t/**\n\t * Controls if and how schema from existing documents can be updated to accommodate the view schema.\n\t */\n\treadonly allowedSchemaModifications: AllowedUpdateType;\n}\n\n/**\n * Options used to initialize (if needed) and schematize a `SharedTree`.\n */\nexport interface InitializeAndSchematizeConfiguration<\n\tTRoot extends FlexFieldSchema = FlexFieldSchema,\n> extends TreeContent<TRoot>,\n\t\tSchematizeConfiguration<TRoot> {}\n\n/**\n * Options used to initialize (if needed) and schematize a `SharedTree`.\n * @remarks\n * Using this builder improves type safety and error quality over just constructing the configuration as a object.\n */\nexport function buildTreeConfiguration<T extends FlexFieldSchema>(\n\tconfig: InitializeAndSchematizeConfiguration<T>,\n): InitializeAndSchematizeConfiguration<T> {\n\treturn config;\n}\n"]}
|
|
1
|
+
{"version":3,"file":"schematizeTree.js","sourceRoot":"","sources":["../../src/shared-tree/schematizeTree.ts"],"names":[],"mappings":"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","sourcesContent":["/*!\n * Copyright (c) Microsoft Corporation and contributors. All rights reserved.\n * Licensed under the MIT License.\n */\n\nimport { assert, unreachableCase } from \"@fluidframework/core-utils/internal\";\n\nimport {\n\tAllowedUpdateType,\n\tCompatibility,\n\tCursorLocationType,\n\ttype ITreeCursorSynchronous,\n\ttype TreeStoredSchema,\n\trootFieldKey,\n\tschemaDataIsEmpty,\n} from \"../core/index.js\";\nimport {\n\tFieldKinds,\n\tallowsRepoSuperset,\n\tcursorForMapTreeField,\n\tdefaultSchemaPolicy,\n\tmapTreeFromCursor,\n} from \"../feature-libraries/index.js\";\nimport { fail, isReadonlyArray } from \"../util/index.js\";\n\nimport type { ITreeCheckout } from \"./treeCheckout.js\";\nimport type { ViewSchema } from \"../simple-tree/index.js\";\n\n/**\n * Modify `storedSchema` and invoke `setInitialTree` when it's time to set the tree content.\n *\n * Requires `storedSchema` to be in its default/empty state.\n *\n * This is done in such a way that if the content (implicitly assumed to start empty)\n * is never out of schema.\n * This means that if the root field of the new schema requires content (like a value field),\n * a temporary intermediate schema is used so the initial empty state is not out of schema.\n *\n * Since this makes multiple changes, callers may want to wrap it in a transaction.\n */\nexport function initializeContent(\n\tschemaRepository: {\n\t\tstoredSchema: ITreeCheckout[\"storedSchema\"];\n\t\tupdateSchema: ITreeCheckout[\"updateSchema\"];\n\t},\n\tnewSchema: TreeStoredSchema,\n\tsetInitialTree: () => void,\n): void {\n\tassert(\n\t\tschemaDataIsEmpty(schemaRepository.storedSchema),\n\t\t0x743 /* cannot initialize after a schema is set */,\n\t);\n\n\tconst rootSchema = newSchema.rootFieldSchema;\n\tconst rootKind = rootSchema.kind;\n\n\t// To keep the data in schema during the update, first define a schema that tolerates the current (empty) tree as well as the final (initial) tree.\n\tlet incrementalSchemaUpdate: TreeStoredSchema;\n\tif (\n\t\trootKind === FieldKinds.sequence.identifier ||\n\t\trootKind === FieldKinds.optional.identifier\n\t) {\n\t\t// These kinds are known to tolerate empty, so use the schema as is:\n\t\tincrementalSchemaUpdate = newSchema;\n\t} else {\n\t\tassert(rootKind === FieldKinds.required.identifier, 0x5c8 /* Unexpected kind */);\n\t\t// Replace value kind with optional kind in root field schema:\n\t\tincrementalSchemaUpdate = {\n\t\t\tnodeSchema: newSchema.nodeSchema,\n\t\t\trootFieldSchema: {\n\t\t\t\tkind: FieldKinds.optional.identifier,\n\t\t\t\ttypes: rootSchema.types,\n\t\t\t},\n\t\t};\n\t}\n\n\t// TODO: fix issues with schema comparison and enable this.\n\t// assert(\n\t// \tallowsRepoSuperset(defaultSchemaPolicy, tree.storedSchema, incrementalSchemaUpdate),\n\t// \t\"Incremental Schema update should support the existing empty tree\",\n\t// );\n\tassert(\n\t\tallowsRepoSuperset(defaultSchemaPolicy, newSchema, incrementalSchemaUpdate),\n\t\t0x5c9 /* Incremental Schema during update should be a allow a superset of the final schema */,\n\t);\n\t// Update to intermediate schema\n\tschemaRepository.updateSchema(incrementalSchemaUpdate);\n\t// Insert initial tree\n\tsetInitialTree();\n\n\t// If intermediate schema is not final desired schema, update to the final schema:\n\tif (incrementalSchemaUpdate !== newSchema) {\n\t\tschemaRepository.updateSchema(newSchema);\n\t}\n}\n\nexport enum UpdateType {\n\t/**\n\t * Already compatible, no update needed.\n\t */\n\tNone,\n\t/**\n\t * Empty: needs initializing.\n\t */\n\tInitialize,\n\t/**\n\t * Schema can be upgraded leaving tree as is.\n\t */\n\tSchemaCompatible,\n\t/**\n\t * No update currently supported.\n\t */\n\tIncompatible,\n}\n\nexport function evaluateUpdate(\n\tviewSchema: ViewSchema,\n\tallowedSchemaModifications: AllowedUpdateType,\n\tcheckout: ITreeCheckout,\n): UpdateType {\n\tconst compatibility = viewSchema.checkCompatibility(checkout.storedSchema);\n\n\tif (\n\t\tcompatibility.read === Compatibility.Compatible &&\n\t\tcompatibility.write === Compatibility.Compatible\n\t) {\n\t\t// Compatible as is\n\t\treturn UpdateType.None;\n\t}\n\n\t// eslint-disable-next-line no-bitwise\n\tif (allowedSchemaModifications & AllowedUpdateType.Initialize && canInitialize(checkout)) {\n\t\treturn UpdateType.Initialize;\n\t}\n\n\tif (compatibility.read !== Compatibility.Compatible) {\n\t\t// Existing stored schema permits trees which are incompatible with the view schema, so schema can not be updated\n\t\treturn UpdateType.Incompatible;\n\t}\n\n\tassert(compatibility.write === Compatibility.Incompatible, 0x8bd /* unexpected case */);\n\tassert(compatibility.read === Compatibility.Compatible, 0x8be /* unexpected case */);\n\n\t// eslint-disable-next-line no-bitwise\n\treturn allowedSchemaModifications & AllowedUpdateType.SchemaCompatible\n\t\t? UpdateType.SchemaCompatible\n\t\t: UpdateType.Incompatible;\n}\n\nexport function canInitialize(checkout: ITreeCheckout): boolean {\n\t// Check for empty.\n\treturn checkout.forest.isEmpty && schemaDataIsEmpty(checkout.storedSchema);\n}\n\nfunction normalizeNewFieldContent(\n\tcontent: readonly ITreeCursorSynchronous[] | ITreeCursorSynchronous | undefined,\n): ITreeCursorSynchronous {\n\tif (content === undefined) {\n\t\treturn cursorForMapTreeField([]);\n\t}\n\n\tif (isReadonlyArray(content)) {\n\t\treturn cursorForMapTreeField(content.map((c) => mapTreeFromCursor(c)));\n\t}\n\n\tif (content.mode === CursorLocationType.Fields) {\n\t\treturn content;\n\t}\n\n\treturn cursorForMapTreeField([mapTreeFromCursor(content)]);\n}\n\n/**\n * Initialize a checkout with a schema and tree content.\n * This function should only be called when the tree is uninitialized (no schema or content).\n * @remarks\n *\n * If the proposed schema (from `treeContent`) is not compatible with the emptry tree, this function handles using an intermediate schema\n * which supports the empty tree as well as the final tree content.\n */\nexport function initialize(checkout: ITreeCheckout, treeContent: TreeStoredContent): void {\n\tcheckout.transaction.start();\n\ttry {\n\t\tinitializeContent(checkout, treeContent.schema, () => {\n\t\t\tconst field = { field: rootFieldKey, parent: undefined };\n\t\t\tconst content = normalizeNewFieldContent(treeContent.initialTree);\n\n\t\t\tswitch (checkout.storedSchema.rootFieldSchema.kind) {\n\t\t\t\tcase FieldKinds.optional.identifier: {\n\t\t\t\t\tconst fieldEditor = checkout.editor.optionalField(field);\n\t\t\t\t\tassert(\n\t\t\t\t\t\tcontent.getFieldLength() <= 1,\n\t\t\t\t\t\t0x7f4 /* optional field content should normalize at most one item */,\n\t\t\t\t\t);\n\t\t\t\t\tfieldEditor.set(content.getFieldLength() === 0 ? undefined : content, true);\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t\tcase FieldKinds.sequence.identifier: {\n\t\t\t\t\tconst fieldEditor = checkout.editor.sequenceField(field);\n\t\t\t\t\t// TODO: should do an idempotent edit here.\n\t\t\t\t\tfieldEditor.insert(0, content);\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t\tdefault: {\n\t\t\t\t\tfail(\"unexpected root field kind during initialize\");\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\t} finally {\n\t\tcheckout.transaction.commit();\n\t}\n}\n\n/**\n * Ensure a {@link ITreeCheckout} can be used with a given {@link ViewSchema}.\n *\n * @remarks\n * It is up to the caller to ensure that compatibility is reevaluated if the checkout's stored schema is edited in the future.\n *\n * @param viewSchema - View schema that `checkout` should be made compatible with.\n * @param allowedSchemaModifications - Flags enum describing the ways this is allowed to modify `checkout`.\n * @param checkout - To be modified as needed to be compatible with `viewSchema`.\n * @param treeContent - Content to be used to initialize `checkout`'s the tree if needed and allowed.\n * @returns true iff checkout now is compatible with `viewSchema`.\n */\nexport function ensureSchema(\n\tviewSchema: ViewSchema,\n\tallowedSchemaModifications: AllowedUpdateType,\n\tcheckout: ITreeCheckout,\n\ttreeContent: TreeStoredContent | undefined,\n): boolean {\n\tlet possibleModifications = allowedSchemaModifications;\n\tif (treeContent === undefined) {\n\t\t// Clear bit for Initialize if initial tree is not provided.\n\t\t// eslint-disable-next-line no-bitwise\n\t\tpossibleModifications &= ~AllowedUpdateType.Initialize;\n\t}\n\tconst updatedNeeded = evaluateUpdate(viewSchema, possibleModifications, checkout);\n\tswitch (updatedNeeded) {\n\t\tcase UpdateType.None: {\n\t\t\treturn true;\n\t\t}\n\t\tcase UpdateType.Incompatible: {\n\t\t\treturn false;\n\t\t}\n\t\tcase UpdateType.SchemaCompatible: {\n\t\t\tcheckout.updateSchema(viewSchema.schema);\n\t\t\treturn true;\n\t\t}\n\t\tcase UpdateType.Initialize: {\n\t\t\tif (treeContent === undefined) {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t\t// TODO:\n\t\t\t// When this becomes a more proper out of schema adapter, editing should be made lazy.\n\t\t\t// This will improve support for readonly documents, cross version collaboration and attribution.\n\t\t\tinitialize(checkout, treeContent);\n\t\t\treturn true;\n\t\t}\n\t\tdefault: {\n\t\t\tunreachableCase(updatedNeeded);\n\t\t}\n\t}\n}\n\n/**\n * Content that can populate a `SharedTree`.\n */\nexport interface TreeStoredContent {\n\treadonly schema: TreeStoredSchema;\n\n\t/**\n\t * Default tree content to initialize the tree with iff the tree is uninitialized\n\t * (meaning it does not even have any schema set at all).\n\t */\n\treadonly initialTree: readonly ITreeCursorSynchronous[] | ITreeCursorSynchronous | undefined;\n}\n"]}
|
|
@@ -3,10 +3,10 @@
|
|
|
3
3
|
* Licensed under the MIT License.
|
|
4
4
|
*/
|
|
5
5
|
import { type HasListeners, type IEmitter, type Listenable } from "../events/index.js";
|
|
6
|
-
import { type NodeKeyManager,
|
|
7
|
-
import { type ImplicitFieldSchema, type SchemaCompatibilityStatus, type InsertableTreeFieldFromImplicitField, type TreeFieldFromImplicitField, type TreeView, type TreeViewEvents, type TreeViewConfiguration } from "../simple-tree/index.js";
|
|
6
|
+
import { type NodeKeyManager, type FullSchemaPolicy } from "../feature-libraries/index.js";
|
|
7
|
+
import { type ImplicitFieldSchema, type SchemaCompatibilityStatus, type InsertableTreeFieldFromImplicitField, type TreeFieldFromImplicitField, type TreeView, type TreeViewEvents, ViewSchema, type TreeViewConfiguration } from "../simple-tree/index.js";
|
|
8
8
|
import { Breakable, type WithBreakable } from "../util/index.js";
|
|
9
|
-
import type { ITreeCheckout } from "./treeCheckout.js";
|
|
9
|
+
import type { ITreeCheckout, TreeCheckout } from "./treeCheckout.js";
|
|
10
10
|
import { CheckoutFlexTreeView } from "./checkoutFlexTreeView.js";
|
|
11
11
|
/**
|
|
12
12
|
* Creating multiple tree views from the same checkout is not supported. This slot is used to detect if one already
|
|
@@ -17,10 +17,11 @@ export declare const ViewSlot: import("../core/index.js").AnchorSlot<TreeView<Im
|
|
|
17
17
|
* Implementation of TreeView wrapping a FlexTreeView.
|
|
18
18
|
*/
|
|
19
19
|
export declare class SchematizingSimpleTreeView<in out TRootSchema extends ImplicitFieldSchema> implements TreeView<TRootSchema>, WithBreakable {
|
|
20
|
-
readonly checkout:
|
|
20
|
+
readonly checkout: TreeCheckout;
|
|
21
21
|
readonly config: TreeViewConfiguration<TRootSchema>;
|
|
22
22
|
readonly nodeKeyManager: NodeKeyManager;
|
|
23
23
|
readonly breaker: Breakable;
|
|
24
|
+
private readonly onDispose?;
|
|
24
25
|
/**
|
|
25
26
|
* The view is set to undefined when this object is disposed or the view schema does not support viewing the document's stored schema.
|
|
26
27
|
*
|
|
@@ -31,7 +32,7 @@ export declare class SchematizingSimpleTreeView<in out TRootSchema extends Impli
|
|
|
31
32
|
* Undefined iff uninitialized or disposed.
|
|
32
33
|
*/
|
|
33
34
|
private currentCompatibility;
|
|
34
|
-
private readonly
|
|
35
|
+
private readonly schemaPolicy;
|
|
35
36
|
readonly events: Listenable<TreeViewEvents> & IEmitter<TreeViewEvents> & HasListeners<TreeViewEvents>;
|
|
36
37
|
private readonly viewSchema;
|
|
37
38
|
private readonly unregisterCallbacks;
|
|
@@ -44,7 +45,8 @@ export declare class SchematizingSimpleTreeView<in out TRootSchema extends Impli
|
|
|
44
45
|
*/
|
|
45
46
|
private midUpgrade;
|
|
46
47
|
private readonly rootFieldSchema;
|
|
47
|
-
constructor(checkout:
|
|
48
|
+
constructor(checkout: TreeCheckout, config: TreeViewConfiguration<TRootSchema>, nodeKeyManager: NodeKeyManager, breaker?: Breakable, onDispose?: (() => void) | undefined);
|
|
49
|
+
get schema(): TRootSchema;
|
|
48
50
|
initialize(content: InsertableTreeFieldFromImplicitField<TRootSchema>): void;
|
|
49
51
|
upgradeSchema(): void;
|
|
50
52
|
/**
|
|
@@ -76,5 +78,5 @@ export declare class SchematizingSimpleTreeView<in out TRootSchema extends Impli
|
|
|
76
78
|
* Creates a view that self-disposes whenenever the stored schema changes.
|
|
77
79
|
* This may only be called when the schema is already known to be compatible (typically via ensureSchema).
|
|
78
80
|
*/
|
|
79
|
-
export declare function requireSchema(checkout: ITreeCheckout, viewSchema: ViewSchema, onDispose: () => void, nodeKeyManager: NodeKeyManager,
|
|
81
|
+
export declare function requireSchema(checkout: ITreeCheckout, viewSchema: ViewSchema, onDispose: () => void, nodeKeyManager: NodeKeyManager, schemaPolicy: FullSchemaPolicy): CheckoutFlexTreeView;
|
|
80
82
|
//# sourceMappingURL=schematizingTreeView.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"schematizingTreeView.d.ts","sourceRoot":"","sources":["../../src/shared-tree/schematizingTreeView.ts"],"names":[],"mappings":"AAAA;;;GAGG;
|
|
1
|
+
{"version":3,"file":"schematizingTreeView.d.ts","sourceRoot":"","sources":["../../src/shared-tree/schematizingTreeView.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAWH,OAAO,EACN,KAAK,YAAY,EACjB,KAAK,QAAQ,EACb,KAAK,UAAU,EAEf,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EACN,KAAK,cAAc,EAInB,KAAK,gBAAgB,EACrB,MAAM,+BAA+B,CAAC;AACvC,OAAO,EAEN,KAAK,mBAAmB,EACxB,KAAK,yBAAyB,EAC9B,KAAK,oCAAoC,EACzC,KAAK,0BAA0B,EAC/B,KAAK,QAAQ,EACb,KAAK,cAAc,EAInB,UAAU,EAEV,KAAK,qBAAqB,EAI1B,MAAM,yBAAyB,CAAC;AACjC,OAAO,EAAE,SAAS,EAAgC,KAAK,aAAa,EAAE,MAAM,kBAAkB,CAAC;AAG/F,OAAO,KAAK,EAAE,aAAa,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AACrE,OAAO,EAAE,oBAAoB,EAAE,MAAM,2BAA2B,CAAC;AAEjE;;;GAGG;AACH,eAAO,MAAM,QAAQ,sEAA8C,CAAC;AAEpE;;GAEG;AACH,qBACa,0BAA0B,CAAC,EAAE,CAAC,GAAG,CAAC,WAAW,SAAS,mBAAmB,CACrF,YAAW,QAAQ,CAAC,WAAW,CAAC,EAAE,aAAa;aAkC9B,QAAQ,EAAE,YAAY;aACtB,MAAM,EAAE,qBAAqB,CAAC,WAAW,CAAC;aAC1C,cAAc,EAAE,cAAc;aAC9B,OAAO,EAAE,SAAS;IAClC,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAC;IApC5B;;;;OAIG;IACH,OAAO,CAAC,IAAI,CAAmC;IAE/C;;OAEG;IACH,OAAO,CAAC,oBAAoB,CAAwC;IACpE,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAe;IAC5C,SAAgB,MAAM,EAAE,UAAU,CAAC,cAAc,CAAC,GACjD,QAAQ,CAAC,cAAc,CAAC,GACxB,YAAY,CAAC,cAAc,CAAC,CAAmB;IAEhD,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAa;IAExC,OAAO,CAAC,QAAQ,CAAC,mBAAmB,CAAyB;IAEtD,QAAQ,UAAS;IACxB;;;;;OAKG;IACH,OAAO,CAAC,UAAU,CAAS;IAE3B,OAAO,CAAC,QAAQ,CAAC,eAAe,CAAc;gBAG7B,QAAQ,EAAE,YAAY,EACtB,MAAM,EAAE,qBAAqB,CAAC,WAAW,CAAC,EAC1C,cAAc,EAAE,cAAc,EAC9B,OAAO,GAAE,SAAuD,EAC/D,SAAS,CAAC,SAAQ,IAAI,aAAA;IA+BxC,IAAW,MAAM,IAAI,WAAW,CAE/B;IAEM,UAAU,CAAC,OAAO,EAAE,oCAAoC,CAAC,WAAW,CAAC,GAAG,IAAI;IA8B5E,aAAa,IAAI,IAAI;IA6B5B;;OAEG;IACI,OAAO,IAAI,oBAAoB;IAMtC,OAAO,CAAC,gBAAgB;IAMxB,OAAO,CAAC,YAAY;IAIpB;;;;;;;;;;OAUG;IACH,OAAO,CAAC,MAAM;IA2Fd,OAAO,CAAC,aAAa;IAWrB,OAAO,CAAC,WAAW;IAUnB,IAAW,aAAa,IAAI,yBAAyB,CAKpD;IAEM,OAAO,IAAI,IAAI;IAQtB,IAAW,IAAI,IAAI,0BAA0B,CAAC,WAAW,CAAC,CASzD;IAED,IAAW,IAAI,CAAC,OAAO,EAAE,oCAAoC,CAAC,WAAW,CAAC,EASzE;CACD;AAED;;;GAGG;AACH,wBAAgB,aAAa,CAC5B,QAAQ,EAAE,aAAa,EACvB,UAAU,EAAE,UAAU,EACtB,SAAS,EAAE,MAAM,IAAI,EACrB,cAAc,EAAE,cAAc,EAC9B,YAAY,EAAE,gBAAgB,GAC5B,oBAAoB,CAiBtB"}
|
|
@@ -42,13 +42,14 @@ var __setFunctionName = (this && this.__setFunctionName) || function (f, name, p
|
|
|
42
42
|
};
|
|
43
43
|
import { assert } from "@fluidframework/core-utils/internal";
|
|
44
44
|
import { UsageError } from "@fluidframework/telemetry-utils/internal";
|
|
45
|
-
import { AllowedUpdateType, anchorSlot, Compatibility } from "../core/index.js";
|
|
45
|
+
import { AllowedUpdateType, anchorSlot, Compatibility, } from "../core/index.js";
|
|
46
46
|
import { createEmitter, } from "../events/index.js";
|
|
47
|
-
import {
|
|
48
|
-
import { getTreeNodeForField,
|
|
47
|
+
import { defaultSchemaPolicy, ContextSlot, cursorForMapTreeNode, } from "../feature-libraries/index.js";
|
|
48
|
+
import { getTreeNodeForField, setField, normalizeFieldSchema, ViewSchema, mapTreeFromNodeData, prepareContentForHydration, toStoredSchema, } from "../simple-tree/index.js";
|
|
49
49
|
import { Breakable, breakingClass, disposeSymbol } from "../util/index.js";
|
|
50
50
|
import { canInitialize, ensureSchema, initialize } from "./schematizeTree.js";
|
|
51
51
|
import { CheckoutFlexTreeView } from "./checkoutFlexTreeView.js";
|
|
52
|
+
import { HydratedContext, SimpleContextSlot } from "../simple-tree/index.js";
|
|
52
53
|
/**
|
|
53
54
|
* Creating multiple tree views from the same checkout is not supported. This slot is used to detect if one already
|
|
54
55
|
* exists and error if creating a second.
|
|
@@ -63,11 +64,12 @@ let SchematizingSimpleTreeView = (() => {
|
|
|
63
64
|
let _classExtraInitializers = [];
|
|
64
65
|
let _classThis;
|
|
65
66
|
var SchematizingSimpleTreeView = _classThis = class {
|
|
66
|
-
constructor(checkout, config, nodeKeyManager, breaker = new Breakable("SchematizingSimpleTreeView")) {
|
|
67
|
+
constructor(checkout, config, nodeKeyManager, breaker = new Breakable("SchematizingSimpleTreeView"), onDispose) {
|
|
67
68
|
this.checkout = checkout;
|
|
68
69
|
this.config = config;
|
|
69
70
|
this.nodeKeyManager = nodeKeyManager;
|
|
70
71
|
this.breaker = breaker;
|
|
72
|
+
this.onDispose = onDispose;
|
|
71
73
|
this.events = createEmitter();
|
|
72
74
|
this.unregisterCallbacks = new Set();
|
|
73
75
|
this.disposed = false;
|
|
@@ -87,8 +89,8 @@ let SchematizingSimpleTreeView = (() => {
|
|
|
87
89
|
validateSchema: config.enableSchemaValidation,
|
|
88
90
|
};
|
|
89
91
|
this.rootFieldSchema = normalizeFieldSchema(config.schema);
|
|
90
|
-
this.
|
|
91
|
-
this.viewSchema = new ViewSchema(policy, {},
|
|
92
|
+
this.schemaPolicy = defaultSchemaPolicy;
|
|
93
|
+
this.viewSchema = new ViewSchema(policy, {}, toStoredSchema(this.rootFieldSchema));
|
|
92
94
|
// This must be initialized before `update` can be called.
|
|
93
95
|
this.currentCompatibility = {
|
|
94
96
|
canView: false,
|
|
@@ -99,6 +101,9 @@ let SchematizingSimpleTreeView = (() => {
|
|
|
99
101
|
this.update();
|
|
100
102
|
this.unregisterCallbacks.add(this.checkout.events.on("commitApplied", (data, getRevertible) => this.events.emit("commitApplied", data, getRevertible)));
|
|
101
103
|
}
|
|
104
|
+
get schema() {
|
|
105
|
+
return this.config.schema;
|
|
106
|
+
}
|
|
102
107
|
initialize(content) {
|
|
103
108
|
this.ensureUndisposed();
|
|
104
109
|
const compatibility = this.compatibility;
|
|
@@ -115,7 +120,7 @@ let SchematizingSimpleTreeView = (() => {
|
|
|
115
120
|
});
|
|
116
121
|
prepareContentForHydration(mapTree, this.checkout.forest);
|
|
117
122
|
initialize(this.checkout, {
|
|
118
|
-
schema: this.viewSchema.
|
|
123
|
+
schema: this.viewSchema.schema,
|
|
119
124
|
initialTree: mapTree === undefined ? undefined : cursorForMapTreeNode(mapTree),
|
|
120
125
|
});
|
|
121
126
|
});
|
|
@@ -132,7 +137,7 @@ let SchematizingSimpleTreeView = (() => {
|
|
|
132
137
|
}
|
|
133
138
|
this.runSchemaEdit(() => {
|
|
134
139
|
const result = ensureSchema(this.viewSchema, AllowedUpdateType.SchemaCompatible, this.checkout, {
|
|
135
|
-
schema: this.viewSchema.
|
|
140
|
+
schema: this.viewSchema.schema,
|
|
136
141
|
initialTree: undefined,
|
|
137
142
|
});
|
|
138
143
|
assert(result, 0x8bf /* Schema upgrade should always work if canUpgrade is set. */);
|
|
@@ -208,8 +213,10 @@ let SchematizingSimpleTreeView = (() => {
|
|
|
208
213
|
this.update();
|
|
209
214
|
}
|
|
210
215
|
};
|
|
211
|
-
const view = requireSchema(this.checkout, this.viewSchema, onViewDispose, this.nodeKeyManager, this.
|
|
216
|
+
const view = requireSchema(this.checkout, this.viewSchema, onViewDispose, this.nodeKeyManager, this.schemaPolicy);
|
|
212
217
|
this.view = view;
|
|
218
|
+
assert(!this.checkout.forest.anchors.slots.has(SimpleContextSlot), "extra simple tree context");
|
|
219
|
+
this.checkout.forest.anchors.slots.set(SimpleContextSlot, new HydratedContext(this.rootFieldSchema.allowedTypeSet, view.context));
|
|
213
220
|
const unregister = this.checkout.storedSchema.on("afterSchemaChange", () => {
|
|
214
221
|
unregister();
|
|
215
222
|
this.unregisterCallbacks.delete(unregister);
|
|
@@ -219,6 +226,7 @@ let SchematizingSimpleTreeView = (() => {
|
|
|
219
226
|
}
|
|
220
227
|
else {
|
|
221
228
|
this.view = undefined;
|
|
229
|
+
this.checkout.forest.anchors.slots.delete(SimpleContextSlot);
|
|
222
230
|
const unregister = this.checkout.storedSchema.on("afterSchemaChange", () => {
|
|
223
231
|
unregister();
|
|
224
232
|
this.unregisterCallbacks.delete(unregister);
|
|
@@ -246,8 +254,10 @@ let SchematizingSimpleTreeView = (() => {
|
|
|
246
254
|
if (this.view !== undefined) {
|
|
247
255
|
this.view[disposeSymbol]();
|
|
248
256
|
this.view = undefined;
|
|
257
|
+
this.checkout.forest.anchors.slots.delete(SimpleContextSlot);
|
|
249
258
|
this.unregisterCallbacks.forEach((unregister) => unregister());
|
|
250
259
|
}
|
|
260
|
+
this.checkout.forest.anchors.slots.delete(SimpleContextSlot);
|
|
251
261
|
}
|
|
252
262
|
get compatibility() {
|
|
253
263
|
if (!this.currentCompatibility) {
|
|
@@ -260,6 +270,7 @@ let SchematizingSimpleTreeView = (() => {
|
|
|
260
270
|
this.disposeView();
|
|
261
271
|
this.checkout.forest.anchors.slots.delete(ViewSlot);
|
|
262
272
|
this.currentCompatibility = undefined;
|
|
273
|
+
this.onDispose?.();
|
|
263
274
|
}
|
|
264
275
|
get root() {
|
|
265
276
|
this.breaker.use();
|
|
@@ -293,7 +304,7 @@ export { SchematizingSimpleTreeView };
|
|
|
293
304
|
* Creates a view that self-disposes whenenever the stored schema changes.
|
|
294
305
|
* This may only be called when the schema is already known to be compatible (typically via ensureSchema).
|
|
295
306
|
*/
|
|
296
|
-
export function requireSchema(checkout, viewSchema, onDispose, nodeKeyManager,
|
|
307
|
+
export function requireSchema(checkout, viewSchema, onDispose, nodeKeyManager, schemaPolicy) {
|
|
297
308
|
const slots = checkout.forest.anchors.slots;
|
|
298
309
|
assert(!slots.has(ContextSlot), 0x8c2 /* Cannot create second view from checkout */);
|
|
299
310
|
{
|
|
@@ -301,7 +312,7 @@ export function requireSchema(checkout, viewSchema, onDispose, nodeKeyManager, f
|
|
|
301
312
|
assert(compatibility.write === Compatibility.Compatible &&
|
|
302
313
|
compatibility.read === Compatibility.Compatible, 0x8c3 /* requireSchema invoked with incompatible schema */);
|
|
303
314
|
}
|
|
304
|
-
const view = new CheckoutFlexTreeView(checkout,
|
|
315
|
+
const view = new CheckoutFlexTreeView(checkout, schemaPolicy, nodeKeyManager, onDispose);
|
|
305
316
|
assert(slots.has(ContextSlot), 0x90d /* Context should be tracked in slot */);
|
|
306
317
|
return view;
|
|
307
318
|
}
|