@fluidframework/tree 2.1.0-276985 → 2.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.eslintrc.cjs +7 -0
- package/.vscode/Tree.code-workspace +9 -2
- package/CHANGELOG.md +38 -0
- package/README.md +55 -12
- package/api-report/tree.alpha.api.md +2 -1
- package/api-report/tree.beta.api.md +2 -1
- package/api-report/tree.public.api.md +2 -1
- package/beta.d.ts +1 -1
- package/dist/beta.d.ts +1 -1
- package/dist/core/forest/editableForest.d.ts +6 -3
- package/dist/core/forest/editableForest.d.ts.map +1 -1
- package/dist/core/forest/editableForest.js +16 -4
- package/dist/core/forest/editableForest.js.map +1 -1
- package/dist/core/index.d.ts +1 -1
- package/dist/core/index.d.ts.map +1 -1
- package/dist/core/index.js +3 -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 +3 -1
- package/dist/core/rebase/index.js.map +1 -1
- package/dist/core/rebase/types.d.ts +2 -0
- package/dist/core/rebase/types.d.ts.map +1 -1
- package/dist/core/rebase/types.js +9 -1
- package/dist/core/rebase/types.js.map +1 -1
- package/dist/core/tree/anchorSet.d.ts +1 -0
- package/dist/core/tree/anchorSet.d.ts.map +1 -1
- package/dist/core/tree/anchorSet.js +13 -0
- package/dist/core/tree/anchorSet.js.map +1 -1
- package/dist/core/tree/detachedFieldIndex.d.ts +48 -11
- package/dist/core/tree/detachedFieldIndex.d.ts.map +1 -1
- package/dist/core/tree/detachedFieldIndex.js +144 -20
- package/dist/core/tree/detachedFieldIndex.js.map +1 -1
- package/dist/core/tree/detachedFieldIndexCodec.d.ts.map +1 -1
- package/dist/core/tree/detachedFieldIndexCodec.js +13 -4
- package/dist/core/tree/detachedFieldIndexCodec.js.map +1 -1
- package/dist/core/tree/detachedFieldIndexFormat.d.ts +1 -1
- package/dist/core/tree/detachedFieldIndexFormat.d.ts.map +1 -1
- package/dist/core/tree/detachedFieldIndexFormat.js.map +1 -1
- package/dist/core/tree/detachedFieldIndexTypes.d.ts +39 -4
- package/dist/core/tree/detachedFieldIndexTypes.d.ts.map +1 -1
- package/dist/core/tree/detachedFieldIndexTypes.js.map +1 -1
- package/dist/core/tree/index.d.ts +2 -1
- package/dist/core/tree/index.d.ts.map +1 -1
- package/dist/core/tree/index.js.map +1 -1
- package/dist/core/tree/visitDelta.d.ts +3 -1
- package/dist/core/tree/visitDelta.d.ts.map +1 -1
- package/dist/core/tree/visitDelta.js +31 -15
- package/dist/core/tree/visitDelta.js.map +1 -1
- package/dist/core/tree/visitorUtils.d.ts +3 -3
- package/dist/core/tree/visitorUtils.d.ts.map +1 -1
- package/dist/core/tree/visitorUtils.js +4 -4
- package/dist/core/tree/visitorUtils.js.map +1 -1
- package/dist/events/events.d.ts +4 -1
- package/dist/events/events.d.ts.map +1 -1
- package/dist/events/events.js.map +1 -1
- package/dist/feature-libraries/default-schema/defaultEditBuilder.js +1 -1
- package/dist/feature-libraries/default-schema/defaultEditBuilder.js.map +1 -1
- package/dist/feature-libraries/default-schema/defaultFieldKinds.d.ts.map +1 -1
- package/dist/feature-libraries/default-schema/defaultFieldKinds.js +1 -0
- package/dist/feature-libraries/default-schema/defaultFieldKinds.js.map +1 -1
- package/dist/feature-libraries/editableTreeBinder.js +1 -1
- package/dist/feature-libraries/editableTreeBinder.js.map +1 -1
- package/dist/feature-libraries/flex-map-tree/mapTreeNode.d.ts +1 -10
- package/dist/feature-libraries/flex-map-tree/mapTreeNode.d.ts.map +1 -1
- package/dist/feature-libraries/flex-map-tree/mapTreeNode.js +0 -72
- package/dist/feature-libraries/flex-map-tree/mapTreeNode.js.map +1 -1
- package/dist/feature-libraries/flex-tree/flexTreeTypes.d.ts +1 -51
- package/dist/feature-libraries/flex-tree/flexTreeTypes.d.ts.map +1 -1
- package/dist/feature-libraries/flex-tree/flexTreeTypes.js +0 -2
- package/dist/feature-libraries/flex-tree/flexTreeTypes.js.map +1 -1
- package/dist/feature-libraries/flex-tree/index.d.ts +3 -2
- package/dist/feature-libraries/flex-tree/index.d.ts.map +1 -1
- package/dist/feature-libraries/flex-tree/index.js +5 -1
- package/dist/feature-libraries/flex-tree/index.js.map +1 -1
- package/dist/feature-libraries/flex-tree/lazyEntity.d.ts +1 -2
- package/dist/feature-libraries/flex-tree/lazyEntity.d.ts.map +1 -1
- package/dist/feature-libraries/flex-tree/lazyEntity.js.map +1 -1
- package/dist/feature-libraries/flex-tree/lazyField.d.ts +1 -6
- package/dist/feature-libraries/flex-tree/lazyField.d.ts.map +1 -1
- package/dist/feature-libraries/flex-tree/lazyField.js +11 -32
- package/dist/feature-libraries/flex-tree/lazyField.js.map +1 -1
- package/dist/feature-libraries/flex-tree/lazyNode.d.ts +1 -5
- package/dist/feature-libraries/flex-tree/lazyNode.d.ts.map +1 -1
- package/dist/feature-libraries/flex-tree/lazyNode.js +0 -30
- package/dist/feature-libraries/flex-tree/lazyNode.js.map +1 -1
- package/dist/feature-libraries/forest-summary/forestSummarizer.d.ts.map +1 -1
- package/dist/feature-libraries/forest-summary/forestSummarizer.js +1 -1
- package/dist/feature-libraries/forest-summary/forestSummarizer.js.map +1 -1
- package/dist/feature-libraries/index.d.ts +3 -3
- package/dist/feature-libraries/index.d.ts.map +1 -1
- package/dist/feature-libraries/index.js +6 -3
- package/dist/feature-libraries/index.js.map +1 -1
- package/dist/feature-libraries/modular-schema/crossFieldQueries.d.ts +11 -0
- package/dist/feature-libraries/modular-schema/crossFieldQueries.d.ts.map +1 -1
- package/dist/feature-libraries/modular-schema/crossFieldQueries.js.map +1 -1
- package/dist/feature-libraries/modular-schema/discrepancies.d.ts +96 -0
- package/dist/feature-libraries/modular-schema/discrepancies.d.ts.map +1 -0
- package/dist/feature-libraries/modular-schema/discrepancies.js +264 -0
- package/dist/feature-libraries/modular-schema/discrepancies.js.map +1 -0
- package/dist/feature-libraries/modular-schema/fieldChangeHandler.d.ts +9 -2
- package/dist/feature-libraries/modular-schema/fieldChangeHandler.d.ts.map +1 -1
- package/dist/feature-libraries/modular-schema/fieldChangeHandler.js.map +1 -1
- package/dist/feature-libraries/modular-schema/genericFieldKind.d.ts.map +1 -1
- package/dist/feature-libraries/modular-schema/genericFieldKind.js +3 -0
- package/dist/feature-libraries/modular-schema/genericFieldKind.js.map +1 -1
- package/dist/feature-libraries/modular-schema/index.d.ts +2 -1
- package/dist/feature-libraries/modular-schema/index.d.ts.map +1 -1
- package/dist/feature-libraries/modular-schema/index.js +3 -1
- package/dist/feature-libraries/modular-schema/index.js.map +1 -1
- package/dist/feature-libraries/modular-schema/modularChangeCodecs.d.ts.map +1 -1
- package/dist/feature-libraries/modular-schema/modularChangeCodecs.js +42 -26
- package/dist/feature-libraries/modular-schema/modularChangeCodecs.js.map +1 -1
- package/dist/feature-libraries/modular-schema/modularChangeFamily.d.ts +51 -2
- package/dist/feature-libraries/modular-schema/modularChangeFamily.d.ts.map +1 -1
- package/dist/feature-libraries/modular-schema/modularChangeFamily.js +827 -245
- package/dist/feature-libraries/modular-schema/modularChangeFamily.js.map +1 -1
- package/dist/feature-libraries/modular-schema/modularChangeFormat.d.ts.map +1 -1
- package/dist/feature-libraries/modular-schema/modularChangeFormat.js +2 -0
- package/dist/feature-libraries/modular-schema/modularChangeFormat.js.map +1 -1
- package/dist/feature-libraries/modular-schema/modularChangeTypes.d.ts +44 -1
- package/dist/feature-libraries/modular-schema/modularChangeTypes.d.ts.map +1 -1
- package/dist/feature-libraries/modular-schema/modularChangeTypes.js.map +1 -1
- package/dist/feature-libraries/node-key/index.d.ts +0 -1
- package/dist/feature-libraries/node-key/index.d.ts.map +1 -1
- package/dist/feature-libraries/node-key/index.js +1 -3
- package/dist/feature-libraries/node-key/index.js.map +1 -1
- package/dist/feature-libraries/object-forest/objectForest.d.ts +3 -2
- package/dist/feature-libraries/object-forest/objectForest.d.ts.map +1 -1
- package/dist/feature-libraries/object-forest/objectForest.js +5 -4
- package/dist/feature-libraries/object-forest/objectForest.js.map +1 -1
- package/dist/feature-libraries/optional-field/optionalField.d.ts.map +1 -1
- package/dist/feature-libraries/optional-field/optionalField.js +1 -0
- package/dist/feature-libraries/optional-field/optionalField.js.map +1 -1
- package/dist/feature-libraries/sequence-field/index.d.ts +1 -1
- package/dist/feature-libraries/sequence-field/index.d.ts.map +1 -1
- package/dist/feature-libraries/sequence-field/index.js +1 -2
- package/dist/feature-libraries/sequence-field/index.js.map +1 -1
- package/dist/feature-libraries/sequence-field/invert.js +1 -1
- package/dist/feature-libraries/sequence-field/invert.js.map +1 -1
- package/dist/feature-libraries/sequence-field/rebase.js +6 -1
- package/dist/feature-libraries/sequence-field/rebase.js.map +1 -1
- package/dist/feature-libraries/sequence-field/sequenceFieldChangeHandler.d.ts.map +1 -1
- package/dist/feature-libraries/sequence-field/sequenceFieldChangeHandler.js +1 -0
- package/dist/feature-libraries/sequence-field/sequenceFieldChangeHandler.js.map +1 -1
- package/dist/feature-libraries/sequence-field/utils.d.ts +2 -17
- package/dist/feature-libraries/sequence-field/utils.d.ts.map +1 -1
- package/dist/feature-libraries/sequence-field/utils.js +31 -39
- package/dist/feature-libraries/sequence-field/utils.js.map +1 -1
- package/dist/feature-libraries/typed-schema/typedTreeSchema.d.ts +1 -0
- package/dist/feature-libraries/typed-schema/typedTreeSchema.d.ts.map +1 -1
- package/dist/feature-libraries/typed-schema/typedTreeSchema.js +2 -0
- package/dist/feature-libraries/typed-schema/typedTreeSchema.js.map +1 -1
- package/dist/index.d.ts +1 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js.map +1 -1
- 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 +1 -1
- package/dist/shared-tree/schematizingTreeView.d.ts +4 -2
- package/dist/shared-tree/schematizingTreeView.d.ts.map +1 -1
- package/dist/shared-tree/schematizingTreeView.js +240 -184
- package/dist/shared-tree/schematizingTreeView.js.map +1 -1
- package/dist/shared-tree/sharedTree.d.ts +5 -1
- package/dist/shared-tree/sharedTree.d.ts.map +1 -1
- package/dist/shared-tree/sharedTree.js +157 -90
- package/dist/shared-tree/sharedTree.js.map +1 -1
- package/dist/shared-tree/sharedTreeChangeEnricher.js +1 -1
- package/dist/shared-tree/sharedTreeChangeEnricher.js.map +1 -1
- package/dist/shared-tree/treeApi.js +1 -1
- package/dist/shared-tree/treeApi.js.map +1 -1
- package/dist/shared-tree/treeCheckout.d.ts +10 -1
- package/dist/shared-tree/treeCheckout.d.ts.map +1 -1
- package/dist/shared-tree/treeCheckout.js +47 -3
- package/dist/shared-tree/treeCheckout.js.map +1 -1
- package/dist/shared-tree/treeView.d.ts.map +1 -1
- package/dist/shared-tree/treeView.js +7 -3
- package/dist/shared-tree/treeView.js.map +1 -1
- package/dist/shared-tree-core/branch.d.ts +6 -0
- package/dist/shared-tree-core/branch.d.ts.map +1 -1
- package/dist/shared-tree-core/branch.js +3 -0
- package/dist/shared-tree-core/branch.js.map +1 -1
- package/dist/shared-tree-core/sharedTreeCore.d.ts +8 -6
- package/dist/shared-tree-core/sharedTreeCore.d.ts.map +1 -1
- package/dist/shared-tree-core/sharedTreeCore.js +271 -209
- package/dist/shared-tree-core/sharedTreeCore.js.map +1 -1
- package/dist/simple-tree/arrayNode.d.ts +4 -0
- package/dist/simple-tree/arrayNode.d.ts.map +1 -1
- package/dist/simple-tree/arrayNode.js +36 -19
- package/dist/simple-tree/arrayNode.js.map +1 -1
- package/dist/simple-tree/index.d.ts +3 -3
- package/dist/simple-tree/index.d.ts.map +1 -1
- package/dist/simple-tree/index.js +2 -1
- package/dist/simple-tree/index.js.map +1 -1
- package/dist/simple-tree/leafNodeSchema.d.ts +22 -1
- package/dist/simple-tree/leafNodeSchema.d.ts.map +1 -1
- package/dist/simple-tree/leafNodeSchema.js +2 -1
- package/dist/simple-tree/leafNodeSchema.js.map +1 -1
- package/dist/simple-tree/mapNode.d.ts.map +1 -1
- package/dist/simple-tree/mapNode.js.map +1 -1
- package/dist/simple-tree/objectNode.d.ts.map +1 -1
- package/dist/simple-tree/objectNode.js +2 -1
- package/dist/simple-tree/objectNode.js.map +1 -1
- package/dist/simple-tree/proxies.d.ts.map +1 -1
- package/dist/simple-tree/proxies.js +9 -25
- package/dist/simple-tree/proxies.js.map +1 -1
- package/dist/simple-tree/proxyBinding.d.ts +4 -0
- package/dist/simple-tree/proxyBinding.d.ts.map +1 -1
- package/dist/simple-tree/proxyBinding.js +23 -1
- package/dist/simple-tree/proxyBinding.js.map +1 -1
- package/dist/simple-tree/schemaFactory.d.ts +16 -1
- package/dist/simple-tree/schemaFactory.d.ts.map +1 -1
- package/dist/simple-tree/schemaFactory.js +32 -4
- package/dist/simple-tree/schemaFactory.js.map +1 -1
- package/dist/simple-tree/schemaTypes.d.ts +36 -1
- package/dist/simple-tree/schemaTypes.d.ts.map +1 -1
- package/dist/simple-tree/schemaTypes.js.map +1 -1
- package/dist/simple-tree/toFlexSchema.d.ts +2 -2
- package/dist/simple-tree/toFlexSchema.d.ts.map +1 -1
- package/dist/simple-tree/toFlexSchema.js +3 -2
- package/dist/simple-tree/toFlexSchema.js.map +1 -1
- package/dist/simple-tree/tree.d.ts +4 -1
- package/dist/simple-tree/tree.d.ts.map +1 -1
- package/dist/simple-tree/tree.js +48 -1
- package/dist/simple-tree/tree.js.map +1 -1
- package/dist/simple-tree/treeNodeApi.d.ts +2 -75
- package/dist/simple-tree/treeNodeApi.d.ts.map +1 -1
- package/dist/simple-tree/treeNodeApi.js +17 -25
- package/dist/simple-tree/treeNodeApi.js.map +1 -1
- package/dist/simple-tree/treeNodeKernel.d.ts +26 -0
- package/dist/simple-tree/treeNodeKernel.d.ts.map +1 -0
- package/dist/simple-tree/treeNodeKernel.js +83 -0
- package/dist/simple-tree/treeNodeKernel.js.map +1 -0
- package/dist/simple-tree/types.d.ts +95 -3
- package/dist/simple-tree/types.d.ts.map +1 -1
- package/dist/simple-tree/types.js +120 -21
- package/dist/simple-tree/types.js.map +1 -1
- package/dist/util/breakable.d.ts +83 -0
- package/dist/util/breakable.d.ts.map +1 -0
- package/dist/util/breakable.js +178 -0
- package/dist/util/breakable.js.map +1 -0
- package/dist/util/index.d.ts +3 -2
- package/dist/util/index.d.ts.map +1 -1
- package/dist/util/index.js +9 -2
- package/dist/util/index.js.map +1 -1
- package/dist/util/nestedMap.d.ts +17 -3
- package/dist/util/nestedMap.d.ts.map +1 -1
- package/dist/util/nestedMap.js +21 -1
- package/dist/util/nestedMap.js.map +1 -1
- package/dist/util/utils.d.ts +7 -0
- package/dist/util/utils.d.ts.map +1 -1
- package/dist/util/utils.js +15 -1
- package/dist/util/utils.js.map +1 -1
- package/internal.d.ts +1 -1
- package/lib/beta.d.ts +1 -1
- package/lib/core/forest/editableForest.d.ts +6 -3
- package/lib/core/forest/editableForest.d.ts.map +1 -1
- package/lib/core/forest/editableForest.js +17 -5
- package/lib/core/forest/editableForest.js.map +1 -1
- package/lib/core/index.d.ts +1 -1
- package/lib/core/index.d.ts.map +1 -1
- package/lib/core/index.js +1 -1
- package/lib/core/index.js.map +1 -1
- package/lib/core/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 +2 -0
- package/lib/core/rebase/types.d.ts.map +1 -1
- package/lib/core/rebase/types.js +7 -1
- package/lib/core/rebase/types.js.map +1 -1
- package/lib/core/tree/anchorSet.d.ts +1 -0
- package/lib/core/tree/anchorSet.d.ts.map +1 -1
- package/lib/core/tree/anchorSet.js +13 -0
- package/lib/core/tree/anchorSet.js.map +1 -1
- package/lib/core/tree/detachedFieldIndex.d.ts +48 -11
- package/lib/core/tree/detachedFieldIndex.d.ts.map +1 -1
- package/lib/core/tree/detachedFieldIndex.js +145 -21
- package/lib/core/tree/detachedFieldIndex.js.map +1 -1
- package/lib/core/tree/detachedFieldIndexCodec.d.ts.map +1 -1
- package/lib/core/tree/detachedFieldIndexCodec.js +13 -4
- package/lib/core/tree/detachedFieldIndexCodec.js.map +1 -1
- package/lib/core/tree/detachedFieldIndexFormat.d.ts +1 -1
- package/lib/core/tree/detachedFieldIndexFormat.d.ts.map +1 -1
- package/lib/core/tree/detachedFieldIndexFormat.js.map +1 -1
- package/lib/core/tree/detachedFieldIndexTypes.d.ts +39 -4
- package/lib/core/tree/detachedFieldIndexTypes.d.ts.map +1 -1
- package/lib/core/tree/detachedFieldIndexTypes.js.map +1 -1
- package/lib/core/tree/index.d.ts +2 -1
- package/lib/core/tree/index.d.ts.map +1 -1
- package/lib/core/tree/index.js.map +1 -1
- package/lib/core/tree/visitDelta.d.ts +3 -1
- package/lib/core/tree/visitDelta.d.ts.map +1 -1
- package/lib/core/tree/visitDelta.js +31 -15
- package/lib/core/tree/visitDelta.js.map +1 -1
- package/lib/core/tree/visitorUtils.d.ts +3 -3
- package/lib/core/tree/visitorUtils.d.ts.map +1 -1
- package/lib/core/tree/visitorUtils.js +4 -4
- package/lib/core/tree/visitorUtils.js.map +1 -1
- package/lib/events/events.d.ts +4 -1
- package/lib/events/events.d.ts.map +1 -1
- package/lib/events/events.js.map +1 -1
- package/lib/feature-libraries/default-schema/defaultEditBuilder.js +1 -1
- package/lib/feature-libraries/default-schema/defaultEditBuilder.js.map +1 -1
- package/lib/feature-libraries/default-schema/defaultFieldKinds.d.ts.map +1 -1
- package/lib/feature-libraries/default-schema/defaultFieldKinds.js +1 -0
- package/lib/feature-libraries/default-schema/defaultFieldKinds.js.map +1 -1
- package/lib/feature-libraries/editableTreeBinder.js +1 -1
- package/lib/feature-libraries/editableTreeBinder.js.map +1 -1
- package/lib/feature-libraries/flex-map-tree/mapTreeNode.d.ts +1 -10
- package/lib/feature-libraries/flex-map-tree/mapTreeNode.d.ts.map +1 -1
- package/lib/feature-libraries/flex-map-tree/mapTreeNode.js +2 -74
- package/lib/feature-libraries/flex-map-tree/mapTreeNode.js.map +1 -1
- package/lib/feature-libraries/flex-tree/flexTreeTypes.d.ts +1 -51
- package/lib/feature-libraries/flex-tree/flexTreeTypes.d.ts.map +1 -1
- package/lib/feature-libraries/flex-tree/flexTreeTypes.js +0 -2
- package/lib/feature-libraries/flex-tree/flexTreeTypes.js.map +1 -1
- package/lib/feature-libraries/flex-tree/index.d.ts +3 -2
- package/lib/feature-libraries/flex-tree/index.d.ts.map +1 -1
- package/lib/feature-libraries/flex-tree/index.js +2 -1
- package/lib/feature-libraries/flex-tree/index.js.map +1 -1
- package/lib/feature-libraries/flex-tree/lazyEntity.d.ts +1 -2
- package/lib/feature-libraries/flex-tree/lazyEntity.d.ts.map +1 -1
- package/lib/feature-libraries/flex-tree/lazyEntity.js.map +1 -1
- package/lib/feature-libraries/flex-tree/lazyField.d.ts +1 -6
- package/lib/feature-libraries/flex-tree/lazyField.d.ts.map +1 -1
- package/lib/feature-libraries/flex-tree/lazyField.js +13 -34
- package/lib/feature-libraries/flex-tree/lazyField.js.map +1 -1
- package/lib/feature-libraries/flex-tree/lazyNode.d.ts +1 -5
- package/lib/feature-libraries/flex-tree/lazyNode.d.ts.map +1 -1
- package/lib/feature-libraries/flex-tree/lazyNode.js +3 -33
- package/lib/feature-libraries/flex-tree/lazyNode.js.map +1 -1
- package/lib/feature-libraries/forest-summary/forestSummarizer.d.ts.map +1 -1
- package/lib/feature-libraries/forest-summary/forestSummarizer.js +1 -1
- package/lib/feature-libraries/forest-summary/forestSummarizer.js.map +1 -1
- package/lib/feature-libraries/index.d.ts +3 -3
- package/lib/feature-libraries/index.d.ts.map +1 -1
- package/lib/feature-libraries/index.js +3 -3
- package/lib/feature-libraries/index.js.map +1 -1
- package/lib/feature-libraries/modular-schema/crossFieldQueries.d.ts +11 -0
- package/lib/feature-libraries/modular-schema/crossFieldQueries.d.ts.map +1 -1
- package/lib/feature-libraries/modular-schema/crossFieldQueries.js.map +1 -1
- package/lib/feature-libraries/modular-schema/discrepancies.d.ts +96 -0
- package/lib/feature-libraries/modular-schema/discrepancies.d.ts.map +1 -0
- package/lib/feature-libraries/modular-schema/discrepancies.js +260 -0
- package/lib/feature-libraries/modular-schema/discrepancies.js.map +1 -0
- package/lib/feature-libraries/modular-schema/fieldChangeHandler.d.ts +9 -2
- package/lib/feature-libraries/modular-schema/fieldChangeHandler.d.ts.map +1 -1
- package/lib/feature-libraries/modular-schema/fieldChangeHandler.js.map +1 -1
- package/lib/feature-libraries/modular-schema/genericFieldKind.d.ts.map +1 -1
- package/lib/feature-libraries/modular-schema/genericFieldKind.js +3 -0
- package/lib/feature-libraries/modular-schema/genericFieldKind.js.map +1 -1
- package/lib/feature-libraries/modular-schema/index.d.ts +2 -1
- package/lib/feature-libraries/modular-schema/index.d.ts.map +1 -1
- package/lib/feature-libraries/modular-schema/index.js +1 -0
- package/lib/feature-libraries/modular-schema/index.js.map +1 -1
- package/lib/feature-libraries/modular-schema/modularChangeCodecs.d.ts.map +1 -1
- package/lib/feature-libraries/modular-schema/modularChangeCodecs.js +42 -26
- package/lib/feature-libraries/modular-schema/modularChangeCodecs.js.map +1 -1
- package/lib/feature-libraries/modular-schema/modularChangeFamily.d.ts +51 -2
- package/lib/feature-libraries/modular-schema/modularChangeFamily.d.ts.map +1 -1
- package/lib/feature-libraries/modular-schema/modularChangeFamily.js +826 -247
- package/lib/feature-libraries/modular-schema/modularChangeFamily.js.map +1 -1
- package/lib/feature-libraries/modular-schema/modularChangeFormat.d.ts.map +1 -1
- package/lib/feature-libraries/modular-schema/modularChangeFormat.js +2 -0
- package/lib/feature-libraries/modular-schema/modularChangeFormat.js.map +1 -1
- package/lib/feature-libraries/modular-schema/modularChangeTypes.d.ts +44 -1
- package/lib/feature-libraries/modular-schema/modularChangeTypes.d.ts.map +1 -1
- package/lib/feature-libraries/modular-schema/modularChangeTypes.js.map +1 -1
- package/lib/feature-libraries/node-key/index.d.ts +0 -1
- package/lib/feature-libraries/node-key/index.d.ts.map +1 -1
- package/lib/feature-libraries/node-key/index.js +0 -1
- package/lib/feature-libraries/node-key/index.js.map +1 -1
- package/lib/feature-libraries/object-forest/objectForest.d.ts +3 -2
- package/lib/feature-libraries/object-forest/objectForest.d.ts.map +1 -1
- package/lib/feature-libraries/object-forest/objectForest.js +5 -4
- package/lib/feature-libraries/object-forest/objectForest.js.map +1 -1
- package/lib/feature-libraries/optional-field/optionalField.d.ts.map +1 -1
- package/lib/feature-libraries/optional-field/optionalField.js +1 -0
- package/lib/feature-libraries/optional-field/optionalField.js.map +1 -1
- package/lib/feature-libraries/sequence-field/index.d.ts +1 -1
- package/lib/feature-libraries/sequence-field/index.d.ts.map +1 -1
- package/lib/feature-libraries/sequence-field/index.js +1 -1
- package/lib/feature-libraries/sequence-field/index.js.map +1 -1
- package/lib/feature-libraries/sequence-field/invert.js +1 -1
- package/lib/feature-libraries/sequence-field/invert.js.map +1 -1
- package/lib/feature-libraries/sequence-field/rebase.js +6 -1
- package/lib/feature-libraries/sequence-field/rebase.js.map +1 -1
- package/lib/feature-libraries/sequence-field/sequenceFieldChangeHandler.d.ts.map +1 -1
- package/lib/feature-libraries/sequence-field/sequenceFieldChangeHandler.js +2 -1
- package/lib/feature-libraries/sequence-field/sequenceFieldChangeHandler.js.map +1 -1
- package/lib/feature-libraries/sequence-field/utils.d.ts +2 -17
- package/lib/feature-libraries/sequence-field/utils.d.ts.map +1 -1
- package/lib/feature-libraries/sequence-field/utils.js +31 -39
- package/lib/feature-libraries/sequence-field/utils.js.map +1 -1
- package/lib/feature-libraries/typed-schema/typedTreeSchema.d.ts +1 -0
- package/lib/feature-libraries/typed-schema/typedTreeSchema.d.ts.map +1 -1
- package/lib/feature-libraries/typed-schema/typedTreeSchema.js +4 -2
- package/lib/feature-libraries/typed-schema/typedTreeSchema.js.map +1 -1
- package/lib/index.d.ts +1 -1
- package/lib/index.d.ts.map +1 -1
- package/lib/index.js.map +1 -1
- 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 +1 -1
- package/lib/shared-tree/schematizingTreeView.d.ts +4 -2
- package/lib/shared-tree/schematizingTreeView.d.ts.map +1 -1
- package/lib/shared-tree/schematizingTreeView.js +242 -185
- package/lib/shared-tree/schematizingTreeView.js.map +1 -1
- package/lib/shared-tree/sharedTree.d.ts +5 -1
- package/lib/shared-tree/sharedTree.d.ts.map +1 -1
- package/lib/shared-tree/sharedTree.js +158 -90
- package/lib/shared-tree/sharedTree.js.map +1 -1
- package/lib/shared-tree/sharedTreeChangeEnricher.js +1 -1
- package/lib/shared-tree/sharedTreeChangeEnricher.js.map +1 -1
- package/lib/shared-tree/treeApi.js +1 -1
- package/lib/shared-tree/treeApi.js.map +1 -1
- package/lib/shared-tree/treeCheckout.d.ts +10 -1
- package/lib/shared-tree/treeCheckout.d.ts.map +1 -1
- package/lib/shared-tree/treeCheckout.js +47 -3
- package/lib/shared-tree/treeCheckout.js.map +1 -1
- package/lib/shared-tree/treeView.d.ts.map +1 -1
- package/lib/shared-tree/treeView.js +4 -0
- package/lib/shared-tree/treeView.js.map +1 -1
- package/lib/shared-tree-core/branch.d.ts +6 -0
- package/lib/shared-tree-core/branch.d.ts.map +1 -1
- package/lib/shared-tree-core/branch.js +3 -0
- package/lib/shared-tree-core/branch.js.map +1 -1
- package/lib/shared-tree-core/sharedTreeCore.d.ts +8 -6
- package/lib/shared-tree-core/sharedTreeCore.d.ts.map +1 -1
- package/lib/shared-tree-core/sharedTreeCore.js +273 -210
- package/lib/shared-tree-core/sharedTreeCore.js.map +1 -1
- package/lib/simple-tree/arrayNode.d.ts +4 -0
- package/lib/simple-tree/arrayNode.d.ts.map +1 -1
- package/lib/simple-tree/arrayNode.js +39 -22
- package/lib/simple-tree/arrayNode.js.map +1 -1
- package/lib/simple-tree/index.d.ts +3 -3
- package/lib/simple-tree/index.d.ts.map +1 -1
- package/lib/simple-tree/index.js +1 -1
- package/lib/simple-tree/index.js.map +1 -1
- package/lib/simple-tree/leafNodeSchema.d.ts +22 -1
- package/lib/simple-tree/leafNodeSchema.d.ts.map +1 -1
- package/lib/simple-tree/leafNodeSchema.js +1 -1
- package/lib/simple-tree/leafNodeSchema.js.map +1 -1
- package/lib/simple-tree/mapNode.d.ts.map +1 -1
- package/lib/simple-tree/mapNode.js.map +1 -1
- package/lib/simple-tree/objectNode.d.ts.map +1 -1
- package/lib/simple-tree/objectNode.js +3 -2
- package/lib/simple-tree/objectNode.js.map +1 -1
- package/lib/simple-tree/proxies.d.ts.map +1 -1
- package/lib/simple-tree/proxies.js +9 -25
- package/lib/simple-tree/proxies.js.map +1 -1
- package/lib/simple-tree/proxyBinding.d.ts +4 -0
- package/lib/simple-tree/proxyBinding.d.ts.map +1 -1
- package/lib/simple-tree/proxyBinding.js +19 -0
- package/lib/simple-tree/proxyBinding.js.map +1 -1
- package/lib/simple-tree/schemaFactory.d.ts +16 -1
- package/lib/simple-tree/schemaFactory.d.ts.map +1 -1
- package/lib/simple-tree/schemaFactory.js +30 -3
- package/lib/simple-tree/schemaFactory.js.map +1 -1
- package/lib/simple-tree/schemaTypes.d.ts +36 -1
- package/lib/simple-tree/schemaTypes.d.ts.map +1 -1
- package/lib/simple-tree/schemaTypes.js.map +1 -1
- package/lib/simple-tree/toFlexSchema.d.ts +2 -2
- package/lib/simple-tree/toFlexSchema.d.ts.map +1 -1
- package/lib/simple-tree/toFlexSchema.js +3 -2
- package/lib/simple-tree/toFlexSchema.js.map +1 -1
- package/lib/simple-tree/tree.d.ts +4 -1
- package/lib/simple-tree/tree.d.ts.map +1 -1
- package/lib/simple-tree/tree.js +44 -0
- package/lib/simple-tree/tree.js.map +1 -1
- package/lib/simple-tree/treeNodeApi.d.ts +2 -75
- package/lib/simple-tree/treeNodeApi.d.ts.map +1 -1
- package/lib/simple-tree/treeNodeApi.js +20 -28
- package/lib/simple-tree/treeNodeApi.js.map +1 -1
- package/lib/simple-tree/treeNodeKernel.d.ts +26 -0
- package/lib/simple-tree/treeNodeKernel.d.ts.map +1 -0
- package/lib/simple-tree/treeNodeKernel.js +79 -0
- package/lib/simple-tree/treeNodeKernel.js.map +1 -0
- package/lib/simple-tree/types.d.ts +95 -3
- package/lib/simple-tree/types.d.ts.map +1 -1
- package/lib/simple-tree/types.js +121 -22
- package/lib/simple-tree/types.js.map +1 -1
- package/lib/util/breakable.d.ts +83 -0
- package/lib/util/breakable.d.ts.map +1 -0
- package/lib/util/breakable.js +171 -0
- package/lib/util/breakable.js.map +1 -0
- package/lib/util/index.d.ts +3 -2
- package/lib/util/index.d.ts.map +1 -1
- package/lib/util/index.js +3 -2
- package/lib/util/index.js.map +1 -1
- package/lib/util/nestedMap.d.ts +17 -3
- package/lib/util/nestedMap.d.ts.map +1 -1
- package/lib/util/nestedMap.js +19 -0
- package/lib/util/nestedMap.js.map +1 -1
- package/lib/util/utils.d.ts +7 -0
- package/lib/util/utils.d.ts.map +1 -1
- package/lib/util/utils.js +13 -0
- package/lib/util/utils.js.map +1 -1
- package/package.json +29 -27
- package/src/core/forest/editableForest.ts +25 -4
- package/src/core/index.ts +2 -0
- package/src/core/rebase/index.ts +2 -0
- package/src/core/rebase/types.ts +17 -0
- package/src/core/tree/anchorSet.ts +14 -0
- package/src/core/tree/detachedFieldIndex.ts +217 -35
- package/src/core/tree/detachedFieldIndexCodec.ts +17 -8
- package/src/core/tree/detachedFieldIndexFormat.ts +1 -1
- package/src/core/tree/detachedFieldIndexTypes.ts +41 -5
- package/src/core/tree/index.ts +2 -1
- package/src/core/tree/visitDelta.ts +58 -16
- package/src/core/tree/visitorUtils.ts +7 -4
- package/src/events/events.ts +4 -2
- package/src/feature-libraries/default-schema/defaultEditBuilder.ts +1 -1
- package/src/feature-libraries/default-schema/defaultFieldKinds.ts +1 -0
- package/src/feature-libraries/editableTreeBinder.ts +1 -1
- package/src/feature-libraries/flex-map-tree/mapTreeNode.ts +1 -95
- package/src/feature-libraries/flex-tree/flexTreeTypes.ts +0 -62
- package/src/feature-libraries/flex-tree/index.ts +7 -2
- package/src/feature-libraries/flex-tree/lazyEntity.ts +0 -3
- package/src/feature-libraries/flex-tree/lazyField.ts +15 -47
- package/src/feature-libraries/flex-tree/lazyNode.ts +1 -48
- package/src/feature-libraries/forest-summary/forestSummarizer.ts +1 -0
- package/src/feature-libraries/index.ts +4 -2
- package/src/feature-libraries/modular-schema/crossFieldQueries.ts +18 -0
- package/src/feature-libraries/modular-schema/discrepancies.ts +395 -0
- package/src/feature-libraries/modular-schema/fieldChangeHandler.ts +10 -2
- package/src/feature-libraries/modular-schema/genericFieldKind.ts +3 -0
- package/src/feature-libraries/modular-schema/index.ts +2 -0
- package/src/feature-libraries/modular-schema/modularChangeCodecs.ts +81 -35
- package/src/feature-libraries/modular-schema/modularChangeFamily.ts +1521 -444
- package/src/feature-libraries/modular-schema/modularChangeFormat.ts +2 -0
- package/src/feature-libraries/modular-schema/modularChangeTypes.ts +51 -0
- package/src/feature-libraries/node-key/index.ts +0 -1
- package/src/feature-libraries/object-forest/objectForest.ts +7 -3
- package/src/feature-libraries/optional-field/optionalField.ts +1 -0
- package/src/feature-libraries/sequence-field/index.ts +0 -2
- package/src/feature-libraries/sequence-field/invert.ts +1 -1
- package/src/feature-libraries/sequence-field/rebase.ts +7 -1
- package/src/feature-libraries/sequence-field/sequenceFieldChangeHandler.ts +2 -1
- package/src/feature-libraries/sequence-field/utils.ts +37 -85
- package/src/feature-libraries/typed-schema/typedTreeSchema.ts +10 -0
- package/src/index.ts +0 -1
- package/src/packageVersion.ts +1 -1
- package/src/shared-tree/schematizingTreeView.ts +6 -2
- package/src/shared-tree/sharedTree.ts +12 -1
- package/src/shared-tree/sharedTreeChangeEnricher.ts +1 -1
- package/src/shared-tree/treeApi.ts +1 -1
- package/src/shared-tree/treeCheckout.ts +60 -5
- package/src/shared-tree/treeView.ts +5 -0
- package/src/shared-tree-core/branch.ts +10 -0
- package/src/shared-tree-core/sharedTreeCore.ts +25 -6
- package/src/simple-tree/arrayNode.ts +50 -23
- package/src/simple-tree/index.ts +3 -3
- package/src/simple-tree/leafNodeSchema.ts +1 -1
- package/src/simple-tree/mapNode.ts +2 -2
- package/src/simple-tree/objectNode.ts +9 -3
- package/src/simple-tree/proxies.ts +10 -33
- package/src/simple-tree/proxyBinding.ts +23 -0
- package/src/simple-tree/schemaFactory.ts +37 -2
- package/src/simple-tree/schemaTypes.ts +36 -1
- package/src/simple-tree/toFlexSchema.ts +5 -4
- package/src/simple-tree/tree.ts +68 -4
- package/src/simple-tree/treeNodeApi.ts +29 -111
- package/src/simple-tree/treeNodeKernel.ts +91 -0
- package/src/simple-tree/types.ts +292 -31
- package/src/util/breakable.ts +214 -0
- package/src/util/index.ts +11 -0
- package/src/util/nestedMap.ts +33 -3
- package/src/util/utils.ts +17 -0
- package/dist/feature-libraries/node-key/nodeKeyIndex.d.ts +0 -41
- package/dist/feature-libraries/node-key/nodeKeyIndex.d.ts.map +0 -1
- package/dist/feature-libraries/node-key/nodeKeyIndex.js +0 -101
- package/dist/feature-libraries/node-key/nodeKeyIndex.js.map +0 -1
- package/lib/feature-libraries/node-key/nodeKeyIndex.d.ts +0 -41
- package/lib/feature-libraries/node-key/nodeKeyIndex.d.ts.map +0 -1
- package/lib/feature-libraries/node-key/nodeKeyIndex.js +0 -97
- package/lib/feature-libraries/node-key/nodeKeyIndex.js.map +0 -1
- package/src/feature-libraries/node-key/nodeKeyIndex.ts +0 -132
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"lazyField.js","sourceRoot":"","sources":["../../../src/feature-libraries/flex-tree/lazyField.ts"],"names":[],"mappings":";AAAA;;;GAGG;;;AAEH,kEAA6D;AAE7D,kDAY6B;AAC7B,kDAM6B;AAC7B,4CAA4C;AAC5C,kEAA0F;AAC1F,yDAKoC;AACpC,0DAA4D;AAK5D,yDAe4B;AAC5B,mDAOyB;AACzB,+CAA4D;AAC5D,6CAA4C;AAC5C,iDAIwB;AACxB,uEAAsE;AAEtE;;;;;;;;;;;;;GAaG;AACH,MAAM,UAAU,GAAwD,IAAI,OAAO,EAAE,CAAC;AAEtF,SAAgB,SAAS,CACxB,OAAgB,EAChB,MAAuB,EACvB,MAA+B;IAE/B,MAAM,WAAW,GAAG,MAAM,CAAC,gBAAgB,EAAE,CAAC;IAC9C,IAAI,UAAU,GAAG,KAAK,CAAC;IAEvB,MAAM,iBAAiB,GAAG,GAAkB,EAAE;QAC7C,UAAU,GAAG,IAAI,CAAC;QAClB,MAAM,KAAK,GAAG,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,IAAA,eAAI,EAAC,8BAA8B,CAAC,CAAC,CACvF,OAAO,EACP,MAAM,EACN,MAAM,EACN,WAAW,CACX,CAAC;QACF,OAAO,KAAK,CAAC;IACd,CAAC,CAAC;IAEF,IAAI,WAAW,CAAC,MAAM,KAAK,SAAS,EAAE,CAAC;QACtC,OAAO,iBAAiB,EAAE,CAAC;IAC5B,CAAC;IAED,oGAAoG;IACpG,MAAM,UAAU,GACf,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,WAAW,CAAC,MAAM,CAAC,IAAI,IAAA,eAAI,EAAC,gBAAgB,CAAC,CAAC;IAEtF,2HAA2H;IAC3H,MAAM,QAAQ,GAAG,UAAU,CAAC,KAAK,CAAC,GAAG,CAAC,+BAAY,CAAC,CAAC;IAEpD,yIAAyI;IACzI,IAAI,QAAQ,KAAK,SAAS,EAAE,CAAC;QAC5B,OAAO,iBAAiB,EAAE,CAAC;IAC5B,CAAC;IAED,MAAM,UAAU,GAAG,IAAA,sBAAW,EAC7B,UAAU,EACV,QAAQ,EACR,GAAG,EAAE,CAAC,IAAI,GAAG,EAA2B,CACxC,CAAC;IACF,MAAM,MAAM,GAAG,IAAA,sBAAW,EAAC,UAAU,EAAE,WAAW,CAAC,QAAQ,EAAE,iBAAiB,CAAC,CAAC;IAChF,IAAI,CAAC,UAAU,EAAE,CAAC;QACjB,4EAA4E;QAC5E,8GAA8G;QAC9G,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC;IAC5D,CAAC;IACD,OAAO,MAAM,CAAC;AACf,CAAC;AA/CD,8BA+CC;AAED;;;GAGG;AACH,MAAsB,SAIrB,SAAQ,0BAAuD;IAG/D,IAAW,CAAC,iCAAc,CAAC;QAC1B,OAAO,qCAAkB,CAAC,KAAK,CAAC;IACjC,CAAC;IASD,YACC,OAAgB,EAChB,MAAsC,EACtC,MAA+B,EAC/B,WAAwB;QAExB,KAAK,CAAC,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,WAAW,CAAC,CAAC;QAC5C,IAAA,iBAAM,EAAC,MAAM,CAAC,IAAI,sCAA8B,EAAE,KAAK,CAAC,4BAA4B,CAAC,CAAC;QACtF,IAAI,CAAC,GAAG,GAAG,MAAM,CAAC,WAAW,EAAE,CAAC;QAChC,sDAAsD;QACtD,8GAA8G;QAC9G,IAAI,WAAW,CAAC,MAAM,KAAK,SAAS,EAAE,CAAC;YACtC,MAAM,UAAU,GACf,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,WAAW,CAAC,MAAM,CAAC;gBAC1D,IAAA,eAAI,EAAC,oEAAoE,CAAC,CAAC;YAC5E,IAAI,CAAC,eAAe,GAAG,UAAU,CAAC,EAAE,CAAC,cAAc,EAAE,GAAG,EAAE;gBACzD,IAAI,CAAC,wBAAa,CAAC,EAAE,CAAC;YACvB,CAAC,CAAC,CAAC;QACJ,CAAC;IACF,CAAC;IAEM,EAAE,CACR,MAAe;QAEf,IAAA,iBAAM,EACL,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,MAAM,CAAC,UAAU,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,KAAK,MAAM,CAAC,IAAI,EACjF,KAAK,CAAC,kEAAkE,CACxE,CAAC;QAEF,OAAO,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;IACnC,CAAC;IAEM,QAAQ,CAAC,KAAoB;QACnC,IAAA,iBAAM,EACL,KAAK,CAAC,OAAO,KAAK,IAAI,CAAC,OAAO,EAC9B,KAAK,CAAC,mEAAmE,CACzE,CAAC;QACF,OAAO,IAAI,CAAC,GAAG,KAAK,KAAK,CAAC,GAAG,IAAI,IAAI,CAAC,MAAM,KAAK,KAAK,CAAC,MAAM,CAAC;IAC/D,CAAC;IAED,IAAW,MAAM;QAChB,IAAI,IAAI,CAAC,4BAAY,CAAC,CAAC,MAAM,KAAK,SAAS,EAAE,CAAC;YAC7C,OAAO,SAAS,CAAC;QAClB,CAAC;QAED,MAAM,MAAM,GAAG,IAAI,CAAC,4BAAY,CAAC,CAAC;QAClC,MAAM,CAAC,SAAS,EAAE,CAAC;QACnB,MAAM,MAAM,GAAG,IAAA,sBAAQ,EAAC,IAAI,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;QAC9C,MAAM,CAAC,UAAU,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QAC5B,OAAO,MAAM,CAAC;IACf,CAAC;IAEkB,CAAC,2CAA2B,CAAC,CAC/C,MAA+B;QAE/B,OAAO,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAC,oBAAoB,CAAC,IAAI,CAAC,4BAAY,CAAC,EAAE,MAAM,CAAC,CAAC;IACtF,CAAC;IAEkB,CAAC,kCAAkB,CAAC;QACtC,IAAI,CAAC,eAAe,EAAE,EAAE,CAAC;QACzB,IAAI,IAAI,CAAC,4BAAY,CAAC,CAAC,MAAM,KAAK,SAAS;YAAE,OAAO;QACpD,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,4BAAY,CAAC,CAAC,MAAM,CAAC,CAAC;IACxE,CAAC;IAED,IAAW,MAAM;QAChB,OAAO,IAAI,CAAC,4BAAY,CAAC,CAAC,cAAc,EAAE,CAAC;IAC5C,CAAC;IAEM,OAAO,CAAC,KAAa;QAC3B,OAAO,IAAA,uBAAY,EAAC,IAAI,CAAC,4BAAY,CAAC,EAAE,KAAK,EAAE,CAAC,MAAM,EAAE,EAAE,CACzD,IAAA,yBAAY,EAAC,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,MAAM,EAAE,MAAM,CAAC,CAC/C,CAAC;IACH,CAAC;IAEM,OAAO,CAAC,KAAa;QAC3B,MAAM,UAAU,GAAG,IAAA,yBAAU,EAAC,KAAK,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC;QAElD,IAAI,UAAU,KAAK,SAAS,EAAE,CAAC;YAC9B,OAAO,SAAS,CAAC;QAClB,CAAC;QAED,OAAO,IAAA,uBAAY,EAAC,IAAI,CAAC,4BAAY,CAAC,EAAE,UAAU,EAAE,CAAC,MAAM,EAAE,EAAE,CAC9D,IAAA,sBAAQ,EAAC,IAAI,CAAC,OAAO,EAAE,MAAM,CAAC,CACe,CAAC;IAChD,CAAC;IAEM,GAAG,CAAI,UAAuE;QACpF,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,EAAE,UAAU,CAAC,CAAC;IACrC,CAAC;IAEM,QAAQ,CACd,UAAuE;QAEvE,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,aAAa,EAAE,EAAE,UAAU,CAAC,CAAC;IACrD,CAAC;IAEM,aAAa;QACnB,OAAO,IAAA,6BAAkB,EACxB,IAAI,CAAC,4BAAY,CAAC,EAClB,CAAC,MAAM,EAAE,EAAE,CAAC,IAAA,sBAAQ,EAAC,IAAI,CAAC,OAAO,EAAE,MAAM,CAA8C,CACvF,CAAC;IACH,CAAC;IAEM,CAAC,MAAM,CAAC,QAAQ,CAAC;QACvB,OAAO,IAAA,6BAAkB,EAAC,IAAI,CAAC,4BAAY,CAAC,EAAE,CAAC,MAAM,EAAE,EAAE,CACxD,IAAA,yBAAY,EAAC,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,MAAM,EAAE,MAAM,CAAC,CAC/C,CAAC;IACH,CAAC;IAEM,UAAU;QAChB,IAAI,IAAI,CAAC,6BAAa,CAAC,EAAE,EAAE,CAAC;YAC3B,OAAO,6BAAU,CAAC,OAAO,CAAC;QAC3B,CAAC;QACD,MAAM,WAAW,GAAG,IAAI,CAAC,4BAAY,CAAC,CAAC;QACvC,MAAM,YAAY,GAAG,WAAW,CAAC,MAAM,CAAC;QACxC,2DAA2D;QAC3D,IAAI,YAAY,KAAK,SAAS,EAAE,CAAC;YAChC,OAAO,IAAA,0CAA2B,EAAC,IAAA,6BAAkB,EAAC,WAAW,CAAC,QAAQ,CAAC,CAAC,CAAC;QAC9E,CAAC;QACD,MAAM,gBAAgB,GAAG,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC;QAEnF,4FAA4F;QAC5F,IAAA,iBAAM,EAAC,gBAAgB,KAAK,SAAS,EAAE,KAAK,CAAC,kCAAkC,CAAC,CAAC;QACjF,OAAO,IAAA,wCAAyB,EAAC,gBAAgB,CAAC,CAAC;IACpD,CAAC;IAEM,YAAY;QAClB,OAAO,IAAI,CAAC,4BAAY,CAAC,CAAC,YAAY,EAAE,CAAC;IAC1C,CAAC;IAED;;;OAGG;IACI,sBAAsB;QAC5B,IAAI,IAAI,CAAC,UAAU,EAAE,KAAK,6BAAU,CAAC,UAAU,EAAE,CAAC;YACjD,MAAM,IAAI,qBAAU,CAAC,kEAAkE,CAAC,CAAC;QAC1F,CAAC;QACD,OAAO,IAAI,CAAC,YAAY,EAAE,CAAC;IAC5B,CAAC;CACD;AA9JD,8BA8JC;AAED,MAAa,YACZ,SAAQ,SAA6C;IAGrD,YACC,OAAgB,EAChB,MAA2D,EAC3D,MAA+B,EAC/B,WAAwB;QAExB,KAAK,CAAC,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,WAAW,CAAC,CAAC;IAC7C,CAAC;IAEM,EAAE,CAAC,KAAa;QACtB,MAAM,UAAU,GAAG,IAAA,yBAAU,EAAC,KAAK,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC;QAElD,IAAI,UAAU,KAAK,SAAS,EAAE,CAAC;YAC9B,OAAO,SAAS,CAAC;QAClB,CAAC;QAED,OAAO,IAAA,uBAAY,EAAC,IAAI,CAAC,4BAAY,CAAC,EAAE,UAAU,EAAE,CAAC,MAAM,EAAE,EAAE,CAC9D,IAAA,yBAAY,EAAC,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,MAAM,EAAE,MAAM,CAAC,CAC/C,CAAC;IACH,CAAC;IACD,IAAW,OAAO;QACjB,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC;IAC3B,CAAC;IAEM,cAAc;QACpB,MAAM,SAAS,GAAG,IAAI,CAAC,sBAAsB,EAAE,CAAC;QAChD,MAAM,WAAW,GAAG,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAC,aAAa,CAAC,SAAS,CAAC,CAAC;QAC1E,OAAO,WAAW,CAAC;IACpB,CAAC;IAEM,QAAQ,CAAC,KAAa,EAAE,KAAsC;QACpE,IAAA,2BAAgB,EAAC,KAAK,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC;QACpC,MAAM,OAAO,GAA2B,IAAA,mBAAQ,EAAC,KAAK,CAAC;YACtD,CAAC,CAAC,2BAA2B,CAAC,KAAK,CAAC;YACpC,CAAC,CAAC,IAAA,wCAAqB,EACrB,KAAK,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC,IAAI,EAAE,EAAE,CAC1B,IAAA,4CAAqB,EAAC,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,MAAM,CAAC,cAAc,EAAE,IAAI,CAAC,CACrE,CACD,CAAC;QAEJ,MAAM,WAAW,GAAG,IAAI,CAAC,cAAc,EAAE,CAAC;QAC1C,WAAW,CAAC,MAAM,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;IACpC,CAAC;IAEM,aAAa,CAAC,KAAsC;QAC1D,IAAI,CAAC,QAAQ,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC;IACzB,CAAC;IAEM,WAAW,CAAC,KAAsC;QACxD,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;IACnC,CAAC;IAEM,QAAQ,CAAC,KAAa;QAC5B,MAAM,WAAW,GAAG,IAAI,CAAC,cAAc,EAAE,CAAC;QAC1C,WAAW,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;IAC9B,CAAC;IAOM,WAAW,CACjB,WAAmB,EACnB,MAAgD;QAEhD,IAAI,CAAC,iBAAiB,CAAC,CAAC,EAAE,WAAW,EAAE,WAAW,GAAG,CAAC,EAAE,MAAM,CAAC,CAAC;IACjE,CAAC;IAGM,SAAS,CACf,WAAmB,EACnB,MAAgD;QAEhD,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,MAAM,EAAE,WAAW,EAAE,WAAW,GAAG,CAAC,EAAE,MAAM,CAAC,CAAC;IAC3E,CAAC;IAOM,WAAW,CACjB,KAAa,EACb,WAAmB,EACnB,MAAgD;QAEhD,IAAI,CAAC,iBAAiB,CAAC,KAAK,EAAE,WAAW,EAAE,WAAW,GAAG,CAAC,EAAE,MAAM,CAAC,CAAC;IACrE,CAAC;IAQM,gBAAgB,CACtB,WAAmB,EACnB,SAAiB,EACjB,MAAgD;QAEhD,IAAI,CAAC,iBAAiB,CAAC,CAAC,EAAE,WAAW,EAAE,SAAS,EAAE,MAAM,CAAC,CAAC;IAC3D,CAAC;IAQM,cAAc,CACpB,WAAmB,EACnB,SAAiB,EACjB,MAAgD;QAEhD,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,MAAM,EAAE,WAAW,EAAE,SAAS,EAAE,MAAM,CAAC,CAAC;IACrE,CAAC;IASM,gBAAgB,CACtB,KAAa,EACb,WAAmB,EACnB,SAAiB,EACjB,MAAgD;QAEhD,IAAI,CAAC,iBAAiB,CAAC,KAAK,EAAE,WAAW,EAAE,SAAS,EAAE,MAAM,CAAC,CAAC;IAC/D,CAAC;IAEO,iBAAiB,CACxB,KAAa,EACb,WAAmB,EACnB,SAAiB,EACjB,MAAgD;QAEhD,MAAM,WAAW,GAAG,MAAM,KAAK,SAAS,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;QAE1F,mEAAmE;QACnE,IAAA,iBAAM,EACL,WAAW,YAAY,YAAY,EACnC,KAAK,CAAC,0CAA0C,CAChD,CAAC;QACF,IAAA,kCAAuB,EAAC,WAAW,EAAE,SAAS,EAAE,WAAW,CAAC,CAAC;QAC7D,IAAI,IAAI,CAAC,MAAM,CAAC,KAAK,KAAK,SAAS,IAAI,WAAW,KAAK,IAAI,EAAE,CAAC;YAC7D,KAAK,IAAI,CAAC,GAAG,WAAW,EAAE,CAAC,GAAG,SAAS,EAAE,CAAC,EAAE,EAAE,CAAC;gBAC9C,MAAM,UAAU,GACf,WAAW,CAAC,OAAO,CAAC,WAAW,CAAC,IAAI,IAAA,eAAI,EAAC,gCAAgC,CAAC,CAAC;gBAC5E,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,UAAU,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC;oBACpD,MAAM,IAAI,KAAK,CAAC,wDAAwD,CAAC,CAAC;gBAC3E,CAAC;YACF,CAAC;QACF,CAAC;QACD,MAAM,UAAU,GAAG,SAAS,GAAG,WAAW,CAAC;QAC3C,IAAA,2BAAgB,EAAC,KAAK,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC;QACpC,MAAM,eAAe,GAAG,WAAW,CAAC,YAAY,EAAE,CAAC;QACnD,MAAM,oBAAoB,GAAG,IAAI,CAAC,YAAY,EAAE,CAAC;QACjD,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,CAChC,eAAe,EACf,WAAW,EACX,UAAU,EACV,oBAAoB,EACpB,KAAK,CACL,CAAC;IACH,CAAC;CACD;AA7KD,oCA6KC;AAED,MAAa,sBACZ,SAAQ,SAA6C;IAGrD,YACC,OAAgB,EAChB,MAA2D,EAC3D,MAA+B,EAC/B,WAAwB;QAExB,KAAK,CAAC,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,WAAW,CAAC,CAAC;IAC7C,CAAC;IAED,IAAW,OAAO;QACjB,OAAO,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;IACxB,CAAC;IAED,IAAW,OAAO,CAAC,UAAuC;QACzD,IAAA,eAAI,EAAC,sCAAsC,CAAC,CAAC;IAC9C,CAAC;IAED,IAAW,YAAY;QACtB,OAAO,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,IAAA,eAAI,EAAC,6BAA6B,CAAC,CAAC;IAC/D,CAAC;CACD;AAxBD,wDAwBC;AAED,MAAa,cACZ,SAAQ,sBAA8B;IAGtC,YACC,OAAgB,EAChB,MAA2D,EAC3D,MAA+B,EAC/B,WAAwB;QAExB,KAAK,CAAC,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,WAAW,CAAC,CAAC;IAC7C,CAAC;IAEO,gBAAgB;QACvB,MAAM,SAAS,GAAG,IAAI,CAAC,sBAAsB,EAAE,CAAC;QAChD,MAAM,WAAW,GAAG,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC;QACvE,OAAO,WAAW,CAAC;IACpB,CAAC;IAED,IAAoB,OAAO;QAC1B,OAAO,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;IACxB,CAAC;IAED,IAAoB,OAAO,CAAC,UAAuC;QAClE,MAAM,OAAO,GAA6B,IAAA,mBAAQ,EAAC,UAAU,CAAC;YAC7D,CAAC,CAAC,0BAA0B,CAAC,UAAU,CAAC;YACxC,CAAC,CAAC,CAAC,IAAA,+CAAwB,EAAC,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,MAAM,CAAC,cAAc,EAAE,UAAU,CAAC,CAAC,CAAC;QACpF,MAAM,WAAW,GAAG,IAAI,CAAC,gBAAgB,EAAE,CAAC;QAC5C,IAAA,iBAAM,EAAC,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE,KAAK,CAAC,sDAAsD,CAAC,CAAC;QAC3F,WAAW,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC;IAC7B,CAAC;IAED,IAAoB,YAAY;QAC/B,OAAO,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,IAAA,eAAI,EAAC,6BAA6B,CAAC,CAAC;IAC/D,CAAC;CACD;AAnCD,wCAmCC;AAED,MAAa,mBACZ,SAAQ,sBAA8B;IAGtC,YACC,OAAgB,EAChB,MAA2D,EAC3D,MAA+B,EAC/B,WAAwB;QAExB,KAAK,CAAC,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,WAAW,CAAC,CAAC;IAC7C,CAAC;CACD;AAZD,kDAYC;AAED,MAAa,iBACZ,SAAQ,SAA6C;IAGrD,YACC,OAAgB,EAChB,MAA2D,EAC3D,MAA+B,EAC/B,WAAwB;QAExB,KAAK,CAAC,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,WAAW,CAAC,CAAC;IAC7C,CAAC;IAEO,cAAc;QACrB,MAAM,SAAS,GAAG,IAAI,CAAC,sBAAsB,EAAE,CAAC;QAChD,MAAM,WAAW,GAAG,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAC,aAAa,CAAC,SAAS,CAAC,CAAC;QAC1E,OAAO,WAAW,CAAC;IACpB,CAAC;IAED,IAAW,OAAO;QACjB,OAAO,IAAI,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;IACxD,CAAC;IAED,IAAW,OAAO,CAAC,UAAmD;QACrE,MAAM,OAAO,GACZ,UAAU,KAAK,SAAS;YACvB,CAAC,CAAC,EAAE;YACJ,CAAC,CAAC,IAAA,mBAAQ,EAAC,UAAU,CAAC;gBACrB,CAAC,CAAC,0BAA0B,CAAC,UAAU,CAAC;gBACxC,CAAC,CAAC,CAAC,IAAA,+CAAwB,EAAC,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,MAAM,CAAC,cAAc,EAAE,UAAU,CAAC,CAAC,CAAC;QACtF,MAAM,WAAW,GAAG,IAAI,CAAC,cAAc,EAAE,CAAC;QAC1C,IAAA,iBAAM,EACL,OAAO,CAAC,MAAM,IAAI,CAAC,EACnB,KAAK,CAAC,8DAA8D,CACpE,CAAC;QACF,WAAW,CAAC,GAAG,CAAC,OAAO,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC;IACnF,CAAC;IAED,IAAW,YAAY;QACtB,OAAO,IAAI,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;IACxD,CAAC;CACD;AAzCD,8CAyCC;AAED,MAAa,kBAAoD,SAAQ,SAGxE;CAAG;AAHJ,gDAGI;AAaJ,MAAM,WAAW,GAA+B;IAC/C,CAAC,qBAAU,CAAC,SAAS,EAAE,kBAAkB,CAAC;IAC1C,CAAC,qBAAU,CAAC,QAAQ,EAAE,iBAAiB,CAAC;IACxC,CAAC,qBAAU,CAAC,QAAQ,EAAE,YAAY,CAAC;IACnC,CAAC,qBAAU,CAAC,QAAQ,EAAE,cAAc,CAAC;IACrC,CAAC,qBAAU,CAAC,UAAU,EAAE,mBAAmB,CAAC;CAC5C,CAAC;AAEF,MAAM,WAAW,GAAwC,IAAI,GAAG,CAAC,WAAW,CAAC,CAAC;AAE9E;;GAEG;AACH,SAAS,2BAA2B,CAAC,MAA8B;IAClE,oDAAoD;IAEpD,IAAA,iBAAM,EAAC,MAAM,CAAC,IAAI,sCAA8B,EAAE,KAAK,CAAC,8BAA8B,CAAC,CAAC;IACxF,OAAO,MAAM,CAAC;AACf,CAAC;AAED;;GAEG;AACH,SAAS,0BAA0B,CAAC,MAA8B;IACjE,oDAAoD;IAEpD,IAAA,iBAAM,EAAC,MAAM,CAAC,IAAI,qCAA6B,EAAE,KAAK,CAAC,6BAA6B,CAAC,CAAC;IACtF,OAAO,CAAC,MAAM,CAAC,CAAC;AACjB,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\";\n\nimport {\n\tCursorLocationType,\n\ttype FieldAnchor,\n\ttype FieldKey,\n\ttype FieldUpPath,\n\ttype ITreeCursorSynchronous,\n\ttype ITreeSubscriptionCursor,\n\ttype TreeNavigationResult,\n\tinCursorNode,\n\tisCursor,\n\titerateCursorField,\n\tkeyAsDetachedField,\n} from \"../../core/index.js\";\nimport {\n\tassertValidIndex,\n\tassertValidRangeIndices,\n\tdisposeSymbol,\n\tfail,\n\tgetOrCreate,\n} from \"../../util/index.js\";\n// TODO: stop depending on contextuallyTyped\nimport { applyTypesFromContext, cursorFromContextualData } from \"../contextuallyTyped.js\";\nimport {\n\tFieldKinds,\n\ttype OptionalFieldEditBuilder,\n\ttype SequenceFieldEditBuilder,\n\ttype ValueFieldEditBuilder,\n} from \"../default-schema/index.js\";\nimport { cursorForMapTreeField } from \"../mapTreeCursor.js\";\nimport type { FlexFieldKind } from \"../modular-schema/index.js\";\nimport type { FlexAllowedTypes, FlexFieldSchema } from \"../typed-schema/index.js\";\n\nimport type { Context } from \"./context.js\";\nimport {\n\tFlexTreeEntityKind,\n\ttype FlexTreeField,\n\ttype FlexTreeNode,\n\ttype FlexTreeOptionalField,\n\ttype FlexTreeRequiredField,\n\ttype FlexTreeSequenceField,\n\ttype FlexTreeTypedField,\n\ttype FlexTreeTypedNodeUnion,\n\ttype FlexTreeUnboxNodeUnion,\n\ttype FlexibleNodeContent,\n\ttype FlexibleNodeSubSequence,\n\tTreeStatus,\n\tflexTreeMarker,\n\tflexTreeSlot,\n} from \"./flexTreeTypes.js\";\nimport {\n\tLazyEntity,\n\tanchorSymbol,\n\tcursorSymbol,\n\tforgetAnchorSymbol,\n\tisFreedSymbol,\n\ttryMoveCursorToAnchorSymbol,\n} from \"./lazyEntity.js\";\nimport { type LazyTreeNode, makeTree } from \"./lazyNode.js\";\nimport { unboxedUnion } from \"./unboxed.js\";\nimport {\n\tindexForAt,\n\ttreeStatusFromAnchorCache,\n\ttreeStatusFromDetachedField,\n} from \"./utilities.js\";\nimport { UsageError } from \"@fluidframework/telemetry-utils/internal\";\n\n/**\n * Reuse fields.\n * Since field currently own cursors and register themselves for disposal when the node hit end of life,\n * not reusing them results in memory leaks every time the field is accessed.\n * Since the fields stay alive until the node is end of life reusing them this way is safe.\n *\n * This ins't a perfect solution:\n *\n * - This can cause leaks, like map nodes will keep all accessed field objects around. Since other things cause this same leak already, its not too bad.\n * - This does not cache the root.\n * - Finding the parent anchor to do the caching on has significant cost.\n *\n * Despite these limitations, this cache provides a large performance win in some common cases (over 10x), especially with how simple tree requests far more field objects than necessary currently.\n */\nconst fieldCache: WeakMap<LazyTreeNode, Map<FieldKey, FlexTreeField>> = new WeakMap();\n\nexport function makeField(\n\tcontext: Context,\n\tschema: FlexFieldSchema,\n\tcursor: ITreeSubscriptionCursor,\n): FlexTreeField {\n\tconst fieldAnchor = cursor.buildFieldAnchor();\n\tlet usedAnchor = false;\n\n\tconst makeFlexTreeField = (): FlexTreeField => {\n\t\tusedAnchor = true;\n\t\tconst field = new (kindToClass.get(schema.kind) ?? fail(\"missing field implementation\"))(\n\t\t\tcontext,\n\t\t\tschema,\n\t\t\tcursor,\n\t\t\tfieldAnchor,\n\t\t);\n\t\treturn field;\n\t};\n\n\tif (fieldAnchor.parent === undefined) {\n\t\treturn makeFlexTreeField();\n\t}\n\n\t// For the common case (all but roots), cache field associated with its node's anchor and field key.\n\tconst anchorNode =\n\t\tcontext.checkout.forest.anchors.locate(fieldAnchor.parent) ?? fail(\"missing anchor\");\n\n\t// Since anchor-set could be reused across a flex tree context getting disposed, key off the flex tree node not the anchor.\n\tconst cacheKey = anchorNode.slots.get(flexTreeSlot);\n\n\t// If there is no flex tree parent node, skip caching: this is not expected to be a hot path, but should probably be fixed at some point.\n\tif (cacheKey === undefined) {\n\t\treturn makeFlexTreeField();\n\t}\n\n\tconst innerCache = getOrCreate(\n\t\tfieldCache,\n\t\tcacheKey,\n\t\t() => new Map<FieldKey, FlexTreeField>(),\n\t);\n\tconst result = getOrCreate(innerCache, fieldAnchor.fieldKey, makeFlexTreeField);\n\tif (!usedAnchor) {\n\t\t// The anchor must be disposed to avoid leaking. In the case of a cache hit,\n\t\t// we are not transferring ownership to a new FlexTreeField, so it must be disposed of here to avoid the leak.\n\t\tcontext.checkout.forest.anchors.forget(fieldAnchor.parent);\n\t}\n\treturn result;\n}\n\n/**\n * A Proxy target, which together with a `fieldProxyHandler` implements a basic access to\n * the nodes of {@link EditableField} by means of the cursors.\n */\nexport abstract class LazyField<\n\t\tout TKind extends FlexFieldKind,\n\t\tTTypes extends FlexAllowedTypes,\n\t>\n\textends LazyEntity<FlexFieldSchema<TKind, TTypes>, FieldAnchor>\n\timplements FlexTreeField\n{\n\tpublic get [flexTreeMarker](): FlexTreeEntityKind.Field {\n\t\treturn FlexTreeEntityKind.Field;\n\t}\n\tpublic readonly key: FieldKey;\n\n\t/**\n\t * If this field ends its lifetime before the Anchor does, this needs to be invoked to avoid a double free\n\t * if/when the Anchor is destroyed.\n\t */\n\tprivate readonly offAfterDestroy?: () => void;\n\n\tpublic constructor(\n\t\tcontext: Context,\n\t\tschema: FlexFieldSchema<TKind, TTypes>,\n\t\tcursor: ITreeSubscriptionCursor,\n\t\tfieldAnchor: FieldAnchor,\n\t) {\n\t\tsuper(context, schema, cursor, fieldAnchor);\n\t\tassert(cursor.mode === CursorLocationType.Fields, 0x77b /* must be in fields mode */);\n\t\tthis.key = cursor.getFieldKey();\n\t\t// Fields currently live as long as their parent does.\n\t\t// For root fields, this means forever, but other cases can be cleaned up when their parent anchor is deleted.\n\t\tif (fieldAnchor.parent !== undefined) {\n\t\t\tconst anchorNode =\n\t\t\t\tcontext.checkout.forest.anchors.locate(fieldAnchor.parent) ??\n\t\t\t\tfail(\"parent anchor node should always exist since field is under a node\");\n\t\t\tthis.offAfterDestroy = anchorNode.on(\"afterDestroy\", () => {\n\t\t\t\tthis[disposeSymbol]();\n\t\t\t});\n\t\t}\n\t}\n\n\tpublic is<TSchema extends FlexFieldSchema>(\n\t\tschema: TSchema,\n\t): this is FlexTreeTypedField<TSchema> {\n\t\tassert(\n\t\t\tthis.context.schema.policy.fieldKinds.get(schema.kind.identifier) === schema.kind,\n\t\t\t0x77c /* Narrowing must be done to a kind that exists in this context */,\n\t\t);\n\n\t\treturn this.schema.equals(schema);\n\t}\n\n\tpublic isSameAs(other: FlexTreeField): boolean {\n\t\tassert(\n\t\t\tother.context === this.context,\n\t\t\t0x77d /* Content from different flex trees should not be used together */,\n\t\t);\n\t\treturn this.key === other.key && this.parent === other.parent;\n\t}\n\n\tpublic get parent(): FlexTreeNode | undefined {\n\t\tif (this[anchorSymbol].parent === undefined) {\n\t\t\treturn undefined;\n\t\t}\n\n\t\tconst cursor = this[cursorSymbol];\n\t\tcursor.exitField();\n\t\tconst output = makeTree(this.context, cursor);\n\t\tcursor.enterField(this.key);\n\t\treturn output;\n\t}\n\n\tprotected override [tryMoveCursorToAnchorSymbol](\n\t\tcursor: ITreeSubscriptionCursor,\n\t): TreeNavigationResult {\n\t\treturn this.context.checkout.forest.tryMoveCursorToField(this[anchorSymbol], cursor);\n\t}\n\n\tprotected override [forgetAnchorSymbol](): void {\n\t\tthis.offAfterDestroy?.();\n\t\tif (this[anchorSymbol].parent === undefined) return;\n\t\tthis.context.checkout.forest.anchors.forget(this[anchorSymbol].parent);\n\t}\n\n\tpublic get length(): number {\n\t\treturn this[cursorSymbol].getFieldLength();\n\t}\n\n\tpublic atIndex(index: number): FlexTreeUnboxNodeUnion<TTypes> {\n\t\treturn inCursorNode(this[cursorSymbol], index, (cursor) =>\n\t\t\tunboxedUnion(this.context, this.schema, cursor),\n\t\t);\n\t}\n\n\tpublic boxedAt(index: number): FlexTreeTypedNodeUnion<TTypes> | undefined {\n\t\tconst finalIndex = indexForAt(index, this.length);\n\n\t\tif (finalIndex === undefined) {\n\t\t\treturn undefined;\n\t\t}\n\n\t\treturn inCursorNode(this[cursorSymbol], finalIndex, (cursor) =>\n\t\t\tmakeTree(this.context, cursor),\n\t\t) as unknown as FlexTreeTypedNodeUnion<TTypes>;\n\t}\n\n\tpublic map<U>(callbackfn: (value: FlexTreeUnboxNodeUnion<TTypes>, index: number) => U): U[] {\n\t\treturn Array.from(this, callbackfn);\n\t}\n\n\tpublic mapBoxed<U>(\n\t\tcallbackfn: (value: FlexTreeTypedNodeUnion<TTypes>, index: number) => U,\n\t): U[] {\n\t\treturn Array.from(this.boxedIterator(), callbackfn);\n\t}\n\n\tpublic boxedIterator(): IterableIterator<FlexTreeTypedNodeUnion<TTypes>> {\n\t\treturn iterateCursorField(\n\t\t\tthis[cursorSymbol],\n\t\t\t(cursor) => makeTree(this.context, cursor) as unknown as FlexTreeTypedNodeUnion<TTypes>,\n\t\t);\n\t}\n\n\tpublic [Symbol.iterator](): IterableIterator<FlexTreeUnboxNodeUnion<TTypes>> {\n\t\treturn iterateCursorField(this[cursorSymbol], (cursor) =>\n\t\t\tunboxedUnion(this.context, this.schema, cursor),\n\t\t);\n\t}\n\n\tpublic treeStatus(): TreeStatus {\n\t\tif (this[isFreedSymbol]()) {\n\t\t\treturn TreeStatus.Deleted;\n\t\t}\n\t\tconst fieldAnchor = this[anchorSymbol];\n\t\tconst parentAnchor = fieldAnchor.parent;\n\t\t// If the parentAnchor is undefined it is a detached field.\n\t\tif (parentAnchor === undefined) {\n\t\t\treturn treeStatusFromDetachedField(keyAsDetachedField(fieldAnchor.fieldKey));\n\t\t}\n\t\tconst parentAnchorNode = this.context.checkout.forest.anchors.locate(parentAnchor);\n\n\t\t// As the \"parentAnchor === undefined\" case is handled above, parentAnchorNode should exist.\n\t\tassert(parentAnchorNode !== undefined, 0x77e /* parentAnchorNode must exist. */);\n\t\treturn treeStatusFromAnchorCache(parentAnchorNode);\n\t}\n\n\tpublic getFieldPath(): FieldUpPath {\n\t\treturn this[cursorSymbol].getFieldPath();\n\t}\n\n\t/**\n\t * Returns the path to this field to use for editing. Throws iff this path is not {@link TreeStatus#InDocument}.\n\t * This path is not valid to hold onto across edits: this must be recalled for each edit.\n\t */\n\tpublic getFieldPathForEditing(): FieldUpPath {\n\t\tif (this.treeStatus() !== TreeStatus.InDocument) {\n\t\t\tthrow new UsageError(\"Editing only allowed on fields with TreeStatus.InDocument status\");\n\t\t}\n\t\treturn this.getFieldPath();\n\t}\n}\n\nexport class LazySequence<TTypes extends FlexAllowedTypes>\n\textends LazyField<typeof FieldKinds.sequence, TTypes>\n\timplements FlexTreeSequenceField<TTypes>\n{\n\tpublic constructor(\n\t\tcontext: Context,\n\t\tschema: FlexFieldSchema<typeof FieldKinds.sequence, TTypes>,\n\t\tcursor: ITreeSubscriptionCursor,\n\t\tfieldAnchor: FieldAnchor,\n\t) {\n\t\tsuper(context, schema, cursor, fieldAnchor);\n\t}\n\n\tpublic at(index: number): FlexTreeUnboxNodeUnion<TTypes> | undefined {\n\t\tconst finalIndex = indexForAt(index, this.length);\n\n\t\tif (finalIndex === undefined) {\n\t\t\treturn undefined;\n\t\t}\n\n\t\treturn inCursorNode(this[cursorSymbol], finalIndex, (cursor) =>\n\t\t\tunboxedUnion(this.context, this.schema, cursor),\n\t\t);\n\t}\n\tpublic get asArray(): readonly FlexTreeUnboxNodeUnion<TTypes>[] {\n\t\treturn this.map((x) => x);\n\t}\n\n\tpublic sequenceEditor(): SequenceFieldEditBuilder {\n\t\tconst fieldPath = this.getFieldPathForEditing();\n\t\tconst fieldEditor = this.context.checkout.editor.sequenceField(fieldPath);\n\t\treturn fieldEditor;\n\t}\n\n\tpublic insertAt(index: number, value: FlexibleNodeSubSequence<TTypes>): void {\n\t\tassertValidIndex(index, this, true);\n\t\tconst content: ITreeCursorSynchronous = isCursor(value)\n\t\t\t? prepareFieldCursorForInsert(value)\n\t\t\t: cursorForMapTreeField(\n\t\t\t\t\tArray.from(value, (item) =>\n\t\t\t\t\t\tapplyTypesFromContext(this.context, this.schema.allowedTypeSet, item),\n\t\t\t\t\t),\n\t\t\t\t);\n\n\t\tconst fieldEditor = this.sequenceEditor();\n\t\tfieldEditor.insert(index, content);\n\t}\n\n\tpublic insertAtStart(value: FlexibleNodeSubSequence<TTypes>): void {\n\t\tthis.insertAt(0, value);\n\t}\n\n\tpublic insertAtEnd(value: FlexibleNodeSubSequence<TTypes>): void {\n\t\tthis.insertAt(this.length, value);\n\t}\n\n\tpublic removeAt(index: number): void {\n\t\tconst fieldEditor = this.sequenceEditor();\n\t\tfieldEditor.remove(index, 1);\n\t}\n\n\tpublic moveToStart(sourceIndex: number): void;\n\tpublic moveToStart(\n\t\tsourceIndex: number,\n\t\tsource: FlexTreeSequenceField<FlexAllowedTypes>,\n\t): void;\n\tpublic moveToStart(\n\t\tsourceIndex: number,\n\t\tsource?: FlexTreeSequenceField<FlexAllowedTypes>,\n\t): void {\n\t\tthis._moveRangeToIndex(0, sourceIndex, sourceIndex + 1, source);\n\t}\n\tpublic moveToEnd(sourceIndex: number): void;\n\tpublic moveToEnd(sourceIndex: number, source: FlexTreeSequenceField<FlexAllowedTypes>): void;\n\tpublic moveToEnd(\n\t\tsourceIndex: number,\n\t\tsource?: FlexTreeSequenceField<FlexAllowedTypes>,\n\t): void {\n\t\tthis._moveRangeToIndex(this.length, sourceIndex, sourceIndex + 1, source);\n\t}\n\tpublic moveToIndex(index: number, sourceIndex: number): void;\n\tpublic moveToIndex(\n\t\tindex: number,\n\t\tsourceIndex: number,\n\t\tsource: FlexTreeSequenceField<FlexAllowedTypes>,\n\t): void;\n\tpublic moveToIndex(\n\t\tindex: number,\n\t\tsourceIndex: number,\n\t\tsource?: FlexTreeSequenceField<FlexAllowedTypes>,\n\t): void {\n\t\tthis._moveRangeToIndex(index, sourceIndex, sourceIndex + 1, source);\n\t}\n\n\tpublic moveRangeToStart(sourceStart: number, sourceEnd: number): void;\n\tpublic moveRangeToStart(\n\t\tsourceStart: number,\n\t\tsourceEnd: number,\n\t\tsource: FlexTreeSequenceField<FlexAllowedTypes>,\n\t): void;\n\tpublic moveRangeToStart(\n\t\tsourceStart: number,\n\t\tsourceEnd: number,\n\t\tsource?: FlexTreeSequenceField<FlexAllowedTypes>,\n\t): void {\n\t\tthis._moveRangeToIndex(0, sourceStart, sourceEnd, source);\n\t}\n\n\tpublic moveRangeToEnd(sourceStart: number, sourceEnd: number): void;\n\tpublic moveRangeToEnd(\n\t\tsourceStart: number,\n\t\tsourceEnd: number,\n\t\tsource: FlexTreeSequenceField<FlexAllowedTypes>,\n\t): void;\n\tpublic moveRangeToEnd(\n\t\tsourceStart: number,\n\t\tsourceEnd: number,\n\t\tsource?: FlexTreeSequenceField<FlexAllowedTypes>,\n\t): void {\n\t\tthis._moveRangeToIndex(this.length, sourceStart, sourceEnd, source);\n\t}\n\n\tpublic moveRangeToIndex(index: number, sourceStart: number, sourceEnd: number): void;\n\tpublic moveRangeToIndex(\n\t\tindex: number,\n\t\tsourceStart: number,\n\t\tsourceEnd: number,\n\t\tsource: FlexTreeSequenceField<FlexAllowedTypes>,\n\t): void;\n\tpublic moveRangeToIndex(\n\t\tindex: number,\n\t\tsourceStart: number,\n\t\tsourceEnd: number,\n\t\tsource?: FlexTreeSequenceField<FlexAllowedTypes>,\n\t): void {\n\t\tthis._moveRangeToIndex(index, sourceStart, sourceEnd, source);\n\t}\n\n\tprivate _moveRangeToIndex(\n\t\tindex: number,\n\t\tsourceStart: number,\n\t\tsourceEnd: number,\n\t\tsource?: FlexTreeSequenceField<FlexAllowedTypes>,\n\t): void {\n\t\tconst sourceField = source !== undefined ? (this.isSameAs(source) ? this : source) : this;\n\n\t\t// TODO: determine support for move across different sequence types\n\t\tassert(\n\t\t\tsourceField instanceof LazySequence,\n\t\t\t0x7b1 /* Unsupported sequence implementation. */,\n\t\t);\n\t\tassertValidRangeIndices(sourceStart, sourceEnd, sourceField);\n\t\tif (this.schema.types !== undefined && sourceField !== this) {\n\t\t\tfor (let i = sourceStart; i < sourceEnd; i++) {\n\t\t\t\tconst sourceNode =\n\t\t\t\t\tsourceField.boxedAt(sourceStart) ?? fail(\"impossible out of bounds index\");\n\t\t\t\tif (!this.schema.types.has(sourceNode.schema.name)) {\n\t\t\t\t\tthrow new Error(\"Type in source sequence is not allowed in destination.\");\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\tconst movedCount = sourceEnd - sourceStart;\n\t\tassertValidIndex(index, this, true);\n\t\tconst sourceFieldPath = sourceField.getFieldPath();\n\t\tconst destinationFieldPath = this.getFieldPath();\n\t\tthis.context.checkout.editor.move(\n\t\t\tsourceFieldPath,\n\t\t\tsourceStart,\n\t\t\tmovedCount,\n\t\t\tdestinationFieldPath,\n\t\t\tindex,\n\t\t);\n\t}\n}\n\nexport class ReadonlyLazyValueField<TTypes extends FlexAllowedTypes>\n\textends LazyField<typeof FieldKinds.required, TTypes>\n\timplements FlexTreeRequiredField<TTypes>\n{\n\tpublic constructor(\n\t\tcontext: Context,\n\t\tschema: FlexFieldSchema<typeof FieldKinds.required, TTypes>,\n\t\tcursor: ITreeSubscriptionCursor,\n\t\tfieldAnchor: FieldAnchor,\n\t) {\n\t\tsuper(context, schema, cursor, fieldAnchor);\n\t}\n\n\tpublic get content(): FlexTreeUnboxNodeUnion<TTypes> {\n\t\treturn this.atIndex(0);\n\t}\n\n\tpublic set content(newContent: FlexibleNodeContent<TTypes>) {\n\t\tfail(\"cannot set content in readonly field\");\n\t}\n\n\tpublic get boxedContent(): FlexTreeTypedNodeUnion<TTypes> {\n\t\treturn this.boxedAt(0) ?? fail(\"value node must have 1 item\");\n\t}\n}\n\nexport class LazyValueField<TTypes extends FlexAllowedTypes>\n\textends ReadonlyLazyValueField<TTypes>\n\timplements FlexTreeRequiredField<TTypes>\n{\n\tpublic constructor(\n\t\tcontext: Context,\n\t\tschema: FlexFieldSchema<typeof FieldKinds.required, TTypes>,\n\t\tcursor: ITreeSubscriptionCursor,\n\t\tfieldAnchor: FieldAnchor,\n\t) {\n\t\tsuper(context, schema, cursor, fieldAnchor);\n\t}\n\n\tprivate valueFieldEditor(): ValueFieldEditBuilder {\n\t\tconst fieldPath = this.getFieldPathForEditing();\n\t\tconst fieldEditor = this.context.checkout.editor.valueField(fieldPath);\n\t\treturn fieldEditor;\n\t}\n\n\tpublic override get content(): FlexTreeUnboxNodeUnion<TTypes> {\n\t\treturn this.atIndex(0);\n\t}\n\n\tpublic override set content(newContent: FlexibleNodeContent<TTypes>) {\n\t\tconst content: ITreeCursorSynchronous[] = isCursor(newContent)\n\t\t\t? prepareNodeCursorForInsert(newContent)\n\t\t\t: [cursorFromContextualData(this.context, this.schema.allowedTypeSet, newContent)];\n\t\tconst fieldEditor = this.valueFieldEditor();\n\t\tassert(content.length === 1, 0x780 /* value field content should normalize to one item */);\n\t\tfieldEditor.set(content[0]);\n\t}\n\n\tpublic override get boxedContent(): FlexTreeTypedNodeUnion<TTypes> {\n\t\treturn this.boxedAt(0) ?? fail(\"value node must have 1 item\");\n\t}\n}\n\nexport class LazyIdentifierField<TTypes extends FlexAllowedTypes>\n\textends ReadonlyLazyValueField<TTypes>\n\timplements FlexTreeRequiredField<TTypes>\n{\n\tpublic constructor(\n\t\tcontext: Context,\n\t\tschema: FlexFieldSchema<typeof FieldKinds.required, TTypes>,\n\t\tcursor: ITreeSubscriptionCursor,\n\t\tfieldAnchor: FieldAnchor,\n\t) {\n\t\tsuper(context, schema, cursor, fieldAnchor);\n\t}\n}\n\nexport class LazyOptionalField<TTypes extends FlexAllowedTypes>\n\textends LazyField<typeof FieldKinds.optional, TTypes>\n\timplements FlexTreeOptionalField<TTypes>\n{\n\tpublic constructor(\n\t\tcontext: Context,\n\t\tschema: FlexFieldSchema<typeof FieldKinds.optional, TTypes>,\n\t\tcursor: ITreeSubscriptionCursor,\n\t\tfieldAnchor: FieldAnchor,\n\t) {\n\t\tsuper(context, schema, cursor, fieldAnchor);\n\t}\n\n\tprivate optionalEditor(): OptionalFieldEditBuilder {\n\t\tconst fieldPath = this.getFieldPathForEditing();\n\t\tconst fieldEditor = this.context.checkout.editor.optionalField(fieldPath);\n\t\treturn fieldEditor;\n\t}\n\n\tpublic get content(): FlexTreeUnboxNodeUnion<TTypes> | undefined {\n\t\treturn this.length === 0 ? undefined : this.atIndex(0);\n\t}\n\n\tpublic set content(newContent: FlexibleNodeContent<TTypes> | undefined) {\n\t\tconst content: ITreeCursorSynchronous[] =\n\t\t\tnewContent === undefined\n\t\t\t\t? []\n\t\t\t\t: isCursor(newContent)\n\t\t\t\t\t? prepareNodeCursorForInsert(newContent)\n\t\t\t\t\t: [cursorFromContextualData(this.context, this.schema.allowedTypeSet, newContent)];\n\t\tconst fieldEditor = this.optionalEditor();\n\t\tassert(\n\t\t\tcontent.length <= 1,\n\t\t\t0x781 /* optional field content should normalize at most one item */,\n\t\t);\n\t\tfieldEditor.set(content.length === 0 ? undefined : content[0], this.length === 0);\n\t}\n\n\tpublic get boxedContent(): FlexTreeTypedNodeUnion<TTypes> | undefined {\n\t\treturn this.length === 0 ? undefined : this.boxedAt(0);\n\t}\n}\n\nexport class LazyForbiddenField<TTypes extends FlexAllowedTypes> extends LazyField<\n\ttypeof FieldKinds.forbidden,\n\tTTypes\n> {}\n\ntype Builder = new <TTypes extends FlexAllowedTypes>(\n\tcontext: Context,\n\t// Correct use of these builders requires the builder of the matching type to be used.\n\t// Since this has to be done at runtime anyway, trying to use safer typing than `any` here (such as `never`, which is only slightly safer)\n\t// does not seem worth it (ends up requiring type casts that are just as unsafe).\n\t// eslint-disable-next-line @typescript-eslint/no-explicit-any\n\tschema: FlexFieldSchema<any, TTypes>,\n\tcursor: ITreeSubscriptionCursor,\n\tfieldAnchor: FieldAnchor,\n) => LazyField<FlexFieldKind, TTypes>;\n\nconst builderList: [FlexFieldKind, Builder][] = [\n\t[FieldKinds.forbidden, LazyForbiddenField],\n\t[FieldKinds.optional, LazyOptionalField],\n\t[FieldKinds.sequence, LazySequence],\n\t[FieldKinds.required, LazyValueField],\n\t[FieldKinds.identifier, LazyIdentifierField],\n];\n\nconst kindToClass: ReadonlyMap<FlexFieldKind, Builder> = new Map(builderList);\n\n/**\n * Prepare a fields cursor (holding a sequence of nodes) for inserting.\n */\nfunction prepareFieldCursorForInsert(cursor: ITreeCursorSynchronous): ITreeCursorSynchronous {\n\t// TODO: optionally validate content against schema.\n\n\tassert(cursor.mode === CursorLocationType.Fields, 0x8cb /* should be in fields mode */);\n\treturn cursor;\n}\n\n/**\n * Prepare a node cursor (holding a single node) for inserting.\n */\nfunction prepareNodeCursorForInsert(cursor: ITreeCursorSynchronous): ITreeCursorSynchronous[] {\n\t// TODO: optionally validate content against schema.\n\n\tassert(cursor.mode === CursorLocationType.Nodes, 0x805 /* should be in nodes mode */);\n\treturn [cursor];\n}\n"]}
|
|
1
|
+
{"version":3,"file":"lazyField.js","sourceRoot":"","sources":["../../../src/feature-libraries/flex-tree/lazyField.ts"],"names":[],"mappings":";AAAA;;;GAGG;;;AAEH,kEAA6D;AAE7D,kDAY6B;AAC7B,kDAM6B;AAC7B,4CAA4C;AAC5C,kEAA0F;AAC1F,yDAKoC;AACpC,0DAA4D;AAK5D,yDAe4B;AAC5B,mDAOyB;AACzB,+CAA4D;AAC5D,6CAA4C;AAC5C,iDAAuE;AACvE,uEAAsE;AAEtE;;;;;;;;;;;;;GAaG;AACH,MAAM,UAAU,GAAwD,IAAI,OAAO,EAAE,CAAC;AAEtF,SAAgB,SAAS,CACxB,OAAgB,EAChB,MAAuB,EACvB,MAA+B;IAE/B,MAAM,WAAW,GAAG,MAAM,CAAC,gBAAgB,EAAE,CAAC;IAC9C,IAAI,UAAU,GAAG,KAAK,CAAC;IAEvB,MAAM,iBAAiB,GAAG,GAAkB,EAAE;QAC7C,UAAU,GAAG,IAAI,CAAC;QAClB,MAAM,KAAK,GAAG,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,IAAA,eAAI,EAAC,8BAA8B,CAAC,CAAC,CACvF,OAAO,EACP,MAAM,EACN,MAAM,EACN,WAAW,CACX,CAAC;QACF,OAAO,KAAK,CAAC;IACd,CAAC,CAAC;IAEF,IAAI,WAAW,CAAC,MAAM,KAAK,SAAS,EAAE,CAAC;QACtC,OAAO,iBAAiB,EAAE,CAAC;IAC5B,CAAC;IAED,oGAAoG;IACpG,MAAM,UAAU,GACf,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,WAAW,CAAC,MAAM,CAAC,IAAI,IAAA,eAAI,EAAC,gBAAgB,CAAC,CAAC;IAEtF,2HAA2H;IAC3H,MAAM,QAAQ,GAAG,UAAU,CAAC,KAAK,CAAC,GAAG,CAAC,+BAAY,CAAC,CAAC;IAEpD,yIAAyI;IACzI,IAAI,QAAQ,KAAK,SAAS,EAAE,CAAC;QAC5B,OAAO,iBAAiB,EAAE,CAAC;IAC5B,CAAC;IAED,MAAM,UAAU,GAAG,IAAA,sBAAW,EAC7B,UAAU,EACV,QAAQ,EACR,GAAG,EAAE,CAAC,IAAI,GAAG,EAA2B,CACxC,CAAC;IACF,MAAM,MAAM,GAAG,IAAA,sBAAW,EAAC,UAAU,EAAE,WAAW,CAAC,QAAQ,EAAE,iBAAiB,CAAC,CAAC;IAChF,IAAI,CAAC,UAAU,EAAE,CAAC;QACjB,4EAA4E;QAC5E,8GAA8G;QAC9G,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC;IAC5D,CAAC;IACD,OAAO,MAAM,CAAC;AACf,CAAC;AA/CD,8BA+CC;AAED;;;GAGG;AACH,MAAsB,SAIrB,SAAQ,0BAAuD;IAG/D,IAAW,CAAC,iCAAc,CAAC;QAC1B,OAAO,qCAAkB,CAAC,KAAK,CAAC;IACjC,CAAC;IASD,YACC,OAAgB,EAChB,MAAsC,EACtC,MAA+B,EAC/B,WAAwB;QAExB,KAAK,CAAC,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,WAAW,CAAC,CAAC;QAC5C,IAAA,iBAAM,EAAC,MAAM,CAAC,IAAI,sCAA8B,EAAE,KAAK,CAAC,4BAA4B,CAAC,CAAC;QACtF,IAAI,CAAC,GAAG,GAAG,MAAM,CAAC,WAAW,EAAE,CAAC;QAChC,sDAAsD;QACtD,8GAA8G;QAC9G,IAAI,WAAW,CAAC,MAAM,KAAK,SAAS,EAAE,CAAC;YACtC,MAAM,UAAU,GACf,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,WAAW,CAAC,MAAM,CAAC;gBAC1D,IAAA,eAAI,EAAC,oEAAoE,CAAC,CAAC;YAC5E,IAAI,CAAC,eAAe,GAAG,UAAU,CAAC,EAAE,CAAC,cAAc,EAAE,GAAG,EAAE;gBACzD,IAAI,CAAC,wBAAa,CAAC,EAAE,CAAC;YACvB,CAAC,CAAC,CAAC;QACJ,CAAC;IACF,CAAC;IAEM,EAAE,CACR,MAAe;QAEf,IAAA,iBAAM,EACL,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,MAAM,CAAC,UAAU,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,KAAK,MAAM,CAAC,IAAI,EACjF,KAAK,CAAC,kEAAkE,CACxE,CAAC;QAEF,OAAO,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;IACnC,CAAC;IAED,IAAW,MAAM;QAChB,IAAI,IAAI,CAAC,4BAAY,CAAC,CAAC,MAAM,KAAK,SAAS,EAAE,CAAC;YAC7C,OAAO,SAAS,CAAC;QAClB,CAAC;QAED,MAAM,MAAM,GAAG,IAAI,CAAC,4BAAY,CAAC,CAAC;QAClC,MAAM,CAAC,SAAS,EAAE,CAAC;QACnB,MAAM,MAAM,GAAG,IAAA,sBAAQ,EAAC,IAAI,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;QAC9C,MAAM,CAAC,UAAU,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QAC5B,OAAO,MAAM,CAAC;IACf,CAAC;IAEkB,CAAC,2CAA2B,CAAC,CAC/C,MAA+B;QAE/B,OAAO,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAC,oBAAoB,CAAC,IAAI,CAAC,4BAAY,CAAC,EAAE,MAAM,CAAC,CAAC;IACtF,CAAC;IAEkB,CAAC,kCAAkB,CAAC;QACtC,IAAI,CAAC,eAAe,EAAE,EAAE,CAAC;QACzB,IAAI,IAAI,CAAC,4BAAY,CAAC,CAAC,MAAM,KAAK,SAAS;YAAE,OAAO;QACpD,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,4BAAY,CAAC,CAAC,MAAM,CAAC,CAAC;IACxE,CAAC;IAED,IAAW,MAAM;QAChB,OAAO,IAAI,CAAC,4BAAY,CAAC,CAAC,cAAc,EAAE,CAAC;IAC5C,CAAC;IAEM,OAAO,CAAC,KAAa;QAC3B,OAAO,IAAA,uBAAY,EAAC,IAAI,CAAC,4BAAY,CAAC,EAAE,KAAK,EAAE,CAAC,MAAM,EAAE,EAAE,CACzD,IAAA,yBAAY,EAAC,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,MAAM,EAAE,MAAM,CAAC,CAC/C,CAAC;IACH,CAAC;IAEM,OAAO,CAAC,KAAa;QAC3B,MAAM,UAAU,GAAG,IAAA,yBAAU,EAAC,KAAK,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC;QAElD,IAAI,UAAU,KAAK,SAAS,EAAE,CAAC;YAC9B,OAAO,SAAS,CAAC;QAClB,CAAC;QAED,OAAO,IAAA,uBAAY,EAAC,IAAI,CAAC,4BAAY,CAAC,EAAE,UAAU,EAAE,CAAC,MAAM,EAAE,EAAE,CAC9D,IAAA,sBAAQ,EAAC,IAAI,CAAC,OAAO,EAAE,MAAM,CAAC,CACe,CAAC;IAChD,CAAC;IAEM,GAAG,CAAI,UAAuE;QACpF,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,EAAE,UAAU,CAAC,CAAC;IACrC,CAAC;IAEM,QAAQ,CACd,UAAuE;QAEvE,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,aAAa,EAAE,EAAE,UAAU,CAAC,CAAC;IACrD,CAAC;IAEM,aAAa;QACnB,OAAO,IAAA,6BAAkB,EACxB,IAAI,CAAC,4BAAY,CAAC,EAClB,CAAC,MAAM,EAAE,EAAE,CAAC,IAAA,sBAAQ,EAAC,IAAI,CAAC,OAAO,EAAE,MAAM,CAA8C,CACvF,CAAC;IACH,CAAC;IAEM,CAAC,MAAM,CAAC,QAAQ,CAAC;QACvB,OAAO,IAAA,6BAAkB,EAAC,IAAI,CAAC,4BAAY,CAAC,EAAE,CAAC,MAAM,EAAE,EAAE,CACxD,IAAA,yBAAY,EAAC,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,MAAM,EAAE,MAAM,CAAC,CAC/C,CAAC;IACH,CAAC;IAEM,YAAY;QAClB,OAAO,IAAI,CAAC,4BAAY,CAAC,CAAC,YAAY,EAAE,CAAC;IAC1C,CAAC;IAED;;;OAGG;IACI,sBAAsB;QAC5B,IAAI,CAAC,IAAI,CAAC,6BAAa,CAAC,EAAE,EAAE,CAAC;YAC5B;YACC,0DAA0D;YAC1D,CAAC,IAAI,CAAC,MAAM,KAAK,SAAS,IAAI,IAAI,CAAC,4BAAY,CAAC,CAAC,QAAQ,KAAK,uBAAY,CAAC;gBAC3E,yCAAyC;gBACzC,CAAC,IAAI,CAAC,MAAM,KAAK,SAAS;oBACzB,IAAA,wCAAyB,EAAC,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,KAAK,6BAAU,CAAC,UAAU,CAAC,EAC5E,CAAC;gBACF,OAAO,IAAI,CAAC,YAAY,EAAE,CAAC;YAC5B,CAAC;QACF,CAAC;QAED,MAAM,IAAI,qBAAU,CAAC,kEAAkE,CAAC,CAAC;IAC1F,CAAC;CACD;AA9ID,8BA8IC;AAED,MAAa,YACZ,SAAQ,SAA6C;IAGrD,YACC,OAAgB,EAChB,MAA2D,EAC3D,MAA+B,EAC/B,WAAwB;QAExB,KAAK,CAAC,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,WAAW,CAAC,CAAC;IAC7C,CAAC;IAEM,EAAE,CAAC,KAAa;QACtB,MAAM,UAAU,GAAG,IAAA,yBAAU,EAAC,KAAK,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC;QAElD,IAAI,UAAU,KAAK,SAAS,EAAE,CAAC;YAC9B,OAAO,SAAS,CAAC;QAClB,CAAC;QAED,OAAO,IAAA,uBAAY,EAAC,IAAI,CAAC,4BAAY,CAAC,EAAE,UAAU,EAAE,CAAC,MAAM,EAAE,EAAE,CAC9D,IAAA,yBAAY,EAAC,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,MAAM,EAAE,MAAM,CAAC,CAC/C,CAAC;IACH,CAAC;IACD,IAAW,OAAO;QACjB,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC;IAC3B,CAAC;IAEM,cAAc;QACpB,MAAM,SAAS,GAAG,IAAI,CAAC,sBAAsB,EAAE,CAAC;QAChD,MAAM,WAAW,GAAG,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAC,aAAa,CAAC,SAAS,CAAC,CAAC;QAC1E,OAAO,WAAW,CAAC;IACpB,CAAC;IAEM,QAAQ,CAAC,KAAa,EAAE,KAAsC;QACpE,IAAA,2BAAgB,EAAC,KAAK,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC;QACpC,MAAM,OAAO,GAA2B,IAAA,mBAAQ,EAAC,KAAK,CAAC;YACtD,CAAC,CAAC,2BAA2B,CAAC,KAAK,CAAC;YACpC,CAAC,CAAC,IAAA,wCAAqB,EACrB,KAAK,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC,IAAI,EAAE,EAAE,CAC1B,IAAA,4CAAqB,EAAC,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,MAAM,CAAC,cAAc,EAAE,IAAI,CAAC,CACrE,CACD,CAAC;QAEJ,MAAM,WAAW,GAAG,IAAI,CAAC,cAAc,EAAE,CAAC;QAC1C,WAAW,CAAC,MAAM,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;IACpC,CAAC;IAEM,aAAa,CAAC,KAAsC;QAC1D,IAAI,CAAC,QAAQ,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC;IACzB,CAAC;IAEM,WAAW,CAAC,KAAsC;QACxD,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;IACnC,CAAC;IAEM,QAAQ,CAAC,KAAa;QAC5B,MAAM,WAAW,GAAG,IAAI,CAAC,cAAc,EAAE,CAAC;QAC1C,WAAW,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;IAC9B,CAAC;IAOM,WAAW,CACjB,WAAmB,EACnB,MAAgD;QAEhD,IAAI,CAAC,iBAAiB,CAAC,CAAC,EAAE,WAAW,EAAE,WAAW,GAAG,CAAC,EAAE,MAAM,CAAC,CAAC;IACjE,CAAC;IAGM,SAAS,CACf,WAAmB,EACnB,MAAgD;QAEhD,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,MAAM,EAAE,WAAW,EAAE,WAAW,GAAG,CAAC,EAAE,MAAM,CAAC,CAAC;IAC3E,CAAC;IAOM,WAAW,CACjB,KAAa,EACb,WAAmB,EACnB,MAAgD;QAEhD,IAAI,CAAC,iBAAiB,CAAC,KAAK,EAAE,WAAW,EAAE,WAAW,GAAG,CAAC,EAAE,MAAM,CAAC,CAAC;IACrE,CAAC;IAQM,gBAAgB,CACtB,WAAmB,EACnB,SAAiB,EACjB,MAAgD;QAEhD,IAAI,CAAC,iBAAiB,CAAC,CAAC,EAAE,WAAW,EAAE,SAAS,EAAE,MAAM,CAAC,CAAC;IAC3D,CAAC;IAQM,cAAc,CACpB,WAAmB,EACnB,SAAiB,EACjB,MAAgD;QAEhD,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,MAAM,EAAE,WAAW,EAAE,SAAS,EAAE,MAAM,CAAC,CAAC;IACrE,CAAC;IASM,gBAAgB,CACtB,KAAa,EACb,WAAmB,EACnB,SAAiB,EACjB,MAAgD;QAEhD,IAAI,CAAC,iBAAiB,CAAC,KAAK,EAAE,WAAW,EAAE,SAAS,EAAE,MAAM,CAAC,CAAC;IAC/D,CAAC;IAEO,iBAAiB,CACxB,KAAa,EACb,WAAmB,EACnB,SAAiB,EACjB,MAAgD;QAEhD,MAAM,WAAW,GAAG,MAAM,IAAI,IAAI,CAAC;QAEnC,mEAAmE;QACnE,IAAA,iBAAM,EACL,WAAW,YAAY,YAAY,EACnC,KAAK,CAAC,0CAA0C,CAChD,CAAC;QACF,IAAA,kCAAuB,EAAC,WAAW,EAAE,SAAS,EAAE,WAAW,CAAC,CAAC;QAC7D,IAAI,IAAI,CAAC,MAAM,CAAC,KAAK,KAAK,SAAS,IAAI,WAAW,KAAK,IAAI,EAAE,CAAC;YAC7D,KAAK,IAAI,CAAC,GAAG,WAAW,EAAE,CAAC,GAAG,SAAS,EAAE,CAAC,EAAE,EAAE,CAAC;gBAC9C,MAAM,UAAU,GACf,WAAW,CAAC,OAAO,CAAC,WAAW,CAAC,IAAI,IAAA,eAAI,EAAC,gCAAgC,CAAC,CAAC;gBAC5E,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,UAAU,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC;oBACpD,MAAM,IAAI,KAAK,CAAC,wDAAwD,CAAC,CAAC;gBAC3E,CAAC;YACF,CAAC;QACF,CAAC;QACD,MAAM,UAAU,GAAG,SAAS,GAAG,WAAW,CAAC;QAC3C,IAAA,2BAAgB,EAAC,KAAK,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC;QACpC,MAAM,eAAe,GAAG,WAAW,CAAC,YAAY,EAAE,CAAC;QACnD,MAAM,oBAAoB,GAAG,IAAI,CAAC,YAAY,EAAE,CAAC;QACjD,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,CAChC,eAAe,EACf,WAAW,EACX,UAAU,EACV,oBAAoB,EACpB,KAAK,CACL,CAAC;IACH,CAAC;CACD;AA7KD,oCA6KC;AAED,MAAa,sBACZ,SAAQ,SAA6C;IAGrD,YACC,OAAgB,EAChB,MAA2D,EAC3D,MAA+B,EAC/B,WAAwB;QAExB,KAAK,CAAC,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,WAAW,CAAC,CAAC;IAC7C,CAAC;IAED,IAAW,OAAO;QACjB,OAAO,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;IACxB,CAAC;IAED,IAAW,OAAO,CAAC,UAAuC;QACzD,IAAA,eAAI,EAAC,sCAAsC,CAAC,CAAC;IAC9C,CAAC;CACD;AApBD,wDAoBC;AAED,MAAa,cACZ,SAAQ,sBAA8B;IAGtC,YACC,OAAgB,EAChB,MAA2D,EAC3D,MAA+B,EAC/B,WAAwB;QAExB,KAAK,CAAC,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,WAAW,CAAC,CAAC;IAC7C,CAAC;IAEO,gBAAgB;QACvB,MAAM,SAAS,GAAG,IAAI,CAAC,sBAAsB,EAAE,CAAC;QAChD,MAAM,WAAW,GAAG,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC;QACvE,OAAO,WAAW,CAAC;IACpB,CAAC;IAED,IAAoB,OAAO;QAC1B,OAAO,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;IACxB,CAAC;IAED,IAAoB,OAAO,CAAC,UAAuC;QAClE,MAAM,OAAO,GAA6B,IAAA,mBAAQ,EAAC,UAAU,CAAC;YAC7D,CAAC,CAAC,0BAA0B,CAAC,UAAU,CAAC;YACxC,CAAC,CAAC,CAAC,IAAA,+CAAwB,EAAC,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,MAAM,CAAC,cAAc,EAAE,UAAU,CAAC,CAAC,CAAC;QACpF,MAAM,WAAW,GAAG,IAAI,CAAC,gBAAgB,EAAE,CAAC;QAC5C,IAAA,iBAAM,EAAC,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE,KAAK,CAAC,sDAAsD,CAAC,CAAC;QAC3F,WAAW,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC;IAC7B,CAAC;CACD;AA/BD,wCA+BC;AAED,MAAa,mBACZ,SAAQ,sBAA8B;IAGtC,YACC,OAAgB,EAChB,MAA2D,EAC3D,MAA+B,EAC/B,WAAwB;QAExB,KAAK,CAAC,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,WAAW,CAAC,CAAC;IAC7C,CAAC;CACD;AAZD,kDAYC;AAED,MAAa,iBACZ,SAAQ,SAA6C;IAGrD,YACC,OAAgB,EAChB,MAA2D,EAC3D,MAA+B,EAC/B,WAAwB;QAExB,KAAK,CAAC,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,WAAW,CAAC,CAAC;IAC7C,CAAC;IAEO,cAAc;QACrB,MAAM,SAAS,GAAG,IAAI,CAAC,sBAAsB,EAAE,CAAC;QAChD,MAAM,WAAW,GAAG,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAC,aAAa,CAAC,SAAS,CAAC,CAAC;QAC1E,OAAO,WAAW,CAAC;IACpB,CAAC;IAED,IAAW,OAAO;QACjB,OAAO,IAAI,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;IACxD,CAAC;IAED,IAAW,OAAO,CAAC,UAAmD;QACrE,MAAM,OAAO,GACZ,UAAU,KAAK,SAAS;YACvB,CAAC,CAAC,EAAE;YACJ,CAAC,CAAC,IAAA,mBAAQ,EAAC,UAAU,CAAC;gBACrB,CAAC,CAAC,0BAA0B,CAAC,UAAU,CAAC;gBACxC,CAAC,CAAC,CAAC,IAAA,+CAAwB,EAAC,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,MAAM,CAAC,cAAc,EAAE,UAAU,CAAC,CAAC,CAAC;QACtF,MAAM,WAAW,GAAG,IAAI,CAAC,cAAc,EAAE,CAAC;QAC1C,IAAA,iBAAM,EACL,OAAO,CAAC,MAAM,IAAI,CAAC,EACnB,KAAK,CAAC,8DAA8D,CACpE,CAAC;QACF,WAAW,CAAC,GAAG,CAAC,OAAO,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC;IACnF,CAAC;CACD;AArCD,8CAqCC;AAED,MAAa,kBAAoD,SAAQ,SAGxE;CAAG;AAHJ,gDAGI;AAaJ,MAAM,WAAW,GAA+B;IAC/C,CAAC,qBAAU,CAAC,SAAS,EAAE,kBAAkB,CAAC;IAC1C,CAAC,qBAAU,CAAC,QAAQ,EAAE,iBAAiB,CAAC;IACxC,CAAC,qBAAU,CAAC,QAAQ,EAAE,YAAY,CAAC;IACnC,CAAC,qBAAU,CAAC,QAAQ,EAAE,cAAc,CAAC;IACrC,CAAC,qBAAU,CAAC,UAAU,EAAE,mBAAmB,CAAC;CAC5C,CAAC;AAEF,MAAM,WAAW,GAAwC,IAAI,GAAG,CAAC,WAAW,CAAC,CAAC;AAE9E;;GAEG;AACH,SAAS,2BAA2B,CAAC,MAA8B;IAClE,oDAAoD;IAEpD,IAAA,iBAAM,EAAC,MAAM,CAAC,IAAI,sCAA8B,EAAE,KAAK,CAAC,8BAA8B,CAAC,CAAC;IACxF,OAAO,MAAM,CAAC;AACf,CAAC;AAED;;GAEG;AACH,SAAS,0BAA0B,CAAC,MAA8B;IACjE,oDAAoD;IAEpD,IAAA,iBAAM,EAAC,MAAM,CAAC,IAAI,qCAA6B,EAAE,KAAK,CAAC,6BAA6B,CAAC,CAAC;IACtF,OAAO,CAAC,MAAM,CAAC,CAAC;AACjB,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\";\n\nimport {\n\tCursorLocationType,\n\ttype FieldAnchor,\n\ttype FieldKey,\n\ttype FieldUpPath,\n\ttype ITreeCursorSynchronous,\n\ttype ITreeSubscriptionCursor,\n\ttype TreeNavigationResult,\n\tinCursorNode,\n\tisCursor,\n\titerateCursorField,\n\trootFieldKey,\n} from \"../../core/index.js\";\nimport {\n\tassertValidIndex,\n\tassertValidRangeIndices,\n\tdisposeSymbol,\n\tfail,\n\tgetOrCreate,\n} from \"../../util/index.js\";\n// TODO: stop depending on contextuallyTyped\nimport { applyTypesFromContext, cursorFromContextualData } from \"../contextuallyTyped.js\";\nimport {\n\tFieldKinds,\n\ttype OptionalFieldEditBuilder,\n\ttype SequenceFieldEditBuilder,\n\ttype ValueFieldEditBuilder,\n} from \"../default-schema/index.js\";\nimport { cursorForMapTreeField } from \"../mapTreeCursor.js\";\nimport type { FlexFieldKind } from \"../modular-schema/index.js\";\nimport type { FlexAllowedTypes, FlexFieldSchema } from \"../typed-schema/index.js\";\n\nimport type { Context } from \"./context.js\";\nimport {\n\tFlexTreeEntityKind,\n\ttype FlexTreeField,\n\ttype FlexTreeNode,\n\ttype FlexTreeOptionalField,\n\ttype FlexTreeRequiredField,\n\ttype FlexTreeSequenceField,\n\ttype FlexTreeTypedField,\n\ttype FlexTreeTypedNodeUnion,\n\ttype FlexTreeUnboxNodeUnion,\n\ttype FlexibleNodeContent,\n\ttype FlexibleNodeSubSequence,\n\tTreeStatus,\n\tflexTreeMarker,\n\tflexTreeSlot,\n} from \"./flexTreeTypes.js\";\nimport {\n\tLazyEntity,\n\tanchorSymbol,\n\tcursorSymbol,\n\tforgetAnchorSymbol,\n\tisFreedSymbol,\n\ttryMoveCursorToAnchorSymbol,\n} from \"./lazyEntity.js\";\nimport { type LazyTreeNode, makeTree } from \"./lazyNode.js\";\nimport { unboxedUnion } from \"./unboxed.js\";\nimport { indexForAt, treeStatusFromAnchorCache } from \"./utilities.js\";\nimport { UsageError } from \"@fluidframework/telemetry-utils/internal\";\n\n/**\n * Reuse fields.\n * Since field currently own cursors and register themselves for disposal when the node hit end of life,\n * not reusing them results in memory leaks every time the field is accessed.\n * Since the fields stay alive until the node is end of life reusing them this way is safe.\n *\n * This ins't a perfect solution:\n *\n * - This can cause leaks, like map nodes will keep all accessed field objects around. Since other things cause this same leak already, its not too bad.\n * - This does not cache the root.\n * - Finding the parent anchor to do the caching on has significant cost.\n *\n * Despite these limitations, this cache provides a large performance win in some common cases (over 10x), especially with how simple tree requests far more field objects than necessary currently.\n */\nconst fieldCache: WeakMap<LazyTreeNode, Map<FieldKey, FlexTreeField>> = new WeakMap();\n\nexport function makeField(\n\tcontext: Context,\n\tschema: FlexFieldSchema,\n\tcursor: ITreeSubscriptionCursor,\n): FlexTreeField {\n\tconst fieldAnchor = cursor.buildFieldAnchor();\n\tlet usedAnchor = false;\n\n\tconst makeFlexTreeField = (): FlexTreeField => {\n\t\tusedAnchor = true;\n\t\tconst field = new (kindToClass.get(schema.kind) ?? fail(\"missing field implementation\"))(\n\t\t\tcontext,\n\t\t\tschema,\n\t\t\tcursor,\n\t\t\tfieldAnchor,\n\t\t);\n\t\treturn field;\n\t};\n\n\tif (fieldAnchor.parent === undefined) {\n\t\treturn makeFlexTreeField();\n\t}\n\n\t// For the common case (all but roots), cache field associated with its node's anchor and field key.\n\tconst anchorNode =\n\t\tcontext.checkout.forest.anchors.locate(fieldAnchor.parent) ?? fail(\"missing anchor\");\n\n\t// Since anchor-set could be reused across a flex tree context getting disposed, key off the flex tree node not the anchor.\n\tconst cacheKey = anchorNode.slots.get(flexTreeSlot);\n\n\t// If there is no flex tree parent node, skip caching: this is not expected to be a hot path, but should probably be fixed at some point.\n\tif (cacheKey === undefined) {\n\t\treturn makeFlexTreeField();\n\t}\n\n\tconst innerCache = getOrCreate(\n\t\tfieldCache,\n\t\tcacheKey,\n\t\t() => new Map<FieldKey, FlexTreeField>(),\n\t);\n\tconst result = getOrCreate(innerCache, fieldAnchor.fieldKey, makeFlexTreeField);\n\tif (!usedAnchor) {\n\t\t// The anchor must be disposed to avoid leaking. In the case of a cache hit,\n\t\t// we are not transferring ownership to a new FlexTreeField, so it must be disposed of here to avoid the leak.\n\t\tcontext.checkout.forest.anchors.forget(fieldAnchor.parent);\n\t}\n\treturn result;\n}\n\n/**\n * A Proxy target, which together with a `fieldProxyHandler` implements a basic access to\n * the nodes of {@link EditableField} by means of the cursors.\n */\nexport abstract class LazyField<\n\t\tout TKind extends FlexFieldKind,\n\t\tTTypes extends FlexAllowedTypes,\n\t>\n\textends LazyEntity<FlexFieldSchema<TKind, TTypes>, FieldAnchor>\n\timplements FlexTreeField\n{\n\tpublic get [flexTreeMarker](): FlexTreeEntityKind.Field {\n\t\treturn FlexTreeEntityKind.Field;\n\t}\n\tpublic readonly key: FieldKey;\n\n\t/**\n\t * If this field ends its lifetime before the Anchor does, this needs to be invoked to avoid a double free\n\t * if/when the Anchor is destroyed.\n\t */\n\tprivate readonly offAfterDestroy?: () => void;\n\n\tpublic constructor(\n\t\tcontext: Context,\n\t\tschema: FlexFieldSchema<TKind, TTypes>,\n\t\tcursor: ITreeSubscriptionCursor,\n\t\tfieldAnchor: FieldAnchor,\n\t) {\n\t\tsuper(context, schema, cursor, fieldAnchor);\n\t\tassert(cursor.mode === CursorLocationType.Fields, 0x77b /* must be in fields mode */);\n\t\tthis.key = cursor.getFieldKey();\n\t\t// Fields currently live as long as their parent does.\n\t\t// For root fields, this means forever, but other cases can be cleaned up when their parent anchor is deleted.\n\t\tif (fieldAnchor.parent !== undefined) {\n\t\t\tconst anchorNode =\n\t\t\t\tcontext.checkout.forest.anchors.locate(fieldAnchor.parent) ??\n\t\t\t\tfail(\"parent anchor node should always exist since field is under a node\");\n\t\t\tthis.offAfterDestroy = anchorNode.on(\"afterDestroy\", () => {\n\t\t\t\tthis[disposeSymbol]();\n\t\t\t});\n\t\t}\n\t}\n\n\tpublic is<TSchema extends FlexFieldSchema>(\n\t\tschema: TSchema,\n\t): this is FlexTreeTypedField<TSchema> {\n\t\tassert(\n\t\t\tthis.context.schema.policy.fieldKinds.get(schema.kind.identifier) === schema.kind,\n\t\t\t0x77c /* Narrowing must be done to a kind that exists in this context */,\n\t\t);\n\n\t\treturn this.schema.equals(schema);\n\t}\n\n\tpublic get parent(): FlexTreeNode | undefined {\n\t\tif (this[anchorSymbol].parent === undefined) {\n\t\t\treturn undefined;\n\t\t}\n\n\t\tconst cursor = this[cursorSymbol];\n\t\tcursor.exitField();\n\t\tconst output = makeTree(this.context, cursor);\n\t\tcursor.enterField(this.key);\n\t\treturn output;\n\t}\n\n\tprotected override [tryMoveCursorToAnchorSymbol](\n\t\tcursor: ITreeSubscriptionCursor,\n\t): TreeNavigationResult {\n\t\treturn this.context.checkout.forest.tryMoveCursorToField(this[anchorSymbol], cursor);\n\t}\n\n\tprotected override [forgetAnchorSymbol](): void {\n\t\tthis.offAfterDestroy?.();\n\t\tif (this[anchorSymbol].parent === undefined) return;\n\t\tthis.context.checkout.forest.anchors.forget(this[anchorSymbol].parent);\n\t}\n\n\tpublic get length(): number {\n\t\treturn this[cursorSymbol].getFieldLength();\n\t}\n\n\tpublic atIndex(index: number): FlexTreeUnboxNodeUnion<TTypes> {\n\t\treturn inCursorNode(this[cursorSymbol], index, (cursor) =>\n\t\t\tunboxedUnion(this.context, this.schema, cursor),\n\t\t);\n\t}\n\n\tpublic boxedAt(index: number): FlexTreeTypedNodeUnion<TTypes> | undefined {\n\t\tconst finalIndex = indexForAt(index, this.length);\n\n\t\tif (finalIndex === undefined) {\n\t\t\treturn undefined;\n\t\t}\n\n\t\treturn inCursorNode(this[cursorSymbol], finalIndex, (cursor) =>\n\t\t\tmakeTree(this.context, cursor),\n\t\t) as unknown as FlexTreeTypedNodeUnion<TTypes>;\n\t}\n\n\tpublic map<U>(callbackfn: (value: FlexTreeUnboxNodeUnion<TTypes>, index: number) => U): U[] {\n\t\treturn Array.from(this, callbackfn);\n\t}\n\n\tpublic mapBoxed<U>(\n\t\tcallbackfn: (value: FlexTreeTypedNodeUnion<TTypes>, index: number) => U,\n\t): U[] {\n\t\treturn Array.from(this.boxedIterator(), callbackfn);\n\t}\n\n\tpublic boxedIterator(): IterableIterator<FlexTreeTypedNodeUnion<TTypes>> {\n\t\treturn iterateCursorField(\n\t\t\tthis[cursorSymbol],\n\t\t\t(cursor) => makeTree(this.context, cursor) as unknown as FlexTreeTypedNodeUnion<TTypes>,\n\t\t);\n\t}\n\n\tpublic [Symbol.iterator](): IterableIterator<FlexTreeUnboxNodeUnion<TTypes>> {\n\t\treturn iterateCursorField(this[cursorSymbol], (cursor) =>\n\t\t\tunboxedUnion(this.context, this.schema, cursor),\n\t\t);\n\t}\n\n\tpublic getFieldPath(): FieldUpPath {\n\t\treturn this[cursorSymbol].getFieldPath();\n\t}\n\n\t/**\n\t * Returns the path to this field to use for editing. Throws iff this path is not {@link TreeStatus#InDocument}.\n\t * This path is not valid to hold onto across edits: this must be recalled for each edit.\n\t */\n\tpublic getFieldPathForEditing(): FieldUpPath {\n\t\tif (!this[isFreedSymbol]()) {\n\t\t\tif (\n\t\t\t\t// Only allow editing if we are the root document field...\n\t\t\t\t(this.parent === undefined && this[anchorSymbol].fieldKey === rootFieldKey) ||\n\t\t\t\t// ...or are under a node in the document\n\t\t\t\t(this.parent !== undefined &&\n\t\t\t\t\ttreeStatusFromAnchorCache(this.parent.anchorNode) === TreeStatus.InDocument)\n\t\t\t) {\n\t\t\t\treturn this.getFieldPath();\n\t\t\t}\n\t\t}\n\n\t\tthrow new UsageError(\"Editing only allowed on fields with TreeStatus.InDocument status\");\n\t}\n}\n\nexport class LazySequence<TTypes extends FlexAllowedTypes>\n\textends LazyField<typeof FieldKinds.sequence, TTypes>\n\timplements FlexTreeSequenceField<TTypes>\n{\n\tpublic constructor(\n\t\tcontext: Context,\n\t\tschema: FlexFieldSchema<typeof FieldKinds.sequence, TTypes>,\n\t\tcursor: ITreeSubscriptionCursor,\n\t\tfieldAnchor: FieldAnchor,\n\t) {\n\t\tsuper(context, schema, cursor, fieldAnchor);\n\t}\n\n\tpublic at(index: number): FlexTreeUnboxNodeUnion<TTypes> | undefined {\n\t\tconst finalIndex = indexForAt(index, this.length);\n\n\t\tif (finalIndex === undefined) {\n\t\t\treturn undefined;\n\t\t}\n\n\t\treturn inCursorNode(this[cursorSymbol], finalIndex, (cursor) =>\n\t\t\tunboxedUnion(this.context, this.schema, cursor),\n\t\t);\n\t}\n\tpublic get asArray(): readonly FlexTreeUnboxNodeUnion<TTypes>[] {\n\t\treturn this.map((x) => x);\n\t}\n\n\tpublic sequenceEditor(): SequenceFieldEditBuilder {\n\t\tconst fieldPath = this.getFieldPathForEditing();\n\t\tconst fieldEditor = this.context.checkout.editor.sequenceField(fieldPath);\n\t\treturn fieldEditor;\n\t}\n\n\tpublic insertAt(index: number, value: FlexibleNodeSubSequence<TTypes>): void {\n\t\tassertValidIndex(index, this, true);\n\t\tconst content: ITreeCursorSynchronous = isCursor(value)\n\t\t\t? prepareFieldCursorForInsert(value)\n\t\t\t: cursorForMapTreeField(\n\t\t\t\t\tArray.from(value, (item) =>\n\t\t\t\t\t\tapplyTypesFromContext(this.context, this.schema.allowedTypeSet, item),\n\t\t\t\t\t),\n\t\t\t\t);\n\n\t\tconst fieldEditor = this.sequenceEditor();\n\t\tfieldEditor.insert(index, content);\n\t}\n\n\tpublic insertAtStart(value: FlexibleNodeSubSequence<TTypes>): void {\n\t\tthis.insertAt(0, value);\n\t}\n\n\tpublic insertAtEnd(value: FlexibleNodeSubSequence<TTypes>): void {\n\t\tthis.insertAt(this.length, value);\n\t}\n\n\tpublic removeAt(index: number): void {\n\t\tconst fieldEditor = this.sequenceEditor();\n\t\tfieldEditor.remove(index, 1);\n\t}\n\n\tpublic moveToStart(sourceIndex: number): void;\n\tpublic moveToStart(\n\t\tsourceIndex: number,\n\t\tsource: FlexTreeSequenceField<FlexAllowedTypes>,\n\t): void;\n\tpublic moveToStart(\n\t\tsourceIndex: number,\n\t\tsource?: FlexTreeSequenceField<FlexAllowedTypes>,\n\t): void {\n\t\tthis._moveRangeToIndex(0, sourceIndex, sourceIndex + 1, source);\n\t}\n\tpublic moveToEnd(sourceIndex: number): void;\n\tpublic moveToEnd(sourceIndex: number, source: FlexTreeSequenceField<FlexAllowedTypes>): void;\n\tpublic moveToEnd(\n\t\tsourceIndex: number,\n\t\tsource?: FlexTreeSequenceField<FlexAllowedTypes>,\n\t): void {\n\t\tthis._moveRangeToIndex(this.length, sourceIndex, sourceIndex + 1, source);\n\t}\n\tpublic moveToIndex(index: number, sourceIndex: number): void;\n\tpublic moveToIndex(\n\t\tindex: number,\n\t\tsourceIndex: number,\n\t\tsource: FlexTreeSequenceField<FlexAllowedTypes>,\n\t): void;\n\tpublic moveToIndex(\n\t\tindex: number,\n\t\tsourceIndex: number,\n\t\tsource?: FlexTreeSequenceField<FlexAllowedTypes>,\n\t): void {\n\t\tthis._moveRangeToIndex(index, sourceIndex, sourceIndex + 1, source);\n\t}\n\n\tpublic moveRangeToStart(sourceStart: number, sourceEnd: number): void;\n\tpublic moveRangeToStart(\n\t\tsourceStart: number,\n\t\tsourceEnd: number,\n\t\tsource: FlexTreeSequenceField<FlexAllowedTypes>,\n\t): void;\n\tpublic moveRangeToStart(\n\t\tsourceStart: number,\n\t\tsourceEnd: number,\n\t\tsource?: FlexTreeSequenceField<FlexAllowedTypes>,\n\t): void {\n\t\tthis._moveRangeToIndex(0, sourceStart, sourceEnd, source);\n\t}\n\n\tpublic moveRangeToEnd(sourceStart: number, sourceEnd: number): void;\n\tpublic moveRangeToEnd(\n\t\tsourceStart: number,\n\t\tsourceEnd: number,\n\t\tsource: FlexTreeSequenceField<FlexAllowedTypes>,\n\t): void;\n\tpublic moveRangeToEnd(\n\t\tsourceStart: number,\n\t\tsourceEnd: number,\n\t\tsource?: FlexTreeSequenceField<FlexAllowedTypes>,\n\t): void {\n\t\tthis._moveRangeToIndex(this.length, sourceStart, sourceEnd, source);\n\t}\n\n\tpublic moveRangeToIndex(index: number, sourceStart: number, sourceEnd: number): void;\n\tpublic moveRangeToIndex(\n\t\tindex: number,\n\t\tsourceStart: number,\n\t\tsourceEnd: number,\n\t\tsource: FlexTreeSequenceField<FlexAllowedTypes>,\n\t): void;\n\tpublic moveRangeToIndex(\n\t\tindex: number,\n\t\tsourceStart: number,\n\t\tsourceEnd: number,\n\t\tsource?: FlexTreeSequenceField<FlexAllowedTypes>,\n\t): void {\n\t\tthis._moveRangeToIndex(index, sourceStart, sourceEnd, source);\n\t}\n\n\tprivate _moveRangeToIndex(\n\t\tindex: number,\n\t\tsourceStart: number,\n\t\tsourceEnd: number,\n\t\tsource?: FlexTreeSequenceField<FlexAllowedTypes>,\n\t): void {\n\t\tconst sourceField = source ?? this;\n\n\t\t// TODO: determine support for move across different sequence types\n\t\tassert(\n\t\t\tsourceField instanceof LazySequence,\n\t\t\t0x7b1 /* Unsupported sequence implementation. */,\n\t\t);\n\t\tassertValidRangeIndices(sourceStart, sourceEnd, sourceField);\n\t\tif (this.schema.types !== undefined && sourceField !== this) {\n\t\t\tfor (let i = sourceStart; i < sourceEnd; i++) {\n\t\t\t\tconst sourceNode =\n\t\t\t\t\tsourceField.boxedAt(sourceStart) ?? fail(\"impossible out of bounds index\");\n\t\t\t\tif (!this.schema.types.has(sourceNode.schema.name)) {\n\t\t\t\t\tthrow new Error(\"Type in source sequence is not allowed in destination.\");\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\tconst movedCount = sourceEnd - sourceStart;\n\t\tassertValidIndex(index, this, true);\n\t\tconst sourceFieldPath = sourceField.getFieldPath();\n\t\tconst destinationFieldPath = this.getFieldPath();\n\t\tthis.context.checkout.editor.move(\n\t\t\tsourceFieldPath,\n\t\t\tsourceStart,\n\t\t\tmovedCount,\n\t\t\tdestinationFieldPath,\n\t\t\tindex,\n\t\t);\n\t}\n}\n\nexport class ReadonlyLazyValueField<TTypes extends FlexAllowedTypes>\n\textends LazyField<typeof FieldKinds.required, TTypes>\n\timplements FlexTreeRequiredField<TTypes>\n{\n\tpublic constructor(\n\t\tcontext: Context,\n\t\tschema: FlexFieldSchema<typeof FieldKinds.required, TTypes>,\n\t\tcursor: ITreeSubscriptionCursor,\n\t\tfieldAnchor: FieldAnchor,\n\t) {\n\t\tsuper(context, schema, cursor, fieldAnchor);\n\t}\n\n\tpublic get content(): FlexTreeUnboxNodeUnion<TTypes> {\n\t\treturn this.atIndex(0);\n\t}\n\n\tpublic set content(newContent: FlexibleNodeContent<TTypes>) {\n\t\tfail(\"cannot set content in readonly field\");\n\t}\n}\n\nexport class LazyValueField<TTypes extends FlexAllowedTypes>\n\textends ReadonlyLazyValueField<TTypes>\n\timplements FlexTreeRequiredField<TTypes>\n{\n\tpublic constructor(\n\t\tcontext: Context,\n\t\tschema: FlexFieldSchema<typeof FieldKinds.required, TTypes>,\n\t\tcursor: ITreeSubscriptionCursor,\n\t\tfieldAnchor: FieldAnchor,\n\t) {\n\t\tsuper(context, schema, cursor, fieldAnchor);\n\t}\n\n\tprivate valueFieldEditor(): ValueFieldEditBuilder {\n\t\tconst fieldPath = this.getFieldPathForEditing();\n\t\tconst fieldEditor = this.context.checkout.editor.valueField(fieldPath);\n\t\treturn fieldEditor;\n\t}\n\n\tpublic override get content(): FlexTreeUnboxNodeUnion<TTypes> {\n\t\treturn this.atIndex(0);\n\t}\n\n\tpublic override set content(newContent: FlexibleNodeContent<TTypes>) {\n\t\tconst content: ITreeCursorSynchronous[] = isCursor(newContent)\n\t\t\t? prepareNodeCursorForInsert(newContent)\n\t\t\t: [cursorFromContextualData(this.context, this.schema.allowedTypeSet, newContent)];\n\t\tconst fieldEditor = this.valueFieldEditor();\n\t\tassert(content.length === 1, 0x780 /* value field content should normalize to one item */);\n\t\tfieldEditor.set(content[0]);\n\t}\n}\n\nexport class LazyIdentifierField<TTypes extends FlexAllowedTypes>\n\textends ReadonlyLazyValueField<TTypes>\n\timplements FlexTreeRequiredField<TTypes>\n{\n\tpublic constructor(\n\t\tcontext: Context,\n\t\tschema: FlexFieldSchema<typeof FieldKinds.required, TTypes>,\n\t\tcursor: ITreeSubscriptionCursor,\n\t\tfieldAnchor: FieldAnchor,\n\t) {\n\t\tsuper(context, schema, cursor, fieldAnchor);\n\t}\n}\n\nexport class LazyOptionalField<TTypes extends FlexAllowedTypes>\n\textends LazyField<typeof FieldKinds.optional, TTypes>\n\timplements FlexTreeOptionalField<TTypes>\n{\n\tpublic constructor(\n\t\tcontext: Context,\n\t\tschema: FlexFieldSchema<typeof FieldKinds.optional, TTypes>,\n\t\tcursor: ITreeSubscriptionCursor,\n\t\tfieldAnchor: FieldAnchor,\n\t) {\n\t\tsuper(context, schema, cursor, fieldAnchor);\n\t}\n\n\tprivate optionalEditor(): OptionalFieldEditBuilder {\n\t\tconst fieldPath = this.getFieldPathForEditing();\n\t\tconst fieldEditor = this.context.checkout.editor.optionalField(fieldPath);\n\t\treturn fieldEditor;\n\t}\n\n\tpublic get content(): FlexTreeUnboxNodeUnion<TTypes> | undefined {\n\t\treturn this.length === 0 ? undefined : this.atIndex(0);\n\t}\n\n\tpublic set content(newContent: FlexibleNodeContent<TTypes> | undefined) {\n\t\tconst content: ITreeCursorSynchronous[] =\n\t\t\tnewContent === undefined\n\t\t\t\t? []\n\t\t\t\t: isCursor(newContent)\n\t\t\t\t\t? prepareNodeCursorForInsert(newContent)\n\t\t\t\t\t: [cursorFromContextualData(this.context, this.schema.allowedTypeSet, newContent)];\n\t\tconst fieldEditor = this.optionalEditor();\n\t\tassert(\n\t\t\tcontent.length <= 1,\n\t\t\t0x781 /* optional field content should normalize at most one item */,\n\t\t);\n\t\tfieldEditor.set(content.length === 0 ? undefined : content[0], this.length === 0);\n\t}\n}\n\nexport class LazyForbiddenField<TTypes extends FlexAllowedTypes> extends LazyField<\n\ttypeof FieldKinds.forbidden,\n\tTTypes\n> {}\n\ntype Builder = new <TTypes extends FlexAllowedTypes>(\n\tcontext: Context,\n\t// Correct use of these builders requires the builder of the matching type to be used.\n\t// Since this has to be done at runtime anyway, trying to use safer typing than `any` here (such as `never`, which is only slightly safer)\n\t// does not seem worth it (ends up requiring type casts that are just as unsafe).\n\t// eslint-disable-next-line @typescript-eslint/no-explicit-any\n\tschema: FlexFieldSchema<any, TTypes>,\n\tcursor: ITreeSubscriptionCursor,\n\tfieldAnchor: FieldAnchor,\n) => LazyField<FlexFieldKind, TTypes>;\n\nconst builderList: [FlexFieldKind, Builder][] = [\n\t[FieldKinds.forbidden, LazyForbiddenField],\n\t[FieldKinds.optional, LazyOptionalField],\n\t[FieldKinds.sequence, LazySequence],\n\t[FieldKinds.required, LazyValueField],\n\t[FieldKinds.identifier, LazyIdentifierField],\n];\n\nconst kindToClass: ReadonlyMap<FlexFieldKind, Builder> = new Map(builderList);\n\n/**\n * Prepare a fields cursor (holding a sequence of nodes) for inserting.\n */\nfunction prepareFieldCursorForInsert(cursor: ITreeCursorSynchronous): ITreeCursorSynchronous {\n\t// TODO: optionally validate content against schema.\n\n\tassert(cursor.mode === CursorLocationType.Fields, 0x8cb /* should be in fields mode */);\n\treturn cursor;\n}\n\n/**\n * Prepare a node cursor (holding a single node) for inserting.\n */\nfunction prepareNodeCursorForInsert(cursor: ITreeCursorSynchronous): ITreeCursorSynchronous[] {\n\t// TODO: optionally validate content against schema.\n\n\tassert(cursor.mode === CursorLocationType.Nodes, 0x805 /* should be in nodes mode */);\n\treturn [cursor];\n}\n"]}
|
|
@@ -5,9 +5,8 @@
|
|
|
5
5
|
import { type Anchor, type AnchorNode, type FieldKey, type ITreeSubscriptionCursor, type TreeNavigationResult, type TreeNodeSchemaIdentifier, type TreeValue, type Value } from "../../core/index.js";
|
|
6
6
|
import { type FlexFieldNodeSchema, type FlexMapNodeSchema, type FlexObjectNodeSchema, type FlexTreeNodeSchema, type LeafNodeSchema } from "../typed-schema/index.js";
|
|
7
7
|
import type { Context } from "./context.js";
|
|
8
|
-
import { FlexTreeEntityKind, type FlexTreeField, type FlexTreeFieldNode, type FlexTreeLeafNode, type FlexTreeMapNode, type FlexTreeNode, type FlexTreeObjectNodeTyped, type FlexTreeTypedField, type FlexTreeTypedNode, type FlexTreeUnboxField, type FlexibleFieldContent, type PropertyNameFromFieldKey,
|
|
8
|
+
import { FlexTreeEntityKind, type FlexTreeField, type FlexTreeFieldNode, type FlexTreeLeafNode, type FlexTreeMapNode, type FlexTreeNode, type FlexTreeObjectNodeTyped, type FlexTreeTypedField, type FlexTreeTypedNode, type FlexTreeUnboxField, type FlexibleFieldContent, type PropertyNameFromFieldKey, flexTreeMarker } from "./flexTreeTypes.js";
|
|
9
9
|
import { LazyEntity, forgetAnchorSymbol, tryMoveCursorToAnchorSymbol } from "./lazyEntity.js";
|
|
10
|
-
import type { FlexTreeNodeEvents } from "./treeEvents.js";
|
|
11
10
|
/**
|
|
12
11
|
* @param cursor - This does not take ownership of this cursor: Node will fork it as needed.
|
|
13
12
|
*/
|
|
@@ -35,8 +34,6 @@ export declare abstract class LazyTreeNode<TSchema extends FlexTreeNodeSchema =
|
|
|
35
34
|
readonly parent: FlexTreeField;
|
|
36
35
|
readonly index: number;
|
|
37
36
|
};
|
|
38
|
-
treeStatus(): TreeStatus;
|
|
39
|
-
on<K extends keyof FlexTreeNodeEvents>(eventName: K, listener: FlexTreeNodeEvents[K]): () => void;
|
|
40
37
|
}
|
|
41
38
|
export declare class LazyMap<TSchema extends FlexMapNodeSchema> extends LazyTreeNode<TSchema> implements FlexTreeMapNode<TSchema> {
|
|
42
39
|
constructor(context: Context, schema: TSchema, cursor: ITreeSubscriptionCursor, anchorNode: AnchorNode, anchor: Anchor);
|
|
@@ -65,7 +62,6 @@ export declare class LazyLeaf<TSchema extends LeafNodeSchema> extends LazyTreeNo
|
|
|
65
62
|
}
|
|
66
63
|
export declare class LazyFieldNode<TSchema extends FlexFieldNodeSchema> extends LazyTreeNode<TSchema> implements FlexTreeFieldNode<TSchema> {
|
|
67
64
|
get content(): FlexTreeUnboxField<TSchema["info"]>;
|
|
68
|
-
get boxedContent(): FlexTreeTypedField<TSchema["info"]>;
|
|
69
65
|
}
|
|
70
66
|
/**
|
|
71
67
|
* {@link reservedObjectNodeFieldPropertyNames} but as a set.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"lazyNode.d.ts","sourceRoot":"","sources":["../../../src/feature-libraries/flex-tree/lazyNode.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAIH,OAAO,EACN,KAAK,MAAM,EACX,KAAK,UAAU,EAGf,KAAK,QAAQ,EACb,KAAK,uBAAuB,EAC5B,KAAK,oBAAoB,EACzB,KAAK,wBAAwB,EAC7B,KAAK,SAAS,EACd,KAAK,KAAK,EAKV,MAAM,qBAAqB,CAAC;AAG7B,OAAO,EAGN,KAAK,mBAAmB,EAExB,KAAK,iBAAiB,EACtB,KAAK,oBAAoB,EACzB,KAAK,kBAAkB,EACvB,KAAK,cAAc,EAKnB,MAAM,0BAA0B,CAAC;AAElC,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AAC5C,OAAO,EACN,kBAAkB,EAClB,KAAK,aAAa,EAClB,KAAK,iBAAiB,EACtB,KAAK,gBAAgB,EACrB,KAAK,eAAe,EACpB,KAAK,YAAY,EACjB,KAAK,uBAAuB,EAG5B,KAAK,kBAAkB,EACvB,KAAK,iBAAiB,EACtB,KAAK,kBAAkB,EACvB,KAAK,oBAAoB,EAEzB,KAAK,wBAAwB,EAC7B,
|
|
1
|
+
{"version":3,"file":"lazyNode.d.ts","sourceRoot":"","sources":["../../../src/feature-libraries/flex-tree/lazyNode.ts"],"names":[],"mappings":"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"}
|
|
@@ -26,7 +26,6 @@ const flexTreeTypes_js_1 = require("./flexTreeTypes.js");
|
|
|
26
26
|
const lazyEntity_js_1 = require("./lazyEntity.js");
|
|
27
27
|
const lazyField_js_1 = require("./lazyField.js");
|
|
28
28
|
const unboxed_js_1 = require("./unboxed.js");
|
|
29
|
-
const utilities_js_1 = require("./utilities.js");
|
|
30
29
|
/**
|
|
31
30
|
* @param cursor - This does not take ownership of this cursor: Node will fork it as needed.
|
|
32
31
|
*/
|
|
@@ -161,32 +160,6 @@ class LazyTreeNode extends lazyEntity_js_1.LazyEntity {
|
|
|
161
160
|
cursor.enterNode(index);
|
|
162
161
|
return { parent: proxifiedField, index };
|
|
163
162
|
}
|
|
164
|
-
treeStatus() {
|
|
165
|
-
if (this[lazyEntity_js_1.isFreedSymbol]()) {
|
|
166
|
-
return flexTreeTypes_js_1.TreeStatus.Deleted;
|
|
167
|
-
}
|
|
168
|
-
return (0, utilities_js_1.treeStatusFromAnchorCache)(this.anchorNode);
|
|
169
|
-
}
|
|
170
|
-
on(eventName, listener) {
|
|
171
|
-
switch (eventName) {
|
|
172
|
-
case "changing": {
|
|
173
|
-
const unsubscribeFromChildrenChange = this.anchorNode.on("childrenChanging", (anchorNode) => listener(anchorNode));
|
|
174
|
-
return unsubscribeFromChildrenChange;
|
|
175
|
-
}
|
|
176
|
-
case "subtreeChanging": {
|
|
177
|
-
const unsubscribeFromSubtreeChange = this.anchorNode.on("subtreeChanging", (anchorNode) => listener(anchorNode));
|
|
178
|
-
return unsubscribeFromSubtreeChange;
|
|
179
|
-
}
|
|
180
|
-
case "nodeChanged": {
|
|
181
|
-
return this.anchorNode.on("childrenChangedAfterBatch", listener);
|
|
182
|
-
}
|
|
183
|
-
case "treeChanged": {
|
|
184
|
-
return this.anchorNode.on("subtreeChangedAfterBatch", listener);
|
|
185
|
-
}
|
|
186
|
-
default:
|
|
187
|
-
(0, internal_1.unreachableCase)(eventName);
|
|
188
|
-
}
|
|
189
|
-
}
|
|
190
163
|
}
|
|
191
164
|
exports.LazyTreeNode = LazyTreeNode;
|
|
192
165
|
class LazyMap extends LazyTreeNode {
|
|
@@ -268,9 +241,6 @@ class LazyFieldNode extends LazyTreeNode {
|
|
|
268
241
|
get content() {
|
|
269
242
|
return (0, index_js_1.inCursorField)(this[lazyEntity_js_1.cursorSymbol], index_js_1.EmptyKey, (cursor) => (0, unboxed_js_1.unboxedField)(this.context, this.schema.info, cursor));
|
|
270
243
|
}
|
|
271
|
-
get boxedContent() {
|
|
272
|
-
return (0, index_js_1.inCursorField)(this[lazyEntity_js_1.cursorSymbol], index_js_1.EmptyKey, (cursor) => (0, lazyField_js_1.makeField)(this.context, this.schema.info, cursor));
|
|
273
|
-
}
|
|
274
244
|
}
|
|
275
245
|
exports.LazyFieldNode = LazyFieldNode;
|
|
276
246
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"lazyNode.js","sourceRoot":"","sources":["../../../src/feature-libraries/flex-tree/lazyNode.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\ttype Anchor,\n\ttype AnchorNode,\n\tCursorLocationType,\n\tEmptyKey,\n\ttype FieldKey,\n\ttype ITreeSubscriptionCursor,\n\ttype TreeNavigationResult,\n\ttype TreeNodeSchemaIdentifier,\n\ttype TreeValue,\n\ttype Value,\n\tforEachField,\n\tinCursorField,\n\tmapCursorFields,\n\trootFieldKey,\n} from \"../../core/index.js\";\nimport { brand, capitalize, disposeSymbol, fail, getOrCreate } from \"../../util/index.js\";\nimport { FieldKinds } from \"../default-schema/index.js\";\nimport {\n\tAny,\n\ttype FlexAllowedTypes,\n\ttype FlexFieldNodeSchema,\n\tFlexFieldSchema,\n\ttype FlexMapNodeSchema,\n\ttype FlexObjectNodeSchema,\n\ttype FlexTreeNodeSchema,\n\ttype LeafNodeSchema,\n\tschemaIsFieldNode,\n\tschemaIsLeaf,\n\tschemaIsMap,\n\tschemaIsObjectNode,\n} from \"../typed-schema/index.js\";\n\nimport type { Context } from \"./context.js\";\nimport {\n\tFlexTreeEntityKind,\n\ttype FlexTreeField,\n\ttype FlexTreeFieldNode,\n\ttype FlexTreeLeafNode,\n\ttype FlexTreeMapNode,\n\ttype FlexTreeNode,\n\ttype FlexTreeObjectNodeTyped,\n\ttype FlexTreeOptionalField,\n\ttype FlexTreeRequiredField,\n\ttype FlexTreeTypedField,\n\ttype FlexTreeTypedNode,\n\ttype FlexTreeUnboxField,\n\ttype FlexibleFieldContent,\n\ttype FlexibleNodeContent,\n\ttype PropertyNameFromFieldKey,\n\tTreeStatus,\n\tflexTreeMarker,\n\tflexTreeSlot,\n\treservedObjectNodeFieldPropertyNamePrefixes,\n\treservedObjectNodeFieldPropertyNames,\n} from \"./flexTreeTypes.js\";\nimport {\n\tLazyEntity,\n\tanchorSymbol,\n\tcursorSymbol,\n\tforgetAnchorSymbol,\n\tisFreedSymbol,\n\ttryMoveCursorToAnchorSymbol,\n} from \"./lazyEntity.js\";\nimport { makeField } from \"./lazyField.js\";\nimport type { FlexTreeNodeEvents } from \"./treeEvents.js\";\nimport { unboxedField } from \"./unboxed.js\";\nimport { treeStatusFromAnchorCache } from \"./utilities.js\";\n\n/**\n * @param cursor - This does not take ownership of this cursor: Node will fork it as needed.\n */\nexport function makeTree(context: Context, cursor: ITreeSubscriptionCursor): LazyTreeNode {\n\tconst anchor = cursor.buildAnchor();\n\tconst anchorNode =\n\t\tcontext.checkout.forest.anchors.locate(anchor) ??\n\t\tfail(\"cursor should point to a node that is not the root of the AnchorSet\");\n\tconst cached = anchorNode.slots.get(flexTreeSlot);\n\tif (cached !== undefined) {\n\t\tcontext.checkout.forest.anchors.forget(anchor);\n\t\tassert(cached.context === context, 0x782 /* contexts must match */);\n\t\tassert(cached instanceof LazyTreeNode, 0x92c /* Expected LazyTreeNode */);\n\t\treturn cached as LazyTreeNode;\n\t}\n\tconst schema = context.schema.nodeSchema.get(cursor.type) ?? fail(\"missing schema\");\n\treturn buildSubclass(context, schema, cursor, anchorNode, anchor);\n}\n\nfunction cleanupTree(anchor: AnchorNode): void {\n\tconst cached = anchor.slots.get(flexTreeSlot) ?? fail(\"tree should only be cleaned up once\");\n\tassert(cached instanceof LazyTreeNode, 0x92d /* Expected LazyTreeNode */);\n\tcached[disposeSymbol]();\n}\n\nfunction buildSubclass(\n\tcontext: Context,\n\tschema: FlexTreeNodeSchema,\n\tcursor: ITreeSubscriptionCursor,\n\tanchorNode: AnchorNode,\n\tanchor: Anchor,\n): LazyTreeNode {\n\tif (schemaIsMap(schema)) {\n\t\treturn new LazyMap(context, schema, cursor, anchorNode, anchor);\n\t}\n\tif (schemaIsLeaf(schema)) {\n\t\treturn new LazyLeaf(context, schema, cursor, anchorNode, anchor);\n\t}\n\tif (schemaIsFieldNode(schema)) {\n\t\treturn new LazyFieldNode(context, schema, cursor, anchorNode, anchor);\n\t}\n\tif (schemaIsObjectNode(schema)) {\n\t\treturn buildLazyObjectNode(context, schema, cursor, anchorNode, anchor);\n\t}\n\t// TODO: there should be a common fallback that works for cases without a specialized implementation.\n\tfail(\"unrecognized node kind\");\n}\n\n/**\n * Lazy implementation of {@link FlexTreeNode}.\n */\nexport abstract class LazyTreeNode<TSchema extends FlexTreeNodeSchema = FlexTreeNodeSchema>\n\textends LazyEntity<TSchema, Anchor>\n\timplements FlexTreeNode\n{\n\tpublic get [flexTreeMarker](): FlexTreeEntityKind.Node {\n\t\treturn FlexTreeEntityKind.Node;\n\t}\n\t/**\n\t * Enumerable own property providing a more JS object friendly alternative to \"schema\".\n\t */\n\tpublic readonly type: TreeNodeSchemaIdentifier;\n\n\t// Using JS private here prevents it from showing up as a enumerable own property, or conflicting with struct fields.\n\treadonly #removeDeleteCallback: () => void;\n\n\tpublic constructor(\n\t\tcontext: Context,\n\t\tschema: TSchema,\n\t\tcursor: ITreeSubscriptionCursor,\n\t\tpublic readonly anchorNode: AnchorNode,\n\t\tanchor: Anchor,\n\t) {\n\t\tsuper(context, schema, cursor, anchor);\n\t\tassert(cursor.mode === CursorLocationType.Nodes, 0x783 /* must be in nodes mode */);\n\t\tanchorNode.slots.set(flexTreeSlot, this);\n\t\tthis.#removeDeleteCallback = anchorNode.on(\"afterDestroy\", cleanupTree);\n\n\t\tassert(\n\t\t\tthis.context.schema.nodeSchema.get(this.schema.name) !== undefined,\n\t\t\t0x784 /* There is no explicit schema for this node type. Ensure that the type is correct and the schema for it was added to the TreeStoredSchema */,\n\t\t);\n\n\t\tthis.type = schema.name;\n\t}\n\n\tpublic is<TSchemaInner extends FlexTreeNodeSchema>(\n\t\tschema: TSchemaInner,\n\t): this is FlexTreeTypedNode<TSchemaInner> {\n\t\tassert(\n\t\t\tthis.context.schema.nodeSchema.get(schema.name) === schema,\n\t\t\t0x785 /* Narrowing must be done to a schema that exists in this context */,\n\t\t);\n\t\treturn this.schema === (schema as unknown);\n\t}\n\n\tprotected override [tryMoveCursorToAnchorSymbol](\n\t\tcursor: ITreeSubscriptionCursor,\n\t): TreeNavigationResult {\n\t\treturn this.context.checkout.forest.tryMoveCursorToNode(this[anchorSymbol], cursor);\n\t}\n\n\tprotected override [forgetAnchorSymbol](): void {\n\t\t// This type unconditionally has an anchor, so `forgetAnchor` is always called and cleanup can be done here:\n\t\t// After this point this node will not be usable,\n\t\t// so remove it from the anchor incase a different context (or the same context later) uses this AnchorSet.\n\t\tthis.anchorNode.slots.delete(flexTreeSlot);\n\t\tthis.#removeDeleteCallback();\n\t\tthis.context.checkout.forest.anchors.forget(this[anchorSymbol]);\n\t}\n\n\tpublic get value(): Value {\n\t\treturn this[cursorSymbol].value;\n\t}\n\n\tpublic tryGetField(fieldKey: FieldKey): FlexTreeField | undefined {\n\t\tconst schema = this.schema.getFieldSchema(fieldKey);\n\t\treturn inCursorField(this[cursorSymbol], fieldKey, (cursor) => {\n\t\t\tif (cursor.getFieldLength() === 0) {\n\t\t\t\treturn undefined;\n\t\t\t}\n\t\t\treturn makeField(this.context, schema, cursor);\n\t\t});\n\t}\n\n\tpublic getBoxed(key: FieldKey): FlexTreeField {\n\t\treturn getBoxedField(this, key, this.schema.getFieldSchema(key));\n\t}\n\n\tpublic boxedIterator(): IterableIterator<FlexTreeField> {\n\t\treturn mapCursorFields(this[cursorSymbol], (cursor) =>\n\t\t\tmakeField(this.context, this.schema.getFieldSchema(cursor.getFieldKey()), cursor),\n\t\t).values();\n\t}\n\n\tpublic get parentField(): { readonly parent: FlexTreeField; readonly index: number } {\n\t\tconst cursor = this[cursorSymbol];\n\t\tconst index = this.anchorNode.parentIndex;\n\t\tassert(cursor.fieldIndex === index, 0x786 /* mismatched indexes */);\n\t\tconst key = this.anchorNode.parentField;\n\n\t\tcursor.exitNode();\n\t\tassert(key === cursor.getFieldKey(), 0x787 /* mismatched keys */);\n\t\tlet fieldSchema: FlexFieldSchema;\n\n\t\t// Check if the current node is in a detached sequence.\n\t\tif (this.anchorNode.parent === undefined) {\n\t\t\t// Parent field is a detached sequence, and thus needs special handling for its schema.\n\t\t\t// eslint-disable-next-line unicorn/prefer-ternary\n\t\t\tif (key === rootFieldKey) {\n\t\t\t\tfieldSchema = this.context.schema.rootFieldSchema;\n\t\t\t} else {\n\t\t\t\t// All fields (in the flex tree API) have a schema.\n\t\t\t\t// Since currently there is no known schema for detached field other than the special default root:\n\t\t\t\t// give all other detached fields a schema of sequence of any.\n\t\t\t\t// That schema is the only one that is safe since its the only field schema that allows any possible field content.\n\t\t\t\t//\n\t\t\t\t// TODO:\n\t\t\t\t// if any of the following are done this schema will need to be more specific:\n\t\t\t\t// 1. Editing APIs start exposing user created detached sequences.\n\t\t\t\t// 2. Remove (and its inverse) start working on subsequences or fields contents (like everything in a sequence or optional field) and not just single nodes.\n\t\t\t\t// 3. Possibly other unknown cases.\n\t\t\t\t// Additionally this approach makes it possible for a user to take a FlexTree node, get its parent, check its schema, down cast based on that, then edit that detached field (ex: removing the node in it).\n\t\t\t\t// This MIGHT work properly with existing merge resolution logic (it must keep client in sync and be unable to violate schema), but this either needs robust testing or to be explicitly banned (error before s3ending the op).\n\t\t\t\t// Issues like replacing a node in the a removed sequenced then undoing the remove could easily violate schema if not everything works exactly right!\n\t\t\t\tfieldSchema = FlexFieldSchema.create(FieldKinds.sequence, [Any]);\n\t\t\t}\n\t\t} else {\n\t\t\tcursor.exitField();\n\t\t\tconst parentType = cursor.type;\n\t\t\tcursor.enterField(key);\n\t\t\tconst nodeSchema =\n\t\t\t\tthis.context.schema.nodeSchema.get(parentType) ??\n\t\t\t\tfail(\"requested schema that does not exist\");\n\t\t\tfieldSchema = nodeSchema.getFieldSchema(key);\n\t\t}\n\n\t\tconst proxifiedField = makeField(this.context, fieldSchema, cursor);\n\t\tcursor.enterNode(index);\n\n\t\treturn { parent: proxifiedField, index };\n\t}\n\n\tpublic override treeStatus(): TreeStatus {\n\t\tif (this[isFreedSymbol]()) {\n\t\t\treturn TreeStatus.Deleted;\n\t\t}\n\t\treturn treeStatusFromAnchorCache(this.anchorNode);\n\t}\n\n\tpublic on<K extends keyof FlexTreeNodeEvents>(\n\t\teventName: K,\n\t\tlistener: FlexTreeNodeEvents[K],\n\t): () => void {\n\t\tswitch (eventName) {\n\t\t\tcase \"changing\": {\n\t\t\t\tconst unsubscribeFromChildrenChange = this.anchorNode.on(\n\t\t\t\t\t\"childrenChanging\",\n\t\t\t\t\t(anchorNode: AnchorNode) => listener(anchorNode),\n\t\t\t\t);\n\t\t\t\treturn unsubscribeFromChildrenChange;\n\t\t\t}\n\t\t\tcase \"subtreeChanging\": {\n\t\t\t\tconst unsubscribeFromSubtreeChange = this.anchorNode.on(\n\t\t\t\t\t\"subtreeChanging\",\n\t\t\t\t\t(anchorNode: AnchorNode) => listener(anchorNode),\n\t\t\t\t);\n\t\t\t\treturn unsubscribeFromSubtreeChange;\n\t\t\t}\n\t\t\tcase \"nodeChanged\": {\n\t\t\t\treturn this.anchorNode.on(\"childrenChangedAfterBatch\", listener);\n\t\t\t}\n\t\t\tcase \"treeChanged\": {\n\t\t\t\treturn this.anchorNode.on(\"subtreeChangedAfterBatch\", listener);\n\t\t\t}\n\t\t\tdefault:\n\t\t\t\tunreachableCase(eventName);\n\t\t}\n\t}\n}\n\nexport class LazyMap<TSchema extends FlexMapNodeSchema>\n\textends LazyTreeNode<TSchema>\n\timplements FlexTreeMapNode<TSchema>\n{\n\tpublic constructor(\n\t\tcontext: Context,\n\t\tschema: TSchema,\n\t\tcursor: ITreeSubscriptionCursor,\n\t\tanchorNode: AnchorNode,\n\t\tanchor: Anchor,\n\t) {\n\t\tsuper(context, schema, cursor, anchorNode, anchor);\n\t}\n\n\tpublic get size(): number {\n\t\tlet fieldCount = 0;\n\t\tforEachField(this[cursorSymbol], () => (fieldCount += 1));\n\t\treturn fieldCount;\n\t}\n\n\tpublic keys(): IterableIterator<FieldKey> {\n\t\treturn mapCursorFields(this[cursorSymbol], (cursor) => cursor.getFieldKey()).values();\n\t}\n\n\tpublic values(): IterableIterator<FlexTreeUnboxField<TSchema[\"info\"], \"notEmpty\">> {\n\t\treturn mapCursorFields(\n\t\t\tthis[cursorSymbol],\n\t\t\t(cursor) =>\n\t\t\t\tunboxedField(this.context, this.schema.info, cursor) as FlexTreeUnboxField<\n\t\t\t\t\tTSchema[\"info\"],\n\t\t\t\t\t\"notEmpty\"\n\t\t\t\t>,\n\t\t).values();\n\t}\n\n\tpublic entries(): IterableIterator<\n\t\t[FieldKey, FlexTreeUnboxField<TSchema[\"info\"], \"notEmpty\">]\n\t> {\n\t\treturn mapCursorFields(this[cursorSymbol], (cursor) => {\n\t\t\tconst entry: [FieldKey, FlexTreeUnboxField<TSchema[\"info\"], \"notEmpty\">] = [\n\t\t\t\tcursor.getFieldKey(),\n\t\t\t\tunboxedField(this.context, this.schema.info, cursor) as FlexTreeUnboxField<\n\t\t\t\t\tTSchema[\"info\"],\n\t\t\t\t\t\"notEmpty\"\n\t\t\t\t>,\n\t\t\t];\n\t\t\treturn entry;\n\t\t}).values();\n\t}\n\n\tpublic forEach(\n\t\tcallbackFn: (\n\t\t\tvalue: FlexTreeUnboxField<TSchema[\"info\"], \"notEmpty\">,\n\t\t\tkey: FieldKey,\n\t\t\tmap: FlexTreeMapNode<TSchema>,\n\t\t) => void,\n\t\tthisArg?: unknown,\n\t): void {\n\t\tconst fn = thisArg !== undefined ? callbackFn.bind(thisArg) : callbackFn;\n\t\tfor (const [key, value] of this.entries()) {\n\t\t\tfn(value, key, this);\n\t\t}\n\t}\n\n\tpublic has(key: string): boolean {\n\t\treturn this.tryGetField(brand(key)) !== undefined;\n\t}\n\n\tpublic get(key: string): FlexTreeUnboxField<TSchema[\"info\"]> {\n\t\treturn inCursorField(this[cursorSymbol], brand(key), (cursor) =>\n\t\t\tunboxedField(this.context, this.schema.info, cursor),\n\t\t) as FlexTreeUnboxField<TSchema[\"info\"]>;\n\t}\n\n\tpublic override getBoxed(key: string): FlexTreeTypedField<TSchema[\"info\"]> {\n\t\treturn super.getBoxed(brand(key)) as FlexTreeTypedField<TSchema[\"info\"]>;\n\t}\n\n\tpublic set(key: string, content: FlexibleFieldContent<TSchema[\"info\"]> | undefined): void {\n\t\tconst field = this.getBoxed(key);\n\t\tconst fieldSchema = this.schema.info;\n\n\t\tif (fieldSchema.kind === FieldKinds.optional) {\n\t\t\tconst optionalField = field as FlexTreeOptionalField<FlexAllowedTypes>;\n\t\t\toptionalField.content = content;\n\t\t} else {\n\t\t\tassert(fieldSchema.kind === FieldKinds.sequence, 0x807 /* Unexpected map field kind */);\n\n\t\t\t// TODO: implement setting of sequence fields once we have defined clear merged semantics for doing so.\n\t\t\t// For now, we will throw an error, since the public API does not currently expose a way to do this anyways.\n\t\t\tthrow new Error(\"Setting of sequence values in maps is not yet supported.\");\n\t\t}\n\t}\n\n\tpublic delete(key: FieldKey): void {\n\t\t// Since all keys implicitly exist under a Map node, and we represent \"no value\" with `undefined`,\n\t\t// \"deleting\" a key/value pair is the same as setting the value to `undefined`.\n\t\tthis.set(key, undefined);\n\t}\n\n\tpublic override boxedIterator(): IterableIterator<FlexTreeTypedField<TSchema[\"info\"]>> {\n\t\treturn super.boxedIterator() as IterableIterator<FlexTreeTypedField<TSchema[\"info\"]>>;\n\t}\n\n\tpublic [Symbol.iterator](): IterableIterator<\n\t\t[FieldKey, FlexTreeUnboxField<TSchema[\"info\"], \"notEmpty\">]\n\t> {\n\t\treturn this.entries();\n\t}\n}\n\nexport class LazyLeaf<TSchema extends LeafNodeSchema>\n\textends LazyTreeNode<TSchema>\n\timplements FlexTreeLeafNode<TSchema>\n{\n\tpublic constructor(\n\t\tcontext: Context,\n\t\tschema: TSchema,\n\t\tcursor: ITreeSubscriptionCursor,\n\t\tanchorNode: AnchorNode,\n\t\tanchor: Anchor,\n\t) {\n\t\tsuper(context, schema, cursor, anchorNode, anchor);\n\t}\n\n\tpublic override get value(): TreeValue<TSchema[\"info\"]> {\n\t\treturn super.value as TreeValue<TSchema[\"info\"]>;\n\t}\n}\n\nexport class LazyFieldNode<TSchema extends FlexFieldNodeSchema>\n\textends LazyTreeNode<TSchema>\n\timplements FlexTreeFieldNode<TSchema>\n{\n\tpublic get content(): FlexTreeUnboxField<TSchema[\"info\"]> {\n\t\treturn inCursorField(this[cursorSymbol], EmptyKey, (cursor) =>\n\t\t\tunboxedField(this.context, this.schema.info, cursor),\n\t\t) as FlexTreeUnboxField<TSchema[\"info\"]>;\n\t}\n\n\tpublic get boxedContent(): FlexTreeTypedField<TSchema[\"info\"]> {\n\t\treturn inCursorField(this[cursorSymbol], EmptyKey, (cursor) =>\n\t\t\tmakeField(this.context, this.schema.info, cursor),\n\t\t) as FlexTreeTypedField<TSchema[\"info\"]>;\n\t}\n}\n\n/**\n * {@link reservedObjectNodeFieldPropertyNames} but as a set.\n */\nexport const reservedObjectNodeFieldPropertyNameSet: ReadonlySet<string> = new Set(\n\treservedObjectNodeFieldPropertyNames,\n);\n\nexport function propertyNameFromFieldKey<T extends string>(\n\tkey: T,\n): PropertyNameFromFieldKey<T> {\n\tif (reservedObjectNodeFieldPropertyNameSet.has(key)) {\n\t\treturn `field${capitalize(key)}` as PropertyNameFromFieldKey<T>;\n\t}\n\tfor (const prefix of reservedObjectNodeFieldPropertyNamePrefixes) {\n\t\tif (key.startsWith(prefix)) {\n\t\t\tconst afterPrefix = key.slice(prefix.length);\n\t\t\tif (afterPrefix === capitalize(afterPrefix)) {\n\t\t\t\treturn `field${capitalize(key)}` as PropertyNameFromFieldKey<T>;\n\t\t\t}\n\t\t}\n\t}\n\treturn key as PropertyNameFromFieldKey<T>;\n}\n\nexport function buildLazyObjectNode<TSchema extends FlexObjectNodeSchema>(\n\tcontext: Context,\n\tschema: TSchema,\n\tcursor: ITreeSubscriptionCursor,\n\tanchorNode: AnchorNode,\n\tanchor: Anchor,\n): LazyTreeNode<TSchema> & FlexTreeObjectNodeTyped<TSchema> {\n\tconst objectNodeClass = getOrCreate(cachedStructClasses, schema, () =>\n\t\tbuildStructClass(schema),\n\t);\n\treturn new objectNodeClass(context, cursor, anchorNode, anchor) as LazyTreeNode<TSchema> &\n\t\tFlexTreeObjectNodeTyped<TSchema>;\n}\n\nconst cachedStructClasses = new WeakMap<\n\tFlexObjectNodeSchema,\n\tnew (\n\t\tcontext: Context,\n\t\tcursor: ITreeSubscriptionCursor,\n\t\tanchorNode: AnchorNode,\n\t\tanchor: Anchor,\n\t) => LazyTreeNode<FlexObjectNodeSchema>\n>();\n\nfunction getBoxedField(\n\tobjectNode: LazyTreeNode,\n\tkey: FieldKey,\n\tfieldSchema: FlexFieldSchema,\n): FlexTreeField {\n\treturn inCursorField(objectNode[cursorSymbol], key, (cursor) => {\n\t\treturn makeField(objectNode.context, fieldSchema, cursor);\n\t});\n}\n\nfunction buildStructClass<TSchema extends FlexObjectNodeSchema>(\n\tschema: TSchema,\n): new (\n\tcontext: Context,\n\tcursor: ITreeSubscriptionCursor,\n\tanchorNode: AnchorNode,\n\tanchor: Anchor,\n) => LazyTreeNode<TSchema> {\n\tconst propertyDescriptorMap: PropertyDescriptorMap = {};\n\n\tfor (const [key, fieldSchema] of schema.objectNodeFields) {\n\t\tconst escapedKey = propertyNameFromFieldKey(key);\n\t\tlet setter: ((newContent: FlexibleNodeContent<FlexAllowedTypes>) => void) | undefined;\n\t\tswitch (fieldSchema.kind) {\n\t\t\tcase FieldKinds.optional: {\n\t\t\t\tsetter = function (\n\t\t\t\t\tthis: CustomStruct,\n\t\t\t\t\tnewContent: FlexibleNodeContent<FlexAllowedTypes> | undefined,\n\t\t\t\t): void {\n\t\t\t\t\tconst field = getBoxedField(\n\t\t\t\t\t\tthis,\n\t\t\t\t\t\tkey,\n\t\t\t\t\t\tfieldSchema,\n\t\t\t\t\t) as FlexTreeOptionalField<FlexAllowedTypes>;\n\t\t\t\t\tfield.content = newContent;\n\t\t\t\t};\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tcase FieldKinds.required: {\n\t\t\t\tsetter = function (\n\t\t\t\t\tthis: CustomStruct,\n\t\t\t\t\tnewContent: FlexibleNodeContent<FlexAllowedTypes>,\n\t\t\t\t): void {\n\t\t\t\t\tconst field = getBoxedField(\n\t\t\t\t\t\tthis,\n\t\t\t\t\t\tkey,\n\t\t\t\t\t\tfieldSchema,\n\t\t\t\t\t) as FlexTreeRequiredField<FlexAllowedTypes>;\n\t\t\t\t\tfield.content = newContent;\n\t\t\t\t};\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tdefault:\n\t\t\t\tsetter = undefined;\n\t\t\t\tbreak;\n\t\t}\n\n\t\t// Create getter and setter (when appropriate) for property\n\t\tpropertyDescriptorMap[escapedKey] = {\n\t\t\tenumerable: true,\n\t\t\tget(this: CustomStruct): unknown {\n\t\t\t\treturn inCursorField(this[cursorSymbol], key, (cursor) =>\n\t\t\t\t\tunboxedField(this.context, fieldSchema, cursor),\n\t\t\t\t);\n\t\t\t},\n\t\t\tset: setter,\n\t\t};\n\n\t\t// Create set method for property (when appropriate)\n\t\tif (setter !== undefined) {\n\t\t\tpropertyDescriptorMap[`set${capitalize(escapedKey)}`] = {\n\t\t\t\tenumerable: false,\n\t\t\t\tget(this: CustomStruct) {\n\t\t\t\t\treturn setter;\n\t\t\t\t},\n\t\t\t};\n\t\t}\n\n\t\tpropertyDescriptorMap[`boxed${capitalize(escapedKey)}`] = {\n\t\t\tenumerable: false,\n\t\t\tget(this: CustomStruct) {\n\t\t\t\treturn getBoxedField(this, key, fieldSchema);\n\t\t\t},\n\t\t};\n\t}\n\n\t// This must implement `StructTyped<TSchema>`, but TypeScript can't constrain it to do so.\n\tclass CustomStruct extends LazyTreeNode<TSchema> {\n\t\tpublic constructor(\n\t\t\tcontext: Context,\n\t\t\tcursor: ITreeSubscriptionCursor,\n\t\t\tanchorNode: AnchorNode,\n\t\t\tanchor: Anchor,\n\t\t) {\n\t\t\tsuper(context, schema, cursor, anchorNode, anchor);\n\t\t}\n\t}\n\n\tObject.defineProperties(CustomStruct.prototype, propertyDescriptorMap);\n\n\treturn CustomStruct;\n}\n"]}
|
|
1
|
+
{"version":3,"file":"lazyNode.js","sourceRoot":"","sources":["../../../src/feature-libraries/flex-tree/lazyNode.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 } from \"@fluidframework/core-utils/internal\";\n\nimport {\n\ttype Anchor,\n\ttype AnchorNode,\n\tCursorLocationType,\n\tEmptyKey,\n\ttype FieldKey,\n\ttype ITreeSubscriptionCursor,\n\ttype TreeNavigationResult,\n\ttype TreeNodeSchemaIdentifier,\n\ttype TreeValue,\n\ttype Value,\n\tforEachField,\n\tinCursorField,\n\tmapCursorFields,\n\trootFieldKey,\n} from \"../../core/index.js\";\nimport { brand, capitalize, disposeSymbol, fail, getOrCreate } from \"../../util/index.js\";\nimport { FieldKinds } from \"../default-schema/index.js\";\nimport {\n\tAny,\n\ttype FlexAllowedTypes,\n\ttype FlexFieldNodeSchema,\n\tFlexFieldSchema,\n\ttype FlexMapNodeSchema,\n\ttype FlexObjectNodeSchema,\n\ttype FlexTreeNodeSchema,\n\ttype LeafNodeSchema,\n\tschemaIsFieldNode,\n\tschemaIsLeaf,\n\tschemaIsMap,\n\tschemaIsObjectNode,\n} from \"../typed-schema/index.js\";\n\nimport type { Context } from \"./context.js\";\nimport {\n\tFlexTreeEntityKind,\n\ttype FlexTreeField,\n\ttype FlexTreeFieldNode,\n\ttype FlexTreeLeafNode,\n\ttype FlexTreeMapNode,\n\ttype FlexTreeNode,\n\ttype FlexTreeObjectNodeTyped,\n\ttype FlexTreeOptionalField,\n\ttype FlexTreeRequiredField,\n\ttype FlexTreeTypedField,\n\ttype FlexTreeTypedNode,\n\ttype FlexTreeUnboxField,\n\ttype FlexibleFieldContent,\n\ttype FlexibleNodeContent,\n\ttype PropertyNameFromFieldKey,\n\tflexTreeMarker,\n\tflexTreeSlot,\n\treservedObjectNodeFieldPropertyNamePrefixes,\n\treservedObjectNodeFieldPropertyNames,\n} from \"./flexTreeTypes.js\";\nimport {\n\tLazyEntity,\n\tanchorSymbol,\n\tcursorSymbol,\n\tforgetAnchorSymbol,\n\ttryMoveCursorToAnchorSymbol,\n} from \"./lazyEntity.js\";\nimport { makeField } from \"./lazyField.js\";\nimport { unboxedField } from \"./unboxed.js\";\n\n/**\n * @param cursor - This does not take ownership of this cursor: Node will fork it as needed.\n */\nexport function makeTree(context: Context, cursor: ITreeSubscriptionCursor): LazyTreeNode {\n\tconst anchor = cursor.buildAnchor();\n\tconst anchorNode =\n\t\tcontext.checkout.forest.anchors.locate(anchor) ??\n\t\tfail(\"cursor should point to a node that is not the root of the AnchorSet\");\n\tconst cached = anchorNode.slots.get(flexTreeSlot);\n\tif (cached !== undefined) {\n\t\tcontext.checkout.forest.anchors.forget(anchor);\n\t\tassert(cached.context === context, 0x782 /* contexts must match */);\n\t\tassert(cached instanceof LazyTreeNode, 0x92c /* Expected LazyTreeNode */);\n\t\treturn cached as LazyTreeNode;\n\t}\n\tconst schema = context.schema.nodeSchema.get(cursor.type) ?? fail(\"missing schema\");\n\treturn buildSubclass(context, schema, cursor, anchorNode, anchor);\n}\n\nfunction cleanupTree(anchor: AnchorNode): void {\n\tconst cached = anchor.slots.get(flexTreeSlot) ?? fail(\"tree should only be cleaned up once\");\n\tassert(cached instanceof LazyTreeNode, 0x92d /* Expected LazyTreeNode */);\n\tcached[disposeSymbol]();\n}\n\nfunction buildSubclass(\n\tcontext: Context,\n\tschema: FlexTreeNodeSchema,\n\tcursor: ITreeSubscriptionCursor,\n\tanchorNode: AnchorNode,\n\tanchor: Anchor,\n): LazyTreeNode {\n\tif (schemaIsMap(schema)) {\n\t\treturn new LazyMap(context, schema, cursor, anchorNode, anchor);\n\t}\n\tif (schemaIsLeaf(schema)) {\n\t\treturn new LazyLeaf(context, schema, cursor, anchorNode, anchor);\n\t}\n\tif (schemaIsFieldNode(schema)) {\n\t\treturn new LazyFieldNode(context, schema, cursor, anchorNode, anchor);\n\t}\n\tif (schemaIsObjectNode(schema)) {\n\t\treturn buildLazyObjectNode(context, schema, cursor, anchorNode, anchor);\n\t}\n\t// TODO: there should be a common fallback that works for cases without a specialized implementation.\n\tfail(\"unrecognized node kind\");\n}\n\n/**\n * Lazy implementation of {@link FlexTreeNode}.\n */\nexport abstract class LazyTreeNode<TSchema extends FlexTreeNodeSchema = FlexTreeNodeSchema>\n\textends LazyEntity<TSchema, Anchor>\n\timplements FlexTreeNode\n{\n\tpublic get [flexTreeMarker](): FlexTreeEntityKind.Node {\n\t\treturn FlexTreeEntityKind.Node;\n\t}\n\t/**\n\t * Enumerable own property providing a more JS object friendly alternative to \"schema\".\n\t */\n\tpublic readonly type: TreeNodeSchemaIdentifier;\n\n\t// Using JS private here prevents it from showing up as a enumerable own property, or conflicting with struct fields.\n\treadonly #removeDeleteCallback: () => void;\n\n\tpublic constructor(\n\t\tcontext: Context,\n\t\tschema: TSchema,\n\t\tcursor: ITreeSubscriptionCursor,\n\t\tpublic readonly anchorNode: AnchorNode,\n\t\tanchor: Anchor,\n\t) {\n\t\tsuper(context, schema, cursor, anchor);\n\t\tassert(cursor.mode === CursorLocationType.Nodes, 0x783 /* must be in nodes mode */);\n\t\tanchorNode.slots.set(flexTreeSlot, this);\n\t\tthis.#removeDeleteCallback = anchorNode.on(\"afterDestroy\", cleanupTree);\n\n\t\tassert(\n\t\t\tthis.context.schema.nodeSchema.get(this.schema.name) !== undefined,\n\t\t\t0x784 /* There is no explicit schema for this node type. Ensure that the type is correct and the schema for it was added to the TreeStoredSchema */,\n\t\t);\n\n\t\tthis.type = schema.name;\n\t}\n\n\tpublic is<TSchemaInner extends FlexTreeNodeSchema>(\n\t\tschema: TSchemaInner,\n\t): this is FlexTreeTypedNode<TSchemaInner> {\n\t\tassert(\n\t\t\tthis.context.schema.nodeSchema.get(schema.name) === schema,\n\t\t\t0x785 /* Narrowing must be done to a schema that exists in this context */,\n\t\t);\n\t\treturn this.schema === (schema as unknown);\n\t}\n\n\tprotected override [tryMoveCursorToAnchorSymbol](\n\t\tcursor: ITreeSubscriptionCursor,\n\t): TreeNavigationResult {\n\t\treturn this.context.checkout.forest.tryMoveCursorToNode(this[anchorSymbol], cursor);\n\t}\n\n\tprotected override [forgetAnchorSymbol](): void {\n\t\t// This type unconditionally has an anchor, so `forgetAnchor` is always called and cleanup can be done here:\n\t\t// After this point this node will not be usable,\n\t\t// so remove it from the anchor incase a different context (or the same context later) uses this AnchorSet.\n\t\tthis.anchorNode.slots.delete(flexTreeSlot);\n\t\tthis.#removeDeleteCallback();\n\t\tthis.context.checkout.forest.anchors.forget(this[anchorSymbol]);\n\t}\n\n\tpublic get value(): Value {\n\t\treturn this[cursorSymbol].value;\n\t}\n\n\tpublic tryGetField(fieldKey: FieldKey): FlexTreeField | undefined {\n\t\tconst schema = this.schema.getFieldSchema(fieldKey);\n\t\treturn inCursorField(this[cursorSymbol], fieldKey, (cursor) => {\n\t\t\tif (cursor.getFieldLength() === 0) {\n\t\t\t\treturn undefined;\n\t\t\t}\n\t\t\treturn makeField(this.context, schema, cursor);\n\t\t});\n\t}\n\n\tpublic getBoxed(key: FieldKey): FlexTreeField {\n\t\treturn getBoxedField(this, key, this.schema.getFieldSchema(key));\n\t}\n\n\tpublic boxedIterator(): IterableIterator<FlexTreeField> {\n\t\treturn mapCursorFields(this[cursorSymbol], (cursor) =>\n\t\t\tmakeField(this.context, this.schema.getFieldSchema(cursor.getFieldKey()), cursor),\n\t\t).values();\n\t}\n\n\tpublic get parentField(): { readonly parent: FlexTreeField; readonly index: number } {\n\t\tconst cursor = this[cursorSymbol];\n\t\tconst index = this.anchorNode.parentIndex;\n\t\tassert(cursor.fieldIndex === index, 0x786 /* mismatched indexes */);\n\t\tconst key = this.anchorNode.parentField;\n\n\t\tcursor.exitNode();\n\t\tassert(key === cursor.getFieldKey(), 0x787 /* mismatched keys */);\n\t\tlet fieldSchema: FlexFieldSchema;\n\n\t\t// Check if the current node is in a detached sequence.\n\t\tif (this.anchorNode.parent === undefined) {\n\t\t\t// Parent field is a detached sequence, and thus needs special handling for its schema.\n\t\t\t// eslint-disable-next-line unicorn/prefer-ternary\n\t\t\tif (key === rootFieldKey) {\n\t\t\t\tfieldSchema = this.context.schema.rootFieldSchema;\n\t\t\t} else {\n\t\t\t\t// All fields (in the flex tree API) have a schema.\n\t\t\t\t// Since currently there is no known schema for detached field other than the special default root:\n\t\t\t\t// give all other detached fields a schema of sequence of any.\n\t\t\t\t// That schema is the only one that is safe since its the only field schema that allows any possible field content.\n\t\t\t\t//\n\t\t\t\t// TODO:\n\t\t\t\t// if any of the following are done this schema will need to be more specific:\n\t\t\t\t// 1. Editing APIs start exposing user created detached sequences.\n\t\t\t\t// 2. Remove (and its inverse) start working on subsequences or fields contents (like everything in a sequence or optional field) and not just single nodes.\n\t\t\t\t// 3. Possibly other unknown cases.\n\t\t\t\t// Additionally this approach makes it possible for a user to take a FlexTree node, get its parent, check its schema, down cast based on that, then edit that detached field (ex: removing the node in it).\n\t\t\t\t// This MIGHT work properly with existing merge resolution logic (it must keep client in sync and be unable to violate schema), but this either needs robust testing or to be explicitly banned (error before s3ending the op).\n\t\t\t\t// Issues like replacing a node in the a removed sequenced then undoing the remove could easily violate schema if not everything works exactly right!\n\t\t\t\tfieldSchema = FlexFieldSchema.create(FieldKinds.sequence, [Any]);\n\t\t\t}\n\t\t} else {\n\t\t\tcursor.exitField();\n\t\t\tconst parentType = cursor.type;\n\t\t\tcursor.enterField(key);\n\t\t\tconst nodeSchema =\n\t\t\t\tthis.context.schema.nodeSchema.get(parentType) ??\n\t\t\t\tfail(\"requested schema that does not exist\");\n\t\t\tfieldSchema = nodeSchema.getFieldSchema(key);\n\t\t}\n\n\t\tconst proxifiedField = makeField(this.context, fieldSchema, cursor);\n\t\tcursor.enterNode(index);\n\n\t\treturn { parent: proxifiedField, index };\n\t}\n}\n\nexport class LazyMap<TSchema extends FlexMapNodeSchema>\n\textends LazyTreeNode<TSchema>\n\timplements FlexTreeMapNode<TSchema>\n{\n\tpublic constructor(\n\t\tcontext: Context,\n\t\tschema: TSchema,\n\t\tcursor: ITreeSubscriptionCursor,\n\t\tanchorNode: AnchorNode,\n\t\tanchor: Anchor,\n\t) {\n\t\tsuper(context, schema, cursor, anchorNode, anchor);\n\t}\n\n\tpublic get size(): number {\n\t\tlet fieldCount = 0;\n\t\tforEachField(this[cursorSymbol], () => (fieldCount += 1));\n\t\treturn fieldCount;\n\t}\n\n\tpublic keys(): IterableIterator<FieldKey> {\n\t\treturn mapCursorFields(this[cursorSymbol], (cursor) => cursor.getFieldKey()).values();\n\t}\n\n\tpublic values(): IterableIterator<FlexTreeUnboxField<TSchema[\"info\"], \"notEmpty\">> {\n\t\treturn mapCursorFields(\n\t\t\tthis[cursorSymbol],\n\t\t\t(cursor) =>\n\t\t\t\tunboxedField(this.context, this.schema.info, cursor) as FlexTreeUnboxField<\n\t\t\t\t\tTSchema[\"info\"],\n\t\t\t\t\t\"notEmpty\"\n\t\t\t\t>,\n\t\t).values();\n\t}\n\n\tpublic entries(): IterableIterator<\n\t\t[FieldKey, FlexTreeUnboxField<TSchema[\"info\"], \"notEmpty\">]\n\t> {\n\t\treturn mapCursorFields(this[cursorSymbol], (cursor) => {\n\t\t\tconst entry: [FieldKey, FlexTreeUnboxField<TSchema[\"info\"], \"notEmpty\">] = [\n\t\t\t\tcursor.getFieldKey(),\n\t\t\t\tunboxedField(this.context, this.schema.info, cursor) as FlexTreeUnboxField<\n\t\t\t\t\tTSchema[\"info\"],\n\t\t\t\t\t\"notEmpty\"\n\t\t\t\t>,\n\t\t\t];\n\t\t\treturn entry;\n\t\t}).values();\n\t}\n\n\tpublic forEach(\n\t\tcallbackFn: (\n\t\t\tvalue: FlexTreeUnboxField<TSchema[\"info\"], \"notEmpty\">,\n\t\t\tkey: FieldKey,\n\t\t\tmap: FlexTreeMapNode<TSchema>,\n\t\t) => void,\n\t\tthisArg?: unknown,\n\t): void {\n\t\tconst fn = thisArg !== undefined ? callbackFn.bind(thisArg) : callbackFn;\n\t\tfor (const [key, value] of this.entries()) {\n\t\t\tfn(value, key, this);\n\t\t}\n\t}\n\n\tpublic has(key: string): boolean {\n\t\treturn this.tryGetField(brand(key)) !== undefined;\n\t}\n\n\tpublic get(key: string): FlexTreeUnboxField<TSchema[\"info\"]> {\n\t\treturn inCursorField(this[cursorSymbol], brand(key), (cursor) =>\n\t\t\tunboxedField(this.context, this.schema.info, cursor),\n\t\t) as FlexTreeUnboxField<TSchema[\"info\"]>;\n\t}\n\n\tpublic override getBoxed(key: string): FlexTreeTypedField<TSchema[\"info\"]> {\n\t\treturn super.getBoxed(brand(key)) as FlexTreeTypedField<TSchema[\"info\"]>;\n\t}\n\n\tpublic set(key: string, content: FlexibleFieldContent<TSchema[\"info\"]> | undefined): void {\n\t\tconst field = this.getBoxed(key);\n\t\tconst fieldSchema = this.schema.info;\n\n\t\tif (fieldSchema.kind === FieldKinds.optional) {\n\t\t\tconst optionalField = field as FlexTreeOptionalField<FlexAllowedTypes>;\n\t\t\toptionalField.content = content;\n\t\t} else {\n\t\t\tassert(fieldSchema.kind === FieldKinds.sequence, 0x807 /* Unexpected map field kind */);\n\n\t\t\t// TODO: implement setting of sequence fields once we have defined clear merged semantics for doing so.\n\t\t\t// For now, we will throw an error, since the public API does not currently expose a way to do this anyways.\n\t\t\tthrow new Error(\"Setting of sequence values in maps is not yet supported.\");\n\t\t}\n\t}\n\n\tpublic delete(key: FieldKey): void {\n\t\t// Since all keys implicitly exist under a Map node, and we represent \"no value\" with `undefined`,\n\t\t// \"deleting\" a key/value pair is the same as setting the value to `undefined`.\n\t\tthis.set(key, undefined);\n\t}\n\n\tpublic override boxedIterator(): IterableIterator<FlexTreeTypedField<TSchema[\"info\"]>> {\n\t\treturn super.boxedIterator() as IterableIterator<FlexTreeTypedField<TSchema[\"info\"]>>;\n\t}\n\n\tpublic [Symbol.iterator](): IterableIterator<\n\t\t[FieldKey, FlexTreeUnboxField<TSchema[\"info\"], \"notEmpty\">]\n\t> {\n\t\treturn this.entries();\n\t}\n}\n\nexport class LazyLeaf<TSchema extends LeafNodeSchema>\n\textends LazyTreeNode<TSchema>\n\timplements FlexTreeLeafNode<TSchema>\n{\n\tpublic constructor(\n\t\tcontext: Context,\n\t\tschema: TSchema,\n\t\tcursor: ITreeSubscriptionCursor,\n\t\tanchorNode: AnchorNode,\n\t\tanchor: Anchor,\n\t) {\n\t\tsuper(context, schema, cursor, anchorNode, anchor);\n\t}\n\n\tpublic override get value(): TreeValue<TSchema[\"info\"]> {\n\t\treturn super.value as TreeValue<TSchema[\"info\"]>;\n\t}\n}\n\nexport class LazyFieldNode<TSchema extends FlexFieldNodeSchema>\n\textends LazyTreeNode<TSchema>\n\timplements FlexTreeFieldNode<TSchema>\n{\n\tpublic get content(): FlexTreeUnboxField<TSchema[\"info\"]> {\n\t\treturn inCursorField(this[cursorSymbol], EmptyKey, (cursor) =>\n\t\t\tunboxedField(this.context, this.schema.info, cursor),\n\t\t) as FlexTreeUnboxField<TSchema[\"info\"]>;\n\t}\n}\n\n/**\n * {@link reservedObjectNodeFieldPropertyNames} but as a set.\n */\nexport const reservedObjectNodeFieldPropertyNameSet: ReadonlySet<string> = new Set(\n\treservedObjectNodeFieldPropertyNames,\n);\n\nexport function propertyNameFromFieldKey<T extends string>(\n\tkey: T,\n): PropertyNameFromFieldKey<T> {\n\tif (reservedObjectNodeFieldPropertyNameSet.has(key)) {\n\t\treturn `field${capitalize(key)}` as PropertyNameFromFieldKey<T>;\n\t}\n\tfor (const prefix of reservedObjectNodeFieldPropertyNamePrefixes) {\n\t\tif (key.startsWith(prefix)) {\n\t\t\tconst afterPrefix = key.slice(prefix.length);\n\t\t\tif (afterPrefix === capitalize(afterPrefix)) {\n\t\t\t\treturn `field${capitalize(key)}` as PropertyNameFromFieldKey<T>;\n\t\t\t}\n\t\t}\n\t}\n\treturn key as PropertyNameFromFieldKey<T>;\n}\n\nexport function buildLazyObjectNode<TSchema extends FlexObjectNodeSchema>(\n\tcontext: Context,\n\tschema: TSchema,\n\tcursor: ITreeSubscriptionCursor,\n\tanchorNode: AnchorNode,\n\tanchor: Anchor,\n): LazyTreeNode<TSchema> & FlexTreeObjectNodeTyped<TSchema> {\n\tconst objectNodeClass = getOrCreate(cachedStructClasses, schema, () =>\n\t\tbuildStructClass(schema),\n\t);\n\treturn new objectNodeClass(context, cursor, anchorNode, anchor) as LazyTreeNode<TSchema> &\n\t\tFlexTreeObjectNodeTyped<TSchema>;\n}\n\nconst cachedStructClasses = new WeakMap<\n\tFlexObjectNodeSchema,\n\tnew (\n\t\tcontext: Context,\n\t\tcursor: ITreeSubscriptionCursor,\n\t\tanchorNode: AnchorNode,\n\t\tanchor: Anchor,\n\t) => LazyTreeNode<FlexObjectNodeSchema>\n>();\n\nfunction getBoxedField(\n\tobjectNode: LazyTreeNode,\n\tkey: FieldKey,\n\tfieldSchema: FlexFieldSchema,\n): FlexTreeField {\n\treturn inCursorField(objectNode[cursorSymbol], key, (cursor) => {\n\t\treturn makeField(objectNode.context, fieldSchema, cursor);\n\t});\n}\n\nfunction buildStructClass<TSchema extends FlexObjectNodeSchema>(\n\tschema: TSchema,\n): new (\n\tcontext: Context,\n\tcursor: ITreeSubscriptionCursor,\n\tanchorNode: AnchorNode,\n\tanchor: Anchor,\n) => LazyTreeNode<TSchema> {\n\tconst propertyDescriptorMap: PropertyDescriptorMap = {};\n\n\tfor (const [key, fieldSchema] of schema.objectNodeFields) {\n\t\tconst escapedKey = propertyNameFromFieldKey(key);\n\t\tlet setter: ((newContent: FlexibleNodeContent<FlexAllowedTypes>) => void) | undefined;\n\t\tswitch (fieldSchema.kind) {\n\t\t\tcase FieldKinds.optional: {\n\t\t\t\tsetter = function (\n\t\t\t\t\tthis: CustomStruct,\n\t\t\t\t\tnewContent: FlexibleNodeContent<FlexAllowedTypes> | undefined,\n\t\t\t\t): void {\n\t\t\t\t\tconst field = getBoxedField(\n\t\t\t\t\t\tthis,\n\t\t\t\t\t\tkey,\n\t\t\t\t\t\tfieldSchema,\n\t\t\t\t\t) as FlexTreeOptionalField<FlexAllowedTypes>;\n\t\t\t\t\tfield.content = newContent;\n\t\t\t\t};\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tcase FieldKinds.required: {\n\t\t\t\tsetter = function (\n\t\t\t\t\tthis: CustomStruct,\n\t\t\t\t\tnewContent: FlexibleNodeContent<FlexAllowedTypes>,\n\t\t\t\t): void {\n\t\t\t\t\tconst field = getBoxedField(\n\t\t\t\t\t\tthis,\n\t\t\t\t\t\tkey,\n\t\t\t\t\t\tfieldSchema,\n\t\t\t\t\t) as FlexTreeRequiredField<FlexAllowedTypes>;\n\t\t\t\t\tfield.content = newContent;\n\t\t\t\t};\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tdefault:\n\t\t\t\tsetter = undefined;\n\t\t\t\tbreak;\n\t\t}\n\n\t\t// Create getter and setter (when appropriate) for property\n\t\tpropertyDescriptorMap[escapedKey] = {\n\t\t\tenumerable: true,\n\t\t\tget(this: CustomStruct): unknown {\n\t\t\t\treturn inCursorField(this[cursorSymbol], key, (cursor) =>\n\t\t\t\t\tunboxedField(this.context, fieldSchema, cursor),\n\t\t\t\t);\n\t\t\t},\n\t\t\tset: setter,\n\t\t};\n\n\t\t// Create set method for property (when appropriate)\n\t\tif (setter !== undefined) {\n\t\t\tpropertyDescriptorMap[`set${capitalize(escapedKey)}`] = {\n\t\t\t\tenumerable: false,\n\t\t\t\tget(this: CustomStruct) {\n\t\t\t\t\treturn setter;\n\t\t\t\t},\n\t\t\t};\n\t\t}\n\n\t\tpropertyDescriptorMap[`boxed${capitalize(escapedKey)}`] = {\n\t\t\tenumerable: false,\n\t\t\tget(this: CustomStruct) {\n\t\t\t\treturn getBoxedField(this, key, fieldSchema);\n\t\t\t},\n\t\t};\n\t}\n\n\t// This must implement `StructTyped<TSchema>`, but TypeScript can't constrain it to do so.\n\tclass CustomStruct extends LazyTreeNode<TSchema> {\n\t\tpublic constructor(\n\t\t\tcontext: Context,\n\t\t\tcursor: ITreeSubscriptionCursor,\n\t\t\tanchorNode: AnchorNode,\n\t\t\tanchor: Anchor,\n\t\t) {\n\t\t\tsuper(context, schema, cursor, anchorNode, anchor);\n\t\t}\n\t}\n\n\tObject.defineProperties(CustomStruct.prototype, propertyDescriptorMap);\n\n\treturn CustomStruct;\n}\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"forestSummarizer.d.ts","sourceRoot":"","sources":["../../../src/feature-libraries/forest-summary/forestSummarizer.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAIH,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,gDAAgD,CAAC;AAC7F,OAAO,KAAK,EACX,sBAAsB,EACtB,qBAAqB,EACrB,iBAAiB,EACjB,MAAM,8CAA8C,CAAC;AAGtD,OAAO,EAAE,KAAK,aAAa,EAAiB,MAAM,sBAAsB,CAAC;AACzE,OAAO,EAIN,KAAK,eAAe,EAGpB,KAAK,gBAAgB,EAMrB,MAAM,qBAAqB,CAAC;AAC7B,OAAO,KAAK,EACX,YAAY,EACZ,oBAAoB,EACpB,yBAAyB,EACzB,MAAM,iCAAiC,CAAC;AAIzC,OAAO,KAAK,EAAE,eAAe,EAAE,yBAAyB,EAAE,MAAM,4BAA4B,CAAC;AAI7F,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,+BAA+B,CAAC;AAMnE;;GAEG;AACH,qBAAa,gBAAiB,YAAW,YAAY;IASnD,OAAO,CAAC,QAAQ,CAAC,MAAM;IACvB,OAAO,CAAC,QAAQ,CAAC,gBAAgB;IAEjC,OAAO,CAAC,QAAQ,CAAC,cAAc;IAE/B,OAAO,CAAC,QAAQ,CAAC,YAAY;IAb9B,SAAgB,GAAG,YAAY;IAE/B,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAc;IAEpC;;OAEG;gBAEe,MAAM,EAAE,eAAe,EACvB,gBAAgB,EAAE,gBAAgB,EACnD,eAAe,EAAE,eAAe,EACf,cAAc,EAAE,yBAAyB,EAC1D,OAAO,2BAAkD,EACxC,YAAY,EAAE,aAAa;IAK7C;;;;;;OAMG;IACH,OAAO,CAAC,aAAa;IAqBd,gBAAgB,CACtB,SAAS,EAAE,yBAAyB,EACpC,QAAQ,CAAC,EAAE,OAAO,EAClB,UAAU,CAAC,EAAE,OAAO,EACpB,gBAAgB,CAAC,EAAE,iBAAiB,GAClC,qBAAqB;IAIX,SAAS,CACrB,SAAS,EAAE,yBAAyB,EACpC,QAAQ,CAAC,EAAE,OAAO,EAClB,UAAU,CAAC,EAAE,OAAO,EACpB,gBAAgB,CAAC,EAAE,iBAAiB,GAClC,OAAO,CAAC,qBAAqB,CAAC;IAI1B,SAAS,CAAC,MAAM,CAAC,EAAE,OAAO,GAAG,sBAAsB;IAU7C,IAAI,CAChB,QAAQ,EAAE,sBAAsB,EAChC,KAAK,EAAE,oBAAoB,GACzB,OAAO,CAAC,IAAI,CAAC;
|
|
1
|
+
{"version":3,"file":"forestSummarizer.d.ts","sourceRoot":"","sources":["../../../src/feature-libraries/forest-summary/forestSummarizer.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAIH,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,gDAAgD,CAAC;AAC7F,OAAO,KAAK,EACX,sBAAsB,EACtB,qBAAqB,EACrB,iBAAiB,EACjB,MAAM,8CAA8C,CAAC;AAGtD,OAAO,EAAE,KAAK,aAAa,EAAiB,MAAM,sBAAsB,CAAC;AACzE,OAAO,EAIN,KAAK,eAAe,EAGpB,KAAK,gBAAgB,EAMrB,MAAM,qBAAqB,CAAC;AAC7B,OAAO,KAAK,EACX,YAAY,EACZ,oBAAoB,EACpB,yBAAyB,EACzB,MAAM,iCAAiC,CAAC;AAIzC,OAAO,KAAK,EAAE,eAAe,EAAE,yBAAyB,EAAE,MAAM,4BAA4B,CAAC;AAI7F,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,+BAA+B,CAAC;AAMnE;;GAEG;AACH,qBAAa,gBAAiB,YAAW,YAAY;IASnD,OAAO,CAAC,QAAQ,CAAC,MAAM;IACvB,OAAO,CAAC,QAAQ,CAAC,gBAAgB;IAEjC,OAAO,CAAC,QAAQ,CAAC,cAAc;IAE/B,OAAO,CAAC,QAAQ,CAAC,YAAY;IAb9B,SAAgB,GAAG,YAAY;IAE/B,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAc;IAEpC;;OAEG;gBAEe,MAAM,EAAE,eAAe,EACvB,gBAAgB,EAAE,gBAAgB,EACnD,eAAe,EAAE,eAAe,EACf,cAAc,EAAE,yBAAyB,EAC1D,OAAO,2BAAkD,EACxC,YAAY,EAAE,aAAa;IAK7C;;;;;;OAMG;IACH,OAAO,CAAC,aAAa;IAqBd,gBAAgB,CACtB,SAAS,EAAE,yBAAyB,EACpC,QAAQ,CAAC,EAAE,OAAO,EAClB,UAAU,CAAC,EAAE,OAAO,EACpB,gBAAgB,CAAC,EAAE,iBAAiB,GAClC,qBAAqB;IAIX,SAAS,CACrB,SAAS,EAAE,yBAAyB,EACpC,QAAQ,CAAC,EAAE,OAAO,EAClB,UAAU,CAAC,EAAE,OAAO,EACpB,gBAAgB,CAAC,EAAE,iBAAiB,GAClC,OAAO,CAAC,qBAAqB,CAAC;IAI1B,SAAS,CAAC,MAAM,CAAC,EAAE,OAAO,GAAG,sBAAsB;IAU7C,IAAI,CAChB,QAAQ,EAAE,sBAAsB,EAChC,KAAK,EAAE,oBAAoB,GACzB,OAAO,CAAC,IAAI,CAAC;CAqChB"}
|
|
@@ -96,7 +96,7 @@ class ForestSummarizer {
|
|
|
96
96
|
]);
|
|
97
97
|
}
|
|
98
98
|
(0, internal_1.assert)(this.forest.isEmpty, 0x797 /* forest must be empty */);
|
|
99
|
-
(0, index_js_2.applyDelta)({ build, fields: new Map(fieldChanges) }, this.forest, (0, index_js_2.makeDetachedFieldIndex)("init", this.revisionTagCodec, this.idCompressor));
|
|
99
|
+
(0, index_js_2.applyDelta)({ build, fields: new Map(fieldChanges) }, undefined, this.forest, (0, index_js_2.makeDetachedFieldIndex)("init", this.revisionTagCodec, this.idCompressor));
|
|
100
100
|
}
|
|
101
101
|
}
|
|
102
102
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"forestSummarizer.js","sourceRoot":"","sources":["../../../src/feature-libraries/forest-summary/forestSummarizer.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"forestSummarizer.js","sourceRoot":"","sources":["../../../src/feature-libraries/forest-summary/forestSummarizer.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 { bufferToString } from \"@fluid-internal/client-utils\";\nimport { assert } from \"@fluidframework/core-utils/internal\";\nimport type { IChannelStorageService } from \"@fluidframework/datastore-definitions/internal\";\nimport type {\n\tIGarbageCollectionData,\n\tISummaryTreeWithStats,\n\tITelemetryContext,\n} from \"@fluidframework/runtime-definitions/internal\";\nimport { createSingleBlobSummary } from \"@fluidframework/shared-object-base/internal\";\n\nimport { type ICodecOptions, noopValidator } from \"../../codec/index.js\";\nimport {\n\ttype DeltaDetachedNodeBuild,\n\ttype DeltaFieldChanges,\n\ttype FieldKey,\n\ttype IEditableForest,\n\ttype ITreeCursorSynchronous,\n\ttype ITreeSubscriptionCursor,\n\ttype RevisionTagCodec,\n\tTreeNavigationResult,\n\tapplyDelta,\n\tforEachField,\n\tmakeDetachedFieldIndex,\n\tmapCursorField,\n} from \"../../core/index.js\";\nimport type {\n\tSummarizable,\n\tSummaryElementParser,\n\tSummaryElementStringifier,\n} from \"../../shared-tree-core/index.js\";\nimport { idAllocatorFromMaxId } from \"../../util/index.js\";\n// eslint-disable-next-line import/no-internal-modules\nimport { chunkField, defaultChunkPolicy } from \"../chunked-forest/chunkTree.js\";\nimport type { FieldBatchCodec, FieldBatchEncodingContext } from \"../chunked-forest/index.js\";\n\nimport { type ForestCodec, makeForestSummarizerCodec } from \"./codec.js\";\nimport type { Format } from \"./format.js\";\nimport type { IIdCompressor } from \"@fluidframework/id-compressor\";\n/**\n * The storage key for the blob in the summary containing tree data\n */\nconst treeBlobKey = \"ForestTree\";\n\n/**\n * Provides methods for summarizing and loading a forest.\n */\nexport class ForestSummarizer implements Summarizable {\n\tpublic readonly key = \"Forest\";\n\n\tprivate readonly codec: ForestCodec;\n\n\t/**\n\t * @param encoderContext - The schema if provided here must be mutated by the caller to keep it up to date.\n\t */\n\tpublic constructor(\n\t\tprivate readonly forest: IEditableForest,\n\t\tprivate readonly revisionTagCodec: RevisionTagCodec,\n\t\tfieldBatchCodec: FieldBatchCodec,\n\t\tprivate readonly encoderContext: FieldBatchEncodingContext,\n\t\toptions: ICodecOptions = { jsonValidator: noopValidator },\n\t\tprivate readonly idCompressor: IIdCompressor,\n\t) {\n\t\tthis.codec = makeForestSummarizerCodec(options, fieldBatchCodec);\n\t}\n\n\t/**\n\t * Synchronous monolithic summarization of tree content.\n\t *\n\t * TODO: when perf matters, this should be replaced with a chunked async version using a binary format.\n\t *\n\t * @returns a snapshot of the forest's tree as a string.\n\t */\n\tprivate getTreeString(stringify: SummaryElementStringifier): string {\n\t\tconst rootCursor = this.forest.getCursorAboveDetachedFields();\n\t\tconst fieldMap: Map<FieldKey, ITreeCursorSynchronous & ITreeSubscriptionCursor> =\n\t\t\tnew Map();\n\t\t// TODO: Encode all detached fields in one operation for better performance and compression\n\t\tforEachField(rootCursor, (cursor) => {\n\t\t\tconst key = cursor.getFieldKey();\n\t\t\tconst innerCursor = this.forest.allocateCursor(\"getTreeString\");\n\t\t\tassert(\n\t\t\t\tthis.forest.tryMoveCursorToField({ fieldKey: key, parent: undefined }, innerCursor) ===\n\t\t\t\t\tTreeNavigationResult.Ok,\n\t\t\t\t0x892 /* failed to navigate to field */,\n\t\t\t);\n\t\t\tfieldMap.set(key, innerCursor as ITreeCursorSynchronous & ITreeSubscriptionCursor);\n\t\t});\n\t\tconst encoded = this.codec.encode(fieldMap, this.encoderContext);\n\n\t\tfieldMap.forEach((value) => value.free());\n\t\treturn stringify(encoded);\n\t}\n\n\tpublic getAttachSummary(\n\t\tstringify: SummaryElementStringifier,\n\t\tfullTree?: boolean,\n\t\ttrackState?: boolean,\n\t\ttelemetryContext?: ITelemetryContext,\n\t): ISummaryTreeWithStats {\n\t\treturn createSingleBlobSummary(treeBlobKey, this.getTreeString(stringify));\n\t}\n\n\tpublic async summarize(\n\t\tstringify: SummaryElementStringifier,\n\t\tfullTree?: boolean,\n\t\ttrackState?: boolean,\n\t\ttelemetryContext?: ITelemetryContext,\n\t): Promise<ISummaryTreeWithStats> {\n\t\treturn createSingleBlobSummary(treeBlobKey, this.getTreeString(stringify));\n\t}\n\n\tpublic getGCData(fullGC?: boolean): IGarbageCollectionData {\n\t\t// TODO: Properly implement garbage collection. Right now, garbage collection is performed automatically\n\t\t// by the code in SharedObject (from which SharedTreeCore extends). The `runtime.uploadBlob` API delegates\n\t\t// to the `BlobManager`, which automatically populates the summary with ISummaryAttachment entries for each\n\t\t// blob.\n\t\treturn {\n\t\t\tgcNodes: {},\n\t\t};\n\t}\n\n\tpublic async load(\n\t\tservices: IChannelStorageService,\n\t\tparse: SummaryElementParser,\n\t): Promise<void> {\n\t\tif (await services.contains(treeBlobKey)) {\n\t\t\tconst treeBuffer = await services.readBlob(treeBlobKey);\n\t\t\tconst treeBufferString = bufferToString(treeBuffer, \"utf8\");\n\t\t\t// TODO: this code is parsing data without an optional validator, this should be defined in a typebox schema as part of the\n\t\t\t// forest summary format.\n\t\t\tconst fields = this.codec.decode(parse(treeBufferString) as Format, this.encoderContext);\n\t\t\tconst allocator = idAllocatorFromMaxId();\n\t\t\tconst fieldChanges: [FieldKey, DeltaFieldChanges][] = [];\n\t\t\tconst build: DeltaDetachedNodeBuild[] = [];\n\t\t\tfor (const [fieldKey, field] of fields) {\n\t\t\t\tconst chunked = chunkField(field, defaultChunkPolicy);\n\t\t\t\tconst nodeCursors = chunked.flatMap((chunk) =>\n\t\t\t\t\tmapCursorField(chunk.cursor(), (cursor) => cursor.fork()),\n\t\t\t\t);\n\t\t\t\tconst buildId = { minor: allocator.allocate(nodeCursors.length) };\n\t\t\t\tbuild.push({\n\t\t\t\t\tid: buildId,\n\t\t\t\t\ttrees: nodeCursors,\n\t\t\t\t});\n\t\t\t\tfieldChanges.push([\n\t\t\t\t\tfieldKey,\n\t\t\t\t\t{\n\t\t\t\t\t\tlocal: [{ count: nodeCursors.length, attach: buildId }],\n\t\t\t\t\t},\n\t\t\t\t]);\n\t\t\t}\n\n\t\t\tassert(this.forest.isEmpty, 0x797 /* forest must be empty */);\n\t\t\tapplyDelta(\n\t\t\t\t{ build, fields: new Map(fieldChanges) },\n\t\t\t\tundefined,\n\t\t\t\tthis.forest,\n\t\t\t\tmakeDetachedFieldIndex(\"init\", this.revisionTagCodec, this.idCompressor),\n\t\t\t);\n\t\t}\n\t}\n}\n"]}
|
|
@@ -15,15 +15,15 @@ export { stackTreeNodeCursor, type CursorAdapter, prefixPath, prefixFieldPath, t
|
|
|
15
15
|
export { cursorForJsonableTreeNode, cursorForJsonableTreeField, jsonableTreeFromCursor, jsonableTreeFromFieldCursor, jsonableTreeFromForest, } from "./treeTextCursor.js";
|
|
16
16
|
import * as SequenceField from "./sequence-field/index.js";
|
|
17
17
|
export { SequenceField };
|
|
18
|
-
export { isNeverField, ModularEditBuilder, type FieldEditDescription as EditDescription, type FieldChangeHandler, type FieldChangeRebaser, type FieldEditor, type FieldChangeMap, type FieldChange, type FieldChangeset, type ToDelta, type ModularChangeset, makeModularChangeCodecFamily, type NodeChangeComposer, type NodeChangeInverter, type NodeChangeRebaser, type NodeChangePruner, type CrossFieldManager, CrossFieldTarget, FlexFieldKind, type FullSchemaPolicy, allowsRepoSuperset, type GenericChangeset, genericFieldKind, type HasFieldChanges, type NodeExistsConstraint, FieldKindWithEditor, ModularChangeFamily, type RelevantRemovedRootsFromChild, EncodedModularChangeset, updateRefreshers, type NodeId, type FieldChangeEncodingContext, type FieldKindConfiguration, type FieldKindConfigurationEntry, } from "./modular-schema/index.js";
|
|
18
|
+
export { isNeverField, ModularEditBuilder, type FieldEditDescription as EditDescription, type FieldChangeHandler, type FieldChangeRebaser, type FieldEditor, type FieldChangeMap, type FieldChange, type FieldChangeset, type ToDelta, type ModularChangeset, makeModularChangeCodecFamily, type NodeChangeComposer, type NodeChangeInverter, type NodeChangeRebaser, type NodeChangePruner, type CrossFieldManager, CrossFieldTarget, FlexFieldKind, type FullSchemaPolicy, allowsRepoSuperset, type GenericChangeset, genericFieldKind, type HasFieldChanges, type NodeExistsConstraint, FieldKindWithEditor, ModularChangeFamily, type RelevantRemovedRootsFromChild, EncodedModularChangeset, updateRefreshers, type NodeId, type FieldChangeEncodingContext, type FieldKindConfiguration, type FieldKindConfigurationEntry, getAllowedContentIncompatibilities, } from "./modular-schema/index.js";
|
|
19
19
|
export { type FlexTreeNodeSchema, type FlexAllowedTypes, FlexFieldSchema, type FlexTreeSchema, Any, type SchemaLibraryData, type LazyTreeNodeSchema, ViewSchema, type SchemaLintConfiguration, FlexFieldNodeSchema, LeafNodeSchema, FlexMapNodeSchema, FlexObjectNodeSchema, schemaIsFieldNode, schemaIsLeaf, schemaIsMap, schemaIsObjectNode, type Unenforced, type AllowedTypeSet, markEager, type FlexMapFieldSchema, type SchemaCollection, TreeNodeSchemaBase, type LazyItem, type FlexListToUnion, type ExtractItemType, isLazy, type NormalizeObjectNodeFields, type NormalizeField as NormalizeFieldSchema, type FlexObjectNodeFields, intoStoredSchema, intoStoredSchemaCollection, type NormalizeLazyItem, type FlexList, } from "./typed-schema/index.js";
|
|
20
20
|
export { SchemaBuilderBase, type SchemaLibrary, type FlexImplicitFieldSchema, type NormalizeField, type FlexImplicitAllowedTypes, type NormalizeAllowedTypes, type SchemaBuilderOptions, normalizeAllowedTypes, normalizeField, } from "./schemaBuilderBase.js";
|
|
21
21
|
export { SchemaBuilderInternal } from "./schemaBuilder.js";
|
|
22
22
|
export { mapRootChanges } from "./deltaUtils.js";
|
|
23
23
|
export { type TreeChunk, chunkTree, chunkFieldSingle, buildChunkedForest, defaultChunkPolicy, type FieldBatch, type FieldBatchCodec, makeTreeChunker, makeFieldBatchCodec, type FieldBatchEncodingContext, } from "./chunked-forest/index.js";
|
|
24
|
-
export { compareLocalNodeKeys, createNodeKeyManager, isStableNodeKey, type LocalNodeKey, MockNodeKeyManager,
|
|
24
|
+
export { compareLocalNodeKeys, createNodeKeyManager, isStableNodeKey, type LocalNodeKey, MockNodeKeyManager, type NodeKeyManager, nodeKeyTreeIdentifier, type StableNodeKey, } from "./node-key/index.js";
|
|
25
25
|
export { FieldKinds, type Required, type Optional, type Sequence, type Identifier, type Forbidden, type DefaultChangeset, DefaultChangeFamily, DefaultEditBuilder, type IDefaultEditBuilder, type ValueFieldEditBuilder, type OptionalFieldEditBuilder, type SequenceFieldEditBuilder, defaultSchemaPolicy, fieldKinds, fieldKindConfigurations, intoDelta, relevantRemovedRoots, SchemaValidationErrors, isNodeInSchema, } from "./default-schema/index.js";
|
|
26
|
-
export { type AssignableFieldKinds, type FlexTreeFieldNode, type FlexibleFieldContent, type FlexibleNodeContent, type FlexTreeLeafNode, type FlexTreeMapNode, type FlexTreeOptionalField, type FlexTreeRequiredField, type FlexTreeSequenceField, Skip, type FlexTreeObjectNode, type FlexTreeObjectNodeTyped, type FlexTreeContext, type FlexTreeTypedField, type FlexTreeTypedNode, type FlexTreeTypedNodeUnion, type FlexTreeEntity, type FlexTreeField, type FlexTreeNode, getTreeContext, type CheckTypesOverlap, TreeStatus, Context, type FlexTreeNodeEvents, type FlexTreeUnknownUnboxed, isFlexTreeNode, ContextSlot, type FlexTreeTypedFieldInner, type FlexTreeUnboxFieldInner, type FlexTreeObjectNodeFields, type FlexTreeUnboxField, type FlexTreeUnboxNode, type FlexTreeUnboxNodeUnion, type
|
|
26
|
+
export { type AssignableFieldKinds, type FlexTreeFieldNode, type FlexibleFieldContent, type FlexibleNodeContent, type FlexTreeLeafNode, type FlexTreeMapNode, type FlexTreeOptionalField, type FlexTreeRequiredField, type FlexTreeSequenceField, Skip, type FlexTreeObjectNode, type FlexTreeObjectNodeTyped, type FlexTreeContext, type FlexTreeTypedField, type FlexTreeTypedNode, type FlexTreeTypedNodeUnion, type FlexTreeEntity, type FlexTreeField, type FlexTreeNode, getTreeContext, type CheckTypesOverlap, TreeStatus, Context, type FlexTreeNodeEvents, type FlexTreeUnknownUnboxed, isFlexTreeNode, ContextSlot, type FlexTreeTypedFieldInner, type FlexTreeUnboxFieldInner, type FlexTreeObjectNodeFields, type FlexTreeUnboxField, type FlexTreeUnboxNode, type FlexTreeUnboxNodeUnion, type IsArrayOfOne, type FlexibleNodeSubSequence, flexTreeMarker, FlexTreeEntityKind, type PropertyNameFromFieldKey, type ReservedObjectNodeFieldPropertyNames, type ReservedObjectNodeFieldPropertyNamePrefixes, reservedObjectNodeFieldPropertyNames, reservedObjectNodeFieldPropertyNamePrefixes, type FlexTreeObjectNodeFieldsInner, assertFlexTreeEntityNotFreed, flexTreeSlot, getSchemaAndPolicy, isFreedSymbol, LazyEntity, treeStatusFromAnchorCache, } from "./flex-tree/index.js";
|
|
27
27
|
export { treeSchemaFromStoredSchema } from "./storedToViewSchema.js";
|
|
28
28
|
export { TreeCompressionStrategy } from "./treeCompressionUtils.js";
|
|
29
29
|
export { valueSchemaAllows } from "./valueUtilities.js";
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/feature-libraries/index.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/feature-libraries/index.ts"],"names":[],"mappings":"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"}
|