@fluidframework/tree 2.12.0 → 2.20.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/CHANGELOG.md +154 -0
- package/api-report/tree.alpha.api.md +108 -22
- package/api-report/tree.beta.api.md +31 -15
- package/api-report/tree.legacy.alpha.api.md +31 -15
- package/api-report/tree.legacy.public.api.md +31 -15
- package/api-report/tree.public.api.md +31 -15
- package/assertTagging.config.mjs +14 -0
- package/dist/alpha.d.ts +14 -0
- package/dist/beta.d.ts +2 -0
- package/dist/core/index.d.ts +2 -2
- package/dist/core/index.d.ts.map +1 -1
- package/dist/core/index.js +6 -4
- package/dist/core/index.js.map +1 -1
- package/dist/core/rebase/index.d.ts +2 -2
- package/dist/core/rebase/index.d.ts.map +1 -1
- package/dist/core/rebase/index.js +5 -1
- package/dist/core/rebase/index.js.map +1 -1
- package/dist/core/rebase/types.d.ts +5 -4
- package/dist/core/rebase/types.d.ts.map +1 -1
- package/dist/core/rebase/types.js +29 -1
- package/dist/core/rebase/types.js.map +1 -1
- package/dist/core/rebase/utils.d.ts +10 -0
- package/dist/core/rebase/utils.d.ts.map +1 -1
- package/dist/core/rebase/utils.js +22 -1
- package/dist/core/rebase/utils.js.map +1 -1
- package/dist/core/tree/delta.d.ts +21 -26
- package/dist/core/tree/delta.d.ts.map +1 -1
- package/dist/core/tree/delta.js.map +1 -1
- package/dist/core/tree/deltaUtil.d.ts +1 -3
- package/dist/core/tree/deltaUtil.d.ts.map +1 -1
- package/dist/core/tree/deltaUtil.js +2 -14
- package/dist/core/tree/deltaUtil.js.map +1 -1
- package/dist/core/tree/index.d.ts +1 -1
- package/dist/core/tree/index.d.ts.map +1 -1
- package/dist/core/tree/index.js +1 -3
- package/dist/core/tree/index.js.map +1 -1
- package/dist/core/tree/visitDelta.d.ts.map +1 -1
- package/dist/core/tree/visitDelta.js +82 -80
- package/dist/core/tree/visitDelta.js.map +1 -1
- package/dist/feature-libraries/default-schema/defaultEditBuilder.d.ts +10 -0
- package/dist/feature-libraries/default-schema/defaultEditBuilder.d.ts.map +1 -1
- package/dist/feature-libraries/default-schema/defaultEditBuilder.js +3 -0
- 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.map +1 -1
- package/dist/feature-libraries/deltaUtils.d.ts.map +1 -1
- package/dist/feature-libraries/deltaUtils.js +13 -0
- package/dist/feature-libraries/deltaUtils.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 -6
- package/dist/feature-libraries/forest-summary/forestSummarizer.js.map +1 -1
- package/dist/feature-libraries/index.d.ts +0 -1
- package/dist/feature-libraries/index.d.ts.map +1 -1
- package/dist/feature-libraries/index.js +2 -4
- package/dist/feature-libraries/index.js.map +1 -1
- package/dist/feature-libraries/modular-schema/crossFieldQueries.d.ts +5 -5
- package/dist/feature-libraries/modular-schema/crossFieldQueries.d.ts.map +1 -1
- package/dist/feature-libraries/modular-schema/crossFieldQueries.js +2 -3
- package/dist/feature-libraries/modular-schema/crossFieldQueries.js.map +1 -1
- package/dist/feature-libraries/modular-schema/fieldChangeHandler.d.ts +30 -6
- 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 +2 -1
- package/dist/feature-libraries/modular-schema/genericFieldKind.js.map +1 -1
- package/dist/feature-libraries/modular-schema/index.d.ts +2 -2
- package/dist/feature-libraries/modular-schema/index.d.ts.map +1 -1
- package/dist/feature-libraries/modular-schema/index.js.map +1 -1
- package/dist/feature-libraries/modular-schema/modularChangeCodecs.d.ts +1 -1
- package/dist/feature-libraries/modular-schema/modularChangeCodecs.d.ts.map +1 -1
- package/dist/feature-libraries/modular-schema/modularChangeCodecs.js +8 -8
- package/dist/feature-libraries/modular-schema/modularChangeCodecs.js.map +1 -1
- package/dist/feature-libraries/modular-schema/modularChangeFamily.d.ts +5 -4
- package/dist/feature-libraries/modular-schema/modularChangeFamily.d.ts.map +1 -1
- package/dist/feature-libraries/modular-schema/modularChangeFamily.js +186 -216
- package/dist/feature-libraries/modular-schema/modularChangeFamily.js.map +1 -1
- package/dist/feature-libraries/modular-schema/modularChangeTypes.d.ts +23 -20
- package/dist/feature-libraries/modular-schema/modularChangeTypes.d.ts.map +1 -1
- package/dist/feature-libraries/modular-schema/modularChangeTypes.js +20 -0
- package/dist/feature-libraries/modular-schema/modularChangeTypes.js.map +1 -1
- package/dist/feature-libraries/optional-field/optionalField.d.ts +3 -3
- package/dist/feature-libraries/optional-field/optionalField.d.ts.map +1 -1
- package/dist/feature-libraries/optional-field/optionalField.js +24 -4
- package/dist/feature-libraries/optional-field/optionalField.js.map +1 -1
- package/dist/feature-libraries/sequence-field/moveEffectTable.d.ts +1 -1
- package/dist/feature-libraries/sequence-field/moveEffectTable.d.ts.map +1 -1
- package/dist/feature-libraries/sequence-field/moveEffectTable.js.map +1 -1
- package/dist/feature-libraries/sequence-field/rebase.js +4 -4
- package/dist/feature-libraries/sequence-field/rebase.js.map +1 -1
- package/dist/feature-libraries/sequence-field/sequenceFieldCodecV1.js +1 -1
- package/dist/feature-libraries/sequence-field/sequenceFieldCodecV1.js.map +1 -1
- package/dist/feature-libraries/sequence-field/sequenceFieldCodecV2.js +1 -1
- package/dist/feature-libraries/sequence-field/sequenceFieldCodecV2.js.map +1 -1
- package/dist/feature-libraries/sequence-field/sequenceFieldToDelta.d.ts +2 -3
- package/dist/feature-libraries/sequence-field/sequenceFieldToDelta.d.ts.map +1 -1
- package/dist/feature-libraries/sequence-field/sequenceFieldToDelta.js.map +1 -1
- package/dist/feature-libraries/sequence-field/utils.d.ts +2 -2
- package/dist/feature-libraries/sequence-field/utils.d.ts.map +1 -1
- package/dist/feature-libraries/sequence-field/utils.js +50 -9
- package/dist/feature-libraries/sequence-field/utils.js.map +1 -1
- package/dist/feature-libraries/treeCursorUtils.d.ts.map +1 -1
- package/dist/feature-libraries/treeCursorUtils.js +4 -1
- package/dist/feature-libraries/treeCursorUtils.js.map +1 -1
- package/dist/index.d.ts +27 -3
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +5 -2
- package/dist/index.js.map +1 -1
- package/dist/legacy.d.ts +2 -0
- package/dist/package.json +2 -1
- package/dist/packageVersion.d.ts +1 -1
- package/dist/packageVersion.js +1 -1
- package/dist/packageVersion.js.map +1 -1
- package/dist/public.d.ts +2 -0
- package/dist/shared-tree/index.d.ts +3 -2
- package/dist/shared-tree/index.d.ts.map +1 -1
- package/dist/shared-tree/index.js +6 -3
- package/dist/shared-tree/index.js.map +1 -1
- package/dist/shared-tree/schematizingTreeView.d.ts +10 -1
- package/dist/shared-tree/schematizingTreeView.d.ts.map +1 -1
- package/dist/shared-tree/schematizingTreeView.js +43 -0
- package/dist/shared-tree/schematizingTreeView.js.map +1 -1
- package/dist/shared-tree/sharedTree.d.ts +44 -21
- package/dist/shared-tree/sharedTree.d.ts.map +1 -1
- package/dist/shared-tree/sharedTree.js +41 -35
- package/dist/shared-tree/sharedTree.js.map +1 -1
- package/dist/shared-tree/transactionTypes.d.ts +105 -0
- package/dist/shared-tree/transactionTypes.d.ts.map +1 -0
- package/dist/shared-tree/transactionTypes.js +13 -0
- package/dist/shared-tree/transactionTypes.js.map +1 -0
- package/dist/shared-tree/treeApi.d.ts +1 -25
- package/dist/shared-tree/treeApi.d.ts.map +1 -1
- package/dist/shared-tree/treeApi.js +4 -8
- package/dist/shared-tree/treeApi.js.map +1 -1
- package/dist/shared-tree/treeCheckout.d.ts +4 -1
- package/dist/shared-tree/treeCheckout.d.ts.map +1 -1
- package/dist/shared-tree/treeCheckout.js +142 -23
- package/dist/shared-tree/treeCheckout.js.map +1 -1
- package/dist/shared-tree-core/sharedTreeCore.js +1 -1
- package/dist/shared-tree-core/sharedTreeCore.js.map +1 -1
- package/dist/simple-tree/api/index.d.ts +1 -0
- package/dist/simple-tree/api/index.d.ts.map +1 -1
- package/dist/simple-tree/api/index.js +3 -1
- package/dist/simple-tree/api/index.js.map +1 -1
- package/dist/simple-tree/api/jsonSchema.d.ts +6 -0
- package/dist/simple-tree/api/jsonSchema.d.ts.map +1 -1
- package/dist/simple-tree/api/jsonSchema.js.map +1 -1
- package/dist/simple-tree/api/schemaFactory.d.ts +21 -12
- package/dist/simple-tree/api/schemaFactory.d.ts.map +1 -1
- package/dist/simple-tree/api/schemaFactory.js +5 -2
- package/dist/simple-tree/api/schemaFactory.js.map +1 -1
- package/dist/simple-tree/api/schemaFactoryAlpha.d.ts +83 -0
- package/dist/simple-tree/api/schemaFactoryAlpha.d.ts.map +1 -0
- package/dist/simple-tree/api/schemaFactoryAlpha.js +90 -0
- package/dist/simple-tree/api/schemaFactoryAlpha.js.map +1 -0
- package/dist/simple-tree/api/simpleSchema.d.ts +5 -1
- package/dist/simple-tree/api/simpleSchema.d.ts.map +1 -1
- package/dist/simple-tree/api/simpleSchema.js.map +1 -1
- package/dist/simple-tree/api/simpleSchemaToJsonSchema.js +13 -10
- package/dist/simple-tree/api/simpleSchemaToJsonSchema.js.map +1 -1
- package/dist/simple-tree/api/testRecursiveDomain.d.ts +5 -5
- package/dist/simple-tree/api/tree.d.ts +60 -0
- package/dist/simple-tree/api/tree.d.ts.map +1 -1
- package/dist/simple-tree/api/tree.js.map +1 -1
- package/dist/simple-tree/api/treeNodeApi.js +1 -1
- package/dist/simple-tree/api/treeNodeApi.js.map +1 -1
- package/dist/simple-tree/api/viewSchemaToSimpleSchema.d.ts.map +1 -1
- package/dist/simple-tree/api/viewSchemaToSimpleSchema.js +11 -11
- package/dist/simple-tree/api/viewSchemaToSimpleSchema.js.map +1 -1
- package/dist/simple-tree/arrayNode.d.ts +2 -2
- package/dist/simple-tree/arrayNode.d.ts.map +1 -1
- package/dist/simple-tree/arrayNode.js +3 -2
- package/dist/simple-tree/arrayNode.js.map +1 -1
- package/dist/simple-tree/core/treeNodeSchema.d.ts +10 -6
- package/dist/simple-tree/core/treeNodeSchema.d.ts.map +1 -1
- package/dist/simple-tree/core/treeNodeSchema.js.map +1 -1
- package/dist/simple-tree/index.d.ts +2 -2
- package/dist/simple-tree/index.d.ts.map +1 -1
- package/dist/simple-tree/index.js +3 -2
- package/dist/simple-tree/index.js.map +1 -1
- package/dist/simple-tree/leafNodeSchema.d.ts +5 -5
- package/dist/simple-tree/leafNodeSchema.d.ts.map +1 -1
- package/dist/simple-tree/mapNode.d.ts +2 -2
- package/dist/simple-tree/mapNode.d.ts.map +1 -1
- package/dist/simple-tree/mapNode.js +2 -1
- package/dist/simple-tree/mapNode.js.map +1 -1
- package/dist/simple-tree/objectNode.d.ts +2 -2
- 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/objectNodeTypes.d.ts +2 -2
- package/dist/simple-tree/objectNodeTypes.d.ts.map +1 -1
- package/dist/simple-tree/objectNodeTypes.js.map +1 -1
- package/dist/simple-tree/schemaTypes.d.ts +47 -1
- package/dist/simple-tree/schemaTypes.d.ts.map +1 -1
- package/dist/simple-tree/schemaTypes.js.map +1 -1
- package/dist/simple-tree/toMapTree.js +1 -1
- package/dist/simple-tree/toMapTree.js.map +1 -1
- package/dist/util/bTreeUtils.d.ts +10 -0
- package/dist/util/bTreeUtils.d.ts.map +1 -0
- package/dist/util/bTreeUtils.js +52 -0
- package/dist/util/bTreeUtils.js.map +1 -0
- package/dist/util/idAllocator.d.ts +0 -2
- package/dist/util/idAllocator.d.ts.map +1 -1
- package/dist/util/idAllocator.js +0 -2
- package/dist/util/idAllocator.js.map +1 -1
- package/dist/util/index.d.ts +3 -2
- package/dist/util/index.d.ts.map +1 -1
- package/dist/util/index.js +7 -5
- package/dist/util/index.js.map +1 -1
- package/dist/util/rangeMap.d.ts +95 -43
- package/dist/util/rangeMap.d.ts.map +1 -1
- package/dist/util/rangeMap.js +202 -148
- package/dist/util/rangeMap.js.map +1 -1
- package/dist/util/utils.d.ts +26 -2
- package/dist/util/utils.d.ts.map +1 -1
- package/dist/util/utils.js +17 -2
- package/dist/util/utils.js.map +1 -1
- package/lib/alpha.d.ts +14 -0
- package/lib/beta.d.ts +2 -0
- package/lib/core/index.d.ts +2 -2
- package/lib/core/index.d.ts.map +1 -1
- package/lib/core/index.js +2 -2
- package/lib/core/index.js.map +1 -1
- package/lib/core/rebase/index.d.ts +2 -2
- package/lib/core/rebase/index.d.ts.map +1 -1
- package/lib/core/rebase/index.js +2 -2
- package/lib/core/rebase/index.js.map +1 -1
- package/lib/core/rebase/types.d.ts +5 -4
- package/lib/core/rebase/types.d.ts.map +1 -1
- package/lib/core/rebase/types.js +26 -1
- package/lib/core/rebase/types.js.map +1 -1
- package/lib/core/rebase/utils.d.ts +10 -0
- package/lib/core/rebase/utils.d.ts.map +1 -1
- package/lib/core/rebase/utils.js +20 -0
- package/lib/core/rebase/utils.js.map +1 -1
- package/lib/core/tree/delta.d.ts +21 -26
- package/lib/core/tree/delta.d.ts.map +1 -1
- package/lib/core/tree/delta.js.map +1 -1
- package/lib/core/tree/deltaUtil.d.ts +1 -3
- package/lib/core/tree/deltaUtil.d.ts.map +1 -1
- package/lib/core/tree/deltaUtil.js +1 -12
- package/lib/core/tree/deltaUtil.js.map +1 -1
- package/lib/core/tree/index.d.ts +1 -1
- package/lib/core/tree/index.d.ts.map +1 -1
- package/lib/core/tree/index.js +1 -1
- package/lib/core/tree/index.js.map +1 -1
- package/lib/core/tree/visitDelta.d.ts.map +1 -1
- package/lib/core/tree/visitDelta.js +82 -80
- package/lib/core/tree/visitDelta.js.map +1 -1
- package/lib/feature-libraries/default-schema/defaultEditBuilder.d.ts +10 -0
- package/lib/feature-libraries/default-schema/defaultEditBuilder.d.ts.map +1 -1
- package/lib/feature-libraries/default-schema/defaultEditBuilder.js +3 -0
- 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.map +1 -1
- package/lib/feature-libraries/deltaUtils.d.ts.map +1 -1
- package/lib/feature-libraries/deltaUtils.js +13 -0
- package/lib/feature-libraries/deltaUtils.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 -6
- package/lib/feature-libraries/forest-summary/forestSummarizer.js.map +1 -1
- package/lib/feature-libraries/index.d.ts +0 -1
- package/lib/feature-libraries/index.d.ts.map +1 -1
- package/lib/feature-libraries/index.js +0 -1
- package/lib/feature-libraries/index.js.map +1 -1
- package/lib/feature-libraries/modular-schema/crossFieldQueries.d.ts +5 -5
- package/lib/feature-libraries/modular-schema/crossFieldQueries.d.ts.map +1 -1
- package/lib/feature-libraries/modular-schema/crossFieldQueries.js +2 -3
- package/lib/feature-libraries/modular-schema/crossFieldQueries.js.map +1 -1
- package/lib/feature-libraries/modular-schema/fieldChangeHandler.d.ts +30 -6
- 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 +2 -1
- package/lib/feature-libraries/modular-schema/genericFieldKind.js.map +1 -1
- package/lib/feature-libraries/modular-schema/index.d.ts +2 -2
- package/lib/feature-libraries/modular-schema/index.d.ts.map +1 -1
- package/lib/feature-libraries/modular-schema/index.js.map +1 -1
- package/lib/feature-libraries/modular-schema/modularChangeCodecs.d.ts +1 -1
- package/lib/feature-libraries/modular-schema/modularChangeCodecs.d.ts.map +1 -1
- package/lib/feature-libraries/modular-schema/modularChangeCodecs.js +4 -4
- package/lib/feature-libraries/modular-schema/modularChangeCodecs.js.map +1 -1
- package/lib/feature-libraries/modular-schema/modularChangeFamily.d.ts +5 -4
- package/lib/feature-libraries/modular-schema/modularChangeFamily.d.ts.map +1 -1
- package/lib/feature-libraries/modular-schema/modularChangeFamily.js +158 -186
- package/lib/feature-libraries/modular-schema/modularChangeFamily.js.map +1 -1
- package/lib/feature-libraries/modular-schema/modularChangeTypes.d.ts +23 -20
- package/lib/feature-libraries/modular-schema/modularChangeTypes.d.ts.map +1 -1
- package/lib/feature-libraries/modular-schema/modularChangeTypes.js +18 -1
- package/lib/feature-libraries/modular-schema/modularChangeTypes.js.map +1 -1
- package/lib/feature-libraries/optional-field/optionalField.d.ts +3 -3
- package/lib/feature-libraries/optional-field/optionalField.d.ts.map +1 -1
- package/lib/feature-libraries/optional-field/optionalField.js +24 -4
- package/lib/feature-libraries/optional-field/optionalField.js.map +1 -1
- package/lib/feature-libraries/sequence-field/moveEffectTable.d.ts +1 -1
- package/lib/feature-libraries/sequence-field/moveEffectTable.d.ts.map +1 -1
- package/lib/feature-libraries/sequence-field/moveEffectTable.js.map +1 -1
- package/lib/feature-libraries/sequence-field/rebase.js +4 -4
- package/lib/feature-libraries/sequence-field/rebase.js.map +1 -1
- package/lib/feature-libraries/sequence-field/sequenceFieldCodecV1.js +1 -1
- package/lib/feature-libraries/sequence-field/sequenceFieldCodecV1.js.map +1 -1
- package/lib/feature-libraries/sequence-field/sequenceFieldCodecV2.js +1 -1
- package/lib/feature-libraries/sequence-field/sequenceFieldCodecV2.js.map +1 -1
- package/lib/feature-libraries/sequence-field/sequenceFieldToDelta.d.ts +2 -3
- package/lib/feature-libraries/sequence-field/sequenceFieldToDelta.d.ts.map +1 -1
- package/lib/feature-libraries/sequence-field/sequenceFieldToDelta.js.map +1 -1
- package/lib/feature-libraries/sequence-field/utils.d.ts +2 -2
- package/lib/feature-libraries/sequence-field/utils.d.ts.map +1 -1
- package/lib/feature-libraries/sequence-field/utils.js +50 -9
- package/lib/feature-libraries/sequence-field/utils.js.map +1 -1
- package/lib/feature-libraries/treeCursorUtils.d.ts.map +1 -1
- package/lib/feature-libraries/treeCursorUtils.js +4 -1
- package/lib/feature-libraries/treeCursorUtils.js.map +1 -1
- package/lib/index.d.ts +27 -3
- package/lib/index.d.ts.map +1 -1
- package/lib/index.js +2 -2
- package/lib/index.js.map +1 -1
- package/lib/legacy.d.ts +2 -0
- package/lib/packageVersion.d.ts +1 -1
- package/lib/packageVersion.js +1 -1
- package/lib/packageVersion.js.map +1 -1
- package/lib/public.d.ts +2 -0
- package/lib/shared-tree/index.d.ts +3 -2
- package/lib/shared-tree/index.d.ts.map +1 -1
- package/lib/shared-tree/index.js +3 -2
- package/lib/shared-tree/index.js.map +1 -1
- package/lib/shared-tree/schematizingTreeView.d.ts +10 -1
- package/lib/shared-tree/schematizingTreeView.d.ts.map +1 -1
- package/lib/shared-tree/schematizingTreeView.js +46 -3
- package/lib/shared-tree/schematizingTreeView.js.map +1 -1
- package/lib/shared-tree/sharedTree.d.ts +44 -21
- package/lib/shared-tree/sharedTree.d.ts.map +1 -1
- package/lib/shared-tree/sharedTree.js +40 -34
- package/lib/shared-tree/sharedTree.js.map +1 -1
- package/lib/shared-tree/transactionTypes.d.ts +105 -0
- package/lib/shared-tree/transactionTypes.d.ts.map +1 -0
- package/lib/shared-tree/transactionTypes.js +10 -0
- package/lib/shared-tree/transactionTypes.js.map +1 -0
- package/lib/shared-tree/treeApi.d.ts +1 -25
- package/lib/shared-tree/treeApi.d.ts.map +1 -1
- package/lib/shared-tree/treeApi.js +1 -5
- package/lib/shared-tree/treeApi.js.map +1 -1
- package/lib/shared-tree/treeCheckout.d.ts +4 -1
- package/lib/shared-tree/treeCheckout.d.ts.map +1 -1
- package/lib/shared-tree/treeCheckout.js +143 -24
- package/lib/shared-tree/treeCheckout.js.map +1 -1
- package/lib/shared-tree-core/sharedTreeCore.js +1 -1
- package/lib/shared-tree-core/sharedTreeCore.js.map +1 -1
- package/lib/simple-tree/api/index.d.ts +1 -0
- package/lib/simple-tree/api/index.d.ts.map +1 -1
- package/lib/simple-tree/api/index.js +1 -0
- package/lib/simple-tree/api/index.js.map +1 -1
- package/lib/simple-tree/api/jsonSchema.d.ts +6 -0
- package/lib/simple-tree/api/jsonSchema.d.ts.map +1 -1
- package/lib/simple-tree/api/jsonSchema.js.map +1 -1
- package/lib/simple-tree/api/schemaFactory.d.ts +21 -12
- package/lib/simple-tree/api/schemaFactory.d.ts.map +1 -1
- package/lib/simple-tree/api/schemaFactory.js +5 -2
- package/lib/simple-tree/api/schemaFactory.js.map +1 -1
- package/lib/simple-tree/api/schemaFactoryAlpha.d.ts +83 -0
- package/lib/simple-tree/api/schemaFactoryAlpha.d.ts.map +1 -0
- package/lib/simple-tree/api/schemaFactoryAlpha.js +86 -0
- package/lib/simple-tree/api/schemaFactoryAlpha.js.map +1 -0
- package/lib/simple-tree/api/simpleSchema.d.ts +5 -1
- package/lib/simple-tree/api/simpleSchema.d.ts.map +1 -1
- package/lib/simple-tree/api/simpleSchema.js.map +1 -1
- package/lib/simple-tree/api/simpleSchemaToJsonSchema.js +14 -11
- package/lib/simple-tree/api/simpleSchemaToJsonSchema.js.map +1 -1
- package/lib/simple-tree/api/testRecursiveDomain.d.ts +5 -5
- package/lib/simple-tree/api/tree.d.ts +60 -0
- package/lib/simple-tree/api/tree.d.ts.map +1 -1
- package/lib/simple-tree/api/tree.js.map +1 -1
- package/lib/simple-tree/api/treeNodeApi.js +1 -1
- package/lib/simple-tree/api/treeNodeApi.js.map +1 -1
- package/lib/simple-tree/api/viewSchemaToSimpleSchema.d.ts.map +1 -1
- package/lib/simple-tree/api/viewSchemaToSimpleSchema.js +12 -12
- package/lib/simple-tree/api/viewSchemaToSimpleSchema.js.map +1 -1
- package/lib/simple-tree/arrayNode.d.ts +2 -2
- package/lib/simple-tree/arrayNode.d.ts.map +1 -1
- package/lib/simple-tree/arrayNode.js +3 -2
- package/lib/simple-tree/arrayNode.js.map +1 -1
- package/lib/simple-tree/core/treeNodeSchema.d.ts +10 -6
- package/lib/simple-tree/core/treeNodeSchema.d.ts.map +1 -1
- package/lib/simple-tree/core/treeNodeSchema.js.map +1 -1
- package/lib/simple-tree/index.d.ts +2 -2
- 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 +5 -5
- package/lib/simple-tree/leafNodeSchema.d.ts.map +1 -1
- package/lib/simple-tree/mapNode.d.ts +2 -2
- package/lib/simple-tree/mapNode.d.ts.map +1 -1
- package/lib/simple-tree/mapNode.js +2 -1
- package/lib/simple-tree/mapNode.js.map +1 -1
- package/lib/simple-tree/objectNode.d.ts +2 -2
- package/lib/simple-tree/objectNode.d.ts.map +1 -1
- package/lib/simple-tree/objectNode.js +2 -1
- package/lib/simple-tree/objectNode.js.map +1 -1
- package/lib/simple-tree/objectNodeTypes.d.ts +2 -2
- package/lib/simple-tree/objectNodeTypes.d.ts.map +1 -1
- package/lib/simple-tree/objectNodeTypes.js.map +1 -1
- package/lib/simple-tree/schemaTypes.d.ts +47 -1
- package/lib/simple-tree/schemaTypes.d.ts.map +1 -1
- package/lib/simple-tree/schemaTypes.js.map +1 -1
- package/lib/simple-tree/toMapTree.js +1 -1
- package/lib/simple-tree/toMapTree.js.map +1 -1
- package/lib/util/bTreeUtils.d.ts +10 -0
- package/lib/util/bTreeUtils.d.ts.map +1 -0
- package/lib/util/bTreeUtils.js +47 -0
- package/lib/util/bTreeUtils.js.map +1 -0
- package/lib/util/idAllocator.d.ts +0 -2
- package/lib/util/idAllocator.d.ts.map +1 -1
- package/lib/util/idAllocator.js +0 -2
- package/lib/util/idAllocator.js.map +1 -1
- 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/rangeMap.d.ts +95 -43
- package/lib/util/rangeMap.d.ts.map +1 -1
- package/lib/util/rangeMap.js +200 -144
- package/lib/util/rangeMap.js.map +1 -1
- package/lib/util/utils.d.ts +26 -2
- package/lib/util/utils.d.ts.map +1 -1
- package/lib/util/utils.js +15 -1
- package/lib/util/utils.js.map +1 -1
- package/package.json +24 -24
- package/src/core/index.ts +5 -2
- package/src/core/rebase/index.ts +5 -0
- package/src/core/rebase/types.ts +33 -5
- package/src/core/rebase/utils.ts +27 -0
- package/src/core/tree/delta.ts +21 -26
- package/src/core/tree/deltaUtil.ts +1 -16
- package/src/core/tree/index.ts +0 -2
- package/src/core/tree/visitDelta.ts +108 -97
- package/src/feature-libraries/default-schema/defaultEditBuilder.ts +14 -1
- package/src/feature-libraries/default-schema/defaultFieldKinds.ts +2 -2
- package/src/feature-libraries/deltaUtils.ts +13 -0
- package/src/feature-libraries/forest-summary/forestSummarizer.ts +1 -6
- package/src/feature-libraries/index.ts +0 -1
- package/src/feature-libraries/modular-schema/crossFieldQueries.ts +12 -13
- package/src/feature-libraries/modular-schema/fieldChangeHandler.ts +33 -9
- package/src/feature-libraries/modular-schema/genericFieldKind.ts +6 -4
- package/src/feature-libraries/modular-schema/index.ts +3 -0
- package/src/feature-libraries/modular-schema/modularChangeCodecs.ts +12 -11
- package/src/feature-libraries/modular-schema/modularChangeFamily.ts +254 -248
- package/src/feature-libraries/modular-schema/modularChangeTypes.ts +51 -26
- package/src/feature-libraries/optional-field/optionalField.ts +37 -8
- package/src/feature-libraries/sequence-field/moveEffectTable.ts +1 -1
- package/src/feature-libraries/sequence-field/rebase.ts +9 -3
- package/src/feature-libraries/sequence-field/sequenceFieldCodecV1.ts +1 -1
- package/src/feature-libraries/sequence-field/sequenceFieldCodecV2.ts +1 -1
- package/src/feature-libraries/sequence-field/sequenceFieldToDelta.ts +3 -4
- package/src/feature-libraries/sequence-field/utils.ts +54 -11
- package/src/feature-libraries/treeCursorUtils.ts +6 -1
- package/src/index.ts +45 -6
- package/src/packageVersion.ts +1 -1
- package/src/shared-tree/index.ts +16 -3
- package/src/shared-tree/schematizingTreeView.ts +91 -2
- package/src/shared-tree/sharedTree.ts +69 -44
- package/src/shared-tree/transactionTypes.ts +125 -0
- package/src/shared-tree/treeApi.ts +1 -28
- package/src/shared-tree/treeCheckout.ts +166 -25
- package/src/shared-tree-core/sharedTreeCore.ts +1 -1
- package/src/simple-tree/api/index.ts +1 -0
- package/src/simple-tree/api/jsonSchema.ts +7 -0
- package/src/simple-tree/api/schemaFactory.ts +33 -6
- package/src/simple-tree/api/schemaFactoryAlpha.ts +253 -0
- package/src/simple-tree/api/simpleSchema.ts +6 -1
- package/src/simple-tree/api/simpleSchemaToJsonSchema.ts +22 -12
- package/src/simple-tree/api/tree.ts +76 -4
- package/src/simple-tree/api/treeNodeApi.ts +1 -1
- package/src/simple-tree/api/viewSchemaToSimpleSchema.ts +19 -13
- package/src/simple-tree/arrayNode.ts +8 -2
- package/src/simple-tree/core/treeNodeSchema.ts +51 -7
- package/src/simple-tree/index.ts +3 -0
- package/src/simple-tree/mapNode.ts +7 -1
- package/src/simple-tree/objectNode.ts +7 -1
- package/src/simple-tree/objectNodeTypes.ts +4 -1
- package/src/simple-tree/schemaTypes.ts +50 -1
- package/src/simple-tree/toMapTree.ts +1 -1
- package/src/util/bTreeUtils.ts +60 -0
- package/src/util/idAllocator.ts +0 -2
- package/src/util/index.ts +5 -6
- package/src/util/rangeMap.ts +259 -184
- package/src/util/utils.ts +57 -4
- package/dist/feature-libraries/memoizedIdRangeAllocator.d.ts +0 -38
- package/dist/feature-libraries/memoizedIdRangeAllocator.d.ts.map +0 -1
- package/dist/feature-libraries/memoizedIdRangeAllocator.js +0 -74
- package/dist/feature-libraries/memoizedIdRangeAllocator.js.map +0 -1
- package/lib/feature-libraries/memoizedIdRangeAllocator.d.ts +0 -38
- package/lib/feature-libraries/memoizedIdRangeAllocator.d.ts.map +0 -1
- package/lib/feature-libraries/memoizedIdRangeAllocator.js +0 -71
- package/lib/feature-libraries/memoizedIdRangeAllocator.js.map +0 -1
- package/lib/package.json +0 -3
- package/src/feature-libraries/memoizedIdRangeAllocator.ts +0 -112
|
@@ -18,6 +18,7 @@ import {
|
|
|
18
18
|
normalizeAllowedTypes,
|
|
19
19
|
type ImplicitAllowedTypes,
|
|
20
20
|
type InsertableTreeNodeFromImplicitAllowedTypes,
|
|
21
|
+
type NodeSchemaMetadata,
|
|
21
22
|
type TreeLeafValue,
|
|
22
23
|
type TreeNodeFromImplicitAllowedTypes,
|
|
23
24
|
} from "./schemaTypes.js";
|
|
@@ -992,7 +993,7 @@ abstract class CustomArrayNodeBase<const T extends ImplicitAllowedTypes>
|
|
|
992
993
|
if (!destinationField.context.isHydrated()) {
|
|
993
994
|
if (!(sourceField instanceof UnhydratedTreeSequenceField)) {
|
|
994
995
|
throw new UsageError(
|
|
995
|
-
"Cannot move elements from
|
|
996
|
+
"Cannot move elements from a hydrated array to an unhydrated array.",
|
|
996
997
|
);
|
|
997
998
|
}
|
|
998
999
|
|
|
@@ -1062,11 +1063,13 @@ export function arraySchema<
|
|
|
1062
1063
|
TName extends string,
|
|
1063
1064
|
const T extends ImplicitAllowedTypes,
|
|
1064
1065
|
const ImplicitlyConstructable extends boolean,
|
|
1066
|
+
const TCustomMetadata = unknown,
|
|
1065
1067
|
>(
|
|
1066
1068
|
identifier: TName,
|
|
1067
1069
|
info: T,
|
|
1068
1070
|
implicitlyConstructable: ImplicitlyConstructable,
|
|
1069
1071
|
customizable: boolean,
|
|
1072
|
+
metadata?: NodeSchemaMetadata<TCustomMetadata>,
|
|
1070
1073
|
) {
|
|
1071
1074
|
type Output = TreeNodeSchemaBoth<
|
|
1072
1075
|
TName,
|
|
@@ -1075,7 +1078,8 @@ export function arraySchema<
|
|
|
1075
1078
|
Iterable<InsertableTreeNodeFromImplicitAllowedTypes<T>>,
|
|
1076
1079
|
ImplicitlyConstructable,
|
|
1077
1080
|
T,
|
|
1078
|
-
undefined
|
|
1081
|
+
undefined,
|
|
1082
|
+
TCustomMetadata
|
|
1079
1083
|
>;
|
|
1080
1084
|
|
|
1081
1085
|
const lazyChildTypes = new Lazy(() => normalizeAllowedTypes(info));
|
|
@@ -1157,6 +1161,8 @@ export function arraySchema<
|
|
|
1157
1161
|
public static get childTypes(): ReadonlySet<TreeNodeSchema> {
|
|
1158
1162
|
return lazyChildTypes.value;
|
|
1159
1163
|
}
|
|
1164
|
+
public static readonly metadata: NodeSchemaMetadata<TCustomMetadata> | undefined =
|
|
1165
|
+
metadata;
|
|
1160
1166
|
|
|
1161
1167
|
// eslint-disable-next-line import/no-deprecated
|
|
1162
1168
|
public get [typeNameSymbol](): TName {
|
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
* Licensed under the MIT License.
|
|
4
4
|
*/
|
|
5
5
|
|
|
6
|
-
import type { TreeLeafValue } from "../schemaTypes.js";
|
|
6
|
+
import type { NodeSchemaMetadata, TreeLeafValue } from "../schemaTypes.js";
|
|
7
7
|
import type { InternalTreeNode, TreeNode, Unhydrated } from "./types.js";
|
|
8
8
|
|
|
9
9
|
/**
|
|
@@ -27,11 +27,30 @@ export type TreeNodeSchema<
|
|
|
27
27
|
TBuild = never,
|
|
28
28
|
ImplicitlyConstructable extends boolean = boolean,
|
|
29
29
|
Info = unknown,
|
|
30
|
+
TCustomMetadata = unknown,
|
|
30
31
|
> =
|
|
31
32
|
| (TNode extends TreeNode
|
|
32
|
-
? TreeNodeSchemaClass<
|
|
33
|
+
? TreeNodeSchemaClass<
|
|
34
|
+
Name,
|
|
35
|
+
Kind,
|
|
36
|
+
TNode,
|
|
37
|
+
TBuild,
|
|
38
|
+
ImplicitlyConstructable,
|
|
39
|
+
Info,
|
|
40
|
+
never,
|
|
41
|
+
TCustomMetadata
|
|
42
|
+
>
|
|
33
43
|
: never)
|
|
34
|
-
| TreeNodeSchemaNonClass<
|
|
44
|
+
| TreeNodeSchemaNonClass<
|
|
45
|
+
Name,
|
|
46
|
+
Kind,
|
|
47
|
+
TNode,
|
|
48
|
+
TBuild,
|
|
49
|
+
ImplicitlyConstructable,
|
|
50
|
+
Info,
|
|
51
|
+
never,
|
|
52
|
+
TCustomMetadata
|
|
53
|
+
>;
|
|
35
54
|
|
|
36
55
|
/**
|
|
37
56
|
* Schema which is not a class.
|
|
@@ -49,7 +68,15 @@ export type TreeNodeSchemaNonClass<
|
|
|
49
68
|
ImplicitlyConstructable extends boolean = boolean,
|
|
50
69
|
Info = unknown,
|
|
51
70
|
TConstructorExtra = never,
|
|
52
|
-
|
|
71
|
+
TCustomMetadata = unknown,
|
|
72
|
+
> = TreeNodeSchemaCore<
|
|
73
|
+
Name,
|
|
74
|
+
Kind,
|
|
75
|
+
ImplicitlyConstructable,
|
|
76
|
+
Info,
|
|
77
|
+
TInsertable,
|
|
78
|
+
TCustomMetadata
|
|
79
|
+
> &
|
|
53
80
|
(undefined extends TConstructorExtra
|
|
54
81
|
? {
|
|
55
82
|
/**
|
|
@@ -119,7 +146,15 @@ export type TreeNodeSchemaClass<
|
|
|
119
146
|
ImplicitlyConstructable extends boolean = boolean,
|
|
120
147
|
Info = unknown,
|
|
121
148
|
TConstructorExtra = never,
|
|
122
|
-
|
|
149
|
+
TCustomMetadata = unknown,
|
|
150
|
+
> = TreeNodeSchemaCore<
|
|
151
|
+
Name,
|
|
152
|
+
Kind,
|
|
153
|
+
ImplicitlyConstructable,
|
|
154
|
+
Info,
|
|
155
|
+
TInsertable,
|
|
156
|
+
TCustomMetadata
|
|
157
|
+
> &
|
|
123
158
|
(undefined extends TConstructorExtra
|
|
124
159
|
? {
|
|
125
160
|
/**
|
|
@@ -157,6 +192,7 @@ export type TreeNodeSchemaBoth<
|
|
|
157
192
|
ImplicitlyConstructable extends boolean = boolean,
|
|
158
193
|
Info = unknown,
|
|
159
194
|
TConstructorExtra = never,
|
|
195
|
+
TCustomMetadata = unknown,
|
|
160
196
|
> = TreeNodeSchemaClass<
|
|
161
197
|
Name,
|
|
162
198
|
Kind,
|
|
@@ -164,7 +200,8 @@ export type TreeNodeSchemaBoth<
|
|
|
164
200
|
TInsertable,
|
|
165
201
|
ImplicitlyConstructable,
|
|
166
202
|
Info,
|
|
167
|
-
TConstructorExtra
|
|
203
|
+
TConstructorExtra,
|
|
204
|
+
TCustomMetadata
|
|
168
205
|
> &
|
|
169
206
|
TreeNodeSchemaNonClass<
|
|
170
207
|
Name,
|
|
@@ -173,7 +210,8 @@ export type TreeNodeSchemaBoth<
|
|
|
173
210
|
TInsertable,
|
|
174
211
|
ImplicitlyConstructable,
|
|
175
212
|
Info,
|
|
176
|
-
TConstructorExtra
|
|
213
|
+
TConstructorExtra,
|
|
214
|
+
TCustomMetadata
|
|
177
215
|
>;
|
|
178
216
|
|
|
179
217
|
/**
|
|
@@ -188,6 +226,7 @@ export interface TreeNodeSchemaCore<
|
|
|
188
226
|
out ImplicitlyConstructable extends boolean,
|
|
189
227
|
out Info = unknown,
|
|
190
228
|
out TInsertable = never,
|
|
229
|
+
out TCustomMetadata = unknown,
|
|
191
230
|
> {
|
|
192
231
|
/**
|
|
193
232
|
* Unique (within a document's schema) identifier used to associate nodes with their schema.
|
|
@@ -244,6 +283,11 @@ export interface TreeNodeSchemaCore<
|
|
|
244
283
|
*/
|
|
245
284
|
readonly childTypes: ReadonlySet<TreeNodeSchema>;
|
|
246
285
|
|
|
286
|
+
/**
|
|
287
|
+
* User-provided {@link NodeSchemaMetadata} for this schema.
|
|
288
|
+
*/
|
|
289
|
+
readonly metadata?: NodeSchemaMetadata<TCustomMetadata> | undefined;
|
|
290
|
+
|
|
247
291
|
/**
|
|
248
292
|
* Constructs an instance of this node type.
|
|
249
293
|
* @remarks
|
package/src/simple-tree/index.ts
CHANGED
|
@@ -35,6 +35,7 @@ export {
|
|
|
35
35
|
type SchemaCompatibilityStatus,
|
|
36
36
|
type ITreeConfigurationOptions,
|
|
37
37
|
SchemaFactory,
|
|
38
|
+
SchemaFactoryAlpha,
|
|
38
39
|
type SchemaFactoryObjectOptions,
|
|
39
40
|
type ScopedSchemaName,
|
|
40
41
|
type ValidateRecursiveSchema,
|
|
@@ -155,6 +156,8 @@ export {
|
|
|
155
156
|
type Input,
|
|
156
157
|
type ReadableField,
|
|
157
158
|
type ReadSchema,
|
|
159
|
+
type NodeSchemaOptions,
|
|
160
|
+
type NodeSchemaMetadata,
|
|
158
161
|
} from "./schemaTypes.js";
|
|
159
162
|
export {
|
|
160
163
|
getTreeNodeForField,
|
|
@@ -17,6 +17,7 @@ import {
|
|
|
17
17
|
normalizeAllowedTypes,
|
|
18
18
|
type ImplicitAllowedTypes,
|
|
19
19
|
type InsertableTreeNodeFromImplicitAllowedTypes,
|
|
20
|
+
type NodeSchemaMetadata,
|
|
20
21
|
type TreeNodeFromImplicitAllowedTypes,
|
|
21
22
|
} from "./schemaTypes.js";
|
|
22
23
|
import {
|
|
@@ -235,11 +236,13 @@ export function mapSchema<
|
|
|
235
236
|
TName extends string,
|
|
236
237
|
const T extends ImplicitAllowedTypes,
|
|
237
238
|
const ImplicitlyConstructable extends boolean,
|
|
239
|
+
const TCustomMetadata = unknown,
|
|
238
240
|
>(
|
|
239
241
|
identifier: TName,
|
|
240
242
|
info: T,
|
|
241
243
|
implicitlyConstructable: ImplicitlyConstructable,
|
|
242
244
|
useMapPrototype: boolean,
|
|
245
|
+
metadata?: NodeSchemaMetadata<TCustomMetadata>,
|
|
243
246
|
) {
|
|
244
247
|
const lazyChildTypes = new Lazy(() => normalizeAllowedTypes(info));
|
|
245
248
|
|
|
@@ -283,6 +286,8 @@ export function mapSchema<
|
|
|
283
286
|
public static get childTypes(): ReadonlySet<TreeNodeSchema> {
|
|
284
287
|
return lazyChildTypes.value;
|
|
285
288
|
}
|
|
289
|
+
public static readonly metadata: NodeSchemaMetadata<TCustomMetadata> | undefined =
|
|
290
|
+
metadata;
|
|
286
291
|
|
|
287
292
|
// eslint-disable-next-line import/no-deprecated
|
|
288
293
|
public get [typeNameSymbol](): TName {
|
|
@@ -299,7 +304,8 @@ export function mapSchema<
|
|
|
299
304
|
MapNodeInsertableData<T>,
|
|
300
305
|
ImplicitlyConstructable,
|
|
301
306
|
T,
|
|
302
|
-
undefined
|
|
307
|
+
undefined,
|
|
308
|
+
TCustomMetadata
|
|
303
309
|
> = Schema;
|
|
304
310
|
return schemaErased;
|
|
305
311
|
}
|
|
@@ -26,6 +26,7 @@ import {
|
|
|
26
26
|
normalizeFieldSchema,
|
|
27
27
|
type ImplicitAllowedTypes,
|
|
28
28
|
FieldKind,
|
|
29
|
+
type NodeSchemaMetadata,
|
|
29
30
|
} from "./schemaTypes.js";
|
|
30
31
|
import {
|
|
31
32
|
type TreeNodeSchema,
|
|
@@ -330,12 +331,15 @@ export function objectSchema<
|
|
|
330
331
|
TName extends string,
|
|
331
332
|
const T extends RestrictiveStringRecord<ImplicitFieldSchema>,
|
|
332
333
|
const ImplicitlyConstructable extends boolean,
|
|
334
|
+
const TCustomMetadata = unknown,
|
|
333
335
|
>(
|
|
334
336
|
identifier: TName,
|
|
335
337
|
info: T,
|
|
336
338
|
implicitlyConstructable: ImplicitlyConstructable,
|
|
337
339
|
allowUnknownOptionalFields: boolean,
|
|
338
|
-
|
|
340
|
+
metadata?: NodeSchemaMetadata<TCustomMetadata>,
|
|
341
|
+
): ObjectNodeSchema<TName, T, ImplicitlyConstructable, TCustomMetadata> &
|
|
342
|
+
ObjectNodeSchemaInternalData {
|
|
339
343
|
// Ensure no collisions between final set of property keys, and final set of stored keys (including those
|
|
340
344
|
// implicitly derived from property keys)
|
|
341
345
|
assertUniqueKeys(identifier, info);
|
|
@@ -460,6 +464,8 @@ export function objectSchema<
|
|
|
460
464
|
public static get childTypes(): ReadonlySet<TreeNodeSchema> {
|
|
461
465
|
return lazyChildTypes.value;
|
|
462
466
|
}
|
|
467
|
+
public static readonly metadata: NodeSchemaMetadata<TCustomMetadata> | undefined =
|
|
468
|
+
metadata;
|
|
463
469
|
|
|
464
470
|
// eslint-disable-next-line import/no-deprecated
|
|
465
471
|
public get [typeNameSymbol](): TName {
|
|
@@ -23,13 +23,16 @@ export interface ObjectNodeSchema<
|
|
|
23
23
|
T extends
|
|
24
24
|
RestrictiveStringRecord<ImplicitFieldSchema> = RestrictiveStringRecord<ImplicitFieldSchema>,
|
|
25
25
|
ImplicitlyConstructable extends boolean = boolean,
|
|
26
|
+
TCustomMetadata = unknown,
|
|
26
27
|
> extends TreeNodeSchemaClass<
|
|
27
28
|
TName,
|
|
28
29
|
NodeKind.Object,
|
|
29
30
|
TreeObjectNode<T, TName>,
|
|
30
31
|
object & InsertableObjectFromSchemaRecord<T>,
|
|
31
32
|
ImplicitlyConstructable,
|
|
32
|
-
T
|
|
33
|
+
T,
|
|
34
|
+
never,
|
|
35
|
+
TCustomMetadata
|
|
33
36
|
> {
|
|
34
37
|
/**
|
|
35
38
|
* From property keys to the associated schema.
|
|
@@ -190,7 +190,10 @@ export interface FieldProps<TCustomMetadata = unknown> {
|
|
|
190
190
|
|
|
191
191
|
/**
|
|
192
192
|
* Optional metadata to associate with the field.
|
|
193
|
-
*
|
|
193
|
+
*
|
|
194
|
+
* @remarks
|
|
195
|
+
* Note: this metadata is not persisted nor made part of the collaborative state; it is strictly client-local.
|
|
196
|
+
* Different clients in the same collaborative session may see different metadata for the same field.
|
|
194
197
|
*/
|
|
195
198
|
readonly metadata?: FieldSchemaMetadata<TCustomMetadata>;
|
|
196
199
|
}
|
|
@@ -824,3 +827,49 @@ export type NodeBuilderData<T extends TreeNodeSchemaCore<string, NodeKind, boole
|
|
|
824
827
|
*/
|
|
825
828
|
// eslint-disable-next-line @rushstack/no-new-null
|
|
826
829
|
export type TreeLeafValue = number | string | boolean | IFluidHandle | null;
|
|
830
|
+
|
|
831
|
+
/**
|
|
832
|
+
* Additional information to provide to Node Schema creation.
|
|
833
|
+
*
|
|
834
|
+
* @typeParam TCustomMetadata - Custom metadata properties to associate with the Node Schema.
|
|
835
|
+
* See {@link NodeSchemaMetadata.custom}.
|
|
836
|
+
*
|
|
837
|
+
* @sealed
|
|
838
|
+
* @public
|
|
839
|
+
*/
|
|
840
|
+
export interface NodeSchemaOptions<out TCustomMetadata = unknown> {
|
|
841
|
+
/**
|
|
842
|
+
* Optional metadata to associate with the Node Schema.
|
|
843
|
+
*
|
|
844
|
+
* @remarks
|
|
845
|
+
* Note: this metadata is not persisted nor made part of the collaborative state; it is strictly client-local.
|
|
846
|
+
* Different clients in the same collaborative session may see different metadata for the same field.
|
|
847
|
+
*/
|
|
848
|
+
readonly metadata?: NodeSchemaMetadata<TCustomMetadata> | undefined;
|
|
849
|
+
}
|
|
850
|
+
|
|
851
|
+
/**
|
|
852
|
+
* Metadata associated with a Node Schema.
|
|
853
|
+
*
|
|
854
|
+
* @remarks Specified via {@link NodeSchemaOptions.metadata}.
|
|
855
|
+
*
|
|
856
|
+
* @sealed
|
|
857
|
+
* @public
|
|
858
|
+
*/
|
|
859
|
+
export interface NodeSchemaMetadata<out TCustomMetadata = unknown> {
|
|
860
|
+
/**
|
|
861
|
+
* User-defined metadata.
|
|
862
|
+
*/
|
|
863
|
+
readonly custom?: TCustomMetadata | undefined;
|
|
864
|
+
|
|
865
|
+
/**
|
|
866
|
+
* The description of the Node Schema.
|
|
867
|
+
*
|
|
868
|
+
* @remarks
|
|
869
|
+
*
|
|
870
|
+
* If provided, will be used by the system in scenarios where a description of the kind of node is useful.
|
|
871
|
+
* E.g., when converting a Node Schema to {@link https://json-schema.org/ | JSON Schema}, this description will be
|
|
872
|
+
* used as the `description` property.
|
|
873
|
+
*/
|
|
874
|
+
readonly description?: string | undefined;
|
|
875
|
+
}
|
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
/*!
|
|
2
|
+
* Copyright (c) Microsoft Corporation and contributors. All rights reserved.
|
|
3
|
+
* Licensed under the MIT License.
|
|
4
|
+
*/
|
|
5
|
+
|
|
6
|
+
import { BTree } from "@tylerbu/sorted-btree-es6";
|
|
7
|
+
import { brand, type Brand } from "./brand.js";
|
|
8
|
+
|
|
9
|
+
export type TupleBTree<K, V> = Brand<BTree<K, V>, "TupleBTree">;
|
|
10
|
+
|
|
11
|
+
export function newTupleBTree<K extends readonly unknown[], V>(
|
|
12
|
+
entries?: [K, V][],
|
|
13
|
+
): TupleBTree<K, V> {
|
|
14
|
+
return brand(new BTree<K, V>(entries, compareTuples));
|
|
15
|
+
}
|
|
16
|
+
|
|
17
|
+
// This assumes that the arrays are the same length.
|
|
18
|
+
function compareTuples(arrayA: readonly unknown[], arrayB: readonly unknown[]): number {
|
|
19
|
+
for (let i = 0; i < arrayA.length; i++) {
|
|
20
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
21
|
+
const a = arrayA[i] as any;
|
|
22
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
23
|
+
const b = arrayB[i] as any;
|
|
24
|
+
|
|
25
|
+
// Less-than and greater-than always return false if either value is undefined,
|
|
26
|
+
// so we handle undefined separately, treating it as less than all other values.
|
|
27
|
+
if (a === undefined && b !== undefined) {
|
|
28
|
+
return -1;
|
|
29
|
+
} else if (b === undefined && a !== undefined) {
|
|
30
|
+
return 1;
|
|
31
|
+
} else if (a < b) {
|
|
32
|
+
return -1;
|
|
33
|
+
} else if (a > b) {
|
|
34
|
+
return 1;
|
|
35
|
+
}
|
|
36
|
+
}
|
|
37
|
+
|
|
38
|
+
return 0;
|
|
39
|
+
}
|
|
40
|
+
|
|
41
|
+
export function mergeTupleBTrees<K extends readonly unknown[], V>(
|
|
42
|
+
tree1: TupleBTree<K, V> | undefined,
|
|
43
|
+
tree2: TupleBTree<K, V> | undefined,
|
|
44
|
+
preferLeft = true,
|
|
45
|
+
): TupleBTree<K, V> {
|
|
46
|
+
if (tree1 === undefined) {
|
|
47
|
+
return tree2 !== undefined ? brand(tree2.clone()) : newTupleBTree<K, V>();
|
|
48
|
+
}
|
|
49
|
+
|
|
50
|
+
const result: TupleBTree<K, V> = brand(tree1.clone());
|
|
51
|
+
if (tree2 === undefined) {
|
|
52
|
+
return result;
|
|
53
|
+
}
|
|
54
|
+
|
|
55
|
+
for (const [key, value] of tree2.entries()) {
|
|
56
|
+
result.set(key, value, !preferLeft);
|
|
57
|
+
}
|
|
58
|
+
|
|
59
|
+
return result;
|
|
60
|
+
}
|
package/src/util/idAllocator.ts
CHANGED
package/src/util/index.ts
CHANGED
|
@@ -94,6 +94,7 @@ export {
|
|
|
94
94
|
hasSome,
|
|
95
95
|
hasSingle,
|
|
96
96
|
defineLazyCachedProperty,
|
|
97
|
+
copyPropertyIfDefined as copyProperty,
|
|
97
98
|
} from "./utils.js";
|
|
98
99
|
export { ReferenceCountedBase, type ReferenceCounted } from "./referenceCounting.js";
|
|
99
100
|
|
|
@@ -120,13 +121,9 @@ export {
|
|
|
120
121
|
} from "./brandedMap.js";
|
|
121
122
|
|
|
122
123
|
export {
|
|
123
|
-
|
|
124
|
-
getFromRangeMap,
|
|
125
|
-
type RangeEntry,
|
|
126
|
-
type RangeMap,
|
|
124
|
+
RangeMap,
|
|
127
125
|
type RangeQueryResult,
|
|
128
|
-
|
|
129
|
-
deleteFromRangeMap,
|
|
126
|
+
newIntegerRangeMap,
|
|
130
127
|
} from "./rangeMap.js";
|
|
131
128
|
|
|
132
129
|
export {
|
|
@@ -144,3 +141,5 @@ export {
|
|
|
144
141
|
throwIfBroken,
|
|
145
142
|
breakingClass,
|
|
146
143
|
} from "./breakable.js";
|
|
144
|
+
|
|
145
|
+
export { type TupleBTree, newTupleBTree, mergeTupleBTrees } from "./bTreeUtils.js";
|