@fluidframework/tree 2.81.0 → 2.82.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 +125 -0
- package/api-report/tree.alpha.api.md +54 -22
- package/api-report/tree.beta.api.md +150 -1
- package/api-report/tree.legacy.beta.api.md +150 -1
- package/api-report/tree.legacy.public.api.md +1 -0
- package/api-report/tree.public.api.md +1 -0
- package/dist/alpha.d.ts +8 -2
- package/dist/beta.d.ts +3 -0
- package/dist/codec/codec.d.ts +17 -8
- package/dist/codec/codec.d.ts.map +1 -1
- package/dist/codec/codec.js +8 -1
- package/dist/codec/codec.js.map +1 -1
- package/dist/codec/index.d.ts +1 -1
- package/dist/codec/index.d.ts.map +1 -1
- package/dist/codec/index.js +2 -1
- package/dist/codec/index.js.map +1 -1
- package/dist/codec/versioned/codec.d.ts +1 -1
- package/dist/codec/versioned/codec.d.ts.map +1 -1
- package/dist/codec/versioned/codec.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 +4 -2
- package/dist/core/index.js.map +1 -1
- package/dist/core/rebase/changeRebaser.d.ts +3 -2
- package/dist/core/rebase/changeRebaser.d.ts.map +1 -1
- package/dist/core/rebase/changeRebaser.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 +4 -2
- package/dist/core/rebase/index.js.map +1 -1
- package/dist/core/rebase/types.d.ts +23 -3
- package/dist/core/rebase/types.d.ts.map +1 -1
- package/dist/core/rebase/types.js +30 -16
- package/dist/core/rebase/types.js.map +1 -1
- package/dist/core/schema-stored/formatV1.d.ts +2 -2
- package/dist/core/schema-stored/formatV1.d.ts.map +1 -1
- package/dist/core/schema-stored/formatV1.js +0 -5
- package/dist/core/schema-stored/formatV1.js.map +1 -1
- package/dist/core/schema-stored/formatV2.d.ts +11 -10
- package/dist/core/schema-stored/formatV2.d.ts.map +1 -1
- package/dist/core/schema-stored/formatV2.js +1 -6
- package/dist/core/schema-stored/formatV2.js.map +1 -1
- package/dist/core/schema-stored/index.d.ts.map +1 -1
- package/dist/core/schema-stored/index.js.map +1 -1
- package/dist/core/schema-stored/schema.d.ts.map +1 -1
- package/dist/core/schema-stored/schema.js.map +1 -1
- package/dist/core/tree/anchorSet.d.ts.map +1 -1
- package/dist/core/tree/anchorSet.js.map +1 -1
- package/dist/core/tree/delta.d.ts +9 -7
- package/dist/core/tree/delta.d.ts.map +1 -1
- package/dist/core/tree/delta.js.map +1 -1
- package/dist/core/tree/deltaUtil.js +1 -1
- package/dist/core/tree/deltaUtil.js.map +1 -1
- package/dist/core/tree/visitDelta.js +2 -2
- package/dist/core/tree/visitDelta.js.map +1 -1
- package/dist/extensibleSchemaUnion.d.ts +72 -0
- package/dist/extensibleSchemaUnion.d.ts.map +1 -0
- package/dist/extensibleSchemaUnion.js +79 -0
- package/dist/extensibleSchemaUnion.js.map +1 -0
- package/dist/feature-libraries/changeAtomIdBTree.d.ts +4 -2
- package/dist/feature-libraries/changeAtomIdBTree.d.ts.map +1 -1
- package/dist/feature-libraries/changeAtomIdBTree.js +9 -1
- package/dist/feature-libraries/changeAtomIdBTree.js.map +1 -1
- package/dist/feature-libraries/default-schema/defaultFieldKinds.d.ts +1 -3
- package/dist/feature-libraries/default-schema/defaultFieldKinds.d.ts.map +1 -1
- package/dist/feature-libraries/default-schema/defaultFieldKinds.js +20 -21
- package/dist/feature-libraries/default-schema/defaultFieldKinds.js.map +1 -1
- package/dist/feature-libraries/default-schema/index.d.ts +1 -1
- package/dist/feature-libraries/default-schema/index.d.ts.map +1 -1
- package/dist/feature-libraries/default-schema/index.js.map +1 -1
- package/dist/feature-libraries/forest-summary/codec.d.ts +2 -1
- package/dist/feature-libraries/forest-summary/codec.d.ts.map +1 -1
- package/dist/feature-libraries/forest-summary/codec.js.map +1 -1
- package/dist/feature-libraries/forest-summary/forestSummarizer.d.ts.map +1 -1
- package/dist/feature-libraries/forest-summary/forestSummarizer.js +5 -2
- package/dist/feature-libraries/forest-summary/forestSummarizer.js.map +1 -1
- package/dist/feature-libraries/forest-summary/formatCommon.d.ts +1 -39
- package/dist/feature-libraries/forest-summary/formatCommon.d.ts.map +1 -1
- package/dist/feature-libraries/forest-summary/formatCommon.js +1 -2
- package/dist/feature-libraries/forest-summary/formatCommon.js.map +1 -1
- package/dist/feature-libraries/forest-summary/formatV1.d.ts +1 -39
- package/dist/feature-libraries/forest-summary/formatV1.d.ts.map +1 -1
- package/dist/feature-libraries/forest-summary/formatV2.d.ts +1 -39
- package/dist/feature-libraries/forest-summary/formatV2.d.ts.map +1 -1
- package/dist/feature-libraries/forest-summary/incrementalSummaryBuilder.d.ts +1 -1
- package/dist/feature-libraries/forest-summary/incrementalSummaryBuilder.d.ts.map +1 -1
- package/dist/feature-libraries/forest-summary/incrementalSummaryBuilder.js +1 -1
- package/dist/feature-libraries/forest-summary/incrementalSummaryBuilder.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 +4 -3
- package/dist/feature-libraries/index.js.map +1 -1
- package/dist/feature-libraries/modular-schema/defaultRevisionReplacer.d.ts +2 -2
- package/dist/feature-libraries/modular-schema/defaultRevisionReplacer.d.ts.map +1 -1
- package/dist/feature-libraries/modular-schema/defaultRevisionReplacer.js +42 -22
- package/dist/feature-libraries/modular-schema/defaultRevisionReplacer.js.map +1 -1
- package/dist/feature-libraries/modular-schema/genericFieldKind.js +1 -1
- package/dist/feature-libraries/modular-schema/genericFieldKind.js.map +1 -1
- package/dist/feature-libraries/modular-schema/index.d.ts +1 -1
- package/dist/feature-libraries/modular-schema/index.d.ts.map +1 -1
- package/dist/feature-libraries/modular-schema/index.js +2 -1
- package/dist/feature-libraries/modular-schema/index.js.map +1 -1
- package/dist/feature-libraries/modular-schema/modularChangeCodecV1.d.ts +1 -1
- package/dist/feature-libraries/modular-schema/modularChangeCodecV1.d.ts.map +1 -1
- package/dist/feature-libraries/modular-schema/modularChangeCodecV1.js +9 -5
- package/dist/feature-libraries/modular-schema/modularChangeCodecV1.js.map +1 -1
- package/dist/feature-libraries/modular-schema/modularChangeCodecs.d.ts +11 -1
- package/dist/feature-libraries/modular-schema/modularChangeCodecs.d.ts.map +1 -1
- package/dist/feature-libraries/modular-schema/modularChangeCodecs.js +30 -7
- package/dist/feature-libraries/modular-schema/modularChangeCodecs.js.map +1 -1
- package/dist/feature-libraries/modular-schema/modularChangeFamily.d.ts.map +1 -1
- package/dist/feature-libraries/modular-schema/modularChangeFamily.js +38 -27
- package/dist/feature-libraries/modular-schema/modularChangeFamily.js.map +1 -1
- package/dist/feature-libraries/modular-schema/modularChangeFormatV1.d.ts +10 -127
- package/dist/feature-libraries/modular-schema/modularChangeFormatV1.d.ts.map +1 -1
- package/dist/feature-libraries/modular-schema/modularChangeFormatV1.js +2 -4
- package/dist/feature-libraries/modular-schema/modularChangeFormatV1.js.map +1 -1
- package/dist/feature-libraries/modular-schema/modularChangeFormatV2.d.ts +3 -79
- package/dist/feature-libraries/modular-schema/modularChangeFormatV2.d.ts.map +1 -1
- package/dist/feature-libraries/optional-field/optionalField.js +1 -1
- package/dist/feature-libraries/optional-field/optionalField.js.map +1 -1
- package/dist/feature-libraries/optional-field/requiredField.d.ts.map +1 -1
- package/dist/feature-libraries/optional-field/requiredField.js.map +1 -1
- package/dist/feature-libraries/schema-edits/schemaChangeFormat.d.ts +2 -2
- package/dist/feature-libraries/schema-index/codec.js.map +1 -1
- package/dist/feature-libraries/schema-index/formatV2.d.ts +4 -4
- package/dist/feature-libraries/schema-index/schemaSummarizer.js +1 -1
- package/dist/feature-libraries/schema-index/schemaSummarizer.js.map +1 -1
- package/dist/feature-libraries/sequence-field/invert.js +2 -2
- package/dist/feature-libraries/sequence-field/invert.js.map +1 -1
- package/dist/feature-libraries/sequence-field/replaceRevisions.js +16 -16
- package/dist/feature-libraries/sequence-field/replaceRevisions.js.map +1 -1
- package/dist/feature-libraries/sequence-field/sequenceFieldToDelta.js +1 -1
- package/dist/feature-libraries/sequence-field/sequenceFieldToDelta.js.map +1 -1
- package/dist/index.d.ts +5 -5
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +4 -1
- package/dist/index.js.map +1 -1
- package/dist/legacy.d.ts +3 -0
- package/dist/packageVersion.d.ts +1 -1
- package/dist/packageVersion.js +1 -1
- package/dist/packageVersion.js.map +1 -1
- package/dist/shared-tree/independentView.d.ts +36 -13
- package/dist/shared-tree/independentView.d.ts.map +1 -1
- package/dist/shared-tree/independentView.js +1 -0
- package/dist/shared-tree/independentView.js.map +1 -1
- package/dist/shared-tree/index.d.ts +1 -1
- package/dist/shared-tree/index.d.ts.map +1 -1
- package/dist/shared-tree/index.js.map +1 -1
- package/dist/shared-tree/schematizingTreeView.d.ts +10 -0
- package/dist/shared-tree/schematizingTreeView.d.ts.map +1 -1
- package/dist/shared-tree/schematizingTreeView.js +25 -9
- package/dist/shared-tree/schematizingTreeView.js.map +1 -1
- package/dist/shared-tree/sharedTree.d.ts +3 -3
- package/dist/shared-tree/sharedTree.d.ts.map +1 -1
- package/dist/shared-tree/sharedTree.js +8 -32
- package/dist/shared-tree/sharedTree.js.map +1 -1
- package/dist/shared-tree/sharedTreeChangeCodecs.d.ts +11 -3
- package/dist/shared-tree/sharedTreeChangeCodecs.d.ts.map +1 -1
- package/dist/shared-tree/sharedTreeChangeCodecs.js +38 -4
- package/dist/shared-tree/sharedTreeChangeCodecs.js.map +1 -1
- package/dist/shared-tree/sharedTreeChangeFormat.d.ts +4 -4
- package/dist/shared-tree/tree.js +1 -1
- package/dist/shared-tree/tree.js.map +1 -1
- package/dist/shared-tree/treeCheckout.d.ts +20 -0
- package/dist/shared-tree/treeCheckout.d.ts.map +1 -1
- package/dist/shared-tree/treeCheckout.js +39 -3
- package/dist/shared-tree/treeCheckout.js.map +1 -1
- package/dist/shared-tree-core/editManagerSummarizer.js +1 -1
- package/dist/shared-tree-core/editManagerSummarizer.js.map +1 -1
- package/dist/shared-tree-core/messageCodecV1ToV4.d.ts.map +1 -1
- package/dist/shared-tree-core/messageCodecV1ToV4.js +2 -2
- package/dist/shared-tree-core/messageCodecV1ToV4.js.map +1 -1
- package/dist/shared-tree-core/transaction.d.ts +14 -3
- package/dist/shared-tree-core/transaction.d.ts.map +1 -1
- package/dist/shared-tree-core/transaction.js +59 -16
- package/dist/shared-tree-core/transaction.js.map +1 -1
- package/dist/shared-tree-core/versionedSummarizer.d.ts.map +1 -1
- package/dist/shared-tree-core/versionedSummarizer.js +1 -1
- package/dist/shared-tree-core/versionedSummarizer.js.map +1 -1
- package/dist/simple-tree/api/index.d.ts +1 -1
- package/dist/simple-tree/api/index.d.ts.map +1 -1
- package/dist/simple-tree/api/index.js +3 -2
- package/dist/simple-tree/api/index.js.map +1 -1
- package/dist/simple-tree/api/schemaCreationUtilities.d.ts +9 -0
- package/dist/simple-tree/api/schemaCreationUtilities.d.ts.map +1 -1
- package/dist/simple-tree/api/schemaCreationUtilities.js +16 -1
- package/dist/simple-tree/api/schemaCreationUtilities.js.map +1 -1
- package/dist/simple-tree/api/simpleTreeIndex.js.map +1 -1
- package/dist/simple-tree/api/transactionTypes.d.ts +10 -0
- package/dist/simple-tree/api/transactionTypes.d.ts.map +1 -1
- package/dist/simple-tree/api/transactionTypes.js.map +1 -1
- package/dist/simple-tree/api/tree.d.ts +81 -6
- 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/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 +4 -2
- package/dist/simple-tree/index.js.map +1 -1
- package/dist/simple-tree/leafNodeSchema.d.ts.map +1 -1
- package/dist/simple-tree/leafNodeSchema.js.map +1 -1
- package/dist/simple-tree/node-kinds/array/arrayNode.d.ts +63 -0
- package/dist/simple-tree/node-kinds/array/arrayNode.d.ts.map +1 -1
- package/dist/simple-tree/node-kinds/array/arrayNode.js +43 -1
- package/dist/simple-tree/node-kinds/array/arrayNode.js.map +1 -1
- package/dist/simple-tree/node-kinds/array/index.d.ts +1 -1
- package/dist/simple-tree/node-kinds/array/index.d.ts.map +1 -1
- package/dist/simple-tree/node-kinds/array/index.js +2 -1
- package/dist/simple-tree/node-kinds/array/index.js.map +1 -1
- package/dist/simple-tree/node-kinds/index.d.ts +1 -1
- package/dist/simple-tree/node-kinds/index.d.ts.map +1 -1
- package/dist/simple-tree/node-kinds/index.js +2 -1
- package/dist/simple-tree/node-kinds/index.js.map +1 -1
- package/dist/simple-tree/node-kinds/object/objectNode.d.ts.map +1 -1
- package/dist/simple-tree/node-kinds/object/objectNode.js.map +1 -1
- package/dist/tableSchema.d.ts +71 -48
- package/dist/tableSchema.d.ts.map +1 -1
- package/dist/tableSchema.js +200 -98
- package/dist/tableSchema.js.map +1 -1
- package/dist/text/textDomainFormatted.js +1 -1
- package/dist/text/textDomainFormatted.js.map +1 -1
- package/dist/util/bTreeUtils.d.ts +30 -4
- package/dist/util/bTreeUtils.d.ts.map +1 -1
- package/dist/util/bTreeUtils.js +29 -17
- package/dist/util/bTreeUtils.js.map +1 -1
- package/dist/util/brand.d.ts.map +1 -1
- package/dist/util/brand.js.map +1 -1
- package/dist/util/brandedMap.d.ts.map +1 -1
- package/dist/util/brandedMap.js.map +1 -1
- package/dist/util/breakable.d.ts.map +1 -1
- package/dist/util/breakable.js +2 -1
- package/dist/util/breakable.js.map +1 -1
- package/dist/util/index.d.ts +2 -2
- package/dist/util/index.d.ts.map +1 -1
- package/dist/util/index.js +6 -3
- package/dist/util/index.js.map +1 -1
- package/dist/util/opaque.d.ts.map +1 -1
- package/dist/util/opaque.js.map +1 -1
- package/dist/util/rangeMap.d.ts +3 -2
- package/dist/util/rangeMap.d.ts.map +1 -1
- package/dist/util/rangeMap.js +7 -1
- package/dist/util/rangeMap.js.map +1 -1
- package/dist/util/readSnapshotBlob.d.ts +1 -1
- package/dist/util/readSnapshotBlob.d.ts.map +1 -1
- package/dist/util/readSnapshotBlob.js.map +1 -1
- package/dist/util/typeCheck.d.ts.map +1 -1
- package/dist/util/typeCheck.js.map +1 -1
- package/dist/util/utils.d.ts +20 -16
- package/dist/util/utils.d.ts.map +1 -1
- package/dist/util/utils.js +49 -17
- package/dist/util/utils.js.map +1 -1
- package/eslint.config.mts +0 -9
- package/lib/alpha.d.ts +8 -2
- package/lib/beta.d.ts +3 -0
- package/lib/codec/codec.d.ts +17 -8
- package/lib/codec/codec.d.ts.map +1 -1
- package/lib/codec/codec.js +6 -0
- package/lib/codec/codec.js.map +1 -1
- package/lib/codec/index.d.ts +1 -1
- package/lib/codec/index.d.ts.map +1 -1
- package/lib/codec/index.js +1 -1
- package/lib/codec/index.js.map +1 -1
- package/lib/codec/versioned/codec.d.ts +1 -1
- package/lib/codec/versioned/codec.d.ts.map +1 -1
- package/lib/codec/versioned/codec.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/changeRebaser.d.ts +3 -2
- package/lib/core/rebase/changeRebaser.d.ts.map +1 -1
- package/lib/core/rebase/changeRebaser.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 +23 -3
- package/lib/core/rebase/types.d.ts.map +1 -1
- package/lib/core/rebase/types.js +27 -15
- package/lib/core/rebase/types.js.map +1 -1
- package/lib/core/schema-stored/formatV1.d.ts +2 -2
- package/lib/core/schema-stored/formatV1.d.ts.map +1 -1
- package/lib/core/schema-stored/formatV1.js +0 -5
- package/lib/core/schema-stored/formatV1.js.map +1 -1
- package/lib/core/schema-stored/formatV2.d.ts +11 -10
- package/lib/core/schema-stored/formatV2.d.ts.map +1 -1
- package/lib/core/schema-stored/formatV2.js +1 -6
- package/lib/core/schema-stored/formatV2.js.map +1 -1
- package/lib/core/schema-stored/index.d.ts.map +1 -1
- package/lib/core/schema-stored/index.js +2 -0
- package/lib/core/schema-stored/index.js.map +1 -1
- package/lib/core/schema-stored/schema.d.ts.map +1 -1
- package/lib/core/schema-stored/schema.js.map +1 -1
- package/lib/core/tree/anchorSet.d.ts.map +1 -1
- package/lib/core/tree/anchorSet.js.map +1 -1
- package/lib/core/tree/delta.d.ts +9 -7
- package/lib/core/tree/delta.d.ts.map +1 -1
- package/lib/core/tree/delta.js.map +1 -1
- package/lib/core/tree/deltaUtil.js +1 -1
- package/lib/core/tree/deltaUtil.js.map +1 -1
- package/lib/core/tree/visitDelta.js +2 -2
- package/lib/core/tree/visitDelta.js.map +1 -1
- package/lib/extensibleSchemaUnion.d.ts +72 -0
- package/lib/extensibleSchemaUnion.d.ts.map +1 -0
- package/lib/extensibleSchemaUnion.js +76 -0
- package/lib/extensibleSchemaUnion.js.map +1 -0
- package/lib/feature-libraries/changeAtomIdBTree.d.ts +4 -2
- package/lib/feature-libraries/changeAtomIdBTree.d.ts.map +1 -1
- package/lib/feature-libraries/changeAtomIdBTree.js +7 -0
- package/lib/feature-libraries/changeAtomIdBTree.js.map +1 -1
- package/lib/feature-libraries/default-schema/defaultFieldKinds.d.ts +1 -3
- package/lib/feature-libraries/default-schema/defaultFieldKinds.d.ts.map +1 -1
- package/lib/feature-libraries/default-schema/defaultFieldKinds.js +4 -5
- package/lib/feature-libraries/default-schema/defaultFieldKinds.js.map +1 -1
- package/lib/feature-libraries/default-schema/index.d.ts +1 -1
- package/lib/feature-libraries/default-schema/index.d.ts.map +1 -1
- package/lib/feature-libraries/default-schema/index.js.map +1 -1
- package/lib/feature-libraries/forest-summary/codec.d.ts +2 -1
- package/lib/feature-libraries/forest-summary/codec.d.ts.map +1 -1
- package/lib/feature-libraries/forest-summary/codec.js.map +1 -1
- package/lib/feature-libraries/forest-summary/forestSummarizer.d.ts.map +1 -1
- package/lib/feature-libraries/forest-summary/forestSummarizer.js +6 -3
- package/lib/feature-libraries/forest-summary/forestSummarizer.js.map +1 -1
- package/lib/feature-libraries/forest-summary/formatCommon.d.ts +1 -39
- package/lib/feature-libraries/forest-summary/formatCommon.d.ts.map +1 -1
- package/lib/feature-libraries/forest-summary/formatCommon.js +2 -3
- package/lib/feature-libraries/forest-summary/formatCommon.js.map +1 -1
- package/lib/feature-libraries/forest-summary/formatV1.d.ts +1 -39
- package/lib/feature-libraries/forest-summary/formatV1.d.ts.map +1 -1
- package/lib/feature-libraries/forest-summary/formatV2.d.ts +1 -39
- package/lib/feature-libraries/forest-summary/formatV2.d.ts.map +1 -1
- package/lib/feature-libraries/forest-summary/incrementalSummaryBuilder.d.ts +1 -1
- package/lib/feature-libraries/forest-summary/incrementalSummaryBuilder.d.ts.map +1 -1
- package/lib/feature-libraries/forest-summary/incrementalSummaryBuilder.js +1 -1
- package/lib/feature-libraries/forest-summary/incrementalSummaryBuilder.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/defaultRevisionReplacer.d.ts +2 -2
- package/lib/feature-libraries/modular-schema/defaultRevisionReplacer.d.ts.map +1 -1
- package/lib/feature-libraries/modular-schema/defaultRevisionReplacer.js +41 -21
- package/lib/feature-libraries/modular-schema/defaultRevisionReplacer.js.map +1 -1
- package/lib/feature-libraries/modular-schema/genericFieldKind.js +1 -1
- package/lib/feature-libraries/modular-schema/genericFieldKind.js.map +1 -1
- package/lib/feature-libraries/modular-schema/index.d.ts +1 -1
- package/lib/feature-libraries/modular-schema/index.d.ts.map +1 -1
- package/lib/feature-libraries/modular-schema/index.js +1 -1
- package/lib/feature-libraries/modular-schema/index.js.map +1 -1
- package/lib/feature-libraries/modular-schema/modularChangeCodecV1.d.ts +1 -1
- package/lib/feature-libraries/modular-schema/modularChangeCodecV1.d.ts.map +1 -1
- package/lib/feature-libraries/modular-schema/modularChangeCodecV1.js +10 -6
- package/lib/feature-libraries/modular-schema/modularChangeCodecV1.js.map +1 -1
- package/lib/feature-libraries/modular-schema/modularChangeCodecs.d.ts +11 -1
- package/lib/feature-libraries/modular-schema/modularChangeCodecs.d.ts.map +1 -1
- package/lib/feature-libraries/modular-schema/modularChangeCodecs.js +29 -6
- package/lib/feature-libraries/modular-schema/modularChangeCodecs.js.map +1 -1
- package/lib/feature-libraries/modular-schema/modularChangeFamily.d.ts.map +1 -1
- package/lib/feature-libraries/modular-schema/modularChangeFamily.js +41 -30
- package/lib/feature-libraries/modular-schema/modularChangeFamily.js.map +1 -1
- package/lib/feature-libraries/modular-schema/modularChangeFormatV1.d.ts +10 -127
- package/lib/feature-libraries/modular-schema/modularChangeFormatV1.d.ts.map +1 -1
- package/lib/feature-libraries/modular-schema/modularChangeFormatV1.js +2 -4
- package/lib/feature-libraries/modular-schema/modularChangeFormatV1.js.map +1 -1
- package/lib/feature-libraries/modular-schema/modularChangeFormatV2.d.ts +3 -79
- package/lib/feature-libraries/modular-schema/modularChangeFormatV2.d.ts.map +1 -1
- package/lib/feature-libraries/optional-field/optionalField.js +1 -1
- package/lib/feature-libraries/optional-field/optionalField.js.map +1 -1
- package/lib/feature-libraries/optional-field/requiredField.d.ts.map +1 -1
- package/lib/feature-libraries/optional-field/requiredField.js.map +1 -1
- package/lib/feature-libraries/schema-edits/schemaChangeFormat.d.ts +2 -2
- package/lib/feature-libraries/schema-index/codec.js.map +1 -1
- package/lib/feature-libraries/schema-index/formatV2.d.ts +4 -4
- package/lib/feature-libraries/schema-index/schemaSummarizer.js +1 -1
- package/lib/feature-libraries/schema-index/schemaSummarizer.js.map +1 -1
- package/lib/feature-libraries/sequence-field/invert.js +2 -2
- package/lib/feature-libraries/sequence-field/invert.js.map +1 -1
- package/lib/feature-libraries/sequence-field/replaceRevisions.js +16 -16
- package/lib/feature-libraries/sequence-field/replaceRevisions.js.map +1 -1
- package/lib/feature-libraries/sequence-field/sequenceFieldToDelta.js +1 -1
- package/lib/feature-libraries/sequence-field/sequenceFieldToDelta.js.map +1 -1
- package/lib/index.d.ts +5 -5
- package/lib/index.d.ts.map +1 -1
- package/lib/index.js +4 -3
- package/lib/index.js.map +1 -1
- package/lib/legacy.d.ts +3 -0
- package/lib/packageVersion.d.ts +1 -1
- package/lib/packageVersion.js +1 -1
- package/lib/packageVersion.js.map +1 -1
- package/lib/shared-tree/independentView.d.ts +36 -13
- package/lib/shared-tree/independentView.d.ts.map +1 -1
- package/lib/shared-tree/independentView.js +1 -0
- package/lib/shared-tree/independentView.js.map +1 -1
- package/lib/shared-tree/index.d.ts +1 -1
- package/lib/shared-tree/index.d.ts.map +1 -1
- package/lib/shared-tree/index.js.map +1 -1
- package/lib/shared-tree/schematizingTreeView.d.ts +10 -0
- package/lib/shared-tree/schematizingTreeView.d.ts.map +1 -1
- package/lib/shared-tree/schematizingTreeView.js +25 -9
- package/lib/shared-tree/schematizingTreeView.js.map +1 -1
- package/lib/shared-tree/sharedTree.d.ts +3 -3
- package/lib/shared-tree/sharedTree.d.ts.map +1 -1
- package/lib/shared-tree/sharedTree.js +10 -34
- package/lib/shared-tree/sharedTree.js.map +1 -1
- package/lib/shared-tree/sharedTreeChangeCodecs.d.ts +11 -3
- package/lib/shared-tree/sharedTreeChangeCodecs.d.ts.map +1 -1
- package/lib/shared-tree/sharedTreeChangeCodecs.js +39 -5
- package/lib/shared-tree/sharedTreeChangeCodecs.js.map +1 -1
- package/lib/shared-tree/sharedTreeChangeFormat.d.ts +4 -4
- package/lib/shared-tree/tree.js +1 -1
- package/lib/shared-tree/tree.js.map +1 -1
- package/lib/shared-tree/treeCheckout.d.ts +20 -0
- package/lib/shared-tree/treeCheckout.d.ts.map +1 -1
- package/lib/shared-tree/treeCheckout.js +39 -3
- package/lib/shared-tree/treeCheckout.js.map +1 -1
- package/lib/shared-tree-core/editManagerSummarizer.js +1 -1
- package/lib/shared-tree-core/editManagerSummarizer.js.map +1 -1
- package/lib/shared-tree-core/messageCodecV1ToV4.d.ts.map +1 -1
- package/lib/shared-tree-core/messageCodecV1ToV4.js +2 -2
- package/lib/shared-tree-core/messageCodecV1ToV4.js.map +1 -1
- package/lib/shared-tree-core/transaction.d.ts +14 -3
- package/lib/shared-tree-core/transaction.d.ts.map +1 -1
- package/lib/shared-tree-core/transaction.js +61 -18
- package/lib/shared-tree-core/transaction.js.map +1 -1
- package/lib/shared-tree-core/versionedSummarizer.d.ts.map +1 -1
- package/lib/shared-tree-core/versionedSummarizer.js +1 -1
- package/lib/shared-tree-core/versionedSummarizer.js.map +1 -1
- package/lib/simple-tree/api/index.d.ts +1 -1
- package/lib/simple-tree/api/index.d.ts.map +1 -1
- package/lib/simple-tree/api/index.js +1 -1
- package/lib/simple-tree/api/index.js.map +1 -1
- package/lib/simple-tree/api/schemaCreationUtilities.d.ts +9 -0
- package/lib/simple-tree/api/schemaCreationUtilities.d.ts.map +1 -1
- package/lib/simple-tree/api/schemaCreationUtilities.js +14 -0
- package/lib/simple-tree/api/schemaCreationUtilities.js.map +1 -1
- package/lib/simple-tree/api/simpleTreeIndex.js.map +1 -1
- package/lib/simple-tree/api/transactionTypes.d.ts +10 -0
- package/lib/simple-tree/api/transactionTypes.d.ts.map +1 -1
- package/lib/simple-tree/api/transactionTypes.js.map +1 -1
- package/lib/simple-tree/api/tree.d.ts +81 -6
- 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/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 +2 -2
- package/lib/simple-tree/index.js.map +1 -1
- package/lib/simple-tree/leafNodeSchema.d.ts.map +1 -1
- package/lib/simple-tree/leafNodeSchema.js.map +1 -1
- package/lib/simple-tree/node-kinds/array/arrayNode.d.ts +63 -0
- package/lib/simple-tree/node-kinds/array/arrayNode.d.ts.map +1 -1
- package/lib/simple-tree/node-kinds/array/arrayNode.js +41 -0
- package/lib/simple-tree/node-kinds/array/arrayNode.js.map +1 -1
- package/lib/simple-tree/node-kinds/array/index.d.ts +1 -1
- package/lib/simple-tree/node-kinds/array/index.d.ts.map +1 -1
- package/lib/simple-tree/node-kinds/array/index.js +1 -1
- package/lib/simple-tree/node-kinds/array/index.js.map +1 -1
- package/lib/simple-tree/node-kinds/index.d.ts +1 -1
- package/lib/simple-tree/node-kinds/index.d.ts.map +1 -1
- package/lib/simple-tree/node-kinds/index.js +1 -1
- package/lib/simple-tree/node-kinds/index.js.map +1 -1
- package/lib/simple-tree/node-kinds/object/objectNode.d.ts.map +1 -1
- package/lib/simple-tree/node-kinds/object/objectNode.js.map +1 -1
- package/lib/tableSchema.d.ts +71 -48
- package/lib/tableSchema.d.ts.map +1 -1
- package/lib/tableSchema.js +201 -99
- package/lib/tableSchema.js.map +1 -1
- package/lib/text/textDomainFormatted.js +1 -1
- package/lib/text/textDomainFormatted.js.map +1 -1
- package/lib/util/bTreeUtils.d.ts +30 -4
- package/lib/util/bTreeUtils.d.ts.map +1 -1
- package/lib/util/bTreeUtils.js +27 -16
- package/lib/util/bTreeUtils.js.map +1 -1
- package/lib/util/brand.d.ts.map +1 -1
- package/lib/util/brand.js.map +1 -1
- package/lib/util/brandedMap.d.ts.map +1 -1
- package/lib/util/brandedMap.js.map +1 -1
- package/lib/util/breakable.d.ts.map +1 -1
- package/lib/util/breakable.js +2 -1
- package/lib/util/breakable.js.map +1 -1
- package/lib/util/index.d.ts +2 -2
- package/lib/util/index.d.ts.map +1 -1
- package/lib/util/index.js +2 -2
- package/lib/util/index.js.map +1 -1
- package/lib/util/opaque.d.ts.map +1 -1
- package/lib/util/opaque.js.map +1 -1
- package/lib/util/rangeMap.d.ts +3 -2
- package/lib/util/rangeMap.d.ts.map +1 -1
- package/lib/util/rangeMap.js +7 -1
- package/lib/util/rangeMap.js.map +1 -1
- package/lib/util/readSnapshotBlob.d.ts +1 -1
- package/lib/util/readSnapshotBlob.d.ts.map +1 -1
- package/lib/util/readSnapshotBlob.js.map +1 -1
- package/lib/util/typeCheck.d.ts.map +1 -1
- package/lib/util/typeCheck.js.map +1 -1
- package/lib/util/utils.d.ts +20 -16
- package/lib/util/utils.d.ts.map +1 -1
- package/lib/util/utils.js +44 -15
- package/lib/util/utils.js.map +1 -1
- package/package.json +23 -23
- package/src/codec/codec.ts +30 -11
- package/src/codec/index.ts +2 -0
- package/src/codec/versioned/codec.ts +9 -13
- package/src/core/index.ts +3 -1
- package/src/core/rebase/changeRebaser.ts +3 -2
- package/src/core/rebase/index.ts +3 -1
- package/src/core/rebase/types.ts +51 -13
- package/src/core/schema-stored/formatV1.ts +2 -4
- package/src/core/schema-stored/formatV2.ts +9 -7
- package/src/core/schema-stored/index.ts +2 -0
- package/src/core/schema-stored/schema.ts +4 -1
- package/src/core/tree/anchorSet.ts +1 -3
- package/src/core/tree/delta.ts +9 -7
- package/src/core/tree/deltaUtil.ts +1 -1
- package/src/core/tree/visitDelta.ts +2 -2
- package/src/extensibleSchemaUnion.ts +135 -0
- package/src/feature-libraries/changeAtomIdBTree.ts +17 -2
- package/src/feature-libraries/default-schema/defaultFieldKinds.ts +5 -6
- package/src/feature-libraries/default-schema/index.ts +0 -1
- package/src/feature-libraries/forest-summary/codec.ts +7 -2
- package/src/feature-libraries/forest-summary/forestSummarizer.ts +15 -3
- package/src/feature-libraries/forest-summary/formatCommon.ts +2 -3
- package/src/feature-libraries/forest-summary/incrementalSummaryBuilder.ts +4 -5
- package/src/feature-libraries/index.ts +3 -2
- package/src/feature-libraries/modular-schema/defaultRevisionReplacer.ts +57 -31
- package/src/feature-libraries/modular-schema/genericFieldKind.ts +1 -1
- package/src/feature-libraries/modular-schema/index.ts +4 -1
- package/src/feature-libraries/modular-schema/modularChangeCodecV1.ts +7 -6
- package/src/feature-libraries/modular-schema/modularChangeCodecs.ts +32 -7
- package/src/feature-libraries/modular-schema/modularChangeFamily.ts +54 -33
- package/src/feature-libraries/modular-schema/modularChangeFormatV1.ts +2 -4
- package/src/feature-libraries/optional-field/optionalField.ts +1 -1
- package/src/feature-libraries/optional-field/requiredField.ts +2 -4
- package/src/feature-libraries/schema-index/codec.ts +1 -1
- package/src/feature-libraries/schema-index/schemaSummarizer.ts +1 -1
- package/src/feature-libraries/sequence-field/invert.ts +2 -2
- package/src/feature-libraries/sequence-field/replaceRevisions.ts +17 -10
- package/src/feature-libraries/sequence-field/sequenceFieldToDelta.ts +1 -1
- package/src/index.ts +12 -7
- package/src/packageVersion.ts +1 -1
- package/src/shared-tree/independentView.ts +42 -6
- package/src/shared-tree/index.ts +2 -0
- package/src/shared-tree/schematizingTreeView.ts +63 -18
- package/src/shared-tree/sharedTree.ts +19 -37
- package/src/shared-tree/sharedTreeChangeCodecs.ts +43 -9
- package/src/shared-tree/tree.ts +1 -1
- package/src/shared-tree/treeCheckout.ts +50 -3
- package/src/shared-tree-core/editManagerSummarizer.ts +1 -1
- package/src/shared-tree-core/messageCodecV1ToV4.ts +4 -3
- package/src/shared-tree-core/transaction.ts +125 -23
- package/src/shared-tree-core/versionedSummarizer.ts +3 -2
- package/src/simple-tree/api/index.ts +1 -0
- package/src/simple-tree/api/schemaCreationUtilities.ts +35 -5
- package/src/simple-tree/api/simpleTreeIndex.ts +1 -1
- package/src/simple-tree/api/transactionTypes.ts +10 -0
- package/src/simple-tree/api/tree.ts +88 -6
- package/src/simple-tree/core/treeNodeSchema.ts +5 -8
- package/src/simple-tree/index.ts +3 -0
- package/src/simple-tree/leafNodeSchema.ts +3 -2
- package/src/simple-tree/node-kinds/array/arrayNode.ts +86 -0
- package/src/simple-tree/node-kinds/array/index.ts +2 -0
- package/src/simple-tree/node-kinds/index.ts +2 -0
- package/src/simple-tree/node-kinds/object/objectNode.ts +19 -18
- package/src/tableSchema.ts +280 -140
- package/src/text/textDomainFormatted.ts +1 -1
- package/src/util/bTreeUtils.ts +45 -26
- package/src/util/brand.ts +4 -12
- package/src/util/brandedMap.ts +2 -6
- package/src/util/breakable.ts +3 -2
- package/src/util/index.ts +9 -3
- package/src/util/opaque.ts +2 -6
- package/src/util/rangeMap.ts +11 -5
- package/src/util/readSnapshotBlob.ts +3 -3
- package/src/util/typeCheck.ts +11 -9
- package/src/util/utils.ts +57 -28
- package/biome.jsonc +0 -4
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@fluidframework/tree",
|
|
3
|
-
"version": "2.
|
|
3
|
+
"version": "2.82.0",
|
|
4
4
|
"description": "Distributed tree",
|
|
5
5
|
"homepage": "https://fluidframework.com",
|
|
6
6
|
"repository": {
|
|
@@ -101,17 +101,17 @@
|
|
|
101
101
|
"temp-directory": "nyc/.nyc_output"
|
|
102
102
|
},
|
|
103
103
|
"dependencies": {
|
|
104
|
-
"@fluid-internal/client-utils": "~2.
|
|
105
|
-
"@fluidframework/container-runtime": "~2.
|
|
106
|
-
"@fluidframework/core-interfaces": "~2.
|
|
107
|
-
"@fluidframework/core-utils": "~2.
|
|
108
|
-
"@fluidframework/datastore-definitions": "~2.
|
|
109
|
-
"@fluidframework/driver-definitions": "~2.
|
|
110
|
-
"@fluidframework/id-compressor": "~2.
|
|
111
|
-
"@fluidframework/runtime-definitions": "~2.
|
|
112
|
-
"@fluidframework/runtime-utils": "~2.
|
|
113
|
-
"@fluidframework/shared-object-base": "~2.
|
|
114
|
-
"@fluidframework/telemetry-utils": "~2.
|
|
104
|
+
"@fluid-internal/client-utils": "~2.82.0",
|
|
105
|
+
"@fluidframework/container-runtime": "~2.82.0",
|
|
106
|
+
"@fluidframework/core-interfaces": "~2.82.0",
|
|
107
|
+
"@fluidframework/core-utils": "~2.82.0",
|
|
108
|
+
"@fluidframework/datastore-definitions": "~2.82.0",
|
|
109
|
+
"@fluidframework/driver-definitions": "~2.82.0",
|
|
110
|
+
"@fluidframework/id-compressor": "~2.82.0",
|
|
111
|
+
"@fluidframework/runtime-definitions": "~2.82.0",
|
|
112
|
+
"@fluidframework/runtime-utils": "~2.82.0",
|
|
113
|
+
"@fluidframework/shared-object-base": "~2.82.0",
|
|
114
|
+
"@fluidframework/telemetry-utils": "~2.82.0",
|
|
115
115
|
"@sinclair/typebox": "^0.34.13",
|
|
116
116
|
"@tylerbu/sorted-btree-es6": "^1.8.0",
|
|
117
117
|
"@types/ungap__structured-clone": "^1.2.0",
|
|
@@ -122,25 +122,25 @@
|
|
|
122
122
|
"devDependencies": {
|
|
123
123
|
"@arethetypeswrong/cli": "^0.18.2",
|
|
124
124
|
"@biomejs/biome": "~1.9.3",
|
|
125
|
-
"@fluid-internal/mocha-test-setup": "~2.
|
|
126
|
-
"@fluid-private/stochastic-test-utils": "~2.
|
|
127
|
-
"@fluid-private/test-dds-utils": "~2.
|
|
128
|
-
"@fluid-private/test-drivers": "~2.
|
|
125
|
+
"@fluid-internal/mocha-test-setup": "~2.82.0",
|
|
126
|
+
"@fluid-private/stochastic-test-utils": "~2.82.0",
|
|
127
|
+
"@fluid-private/test-dds-utils": "~2.82.0",
|
|
128
|
+
"@fluid-private/test-drivers": "~2.82.0",
|
|
129
129
|
"@fluid-tools/benchmark": "^0.52.0",
|
|
130
130
|
"@fluid-tools/build-cli": "^0.63.0",
|
|
131
131
|
"@fluidframework/build-common": "^2.0.3",
|
|
132
132
|
"@fluidframework/build-tools": "^0.63.0",
|
|
133
|
-
"@fluidframework/container-definitions": "~2.
|
|
134
|
-
"@fluidframework/container-loader": "~2.
|
|
135
|
-
"@fluidframework/eslint-config-fluid": "~2.
|
|
136
|
-
"@fluidframework/test-runtime-utils": "~2.
|
|
137
|
-
"@fluidframework/test-utils": "~2.
|
|
138
|
-
"@fluidframework/tree-previous": "npm:@fluidframework/tree@2.
|
|
133
|
+
"@fluidframework/container-definitions": "~2.82.0",
|
|
134
|
+
"@fluidframework/container-loader": "~2.82.0",
|
|
135
|
+
"@fluidframework/eslint-config-fluid": "~2.82.0",
|
|
136
|
+
"@fluidframework/test-runtime-utils": "~2.82.0",
|
|
137
|
+
"@fluidframework/test-utils": "~2.82.0",
|
|
138
|
+
"@fluidframework/tree-previous": "npm:@fluidframework/tree@2.81.0",
|
|
139
139
|
"@microsoft/api-extractor": "7.52.11",
|
|
140
140
|
"@types/diff": "^3.5.1",
|
|
141
141
|
"@types/easy-table": "^0.0.32",
|
|
142
142
|
"@types/mocha": "^10.0.10",
|
|
143
|
-
"@types/node": "
|
|
143
|
+
"@types/node": "~20.19.30",
|
|
144
144
|
"ajv": "^8.17.1",
|
|
145
145
|
"ajv-formats": "^3.0.1",
|
|
146
146
|
"c8": "^10.1.3",
|
package/src/codec/codec.ts
CHANGED
|
@@ -10,7 +10,6 @@ import type { MinimumVersionForCollab } from "@fluidframework/runtime-definition
|
|
|
10
10
|
import { cleanedPackageVersion as runtimeUtilsCleanedPackageVersion } from "@fluidframework/runtime-utils/internal";
|
|
11
11
|
import type { Static, TAnySchema, TSchema } from "@sinclair/typebox";
|
|
12
12
|
|
|
13
|
-
import type { ChangeEncodingContext } from "../core/index.js";
|
|
14
13
|
import type { JsonCompatibleReadOnly } from "../util/index.js";
|
|
15
14
|
|
|
16
15
|
/**
|
|
@@ -139,11 +138,9 @@ export interface ICodecOptions {
|
|
|
139
138
|
|
|
140
139
|
/**
|
|
141
140
|
* Options relating to encoding of persisted data.
|
|
142
|
-
* @
|
|
143
|
-
* Extends {@link ICodecOptions} with options that are specific to encoding data.
|
|
144
|
-
* @alpha @input
|
|
141
|
+
* @input @beta
|
|
145
142
|
*/
|
|
146
|
-
export interface
|
|
143
|
+
export interface CodecWriteOptionsBeta {
|
|
147
144
|
/**
|
|
148
145
|
* The minimum version of the Fluid Framework client output must be encoded to be compatible with.
|
|
149
146
|
* @remarks
|
|
@@ -154,16 +151,24 @@ export interface CodecWriteOptions extends ICodecOptions {
|
|
|
154
151
|
* the data's format should be versioned and if they can't handle the format they should error.
|
|
155
152
|
*/
|
|
156
153
|
readonly minVersionForCollab: MinimumVersionForCollab;
|
|
154
|
+
}
|
|
157
155
|
|
|
156
|
+
/**
|
|
157
|
+
* Options relating to encoding of persisted data.
|
|
158
|
+
* @remarks
|
|
159
|
+
* Extends {@link ICodecOptions} with options that are specific to encoding data.
|
|
160
|
+
* @alpha @input
|
|
161
|
+
*/
|
|
162
|
+
export interface CodecWriteOptions extends ICodecOptions, CodecWriteOptionsBeta {
|
|
158
163
|
/**
|
|
159
164
|
* Overrides the version of the codec to use for encoding.
|
|
160
165
|
* @remarks
|
|
161
|
-
* Without an override, the selected version will be based on {@link
|
|
166
|
+
* Without an override, the selected version will be based on {@link CodecWriteOptionsBeta.minVersionForCollab}.
|
|
162
167
|
*/
|
|
163
168
|
readonly writeVersionOverrides?: ReadonlyMap<CodecName, FormatVersion>;
|
|
164
169
|
|
|
165
170
|
/**
|
|
166
|
-
* If true, suppress errors when `writeVersionOverrides` selects a version which may not be compatible with the {@link
|
|
171
|
+
* If true, suppress errors when `writeVersionOverrides` selects a version which may not be compatible with the {@link CodecWriteOptionsBeta.minVersionForCollab}.
|
|
167
172
|
*/
|
|
168
173
|
readonly allowPossiblyIncompatibleWriteVersionOverrides?: boolean;
|
|
169
174
|
}
|
|
@@ -198,6 +203,20 @@ export interface IJsonCodec<
|
|
|
198
203
|
encodedSchema?: TAnySchema;
|
|
199
204
|
}
|
|
200
205
|
|
|
206
|
+
/**
|
|
207
|
+
* Type erase the more detailed encoded type from a codec.
|
|
208
|
+
*/
|
|
209
|
+
export function eraseEncodedType<
|
|
210
|
+
TDecoded,
|
|
211
|
+
TEncoded = JsonCompatibleReadOnly,
|
|
212
|
+
TValidate = TEncoded,
|
|
213
|
+
TContext = void,
|
|
214
|
+
>(
|
|
215
|
+
codec: IJsonCodec<TDecoded, TEncoded, TValidate, TContext>,
|
|
216
|
+
): IJsonCodec<TDecoded, TValidate, TValidate, TContext> {
|
|
217
|
+
return codec as unknown as IJsonCodec<TDecoded, TValidate, TValidate, TContext>;
|
|
218
|
+
}
|
|
219
|
+
|
|
201
220
|
/**
|
|
202
221
|
* @remarks TODO: We might consider using DataView or some kind of writer instead of IsoBuffer.
|
|
203
222
|
*/
|
|
@@ -381,7 +400,7 @@ class DefaultBinaryCodec<TDecoded, TContext> implements IBinaryCodec<TDecoded, T
|
|
|
381
400
|
|
|
382
401
|
public decode(change: IsoBuffer, context: TContext): TDecoded {
|
|
383
402
|
const json = bufferToString(change, "utf8");
|
|
384
|
-
const jsonable = JSON.parse(json);
|
|
403
|
+
const jsonable = JSON.parse(json) as JsonCompatibleReadOnly;
|
|
385
404
|
return this.jsonCodec.decode(jsonable, context);
|
|
386
405
|
}
|
|
387
406
|
}
|
|
@@ -453,9 +472,9 @@ export const unitCodec: IMultiFormatCodec<
|
|
|
453
472
|
export function withSchemaValidation<
|
|
454
473
|
TInMemoryFormat,
|
|
455
474
|
EncodedSchema extends TSchema,
|
|
456
|
-
TEncodedFormat
|
|
457
|
-
TValidate
|
|
458
|
-
TContext
|
|
475
|
+
TEncodedFormat,
|
|
476
|
+
TValidate,
|
|
477
|
+
TContext,
|
|
459
478
|
>(
|
|
460
479
|
schema: EncodedSchema,
|
|
461
480
|
codec: IJsonCodec<TInMemoryFormat, TEncodedFormat, TValidate, TContext>,
|
package/src/codec/index.ts
CHANGED
|
@@ -10,6 +10,7 @@ export {
|
|
|
10
10
|
type ICodecFamily,
|
|
11
11
|
type ICodecOptions,
|
|
12
12
|
type CodecWriteOptions,
|
|
13
|
+
type CodecWriteOptionsBeta,
|
|
13
14
|
type IDecoder,
|
|
14
15
|
type IEncoder,
|
|
15
16
|
type IJsonCodec,
|
|
@@ -29,6 +30,7 @@ export {
|
|
|
29
30
|
jsonableCodecTree,
|
|
30
31
|
extractJsonValidator,
|
|
31
32
|
type CodecName,
|
|
33
|
+
eraseEncodedType,
|
|
32
34
|
} from "./codec.js";
|
|
33
35
|
export {
|
|
34
36
|
DiscriminatedUnionDispatcher,
|
|
@@ -401,25 +401,21 @@ The client which encoded this data likely specified an "minVersionForCollab" val
|
|
|
401
401
|
Name extends CodecName,
|
|
402
402
|
Entry extends CodecVersion<unknown, unknown, FormatVersion, never>,
|
|
403
403
|
>(name: Name, inputRegistry: ConfigMapEntry<Entry>) {
|
|
404
|
-
type TDecoded2 =
|
|
405
|
-
? D
|
|
406
|
-
|
|
407
|
-
|
|
408
|
-
|
|
409
|
-
: never;
|
|
410
|
-
type
|
|
411
|
-
?
|
|
412
|
-
: never;
|
|
413
|
-
type TBuildOptions2 = Entry extends CodecVersion<unknown, unknown, FormatVersion, infer B>
|
|
414
|
-
? B
|
|
415
|
-
: never;
|
|
404
|
+
type TDecoded2 =
|
|
405
|
+
Entry extends CodecVersion<infer D, unknown, FormatVersion, never> ? D : never;
|
|
406
|
+
type TContext2 =
|
|
407
|
+
Entry extends CodecVersion<unknown, infer C, FormatVersion, never> ? C : never;
|
|
408
|
+
type TFormatVersion2 =
|
|
409
|
+
Entry extends CodecVersion<unknown, unknown, infer F, never> ? F : never;
|
|
410
|
+
type TBuildOptions2 =
|
|
411
|
+
Entry extends CodecVersion<unknown, unknown, FormatVersion, infer B> ? B : never;
|
|
416
412
|
const builder = new ClientVersionDispatchingCodecBuilder(
|
|
417
413
|
name,
|
|
418
414
|
inputRegistry as ConfigMapEntry<unknown> as ConfigMapEntry<
|
|
419
415
|
CodecVersion<
|
|
420
416
|
TDecoded2,
|
|
421
417
|
// If it does not matter what context is provided, undefined is fine, so allow it to be omitted.
|
|
422
|
-
|
|
418
|
+
unknown extends TContext2 ? void : TContext2,
|
|
423
419
|
TFormatVersion2,
|
|
424
420
|
TBuildOptions2
|
|
425
421
|
>
|
package/src/core/index.ts
CHANGED
|
@@ -212,7 +212,9 @@ export {
|
|
|
212
212
|
isAncestor,
|
|
213
213
|
type ChangeAtomIdRangeMap,
|
|
214
214
|
newChangeAtomIdRangeMap,
|
|
215
|
-
|
|
215
|
+
comparePartialRevisions,
|
|
216
|
+
compareChangesetLocalIds,
|
|
217
|
+
comparePartialChangesetLocalIds,
|
|
216
218
|
diffHistories,
|
|
217
219
|
type RevisionReplacer,
|
|
218
220
|
} from "./rebase/index.js";
|
|
@@ -121,13 +121,14 @@ export interface RevisionReplacer {
|
|
|
121
121
|
|
|
122
122
|
/**
|
|
123
123
|
* Returns the updated ID for the given ID.
|
|
124
|
-
* @param id - The ID to update.
|
|
124
|
+
* @param id - The ID of the first change atom to update.
|
|
125
|
+
* @param count - The number of contiguous change atoms to update. Defaults to 1.
|
|
125
126
|
* @returns an updated ID iff the given `id` needs updating, otherwise returns the given `id`.
|
|
126
127
|
* @remarks
|
|
127
128
|
* This function always maps the same input {@link ChangeAtomId.revision | revision} and {@link ChangeAtomId.localId | local ID} to the same output revision local ID.
|
|
128
129
|
* This means multiple references to the same atom of change will remain consistent after revision replacement.
|
|
129
130
|
*/
|
|
130
|
-
getUpdatedAtomId<T extends ChangeAtomId>(id: T): T;
|
|
131
|
+
getUpdatedAtomId<T extends ChangeAtomId>(id: T, count?: number): T;
|
|
131
132
|
}
|
|
132
133
|
|
|
133
134
|
export interface TaggedChange<TChangeset, TTag = RevisionTag | undefined> {
|
package/src/core/rebase/index.ts
CHANGED
|
@@ -31,7 +31,9 @@ export {
|
|
|
31
31
|
subtractChangeAtomIds,
|
|
32
32
|
type ChangeAtomIdRangeMap,
|
|
33
33
|
newChangeAtomIdRangeMap,
|
|
34
|
-
|
|
34
|
+
comparePartialRevisions,
|
|
35
|
+
compareChangesetLocalIds,
|
|
36
|
+
comparePartialChangesetLocalIds,
|
|
35
37
|
} from "./types.js";
|
|
36
38
|
export { RevisionTagCodec } from "./revisionTagCodec.js";
|
|
37
39
|
export {
|
package/src/core/rebase/types.ts
CHANGED
|
@@ -19,6 +19,7 @@ import {
|
|
|
19
19
|
brand,
|
|
20
20
|
brandedNumberType,
|
|
21
21
|
brandedStringType,
|
|
22
|
+
comparePartialStrings,
|
|
22
23
|
} from "../../util/index.js";
|
|
23
24
|
import type { RevertibleAlpha } from "../revertible.js";
|
|
24
25
|
|
|
@@ -46,6 +47,9 @@ export const StableIdSchema = Type.String();
|
|
|
46
47
|
|
|
47
48
|
/**
|
|
48
49
|
* An ID which is unique within a revision of a `ModularChangeset`.
|
|
50
|
+
* @remarks
|
|
51
|
+
* Always a real number (never `NaN` or +/- `Infinity`).
|
|
52
|
+
*
|
|
49
53
|
* A `ModularChangeset` which is a composition of multiple revisions may contain duplicate `ChangesetLocalId`s,
|
|
50
54
|
* but they are unique when qualified by the revision of the change they are used in.
|
|
51
55
|
*/
|
|
@@ -122,10 +126,30 @@ export function taggedOptAtomId(
|
|
|
122
126
|
return taggedAtomId(id, revision);
|
|
123
127
|
}
|
|
124
128
|
|
|
125
|
-
export function offsetChangeAtomId(id:
|
|
129
|
+
export function offsetChangeAtomId<T extends ChangeAtomId>(id: T, offset: number): T {
|
|
126
130
|
return { ...id, localId: brand(id.localId + offset) };
|
|
127
131
|
}
|
|
128
132
|
|
|
133
|
+
// #region These comparison functions are used instead of e.g. `compareNumbers` as a performance optimization
|
|
134
|
+
|
|
135
|
+
export function compareChangesetLocalIds(a: ChangesetLocalId, b: ChangesetLocalId): number {
|
|
136
|
+
return a - b; // No need to consider `NaN` or `Infinity` since ChangesetLocalId is always a real number
|
|
137
|
+
}
|
|
138
|
+
|
|
139
|
+
export function comparePartialChangesetLocalIds(
|
|
140
|
+
a: ChangesetLocalId | undefined,
|
|
141
|
+
b: ChangesetLocalId | undefined,
|
|
142
|
+
): number {
|
|
143
|
+
if (a === undefined) {
|
|
144
|
+
return b === undefined ? 0 : -1;
|
|
145
|
+
} else if (b === undefined) {
|
|
146
|
+
return 1;
|
|
147
|
+
}
|
|
148
|
+
return compareChangesetLocalIds(a, b);
|
|
149
|
+
}
|
|
150
|
+
|
|
151
|
+
// #endregion
|
|
152
|
+
|
|
129
153
|
/**
|
|
130
154
|
* A node in a graph of commits. A commit's parent is the commit on which it was based.
|
|
131
155
|
*/
|
|
@@ -204,6 +228,12 @@ export interface LocalChangeMetadata extends CommitMetadata {
|
|
|
204
228
|
getRevertible(
|
|
205
229
|
onDisposed?: (revertible: RevertibleAlpha) => void,
|
|
206
230
|
): RevertibleAlpha | undefined;
|
|
231
|
+
|
|
232
|
+
/**
|
|
233
|
+
* Optional label provided by the user when commit was created.
|
|
234
|
+
* This can be used by undo/redo to group or classify edits.
|
|
235
|
+
*/
|
|
236
|
+
readonly label?: unknown;
|
|
207
237
|
}
|
|
208
238
|
|
|
209
239
|
/**
|
|
@@ -225,6 +255,11 @@ export interface RemoteChangeMetadata extends CommitMetadata {
|
|
|
225
255
|
* @remarks This is only available for {@link LocalChangeMetadata | local changes}.
|
|
226
256
|
*/
|
|
227
257
|
readonly getRevertible?: undefined;
|
|
258
|
+
/**
|
|
259
|
+
* Label provided by the user when commit was created.
|
|
260
|
+
* @remarks This is only available for {@link LocalChangeMetadata | local changes}.
|
|
261
|
+
*/
|
|
262
|
+
readonly label?: undefined;
|
|
228
263
|
}
|
|
229
264
|
|
|
230
265
|
/**
|
|
@@ -255,12 +290,14 @@ export function mintCommit<TChange>(
|
|
|
255
290
|
|
|
256
291
|
export type ChangeAtomIdRangeMap<V> = RangeMap<ChangeAtomId, V>;
|
|
257
292
|
|
|
258
|
-
export function newChangeAtomIdRangeMap<V>(
|
|
259
|
-
|
|
293
|
+
export function newChangeAtomIdRangeMap<V>(
|
|
294
|
+
offsetValue?: (value: V, offset: number) => V,
|
|
295
|
+
): ChangeAtomIdRangeMap<V> {
|
|
296
|
+
return new RangeMap(offsetChangeAtomId, subtractChangeAtomIds, offsetValue);
|
|
260
297
|
}
|
|
261
298
|
|
|
262
299
|
export function subtractChangeAtomIds(a: ChangeAtomId, b: ChangeAtomId): number {
|
|
263
|
-
const cmp =
|
|
300
|
+
const cmp = comparePartialRevisions(a.revision, b.revision);
|
|
264
301
|
if (cmp !== 0) {
|
|
265
302
|
return cmp * Number.POSITIVE_INFINITY;
|
|
266
303
|
}
|
|
@@ -268,19 +305,20 @@ export function subtractChangeAtomIds(a: ChangeAtomId, b: ChangeAtomId): number
|
|
|
268
305
|
return a.localId - b.localId;
|
|
269
306
|
}
|
|
270
307
|
|
|
271
|
-
|
|
308
|
+
/**
|
|
309
|
+
* Compares two {@link RevisionTag}s to form a strict total ordering.
|
|
310
|
+
* @remarks This function tolerates arbitrary strings, not just the string "root".
|
|
311
|
+
* It sorts as follows: `undefined` \< `string` \< `number`
|
|
312
|
+
*/
|
|
313
|
+
export function comparePartialRevisions(
|
|
272
314
|
a: RevisionTag | undefined,
|
|
273
315
|
b: RevisionTag | undefined,
|
|
274
316
|
): number {
|
|
275
|
-
if (a ===
|
|
276
|
-
return b ===
|
|
277
|
-
} else if (b ===
|
|
278
|
-
return 1;
|
|
279
|
-
} else if (a < b) {
|
|
317
|
+
if (typeof a === "number") {
|
|
318
|
+
return typeof b === "number" ? a - b : 1;
|
|
319
|
+
} else if (typeof b === "number") {
|
|
280
320
|
return -1;
|
|
281
|
-
} else if (a > b) {
|
|
282
|
-
return 1;
|
|
283
321
|
}
|
|
284
322
|
|
|
285
|
-
return
|
|
323
|
+
return comparePartialStrings(a, b);
|
|
286
324
|
}
|
|
@@ -52,6 +52,7 @@ const FieldSchemaFormatBase = Type.Object({
|
|
|
52
52
|
|
|
53
53
|
const noAdditionalProps: ObjectOptions = { additionalProperties: false };
|
|
54
54
|
|
|
55
|
+
export type FieldSchemaFormat = Static<typeof FieldSchemaFormat>;
|
|
55
56
|
export const FieldSchemaFormat = Type.Composite([FieldSchemaFormatBase], noAdditionalProps);
|
|
56
57
|
|
|
57
58
|
/**
|
|
@@ -70,6 +71,7 @@ export enum PersistedValueSchema {
|
|
|
70
71
|
*
|
|
71
72
|
* See {@link DiscriminatedUnionDispatcher} for more information on this pattern.
|
|
72
73
|
*/
|
|
74
|
+
export type TreeNodeSchemaDataFormat = Static<typeof TreeNodeSchemaDataFormat>;
|
|
73
75
|
export const TreeNodeSchemaDataFormat = Type.Object(
|
|
74
76
|
{
|
|
75
77
|
/**
|
|
@@ -87,7 +89,3 @@ export const TreeNodeSchemaDataFormat = Type.Object(
|
|
|
87
89
|
},
|
|
88
90
|
unionOptions,
|
|
89
91
|
);
|
|
90
|
-
|
|
91
|
-
export type TreeNodeSchemaDataFormat = Static<typeof TreeNodeSchemaDataFormat>;
|
|
92
|
-
|
|
93
|
-
export type FieldSchemaFormat = Static<typeof FieldSchemaFormat>;
|
|
@@ -6,6 +6,7 @@
|
|
|
6
6
|
import { type ObjectOptions, type Static, Type } from "@sinclair/typebox";
|
|
7
7
|
|
|
8
8
|
import { unionOptions } from "../../codec/index.js";
|
|
9
|
+
import type { JsonCompatibleReadOnlyObject } from "../../util/index.js";
|
|
9
10
|
import { JsonCompatibleReadOnlySchema } from "../../util/index.js";
|
|
10
11
|
|
|
11
12
|
import {
|
|
@@ -14,7 +15,12 @@ import {
|
|
|
14
15
|
TreeNodeSchemaIdentifierSchema,
|
|
15
16
|
} from "./formatV1.js";
|
|
16
17
|
|
|
17
|
-
export
|
|
18
|
+
export type PersistedMetadataFormat = Static<typeof PersistedMetadataFormat>;
|
|
19
|
+
export const PersistedMetadataFormat = Type.Optional(
|
|
20
|
+
Type.Unsafe<JsonCompatibleReadOnlyObject>(
|
|
21
|
+
Type.Record(Type.String(), JsonCompatibleReadOnlySchema),
|
|
22
|
+
),
|
|
23
|
+
);
|
|
18
24
|
|
|
19
25
|
const FieldSchemaFormatBase = Type.Object({
|
|
20
26
|
kind: FieldKindIdentifierSchema,
|
|
@@ -24,6 +30,7 @@ const FieldSchemaFormatBase = Type.Object({
|
|
|
24
30
|
|
|
25
31
|
const noAdditionalProps: ObjectOptions = { additionalProperties: false };
|
|
26
32
|
|
|
33
|
+
export type FieldSchemaFormat = Static<typeof FieldSchemaFormat>;
|
|
27
34
|
export const FieldSchemaFormat = Type.Composite([FieldSchemaFormatBase], noAdditionalProps);
|
|
28
35
|
|
|
29
36
|
/**
|
|
@@ -56,6 +63,7 @@ export type TreeNodeSchemaUnionFormat = Static<typeof TreeNodeSchemaUnionFormat>
|
|
|
56
63
|
*
|
|
57
64
|
* See {@link DiscriminatedUnionDispatcher} for more information on this pattern.
|
|
58
65
|
*/
|
|
66
|
+
export type TreeNodeSchemaDataFormat = Static<typeof TreeNodeSchemaDataFormat>;
|
|
59
67
|
export const TreeNodeSchemaDataFormat = Type.Object(
|
|
60
68
|
{
|
|
61
69
|
/**
|
|
@@ -71,9 +79,3 @@ export const TreeNodeSchemaDataFormat = Type.Object(
|
|
|
71
79
|
},
|
|
72
80
|
noAdditionalProps,
|
|
73
81
|
);
|
|
74
|
-
|
|
75
|
-
export type TreeNodeSchemaDataFormat = Static<typeof TreeNodeSchemaDataFormat>;
|
|
76
|
-
|
|
77
|
-
export type FieldSchemaFormat = Static<typeof FieldSchemaFormat>;
|
|
78
|
-
|
|
79
|
-
export type PersistedMetadataFormat = Static<typeof PersistedMetadataFormat>;
|
|
@@ -37,6 +37,8 @@ export { Multiplicity } from "./multiplicity.js";
|
|
|
37
37
|
export type { TreeNodeSchemaIdentifier, FieldKey, FieldKindIdentifier } from "./formatV1.js";
|
|
38
38
|
|
|
39
39
|
import * as schemaFormatV1 from "./formatV1.js";
|
|
40
|
+
// eslint-disable-next-line unicorn/prefer-export-from -- fixing requires `export * as` (breaks API-Extractor) or named exports (changes public API)
|
|
40
41
|
export { schemaFormatV1 };
|
|
41
42
|
import * as schemaFormatV2 from "./formatV2.js";
|
|
43
|
+
// eslint-disable-next-line unicorn/prefer-export-from -- fixing requires `export * as` (breaks API-Extractor) or named exports (changes public API)
|
|
42
44
|
export { schemaFormatV2 };
|
|
@@ -253,7 +253,10 @@ export class ObjectNodeStoredSchema extends TreeNodeStoredSchema {
|
|
|
253
253
|
private encodeFieldsObject(
|
|
254
254
|
encodeFieldSchema: (storedFieldSchema: TreeFieldStoredSchema) => FieldSchemaFormat,
|
|
255
255
|
): Record<string, FieldSchemaFormat> {
|
|
256
|
-
const fieldsObject: Record<string, FieldSchemaFormat> = Object.create(null)
|
|
256
|
+
const fieldsObject: Record<string, FieldSchemaFormat> = Object.create(null) as Record<
|
|
257
|
+
string,
|
|
258
|
+
FieldSchemaFormat
|
|
259
|
+
>;
|
|
257
260
|
// Sort fields to ensure output is identical for for equivalent schema (since field order is not considered significant).
|
|
258
261
|
// This makes comparing schema easier, and ensures chunk reuse for schema summaries isn't needlessly broken.
|
|
259
262
|
for (const key of [...this.objectNodeFields.keys()].sort()) {
|
|
@@ -128,9 +128,7 @@ export interface AnchorEvents {
|
|
|
128
128
|
*
|
|
129
129
|
* Compare to {@link AnchorEvents.childrenChanged} which is emitted in the middle of the batch/delta-visit.
|
|
130
130
|
*/
|
|
131
|
-
childrenChangedAfterBatch(arg: {
|
|
132
|
-
changedFields: ReadonlySet<FieldKey>;
|
|
133
|
-
}): void;
|
|
131
|
+
childrenChangedAfterBatch(arg: { changedFields: ReadonlySet<FieldKey> }): void;
|
|
134
132
|
|
|
135
133
|
/**
|
|
136
134
|
* Emitted in the middle of applying a batch of changes (i.e. during a delta a visit), if something in the subtree
|
package/src/core/tree/delta.ts
CHANGED
|
@@ -196,10 +196,12 @@ export interface DetachedNodeRename {
|
|
|
196
196
|
readonly newId: DetachedNodeId;
|
|
197
197
|
}
|
|
198
198
|
|
|
199
|
-
|
|
200
|
-
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
|
|
204
|
-
|
|
205
|
-
|
|
199
|
+
export interface FieldChanges {
|
|
200
|
+
/**
|
|
201
|
+
* Represents a list of changes to the nodes in the field.
|
|
202
|
+
* The index of each mark within the range of nodes, before
|
|
203
|
+
* applying any of the changes, is not represented explicitly.
|
|
204
|
+
* It corresponds to the sum of `mark.count` values for all previous marks for which `isAttachMark(mark)` is false.
|
|
205
|
+
*/
|
|
206
|
+
readonly marks: readonly Mark[];
|
|
207
|
+
}
|
|
@@ -20,7 +20,7 @@ export function deltaForRootInitialization(content: TreeChunk): Root {
|
|
|
20
20
|
const delta: Root = {
|
|
21
21
|
build: [{ id: buildId, trees: content }],
|
|
22
22
|
fields: new Map<FieldKey, FieldChanges>([
|
|
23
|
-
[rootFieldKey, [{ count: content.topLevelLength, attach: buildId }]],
|
|
23
|
+
[rootFieldKey, { marks: [{ count: content.topLevelLength, attach: buildId }] }],
|
|
24
24
|
]),
|
|
25
25
|
};
|
|
26
26
|
return delta;
|
|
@@ -402,7 +402,7 @@ function detachPass(
|
|
|
402
402
|
config: PassConfig,
|
|
403
403
|
): void {
|
|
404
404
|
let index = 0;
|
|
405
|
-
for (const mark of fieldChanges) {
|
|
405
|
+
for (const mark of fieldChanges.marks) {
|
|
406
406
|
if (mark.fields !== undefined) {
|
|
407
407
|
assert(
|
|
408
408
|
mark.attach === undefined || mark.detach !== undefined,
|
|
@@ -512,7 +512,7 @@ function attachPass(
|
|
|
512
512
|
config: PassConfig,
|
|
513
513
|
): void {
|
|
514
514
|
let index = 0;
|
|
515
|
-
for (const mark of fieldChanges) {
|
|
515
|
+
for (const mark of fieldChanges.marks) {
|
|
516
516
|
if (mark.attach !== undefined) {
|
|
517
517
|
for (let i = 0; i < mark.count; i += 1) {
|
|
518
518
|
const offsetAttachId = offsetDetachId(mark.attach, i);
|