@fluidframework/tree 2.74.0 → 2.80.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.eslintrc.cjs +1 -16
- package/CHANGELOG.md +18 -0
- package/api-report/tree.alpha.api.md +20 -2
- package/dist/alpha.d.ts +4 -0
- package/dist/codec/codec.d.ts +31 -3
- package/dist/codec/codec.d.ts.map +1 -1
- package/dist/codec/codec.js +10 -0
- package/dist/codec/codec.js.map +1 -1
- package/dist/codec/index.d.ts +2 -2
- package/dist/codec/index.d.ts.map +1 -1
- package/dist/codec/index.js +2 -2
- package/dist/codec/index.js.map +1 -1
- package/dist/codec/versioned/codec.d.ts +80 -22
- package/dist/codec/versioned/codec.d.ts.map +1 -1
- package/dist/codec/versioned/codec.js +137 -15
- package/dist/codec/versioned/codec.js.map +1 -1
- package/dist/codec/versioned/index.d.ts +1 -1
- package/dist/codec/versioned/index.d.ts.map +1 -1
- package/dist/codec/versioned/index.js +2 -2
- package/dist/codec/versioned/index.js.map +1 -1
- package/dist/core/index.d.ts +2 -2
- package/dist/core/index.d.ts.map +1 -1
- package/dist/core/index.js +3 -4
- package/dist/core/index.js.map +1 -1
- package/dist/core/rebase/changeRebaser.d.ts +36 -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 +2 -2
- package/dist/core/rebase/index.d.ts.map +1 -1
- package/dist/core/rebase/index.js +1 -2
- package/dist/core/rebase/index.js.map +1 -1
- package/dist/core/rebase/types.d.ts +6 -2
- package/dist/core/rebase/types.d.ts.map +1 -1
- package/dist/core/rebase/types.js +1 -12
- package/dist/core/rebase/types.js.map +1 -1
- package/dist/core/rebase/utils.js +3 -3
- package/dist/core/rebase/utils.js.map +1 -1
- package/dist/core/schema-stored/schema.js +3 -3
- 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 +3 -4
- package/dist/core/tree/anchorSet.js.map +1 -1
- package/dist/core/tree/detachedFieldIndex.d.ts +1 -2
- package/dist/core/tree/detachedFieldIndex.d.ts.map +1 -1
- package/dist/core/tree/detachedFieldIndex.js +12 -56
- package/dist/core/tree/detachedFieldIndex.js.map +1 -1
- package/dist/core/tree/detachedFieldIndexCodecCommon.d.ts +18 -10
- package/dist/core/tree/detachedFieldIndexCodecCommon.d.ts.map +1 -1
- package/dist/core/tree/detachedFieldIndexCodecCommon.js +6 -6
- package/dist/core/tree/detachedFieldIndexCodecCommon.js.map +1 -1
- package/dist/core/tree/detachedFieldIndexCodecV1.d.ts +2 -3
- package/dist/core/tree/detachedFieldIndexCodecV1.d.ts.map +1 -1
- package/dist/core/tree/detachedFieldIndexCodecV1.js +4 -5
- package/dist/core/tree/detachedFieldIndexCodecV1.js.map +1 -1
- package/dist/core/tree/detachedFieldIndexCodecV2.d.ts +2 -3
- package/dist/core/tree/detachedFieldIndexCodecV2.d.ts.map +1 -1
- package/dist/core/tree/detachedFieldIndexCodecV2.js +4 -6
- package/dist/core/tree/detachedFieldIndexCodecV2.js.map +1 -1
- package/dist/core/tree/detachedFieldIndexCodecs.d.ts +5 -6
- package/dist/core/tree/detachedFieldIndexCodecs.d.ts.map +1 -1
- package/dist/core/tree/detachedFieldIndexCodecs.js +11 -41
- package/dist/core/tree/detachedFieldIndexCodecs.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 +2 -2
- package/dist/core/tree/index.js.map +1 -1
- package/dist/core/tree/mapTree.js +1 -1
- package/dist/core/tree/mapTree.js.map +1 -1
- package/dist/core/tree/sparseTree.d.ts.map +1 -1
- package/dist/core/tree/sparseTree.js +1 -0
- package/dist/core/tree/sparseTree.js.map +1 -1
- package/dist/core/tree/treeTextFormat.d.ts.map +1 -1
- package/dist/core/tree/treeTextFormat.js +5 -9
- package/dist/core/tree/treeTextFormat.js.map +1 -1
- package/dist/feature-libraries/changeAtomIdBTree.d.ts +10 -0
- package/dist/feature-libraries/changeAtomIdBTree.d.ts.map +1 -0
- package/dist/feature-libraries/changeAtomIdBTree.js +16 -0
- package/dist/feature-libraries/changeAtomIdBTree.js.map +1 -0
- package/dist/feature-libraries/chunked-forest/basicChunk.js +1 -1
- package/dist/feature-libraries/chunked-forest/basicChunk.js.map +1 -1
- package/dist/feature-libraries/chunked-forest/chunkedForest.js +6 -6
- package/dist/feature-libraries/chunked-forest/chunkedForest.js.map +1 -1
- package/dist/feature-libraries/chunked-forest/codec/chunkDecoding.d.ts.map +1 -1
- package/dist/feature-libraries/chunked-forest/codec/chunkDecoding.js +7 -4
- package/dist/feature-libraries/chunked-forest/codec/chunkDecoding.js.map +1 -1
- package/dist/feature-libraries/chunked-forest/codec/codecs.d.ts.map +1 -1
- package/dist/feature-libraries/chunked-forest/codec/codecs.js +19 -11
- package/dist/feature-libraries/chunked-forest/codec/codecs.js.map +1 -1
- package/dist/feature-libraries/chunked-forest/codec/compressedEncode.js +3 -3
- package/dist/feature-libraries/chunked-forest/codec/compressedEncode.js.map +1 -1
- package/dist/feature-libraries/chunked-forest/codec/schemaBasedEncode.js +9 -5
- package/dist/feature-libraries/chunked-forest/codec/schemaBasedEncode.js.map +1 -1
- package/dist/feature-libraries/chunked-forest/uniformChunk.js +1 -1
- package/dist/feature-libraries/chunked-forest/uniformChunk.js.map +1 -1
- package/dist/feature-libraries/default-schema/defaultEditBuilder.d.ts +15 -5
- package/dist/feature-libraries/default-schema/defaultEditBuilder.d.ts.map +1 -1
- package/dist/feature-libraries/default-schema/defaultEditBuilder.js +19 -14
- package/dist/feature-libraries/default-schema/defaultEditBuilder.js.map +1 -1
- package/dist/feature-libraries/default-schema/defaultFieldKinds.d.ts +1 -1
- package/dist/feature-libraries/default-schema/defaultFieldKinds.d.ts.map +1 -1
- package/dist/feature-libraries/default-schema/defaultFieldKinds.js +11 -1
- package/dist/feature-libraries/default-schema/defaultFieldKinds.js.map +1 -1
- package/dist/feature-libraries/default-schema/mappedEditBuilder.d.ts +2 -0
- package/dist/feature-libraries/default-schema/mappedEditBuilder.d.ts.map +1 -1
- package/dist/feature-libraries/default-schema/mappedEditBuilder.js +6 -0
- package/dist/feature-libraries/default-schema/mappedEditBuilder.js.map +1 -1
- package/dist/feature-libraries/flex-tree/lazyField.d.ts.map +1 -1
- package/dist/feature-libraries/flex-tree/lazyField.js +11 -13
- package/dist/feature-libraries/flex-tree/lazyField.js.map +1 -1
- package/dist/feature-libraries/index.d.ts +3 -2
- package/dist/feature-libraries/index.d.ts.map +1 -1
- package/dist/feature-libraries/index.js +9 -7
- package/dist/feature-libraries/index.js.map +1 -1
- package/dist/feature-libraries/indexing/anchorTreeIndex.js +6 -6
- package/dist/feature-libraries/indexing/anchorTreeIndex.js.map +1 -1
- package/dist/feature-libraries/mitigatedChangeFamily.d.ts.map +1 -1
- package/dist/feature-libraries/mitigatedChangeFamily.js +10 -1
- package/dist/feature-libraries/mitigatedChangeFamily.js.map +1 -1
- package/dist/feature-libraries/modular-schema/comparison.d.ts.map +1 -1
- package/dist/feature-libraries/modular-schema/comparison.js +12 -9
- package/dist/feature-libraries/modular-schema/comparison.js.map +1 -1
- package/dist/feature-libraries/modular-schema/defaultRevisionReplacer.d.ts +25 -0
- package/dist/feature-libraries/modular-schema/defaultRevisionReplacer.d.ts.map +1 -0
- package/dist/feature-libraries/modular-schema/defaultRevisionReplacer.js +59 -0
- package/dist/feature-libraries/modular-schema/defaultRevisionReplacer.js.map +1 -0
- package/dist/feature-libraries/modular-schema/fieldChangeHandler.d.ts +3 -3
- 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 +4 -4
- package/dist/feature-libraries/modular-schema/genericFieldKind.js.map +1 -1
- package/dist/feature-libraries/modular-schema/genericFieldKindCodecs.js +2 -2
- package/dist/feature-libraries/modular-schema/genericFieldKindCodecs.js.map +1 -1
- package/dist/feature-libraries/modular-schema/index.d.ts +4 -2
- package/dist/feature-libraries/modular-schema/index.d.ts.map +1 -1
- package/dist/feature-libraries/modular-schema/index.js +11 -7
- package/dist/feature-libraries/modular-schema/index.js.map +1 -1
- package/dist/feature-libraries/modular-schema/modularChangeCodecV1.d.ts +49 -0
- package/dist/feature-libraries/modular-schema/modularChangeCodecV1.d.ts.map +1 -0
- package/dist/feature-libraries/modular-schema/modularChangeCodecV1.js +315 -0
- package/dist/feature-libraries/modular-schema/modularChangeCodecV1.js.map +1 -0
- package/dist/feature-libraries/modular-schema/modularChangeCodecV2.d.ts +15 -0
- package/dist/feature-libraries/modular-schema/modularChangeCodecV2.d.ts.map +1 -0
- package/dist/feature-libraries/modular-schema/modularChangeCodecV2.js +31 -0
- package/dist/feature-libraries/modular-schema/modularChangeCodecV2.js.map +1 -0
- package/dist/feature-libraries/modular-schema/modularChangeCodecs.d.ts +2 -2
- package/dist/feature-libraries/modular-schema/modularChangeCodecs.d.ts.map +1 -1
- package/dist/feature-libraries/modular-schema/modularChangeCodecs.js +25 -288
- package/dist/feature-libraries/modular-schema/modularChangeCodecs.js.map +1 -1
- package/dist/feature-libraries/modular-schema/modularChangeFamily.d.ts +14 -8
- package/dist/feature-libraries/modular-schema/modularChangeFamily.d.ts.map +1 -1
- package/dist/feature-libraries/modular-schema/modularChangeFamily.js +225 -195
- package/dist/feature-libraries/modular-schema/modularChangeFamily.js.map +1 -1
- package/dist/feature-libraries/modular-schema/{modularChangeFormat.d.ts → modularChangeFormatV1.d.ts} +5 -6
- package/dist/feature-libraries/modular-schema/modularChangeFormatV1.d.ts.map +1 -0
- package/dist/feature-libraries/modular-schema/{modularChangeFormat.js → modularChangeFormatV1.js} +7 -7
- package/dist/feature-libraries/modular-schema/modularChangeFormatV1.js.map +1 -0
- package/dist/feature-libraries/modular-schema/modularChangeFormatV2.d.ts +112 -0
- package/dist/feature-libraries/modular-schema/modularChangeFormatV2.d.ts.map +1 -0
- package/dist/feature-libraries/modular-schema/modularChangeFormatV2.js +21 -0
- package/dist/feature-libraries/modular-schema/modularChangeFormatV2.js.map +1 -0
- package/dist/feature-libraries/modular-schema/modularChangeTypes.d.ts +13 -3
- package/dist/feature-libraries/modular-schema/modularChangeTypes.d.ts.map +1 -1
- package/dist/feature-libraries/modular-schema/modularChangeTypes.js.map +1 -1
- package/dist/feature-libraries/node-identifier/mockNodeIdentifierManager.js +1 -1
- package/dist/feature-libraries/node-identifier/mockNodeIdentifierManager.js.map +1 -1
- package/dist/feature-libraries/object-forest/objectForest.js +4 -4
- package/dist/feature-libraries/object-forest/objectForest.js.map +1 -1
- package/dist/feature-libraries/optional-field/optionalField.d.ts.map +1 -1
- package/dist/feature-libraries/optional-field/optionalField.js +34 -39
- package/dist/feature-libraries/optional-field/optionalField.js.map +1 -1
- package/dist/feature-libraries/schema-edits/schemaChangeCodecs.d.ts.map +1 -1
- package/dist/feature-libraries/schema-edits/schemaChangeCodecs.js +14 -2
- package/dist/feature-libraries/schema-edits/schemaChangeCodecs.js.map +1 -1
- package/dist/feature-libraries/schema-index/codec.d.ts +7 -21
- package/dist/feature-libraries/schema-index/codec.d.ts.map +1 -1
- package/dist/feature-libraries/schema-index/codec.js +28 -70
- package/dist/feature-libraries/schema-index/codec.js.map +1 -1
- package/dist/feature-libraries/schema-index/index.d.ts +2 -2
- package/dist/feature-libraries/schema-index/index.d.ts.map +1 -1
- package/dist/feature-libraries/schema-index/index.js +2 -5
- package/dist/feature-libraries/schema-index/index.js.map +1 -1
- package/dist/feature-libraries/schema-index/schemaSummarizer.d.ts +1 -9
- package/dist/feature-libraries/schema-index/schemaSummarizer.d.ts.map +1 -1
- package/dist/feature-libraries/schema-index/schemaSummarizer.js +1 -12
- package/dist/feature-libraries/schema-index/schemaSummarizer.js.map +1 -1
- package/dist/feature-libraries/schemaChecker.d.ts.map +1 -1
- package/dist/feature-libraries/schemaChecker.js +11 -6
- package/dist/feature-libraries/schemaChecker.js.map +1 -1
- package/dist/feature-libraries/sequence-field/compose.d.ts.map +1 -1
- package/dist/feature-libraries/sequence-field/compose.js +17 -13
- package/dist/feature-libraries/sequence-field/compose.js.map +1 -1
- package/dist/feature-libraries/sequence-field/invert.js +5 -4
- package/dist/feature-libraries/sequence-field/invert.js.map +1 -1
- package/dist/feature-libraries/sequence-field/moveEffectTable.d.ts.map +1 -1
- package/dist/feature-libraries/sequence-field/moveEffectTable.js +15 -9
- package/dist/feature-libraries/sequence-field/moveEffectTable.js.map +1 -1
- package/dist/feature-libraries/sequence-field/rebase.js +26 -18
- package/dist/feature-libraries/sequence-field/rebase.js.map +1 -1
- package/dist/feature-libraries/sequence-field/replaceRevisions.d.ts +2 -2
- package/dist/feature-libraries/sequence-field/replaceRevisions.d.ts.map +1 -1
- package/dist/feature-libraries/sequence-field/replaceRevisions.js +40 -35
- package/dist/feature-libraries/sequence-field/replaceRevisions.js.map +1 -1
- package/dist/feature-libraries/sequence-field/sequenceFieldCodecV2.d.ts.map +1 -1
- package/dist/feature-libraries/sequence-field/sequenceFieldCodecV2.js +16 -8
- package/dist/feature-libraries/sequence-field/sequenceFieldCodecV2.js.map +1 -1
- package/dist/feature-libraries/sequence-field/sequenceFieldCodecV3.d.ts.map +1 -1
- package/dist/feature-libraries/sequence-field/sequenceFieldCodecV3.js +4 -2
- package/dist/feature-libraries/sequence-field/sequenceFieldCodecV3.js.map +1 -1
- package/dist/feature-libraries/sequence-field/sequenceFieldToDelta.d.ts.map +1 -1
- package/dist/feature-libraries/sequence-field/sequenceFieldToDelta.js +6 -3
- package/dist/feature-libraries/sequence-field/sequenceFieldToDelta.js.map +1 -1
- package/dist/feature-libraries/sequence-field/utils.d.ts.map +1 -1
- package/dist/feature-libraries/sequence-field/utils.js +46 -27
- package/dist/feature-libraries/sequence-field/utils.js.map +1 -1
- package/dist/feature-libraries/treeCursorUtils.js +7 -7
- package/dist/feature-libraries/treeCursorUtils.js.map +1 -1
- package/dist/feature-libraries/treeTextCursor.js +2 -2
- package/dist/feature-libraries/treeTextCursor.js.map +1 -1
- package/dist/feature-libraries/valueUtilities.d.ts.map +1 -1
- package/dist/feature-libraries/valueUtilities.js +16 -8
- package/dist/feature-libraries/valueUtilities.js.map +1 -1
- package/dist/index.d.ts +2 -2
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js.map +1 -1
- package/dist/packageVersion.d.ts +1 -1
- package/dist/packageVersion.js +1 -1
- package/dist/packageVersion.js.map +1 -1
- package/dist/shared-tree/schematizingTreeView.d.ts +2 -3
- package/dist/shared-tree/schematizingTreeView.d.ts.map +1 -1
- package/dist/shared-tree/schematizingTreeView.js +20 -9
- package/dist/shared-tree/schematizingTreeView.js.map +1 -1
- package/dist/shared-tree/sharedTree.d.ts.map +1 -1
- package/dist/shared-tree/sharedTree.js +61 -44
- package/dist/shared-tree/sharedTree.js.map +1 -1
- package/dist/shared-tree/sharedTreeChangeCodecs.d.ts +1 -1
- package/dist/shared-tree/sharedTreeChangeCodecs.d.ts.map +1 -1
- package/dist/shared-tree/sharedTreeChangeCodecs.js +9 -8
- package/dist/shared-tree/sharedTreeChangeCodecs.js.map +1 -1
- package/dist/shared-tree/sharedTreeChangeEnricher.d.ts.map +1 -1
- package/dist/shared-tree/sharedTreeChangeEnricher.js +4 -2
- package/dist/shared-tree/sharedTreeChangeEnricher.js.map +1 -1
- package/dist/shared-tree/sharedTreeChangeFamily.d.ts +3 -2
- package/dist/shared-tree/sharedTreeChangeFamily.d.ts.map +1 -1
- package/dist/shared-tree/sharedTreeChangeFamily.js +19 -14
- package/dist/shared-tree/sharedTreeChangeFamily.js.map +1 -1
- package/dist/shared-tree/sharedTreeEditBuilder.d.ts.map +1 -1
- package/dist/shared-tree/sharedTreeEditBuilder.js +1 -1
- package/dist/shared-tree/sharedTreeEditBuilder.js.map +1 -1
- package/dist/shared-tree/treeAlpha.d.ts +35 -29
- package/dist/shared-tree/treeAlpha.d.ts.map +1 -1
- package/dist/shared-tree/treeAlpha.js +21 -23
- package/dist/shared-tree/treeAlpha.js.map +1 -1
- package/dist/shared-tree/treeCheckout.d.ts +2 -0
- package/dist/shared-tree/treeCheckout.d.ts.map +1 -1
- package/dist/shared-tree/treeCheckout.js +31 -18
- package/dist/shared-tree/treeCheckout.js.map +1 -1
- package/dist/shared-tree-core/branch.d.ts +3 -1
- package/dist/shared-tree-core/branch.d.ts.map +1 -1
- package/dist/shared-tree-core/branch.js +5 -3
- package/dist/shared-tree-core/branch.js.map +1 -1
- package/dist/shared-tree-core/branchCommitEnricher.d.ts.map +1 -1
- package/dist/shared-tree-core/branchCommitEnricher.js +1 -1
- package/dist/shared-tree-core/branchCommitEnricher.js.map +1 -1
- package/dist/shared-tree-core/editManager.js +1 -1
- package/dist/shared-tree-core/editManager.js.map +1 -1
- package/dist/shared-tree-core/editManagerCodecs.d.ts.map +1 -1
- package/dist/shared-tree-core/editManagerCodecs.js +9 -4
- package/dist/shared-tree-core/editManagerCodecs.js.map +1 -1
- package/dist/shared-tree-core/editManagerFormatCommons.d.ts +1 -0
- package/dist/shared-tree-core/editManagerFormatCommons.d.ts.map +1 -1
- package/dist/shared-tree-core/editManagerFormatCommons.js +6 -0
- package/dist/shared-tree-core/editManagerFormatCommons.js.map +1 -1
- package/dist/shared-tree-core/editManagerFormatV1toV4.d.ts +2 -2
- package/dist/shared-tree-core/editManagerFormatV1toV4.d.ts.map +1 -1
- package/dist/shared-tree-core/editManagerFormatV1toV4.js +1 -0
- package/dist/shared-tree-core/editManagerFormatV1toV4.js.map +1 -1
- package/dist/shared-tree-core/editManagerSummarizer.js +3 -3
- package/dist/shared-tree-core/editManagerSummarizer.js.map +1 -1
- package/dist/shared-tree-core/messageCodecV1ToV4.d.ts +1 -1
- package/dist/shared-tree-core/messageCodecV1ToV4.d.ts.map +1 -1
- package/dist/shared-tree-core/messageCodecV1ToV4.js.map +1 -1
- package/dist/shared-tree-core/messageCodecVSharedBranches.d.ts.map +1 -1
- package/dist/shared-tree-core/messageCodecVSharedBranches.js +2 -1
- package/dist/shared-tree-core/messageCodecVSharedBranches.js.map +1 -1
- package/dist/shared-tree-core/messageCodecs.d.ts.map +1 -1
- package/dist/shared-tree-core/messageCodecs.js +8 -4
- package/dist/shared-tree-core/messageCodecs.js.map +1 -1
- package/dist/shared-tree-core/messageFormat.d.ts +1 -0
- package/dist/shared-tree-core/messageFormat.d.ts.map +1 -1
- package/dist/shared-tree-core/messageFormat.js +6 -0
- package/dist/shared-tree-core/messageFormat.js.map +1 -1
- package/dist/shared-tree-core/messageFormatV1ToV4.d.ts +3 -2
- package/dist/shared-tree-core/messageFormatV1ToV4.d.ts.map +1 -1
- package/dist/shared-tree-core/messageFormatV1ToV4.js +8 -1
- package/dist/shared-tree-core/messageFormatV1ToV4.js.map +1 -1
- package/dist/shared-tree-core/sequenceIdUtils.d.ts.map +1 -1
- package/dist/shared-tree-core/sequenceIdUtils.js +4 -4
- package/dist/shared-tree-core/sequenceIdUtils.js.map +1 -1
- package/dist/shared-tree-core/sharedTreeCore.d.ts.map +1 -1
- package/dist/shared-tree-core/sharedTreeCore.js +12 -8
- package/dist/shared-tree-core/sharedTreeCore.js.map +1 -1
- package/dist/shared-tree-core/transaction.d.ts +25 -8
- package/dist/shared-tree-core/transaction.d.ts.map +1 -1
- package/dist/shared-tree-core/transaction.js +65 -30
- package/dist/shared-tree-core/transaction.js.map +1 -1
- package/dist/shared-tree-core/transactionEnricher.d.ts +2 -2
- package/dist/shared-tree-core/transactionEnricher.d.ts.map +1 -1
- package/dist/shared-tree-core/transactionEnricher.js +3 -3
- package/dist/shared-tree-core/transactionEnricher.js.map +1 -1
- package/dist/simple-tree/api/configuration.js +1 -1
- package/dist/simple-tree/api/configuration.js.map +1 -1
- package/dist/simple-tree/api/customTree.d.ts.map +1 -1
- package/dist/simple-tree/api/customTree.js +13 -9
- package/dist/simple-tree/api/customTree.js.map +1 -1
- package/dist/simple-tree/api/discrepancies.d.ts.map +1 -1
- package/dist/simple-tree/api/discrepancies.js +21 -17
- package/dist/simple-tree/api/discrepancies.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.map +1 -1
- package/dist/simple-tree/api/schemaFactory.d.ts.map +1 -1
- package/dist/simple-tree/api/schemaFactory.js +12 -8
- package/dist/simple-tree/api/schemaFactory.js.map +1 -1
- package/dist/simple-tree/api/schemaFromSimple.js +18 -9
- package/dist/simple-tree/api/schemaFromSimple.js.map +1 -1
- package/dist/simple-tree/api/simpleSchemaCodec.js +10 -5
- package/dist/simple-tree/api/simpleSchemaCodec.js.map +1 -1
- package/dist/simple-tree/api/simpleSchemaToJsonSchema.d.ts.map +1 -1
- package/dist/simple-tree/api/simpleSchemaToJsonSchema.js +15 -11
- package/dist/simple-tree/api/simpleSchemaToJsonSchema.js.map +1 -1
- package/dist/simple-tree/api/simpleTreeIndex.js +10 -10
- package/dist/simple-tree/api/simpleTreeIndex.js.map +1 -1
- package/dist/simple-tree/api/storedSchema.d.ts.map +1 -1
- package/dist/simple-tree/api/storedSchema.js +2 -3
- package/dist/simple-tree/api/storedSchema.js.map +1 -1
- package/dist/simple-tree/api/transactionTypes.d.ts +17 -4
- 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/treeNodeApi.d.ts.map +1 -1
- package/dist/simple-tree/api/treeNodeApi.js +21 -13
- package/dist/simple-tree/api/treeNodeApi.js.map +1 -1
- package/dist/simple-tree/api/verboseTree.d.ts.map +1 -1
- package/dist/simple-tree/api/verboseTree.js +14 -9
- package/dist/simple-tree/api/verboseTree.js.map +1 -1
- package/dist/simple-tree/core/treeNodeKernel.d.ts.map +1 -1
- package/dist/simple-tree/core/treeNodeKernel.js +6 -3
- package/dist/simple-tree/core/treeNodeKernel.js.map +1 -1
- package/dist/simple-tree/core/unhydratedFlexTree.d.ts.map +1 -1
- package/dist/simple-tree/core/unhydratedFlexTree.js +20 -15
- package/dist/simple-tree/core/unhydratedFlexTree.js.map +1 -1
- package/dist/simple-tree/getTreeNodeForField.d.ts.map +1 -1
- package/dist/simple-tree/getTreeNodeForField.js +2 -1
- package/dist/simple-tree/getTreeNodeForField.js.map +1 -1
- package/dist/simple-tree/index.d.ts +1 -1
- package/dist/simple-tree/index.d.ts.map +1 -1
- package/dist/simple-tree/index.js.map +1 -1
- package/dist/simple-tree/leafNodeSchema.js +9 -6
- package/dist/simple-tree/leafNodeSchema.js.map +1 -1
- package/dist/simple-tree/node-kinds/array/arrayNode.js +15 -15
- package/dist/simple-tree/node-kinds/array/arrayNode.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 +4 -5
- package/dist/simple-tree/node-kinds/object/objectNode.js.map +1 -1
- package/dist/simple-tree/node-kinds/record/recordNode.d.ts.map +1 -1
- package/dist/simple-tree/node-kinds/record/recordNode.js +2 -3
- package/dist/simple-tree/node-kinds/record/recordNode.js.map +1 -1
- package/dist/simple-tree/toStoredSchema.d.ts.map +1 -1
- package/dist/simple-tree/toStoredSchema.js +9 -5
- package/dist/simple-tree/toStoredSchema.js.map +1 -1
- package/dist/treeFactory.js +7 -3
- package/dist/treeFactory.js.map +1 -1
- package/dist/util/bTreeUtils.js +1 -1
- package/dist/util/bTreeUtils.js.map +1 -1
- package/dist/util/breakable.js +7 -9
- package/dist/util/breakable.js.map +1 -1
- package/dist/util/idAllocator.d.ts.map +1 -1
- package/dist/util/idAllocator.js +1 -2
- package/dist/util/idAllocator.js.map +1 -1
- package/dist/util/nestedMap.d.ts.map +1 -1
- package/dist/util/nestedMap.js +1 -1
- package/dist/util/nestedMap.js.map +1 -1
- package/dist/util/utils.d.ts.map +1 -1
- package/dist/util/utils.js +16 -15
- package/dist/util/utils.js.map +1 -1
- package/eslint.config.mts +1 -16
- package/lib/alpha.d.ts +4 -0
- package/lib/codec/codec.d.ts +31 -3
- package/lib/codec/codec.d.ts.map +1 -1
- package/lib/codec/codec.js +10 -0
- package/lib/codec/codec.js.map +1 -1
- package/lib/codec/index.d.ts +2 -2
- 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 +80 -22
- package/lib/codec/versioned/codec.d.ts.map +1 -1
- package/lib/codec/versioned/codec.js +138 -15
- package/lib/codec/versioned/codec.js.map +1 -1
- package/lib/codec/versioned/index.d.ts +1 -1
- package/lib/codec/versioned/index.d.ts.map +1 -1
- package/lib/codec/versioned/index.js +1 -1
- package/lib/codec/versioned/index.js.map +1 -1
- 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/changeRebaser.d.ts +36 -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 +2 -2
- 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 +6 -2
- package/lib/core/rebase/types.d.ts.map +1 -1
- package/lib/core/rebase/types.js +0 -10
- package/lib/core/rebase/types.js.map +1 -1
- package/lib/core/rebase/utils.js +3 -3
- package/lib/core/rebase/utils.js.map +1 -1
- package/lib/core/schema-stored/schema.js +3 -3
- 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 +3 -4
- package/lib/core/tree/anchorSet.js.map +1 -1
- package/lib/core/tree/detachedFieldIndex.d.ts +1 -2
- package/lib/core/tree/detachedFieldIndex.d.ts.map +1 -1
- package/lib/core/tree/detachedFieldIndex.js +13 -57
- package/lib/core/tree/detachedFieldIndex.js.map +1 -1
- package/lib/core/tree/detachedFieldIndexCodecCommon.d.ts +18 -10
- package/lib/core/tree/detachedFieldIndexCodecCommon.d.ts.map +1 -1
- package/lib/core/tree/detachedFieldIndexCodecCommon.js +4 -4
- package/lib/core/tree/detachedFieldIndexCodecCommon.js.map +1 -1
- package/lib/core/tree/detachedFieldIndexCodecV1.d.ts +2 -3
- package/lib/core/tree/detachedFieldIndexCodecV1.d.ts.map +1 -1
- package/lib/core/tree/detachedFieldIndexCodecV1.js +4 -5
- package/lib/core/tree/detachedFieldIndexCodecV1.js.map +1 -1
- package/lib/core/tree/detachedFieldIndexCodecV2.d.ts +2 -3
- package/lib/core/tree/detachedFieldIndexCodecV2.d.ts.map +1 -1
- package/lib/core/tree/detachedFieldIndexCodecV2.js +4 -6
- package/lib/core/tree/detachedFieldIndexCodecV2.js.map +1 -1
- package/lib/core/tree/detachedFieldIndexCodecs.d.ts +5 -6
- package/lib/core/tree/detachedFieldIndexCodecs.d.ts.map +1 -1
- package/lib/core/tree/detachedFieldIndexCodecs.js +12 -39
- package/lib/core/tree/detachedFieldIndexCodecs.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/mapTree.js +1 -1
- package/lib/core/tree/mapTree.js.map +1 -1
- package/lib/core/tree/sparseTree.d.ts.map +1 -1
- package/lib/core/tree/sparseTree.js +1 -0
- package/lib/core/tree/sparseTree.js.map +1 -1
- package/lib/core/tree/treeTextFormat.d.ts.map +1 -1
- package/lib/core/tree/treeTextFormat.js +5 -9
- package/lib/core/tree/treeTextFormat.js.map +1 -1
- package/lib/feature-libraries/changeAtomIdBTree.d.ts +10 -0
- package/lib/feature-libraries/changeAtomIdBTree.d.ts.map +1 -0
- package/lib/feature-libraries/changeAtomIdBTree.js +11 -0
- package/lib/feature-libraries/changeAtomIdBTree.js.map +1 -0
- package/lib/feature-libraries/chunked-forest/basicChunk.js +1 -1
- package/lib/feature-libraries/chunked-forest/basicChunk.js.map +1 -1
- package/lib/feature-libraries/chunked-forest/chunkedForest.js +6 -6
- package/lib/feature-libraries/chunked-forest/chunkedForest.js.map +1 -1
- package/lib/feature-libraries/chunked-forest/codec/chunkDecoding.d.ts.map +1 -1
- package/lib/feature-libraries/chunked-forest/codec/chunkDecoding.js +7 -4
- package/lib/feature-libraries/chunked-forest/codec/chunkDecoding.js.map +1 -1
- package/lib/feature-libraries/chunked-forest/codec/codecs.d.ts.map +1 -1
- package/lib/feature-libraries/chunked-forest/codec/codecs.js +19 -11
- package/lib/feature-libraries/chunked-forest/codec/codecs.js.map +1 -1
- package/lib/feature-libraries/chunked-forest/codec/compressedEncode.js +3 -3
- package/lib/feature-libraries/chunked-forest/codec/compressedEncode.js.map +1 -1
- package/lib/feature-libraries/chunked-forest/codec/schemaBasedEncode.js +9 -5
- package/lib/feature-libraries/chunked-forest/codec/schemaBasedEncode.js.map +1 -1
- package/lib/feature-libraries/chunked-forest/uniformChunk.js +1 -1
- package/lib/feature-libraries/chunked-forest/uniformChunk.js.map +1 -1
- package/lib/feature-libraries/default-schema/defaultEditBuilder.d.ts +15 -5
- package/lib/feature-libraries/default-schema/defaultEditBuilder.d.ts.map +1 -1
- package/lib/feature-libraries/default-schema/defaultEditBuilder.js +19 -14
- package/lib/feature-libraries/default-schema/defaultEditBuilder.js.map +1 -1
- package/lib/feature-libraries/default-schema/defaultFieldKinds.d.ts +1 -1
- package/lib/feature-libraries/default-schema/defaultFieldKinds.d.ts.map +1 -1
- package/lib/feature-libraries/default-schema/defaultFieldKinds.js +11 -1
- package/lib/feature-libraries/default-schema/defaultFieldKinds.js.map +1 -1
- package/lib/feature-libraries/default-schema/mappedEditBuilder.d.ts +2 -0
- package/lib/feature-libraries/default-schema/mappedEditBuilder.d.ts.map +1 -1
- package/lib/feature-libraries/default-schema/mappedEditBuilder.js +6 -0
- package/lib/feature-libraries/default-schema/mappedEditBuilder.js.map +1 -1
- package/lib/feature-libraries/flex-tree/lazyField.d.ts.map +1 -1
- package/lib/feature-libraries/flex-tree/lazyField.js +11 -13
- package/lib/feature-libraries/flex-tree/lazyField.js.map +1 -1
- package/lib/feature-libraries/index.d.ts +3 -2
- package/lib/feature-libraries/index.d.ts.map +1 -1
- package/lib/feature-libraries/index.js +3 -2
- package/lib/feature-libraries/index.js.map +1 -1
- package/lib/feature-libraries/indexing/anchorTreeIndex.js +6 -6
- package/lib/feature-libraries/indexing/anchorTreeIndex.js.map +1 -1
- package/lib/feature-libraries/mitigatedChangeFamily.d.ts.map +1 -1
- package/lib/feature-libraries/mitigatedChangeFamily.js +10 -1
- package/lib/feature-libraries/mitigatedChangeFamily.js.map +1 -1
- package/lib/feature-libraries/modular-schema/comparison.d.ts.map +1 -1
- package/lib/feature-libraries/modular-schema/comparison.js +12 -9
- package/lib/feature-libraries/modular-schema/comparison.js.map +1 -1
- package/lib/feature-libraries/modular-schema/defaultRevisionReplacer.d.ts +25 -0
- package/lib/feature-libraries/modular-schema/defaultRevisionReplacer.d.ts.map +1 -0
- package/lib/feature-libraries/modular-schema/defaultRevisionReplacer.js +55 -0
- package/lib/feature-libraries/modular-schema/defaultRevisionReplacer.js.map +1 -0
- package/lib/feature-libraries/modular-schema/fieldChangeHandler.d.ts +3 -3
- 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 +5 -5
- package/lib/feature-libraries/modular-schema/genericFieldKind.js.map +1 -1
- package/lib/feature-libraries/modular-schema/genericFieldKindCodecs.js +1 -1
- package/lib/feature-libraries/modular-schema/genericFieldKindCodecs.js.map +1 -1
- package/lib/feature-libraries/modular-schema/index.d.ts +4 -2
- package/lib/feature-libraries/modular-schema/index.d.ts.map +1 -1
- package/lib/feature-libraries/modular-schema/index.js +3 -1
- package/lib/feature-libraries/modular-schema/index.js.map +1 -1
- package/lib/feature-libraries/modular-schema/modularChangeCodecV1.d.ts +49 -0
- package/lib/feature-libraries/modular-schema/modularChangeCodecV1.d.ts.map +1 -0
- package/lib/feature-libraries/modular-schema/modularChangeCodecV1.js +298 -0
- package/lib/feature-libraries/modular-schema/modularChangeCodecV1.js.map +1 -0
- package/lib/feature-libraries/modular-schema/modularChangeCodecV2.d.ts +15 -0
- package/lib/feature-libraries/modular-schema/modularChangeCodecV2.d.ts.map +1 -0
- package/lib/feature-libraries/modular-schema/modularChangeCodecV2.js +27 -0
- package/lib/feature-libraries/modular-schema/modularChangeCodecV2.js.map +1 -0
- package/lib/feature-libraries/modular-schema/modularChangeCodecs.d.ts +2 -2
- package/lib/feature-libraries/modular-schema/modularChangeCodecs.d.ts.map +1 -1
- package/lib/feature-libraries/modular-schema/modularChangeCodecs.js +27 -290
- package/lib/feature-libraries/modular-schema/modularChangeCodecs.js.map +1 -1
- package/lib/feature-libraries/modular-schema/modularChangeFamily.d.ts +14 -8
- package/lib/feature-libraries/modular-schema/modularChangeFamily.d.ts.map +1 -1
- package/lib/feature-libraries/modular-schema/modularChangeFamily.js +118 -88
- package/lib/feature-libraries/modular-schema/modularChangeFamily.js.map +1 -1
- package/lib/feature-libraries/modular-schema/{modularChangeFormat.d.ts → modularChangeFormatV1.d.ts} +5 -6
- package/lib/feature-libraries/modular-schema/modularChangeFormatV1.d.ts.map +1 -0
- package/lib/feature-libraries/modular-schema/{modularChangeFormat.js → modularChangeFormatV1.js} +4 -4
- package/lib/feature-libraries/modular-schema/modularChangeFormatV1.js.map +1 -0
- package/lib/feature-libraries/modular-schema/modularChangeFormatV2.d.ts +112 -0
- package/lib/feature-libraries/modular-schema/modularChangeFormatV2.d.ts.map +1 -0
- package/lib/feature-libraries/modular-schema/modularChangeFormatV2.js +18 -0
- package/lib/feature-libraries/modular-schema/modularChangeFormatV2.js.map +1 -0
- package/lib/feature-libraries/modular-schema/modularChangeTypes.d.ts +13 -3
- package/lib/feature-libraries/modular-schema/modularChangeTypes.d.ts.map +1 -1
- package/lib/feature-libraries/modular-schema/modularChangeTypes.js.map +1 -1
- package/lib/feature-libraries/node-identifier/mockNodeIdentifierManager.js +1 -1
- package/lib/feature-libraries/node-identifier/mockNodeIdentifierManager.js.map +1 -1
- package/lib/feature-libraries/object-forest/objectForest.js +4 -4
- package/lib/feature-libraries/object-forest/objectForest.js.map +1 -1
- package/lib/feature-libraries/optional-field/optionalField.d.ts.map +1 -1
- package/lib/feature-libraries/optional-field/optionalField.js +35 -40
- package/lib/feature-libraries/optional-field/optionalField.js.map +1 -1
- package/lib/feature-libraries/schema-edits/schemaChangeCodecs.d.ts.map +1 -1
- package/lib/feature-libraries/schema-edits/schemaChangeCodecs.js +15 -3
- package/lib/feature-libraries/schema-edits/schemaChangeCodecs.js.map +1 -1
- package/lib/feature-libraries/schema-index/codec.d.ts +7 -21
- package/lib/feature-libraries/schema-index/codec.d.ts.map +1 -1
- package/lib/feature-libraries/schema-index/codec.js +30 -68
- package/lib/feature-libraries/schema-index/codec.js.map +1 -1
- package/lib/feature-libraries/schema-index/index.d.ts +2 -2
- package/lib/feature-libraries/schema-index/index.d.ts.map +1 -1
- package/lib/feature-libraries/schema-index/index.js +2 -2
- package/lib/feature-libraries/schema-index/index.js.map +1 -1
- package/lib/feature-libraries/schema-index/schemaSummarizer.d.ts +1 -9
- package/lib/feature-libraries/schema-index/schemaSummarizer.d.ts.map +1 -1
- package/lib/feature-libraries/schema-index/schemaSummarizer.js +0 -10
- package/lib/feature-libraries/schema-index/schemaSummarizer.js.map +1 -1
- package/lib/feature-libraries/schemaChecker.d.ts.map +1 -1
- package/lib/feature-libraries/schemaChecker.js +11 -6
- package/lib/feature-libraries/schemaChecker.js.map +1 -1
- package/lib/feature-libraries/sequence-field/compose.d.ts.map +1 -1
- package/lib/feature-libraries/sequence-field/compose.js +17 -13
- package/lib/feature-libraries/sequence-field/compose.js.map +1 -1
- package/lib/feature-libraries/sequence-field/invert.js +5 -4
- package/lib/feature-libraries/sequence-field/invert.js.map +1 -1
- package/lib/feature-libraries/sequence-field/moveEffectTable.d.ts.map +1 -1
- package/lib/feature-libraries/sequence-field/moveEffectTable.js +15 -9
- package/lib/feature-libraries/sequence-field/moveEffectTable.js.map +1 -1
- package/lib/feature-libraries/sequence-field/rebase.js +26 -18
- package/lib/feature-libraries/sequence-field/rebase.js.map +1 -1
- package/lib/feature-libraries/sequence-field/replaceRevisions.d.ts +2 -2
- package/lib/feature-libraries/sequence-field/replaceRevisions.d.ts.map +1 -1
- package/lib/feature-libraries/sequence-field/replaceRevisions.js +41 -36
- package/lib/feature-libraries/sequence-field/replaceRevisions.js.map +1 -1
- package/lib/feature-libraries/sequence-field/sequenceFieldCodecV2.d.ts.map +1 -1
- package/lib/feature-libraries/sequence-field/sequenceFieldCodecV2.js +16 -8
- package/lib/feature-libraries/sequence-field/sequenceFieldCodecV2.js.map +1 -1
- package/lib/feature-libraries/sequence-field/sequenceFieldCodecV3.d.ts.map +1 -1
- package/lib/feature-libraries/sequence-field/sequenceFieldCodecV3.js +4 -2
- package/lib/feature-libraries/sequence-field/sequenceFieldCodecV3.js.map +1 -1
- package/lib/feature-libraries/sequence-field/sequenceFieldToDelta.d.ts.map +1 -1
- package/lib/feature-libraries/sequence-field/sequenceFieldToDelta.js +6 -3
- package/lib/feature-libraries/sequence-field/sequenceFieldToDelta.js.map +1 -1
- package/lib/feature-libraries/sequence-field/utils.d.ts.map +1 -1
- package/lib/feature-libraries/sequence-field/utils.js +46 -27
- package/lib/feature-libraries/sequence-field/utils.js.map +1 -1
- package/lib/feature-libraries/treeCursorUtils.js +7 -7
- package/lib/feature-libraries/treeCursorUtils.js.map +1 -1
- package/lib/feature-libraries/treeTextCursor.js +2 -2
- package/lib/feature-libraries/treeTextCursor.js.map +1 -1
- package/lib/feature-libraries/valueUtilities.d.ts.map +1 -1
- package/lib/feature-libraries/valueUtilities.js +16 -8
- package/lib/feature-libraries/valueUtilities.js.map +1 -1
- package/lib/index.d.ts +2 -2
- package/lib/index.d.ts.map +1 -1
- package/lib/index.js.map +1 -1
- package/lib/packageVersion.d.ts +1 -1
- package/lib/packageVersion.js +1 -1
- package/lib/packageVersion.js.map +1 -1
- package/lib/shared-tree/schematizingTreeView.d.ts +2 -3
- package/lib/shared-tree/schematizingTreeView.d.ts.map +1 -1
- package/lib/shared-tree/schematizingTreeView.js +20 -9
- package/lib/shared-tree/schematizingTreeView.js.map +1 -1
- package/lib/shared-tree/sharedTree.d.ts.map +1 -1
- package/lib/shared-tree/sharedTree.js +30 -13
- package/lib/shared-tree/sharedTree.js.map +1 -1
- package/lib/shared-tree/sharedTreeChangeCodecs.d.ts +1 -1
- package/lib/shared-tree/sharedTreeChangeCodecs.d.ts.map +1 -1
- package/lib/shared-tree/sharedTreeChangeCodecs.js +9 -8
- package/lib/shared-tree/sharedTreeChangeCodecs.js.map +1 -1
- package/lib/shared-tree/sharedTreeChangeEnricher.d.ts.map +1 -1
- package/lib/shared-tree/sharedTreeChangeEnricher.js +4 -2
- package/lib/shared-tree/sharedTreeChangeEnricher.js.map +1 -1
- package/lib/shared-tree/sharedTreeChangeFamily.d.ts +3 -2
- package/lib/shared-tree/sharedTreeChangeFamily.d.ts.map +1 -1
- package/lib/shared-tree/sharedTreeChangeFamily.js +19 -14
- package/lib/shared-tree/sharedTreeChangeFamily.js.map +1 -1
- package/lib/shared-tree/sharedTreeEditBuilder.d.ts.map +1 -1
- package/lib/shared-tree/sharedTreeEditBuilder.js +1 -1
- package/lib/shared-tree/sharedTreeEditBuilder.js.map +1 -1
- package/lib/shared-tree/treeAlpha.d.ts +35 -29
- package/lib/shared-tree/treeAlpha.d.ts.map +1 -1
- package/lib/shared-tree/treeAlpha.js +21 -23
- package/lib/shared-tree/treeAlpha.js.map +1 -1
- package/lib/shared-tree/treeCheckout.d.ts +2 -0
- package/lib/shared-tree/treeCheckout.d.ts.map +1 -1
- package/lib/shared-tree/treeCheckout.js +32 -19
- package/lib/shared-tree/treeCheckout.js.map +1 -1
- package/lib/shared-tree-core/branch.d.ts +3 -1
- package/lib/shared-tree-core/branch.d.ts.map +1 -1
- package/lib/shared-tree-core/branch.js +5 -3
- package/lib/shared-tree-core/branch.js.map +1 -1
- package/lib/shared-tree-core/branchCommitEnricher.d.ts.map +1 -1
- package/lib/shared-tree-core/branchCommitEnricher.js +2 -2
- package/lib/shared-tree-core/branchCommitEnricher.js.map +1 -1
- package/lib/shared-tree-core/editManager.js +1 -1
- package/lib/shared-tree-core/editManager.js.map +1 -1
- package/lib/shared-tree-core/editManagerCodecs.d.ts.map +1 -1
- package/lib/shared-tree-core/editManagerCodecs.js +9 -4
- package/lib/shared-tree-core/editManagerCodecs.js.map +1 -1
- package/lib/shared-tree-core/editManagerFormatCommons.d.ts +1 -0
- package/lib/shared-tree-core/editManagerFormatCommons.d.ts.map +1 -1
- package/lib/shared-tree-core/editManagerFormatCommons.js +6 -0
- package/lib/shared-tree-core/editManagerFormatCommons.js.map +1 -1
- package/lib/shared-tree-core/editManagerFormatV1toV4.d.ts +2 -2
- package/lib/shared-tree-core/editManagerFormatV1toV4.d.ts.map +1 -1
- package/lib/shared-tree-core/editManagerFormatV1toV4.js +1 -0
- package/lib/shared-tree-core/editManagerFormatV1toV4.js.map +1 -1
- package/lib/shared-tree-core/editManagerSummarizer.js +3 -3
- package/lib/shared-tree-core/editManagerSummarizer.js.map +1 -1
- package/lib/shared-tree-core/messageCodecV1ToV4.d.ts +1 -1
- package/lib/shared-tree-core/messageCodecV1ToV4.d.ts.map +1 -1
- package/lib/shared-tree-core/messageCodecV1ToV4.js.map +1 -1
- package/lib/shared-tree-core/messageCodecVSharedBranches.d.ts.map +1 -1
- package/lib/shared-tree-core/messageCodecVSharedBranches.js +2 -1
- package/lib/shared-tree-core/messageCodecVSharedBranches.js.map +1 -1
- package/lib/shared-tree-core/messageCodecs.d.ts.map +1 -1
- package/lib/shared-tree-core/messageCodecs.js +8 -4
- package/lib/shared-tree-core/messageCodecs.js.map +1 -1
- package/lib/shared-tree-core/messageFormat.d.ts +1 -0
- package/lib/shared-tree-core/messageFormat.d.ts.map +1 -1
- package/lib/shared-tree-core/messageFormat.js +6 -0
- package/lib/shared-tree-core/messageFormat.js.map +1 -1
- package/lib/shared-tree-core/messageFormatV1ToV4.d.ts +3 -2
- package/lib/shared-tree-core/messageFormatV1ToV4.d.ts.map +1 -1
- package/lib/shared-tree-core/messageFormatV1ToV4.js +8 -1
- package/lib/shared-tree-core/messageFormatV1ToV4.js.map +1 -1
- package/lib/shared-tree-core/sequenceIdUtils.d.ts.map +1 -1
- package/lib/shared-tree-core/sequenceIdUtils.js +4 -4
- package/lib/shared-tree-core/sequenceIdUtils.js.map +1 -1
- package/lib/shared-tree-core/sharedTreeCore.d.ts.map +1 -1
- package/lib/shared-tree-core/sharedTreeCore.js +12 -8
- package/lib/shared-tree-core/sharedTreeCore.js.map +1 -1
- package/lib/shared-tree-core/transaction.d.ts +25 -8
- package/lib/shared-tree-core/transaction.d.ts.map +1 -1
- package/lib/shared-tree-core/transaction.js +67 -32
- package/lib/shared-tree-core/transaction.js.map +1 -1
- package/lib/shared-tree-core/transactionEnricher.d.ts +2 -2
- package/lib/shared-tree-core/transactionEnricher.d.ts.map +1 -1
- package/lib/shared-tree-core/transactionEnricher.js +3 -3
- package/lib/shared-tree-core/transactionEnricher.js.map +1 -1
- package/lib/simple-tree/api/configuration.js +1 -1
- package/lib/simple-tree/api/configuration.js.map +1 -1
- package/lib/simple-tree/api/customTree.d.ts.map +1 -1
- package/lib/simple-tree/api/customTree.js +13 -9
- package/lib/simple-tree/api/customTree.js.map +1 -1
- package/lib/simple-tree/api/discrepancies.d.ts.map +1 -1
- package/lib/simple-tree/api/discrepancies.js +21 -17
- package/lib/simple-tree/api/discrepancies.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.map +1 -1
- package/lib/simple-tree/api/schemaFactory.d.ts.map +1 -1
- package/lib/simple-tree/api/schemaFactory.js +12 -8
- package/lib/simple-tree/api/schemaFactory.js.map +1 -1
- package/lib/simple-tree/api/schemaFromSimple.js +18 -9
- package/lib/simple-tree/api/schemaFromSimple.js.map +1 -1
- package/lib/simple-tree/api/simpleSchemaCodec.js +10 -5
- package/lib/simple-tree/api/simpleSchemaCodec.js.map +1 -1
- package/lib/simple-tree/api/simpleSchemaToJsonSchema.d.ts.map +1 -1
- package/lib/simple-tree/api/simpleSchemaToJsonSchema.js +15 -11
- package/lib/simple-tree/api/simpleSchemaToJsonSchema.js.map +1 -1
- package/lib/simple-tree/api/simpleTreeIndex.js +10 -10
- package/lib/simple-tree/api/simpleTreeIndex.js.map +1 -1
- package/lib/simple-tree/api/storedSchema.d.ts.map +1 -1
- package/lib/simple-tree/api/storedSchema.js +4 -7
- package/lib/simple-tree/api/storedSchema.js.map +1 -1
- package/lib/simple-tree/api/transactionTypes.d.ts +17 -4
- 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/treeNodeApi.d.ts.map +1 -1
- package/lib/simple-tree/api/treeNodeApi.js +21 -13
- package/lib/simple-tree/api/treeNodeApi.js.map +1 -1
- package/lib/simple-tree/api/verboseTree.d.ts.map +1 -1
- package/lib/simple-tree/api/verboseTree.js +14 -9
- package/lib/simple-tree/api/verboseTree.js.map +1 -1
- package/lib/simple-tree/core/treeNodeKernel.d.ts.map +1 -1
- package/lib/simple-tree/core/treeNodeKernel.js +6 -3
- package/lib/simple-tree/core/treeNodeKernel.js.map +1 -1
- package/lib/simple-tree/core/unhydratedFlexTree.d.ts.map +1 -1
- package/lib/simple-tree/core/unhydratedFlexTree.js +20 -15
- package/lib/simple-tree/core/unhydratedFlexTree.js.map +1 -1
- package/lib/simple-tree/getTreeNodeForField.d.ts.map +1 -1
- package/lib/simple-tree/getTreeNodeForField.js +2 -1
- package/lib/simple-tree/getTreeNodeForField.js.map +1 -1
- package/lib/simple-tree/index.d.ts +1 -1
- package/lib/simple-tree/index.d.ts.map +1 -1
- package/lib/simple-tree/index.js.map +1 -1
- package/lib/simple-tree/leafNodeSchema.js +9 -6
- package/lib/simple-tree/leafNodeSchema.js.map +1 -1
- package/lib/simple-tree/node-kinds/array/arrayNode.js +15 -15
- package/lib/simple-tree/node-kinds/array/arrayNode.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 +4 -5
- package/lib/simple-tree/node-kinds/object/objectNode.js.map +1 -1
- package/lib/simple-tree/node-kinds/record/recordNode.d.ts.map +1 -1
- package/lib/simple-tree/node-kinds/record/recordNode.js +2 -3
- package/lib/simple-tree/node-kinds/record/recordNode.js.map +1 -1
- package/lib/simple-tree/toStoredSchema.d.ts.map +1 -1
- package/lib/simple-tree/toStoredSchema.js +9 -5
- package/lib/simple-tree/toStoredSchema.js.map +1 -1
- package/lib/treeFactory.js +7 -3
- package/lib/treeFactory.js.map +1 -1
- package/lib/util/bTreeUtils.js +1 -1
- package/lib/util/bTreeUtils.js.map +1 -1
- package/lib/util/breakable.js +7 -9
- package/lib/util/breakable.js.map +1 -1
- package/lib/util/idAllocator.d.ts.map +1 -1
- package/lib/util/idAllocator.js +1 -2
- package/lib/util/idAllocator.js.map +1 -1
- package/lib/util/nestedMap.d.ts.map +1 -1
- package/lib/util/nestedMap.js +1 -1
- package/lib/util/nestedMap.js.map +1 -1
- package/lib/util/utils.d.ts.map +1 -1
- package/lib/util/utils.js +16 -15
- package/lib/util/utils.js.map +1 -1
- package/package.json +32 -32
- package/src/codec/codec.ts +48 -8
- package/src/codec/index.ts +4 -1
- package/src/codec/versioned/codec.ts +340 -22
- package/src/codec/versioned/index.ts +3 -1
- package/src/core/index.ts +2 -2
- package/src/core/rebase/changeRebaser.ts +40 -6
- package/src/core/rebase/index.ts +1 -1
- package/src/core/rebase/types.ts +6 -18
- package/src/core/rebase/utils.ts +3 -3
- package/src/core/schema-stored/schema.ts +3 -3
- package/src/core/tree/anchorSet.ts +3 -4
- package/src/core/tree/detachedFieldIndex.ts +13 -74
- package/src/core/tree/detachedFieldIndexCodecCommon.ts +4 -8
- package/src/core/tree/detachedFieldIndexCodecV1.ts +3 -7
- package/src/core/tree/detachedFieldIndexCodecV2.ts +5 -9
- package/src/core/tree/detachedFieldIndexCodecs.ts +21 -64
- package/src/core/tree/index.ts +1 -1
- package/src/core/tree/mapTree.ts +1 -1
- package/src/core/tree/sparseTree.ts +1 -0
- package/src/core/tree/treeTextFormat.ts +5 -9
- package/src/feature-libraries/changeAtomIdBTree.ts +24 -0
- package/src/feature-libraries/chunked-forest/basicChunk.ts +1 -1
- package/src/feature-libraries/chunked-forest/chunkedForest.ts +5 -5
- package/src/feature-libraries/chunked-forest/codec/chunkDecoding.ts +7 -4
- package/src/feature-libraries/chunked-forest/codec/codecs.ts +19 -11
- package/src/feature-libraries/chunked-forest/codec/compressedEncode.ts +3 -3
- package/src/feature-libraries/chunked-forest/codec/schemaBasedEncode.ts +9 -5
- package/src/feature-libraries/chunked-forest/uniformChunk.ts +1 -1
- package/src/feature-libraries/default-schema/defaultEditBuilder.ts +48 -17
- package/src/feature-libraries/default-schema/defaultFieldKinds.ts +12 -2
- package/src/feature-libraries/default-schema/mappedEditBuilder.ts +6 -0
- package/src/feature-libraries/flex-tree/lazyField.ts +13 -14
- package/src/feature-libraries/index.ts +10 -5
- package/src/feature-libraries/indexing/anchorTreeIndex.ts +5 -5
- package/src/feature-libraries/mitigatedChangeFamily.ts +11 -6
- package/src/feature-libraries/modular-schema/comparison.ts +12 -9
- package/src/feature-libraries/modular-schema/defaultRevisionReplacer.ts +70 -0
- package/src/feature-libraries/modular-schema/fieldChangeHandler.ts +3 -6
- package/src/feature-libraries/modular-schema/genericFieldKind.ts +5 -7
- package/src/feature-libraries/modular-schema/genericFieldKindCodecs.ts +1 -1
- package/src/feature-libraries/modular-schema/index.ts +5 -2
- package/src/feature-libraries/modular-schema/modularChangeCodecV1.ts +703 -0
- package/src/feature-libraries/modular-schema/modularChangeCodecV2.ts +89 -0
- package/src/feature-libraries/modular-schema/modularChangeCodecs.ts +39 -523
- package/src/feature-libraries/modular-schema/modularChangeFamily.ts +159 -125
- package/src/feature-libraries/modular-schema/{modularChangeFormat.ts → modularChangeFormatV1.ts} +4 -4
- package/src/feature-libraries/modular-schema/modularChangeFormatV2.ts +34 -0
- package/src/feature-libraries/modular-schema/modularChangeTypes.ts +13 -4
- package/src/feature-libraries/node-identifier/mockNodeIdentifierManager.ts +1 -1
- package/src/feature-libraries/object-forest/objectForest.ts +4 -4
- package/src/feature-libraries/optional-field/optionalField.ts +34 -46
- package/src/feature-libraries/schema-edits/schemaChangeCodecs.ts +18 -3
- package/src/feature-libraries/schema-index/codec.ts +30 -90
- package/src/feature-libraries/schema-index/index.ts +2 -4
- package/src/feature-libraries/schema-index/schemaSummarizer.ts +0 -17
- package/src/feature-libraries/schemaChecker.ts +11 -6
- package/src/feature-libraries/sequence-field/compose.ts +17 -13
- package/src/feature-libraries/sequence-field/invert.ts +5 -4
- package/src/feature-libraries/sequence-field/moveEffectTable.ts +15 -9
- package/src/feature-libraries/sequence-field/rebase.ts +26 -18
- package/src/feature-libraries/sequence-field/replaceRevisions.ts +52 -56
- package/src/feature-libraries/sequence-field/sequenceFieldCodecV2.ts +16 -8
- package/src/feature-libraries/sequence-field/sequenceFieldCodecV3.ts +4 -2
- package/src/feature-libraries/sequence-field/sequenceFieldToDelta.ts +6 -3
- package/src/feature-libraries/sequence-field/utils.ts +46 -27
- package/src/feature-libraries/treeCursorUtils.ts +7 -7
- package/src/feature-libraries/treeTextCursor.ts +2 -2
- package/src/feature-libraries/valueUtilities.ts +16 -8
- package/src/index.ts +4 -0
- package/src/packageVersion.ts +1 -1
- package/src/shared-tree/schematizingTreeView.ts +23 -13
- package/src/shared-tree/sharedTree.ts +30 -14
- package/src/shared-tree/sharedTreeChangeCodecs.ts +10 -9
- package/src/shared-tree/sharedTreeChangeEnricher.ts +4 -2
- package/src/shared-tree/sharedTreeChangeFamily.ts +29 -19
- package/src/shared-tree/sharedTreeEditBuilder.ts +9 -5
- package/src/shared-tree/treeAlpha.ts +60 -51
- package/src/shared-tree/treeCheckout.ts +66 -50
- package/src/shared-tree-core/branch.ts +8 -3
- package/src/shared-tree-core/branchCommitEnricher.ts +3 -8
- package/src/shared-tree-core/editManager.ts +1 -1
- package/src/shared-tree-core/editManagerCodecs.ts +9 -4
- package/src/shared-tree-core/editManagerFormatCommons.ts +6 -0
- package/src/shared-tree-core/editManagerFormatV1toV4.ts +3 -1
- package/src/shared-tree-core/editManagerSummarizer.ts +3 -3
- package/src/shared-tree-core/messageCodecV1ToV4.ts +2 -1
- package/src/shared-tree-core/messageCodecVSharedBranches.ts +2 -1
- package/src/shared-tree-core/messageCodecs.ts +8 -4
- package/src/shared-tree-core/messageFormat.ts +6 -1
- package/src/shared-tree-core/messageFormatV1ToV4.ts +16 -2
- package/src/shared-tree-core/sequenceIdUtils.ts +4 -4
- package/src/shared-tree-core/sharedTreeCore.ts +11 -7
- package/src/shared-tree-core/transaction.ts +115 -56
- package/src/shared-tree-core/transactionEnricher.ts +5 -6
- package/src/simple-tree/api/configuration.ts +1 -1
- package/src/simple-tree/api/customTree.ts +14 -10
- package/src/simple-tree/api/discrepancies.ts +23 -17
- package/src/simple-tree/api/index.ts +2 -0
- package/src/simple-tree/api/schemaFactory.ts +11 -7
- package/src/simple-tree/api/schemaFromSimple.ts +18 -9
- package/src/simple-tree/api/simpleSchemaCodec.ts +10 -5
- package/src/simple-tree/api/simpleSchemaToJsonSchema.ts +17 -13
- package/src/simple-tree/api/simpleTreeIndex.ts +8 -8
- package/src/simple-tree/api/storedSchema.ts +10 -7
- package/src/simple-tree/api/transactionTypes.ts +19 -4
- package/src/simple-tree/api/treeNodeApi.ts +21 -13
- package/src/simple-tree/api/verboseTree.ts +14 -9
- package/src/simple-tree/core/treeNodeKernel.ts +6 -3
- package/src/simple-tree/core/unhydratedFlexTree.ts +22 -17
- package/src/simple-tree/getTreeNodeForField.ts +2 -1
- package/src/simple-tree/index.ts +2 -0
- package/src/simple-tree/leafNodeSchema.ts +8 -5
- package/src/simple-tree/node-kinds/array/arrayNode.ts +23 -23
- package/src/simple-tree/node-kinds/object/objectNode.ts +4 -5
- package/src/simple-tree/node-kinds/record/recordNode.ts +2 -3
- package/src/simple-tree/toStoredSchema.ts +9 -5
- package/src/treeFactory.ts +10 -5
- package/src/util/bTreeUtils.ts +1 -1
- package/src/util/breakable.ts +9 -9
- package/src/util/idAllocator.ts +1 -2
- package/src/util/nestedMap.ts +1 -3
- package/src/util/utils.ts +14 -13
- package/dist/feature-libraries/modular-schema/modularChangeFormat.d.ts.map +0 -1
- package/dist/feature-libraries/modular-schema/modularChangeFormat.js.map +0 -1
- package/lib/feature-libraries/modular-schema/modularChangeFormat.d.ts.map +0 -1
- package/lib/feature-libraries/modular-schema/modularChangeFormat.js.map +0 -1
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@fluidframework/tree",
|
|
3
|
-
"version": "2.
|
|
3
|
+
"version": "2.80.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.80.0",
|
|
105
|
+
"@fluidframework/container-runtime": "~2.80.0",
|
|
106
|
+
"@fluidframework/core-interfaces": "~2.80.0",
|
|
107
|
+
"@fluidframework/core-utils": "~2.80.0",
|
|
108
|
+
"@fluidframework/datastore-definitions": "~2.80.0",
|
|
109
|
+
"@fluidframework/driver-definitions": "~2.80.0",
|
|
110
|
+
"@fluidframework/id-compressor": "~2.80.0",
|
|
111
|
+
"@fluidframework/runtime-definitions": "~2.80.0",
|
|
112
|
+
"@fluidframework/runtime-utils": "~2.80.0",
|
|
113
|
+
"@fluidframework/shared-object-base": "~2.80.0",
|
|
114
|
+
"@fluidframework/telemetry-utils": "~2.80.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",
|
|
@@ -120,42 +120,42 @@
|
|
|
120
120
|
"uuid": "^11.1.0"
|
|
121
121
|
},
|
|
122
122
|
"devDependencies": {
|
|
123
|
-
"@arethetypeswrong/cli": "^0.
|
|
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.80.0",
|
|
126
|
+
"@fluid-private/stochastic-test-utils": "~2.80.0",
|
|
127
|
+
"@fluid-private/test-dds-utils": "~2.80.0",
|
|
128
|
+
"@fluid-private/test-drivers": "~2.80.0",
|
|
129
129
|
"@fluid-tools/benchmark": "^0.51.0",
|
|
130
|
-
"@fluid-tools/build-cli": "^0.
|
|
130
|
+
"@fluid-tools/build-cli": "^0.62.0",
|
|
131
131
|
"@fluidframework/build-common": "^2.0.3",
|
|
132
|
-
"@fluidframework/build-tools": "^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.
|
|
132
|
+
"@fluidframework/build-tools": "^0.62.0",
|
|
133
|
+
"@fluidframework/container-definitions": "~2.80.0",
|
|
134
|
+
"@fluidframework/container-loader": "~2.80.0",
|
|
135
|
+
"@fluidframework/eslint-config-fluid": "~2.80.0",
|
|
136
|
+
"@fluidframework/test-runtime-utils": "~2.80.0",
|
|
137
|
+
"@fluidframework/test-utils": "~2.80.0",
|
|
138
|
+
"@fluidframework/tree-previous": "npm:@fluidframework/tree@2.74.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
143
|
"@types/node": "^18.19.0",
|
|
144
|
-
"ajv": "^8.
|
|
144
|
+
"ajv": "^8.17.1",
|
|
145
145
|
"ajv-formats": "^3.0.1",
|
|
146
146
|
"c8": "^10.1.3",
|
|
147
|
-
"concurrently": "^
|
|
147
|
+
"concurrently": "^9.2.1",
|
|
148
148
|
"copyfiles": "^2.4.1",
|
|
149
|
-
"cross-env": "^
|
|
150
|
-
"dependency-cruiser": "^17.
|
|
149
|
+
"cross-env": "^10.1.0",
|
|
150
|
+
"dependency-cruiser": "^17.3.2",
|
|
151
151
|
"diff": "^3.5.0",
|
|
152
|
-
"easy-table": "^1.
|
|
153
|
-
"eslint": "~
|
|
152
|
+
"easy-table": "^1.2.0",
|
|
153
|
+
"eslint": "~9.39.1",
|
|
154
154
|
"eslint-config-prettier": "~10.1.8",
|
|
155
155
|
"jiti": "^2.6.1",
|
|
156
156
|
"mocha": "^10.8.2",
|
|
157
157
|
"mocha-multi-reporters": "^1.5.1",
|
|
158
|
-
"rimraf": "^
|
|
158
|
+
"rimraf": "^6.1.2",
|
|
159
159
|
"typescript": "~5.4.5"
|
|
160
160
|
},
|
|
161
161
|
"fluidBuild": {
|
package/src/codec/codec.ts
CHANGED
|
@@ -154,6 +154,18 @@ export interface CodecWriteOptions extends ICodecOptions {
|
|
|
154
154
|
* the data's format should be versioned and if they can't handle the format they should error.
|
|
155
155
|
*/
|
|
156
156
|
readonly minVersionForCollab: MinimumVersionForCollab;
|
|
157
|
+
|
|
158
|
+
/**
|
|
159
|
+
* Overrides the version of the codec to use for encoding.
|
|
160
|
+
* @remarks
|
|
161
|
+
* Without an override, the selected version will be based on {@link CodecWriteOptions.minVersionForCollab}.
|
|
162
|
+
*/
|
|
163
|
+
readonly writeVersionOverrides?: ReadonlyMap<CodecName, FormatVersion>;
|
|
164
|
+
|
|
165
|
+
/**
|
|
166
|
+
* If true, suppress errors when `writeVersionOverrides` selects a version which may not be compatible with the {@link CodecWriteOptions.minVersionForCollab}.
|
|
167
|
+
*/
|
|
168
|
+
readonly allowPossiblyIncompatibleWriteVersionOverrides?: boolean;
|
|
157
169
|
}
|
|
158
170
|
|
|
159
171
|
/**
|
|
@@ -252,13 +264,22 @@ export interface ICodecFamily<TDecoded, TContext = void> {
|
|
|
252
264
|
|
|
253
265
|
/**
|
|
254
266
|
* A version stamp for encoded data.
|
|
255
|
-
*
|
|
267
|
+
* @remarks
|
|
256
268
|
* Strings are used for formats that are not yet officially supported.
|
|
257
269
|
* When such formats become officially supported/stable, they will be switched to using a number.
|
|
258
270
|
* Undefined is tolerated to enable the scenario where data was not initially versioned.
|
|
271
|
+
* @alpha
|
|
259
272
|
*/
|
|
260
273
|
export type FormatVersion = number | string | undefined;
|
|
261
274
|
|
|
275
|
+
/**
|
|
276
|
+
* A unique name given to this codec family.
|
|
277
|
+
* @remarks
|
|
278
|
+
* This is not persisted: it is only used to specify version overrides and in errors.
|
|
279
|
+
* @alpha
|
|
280
|
+
*/
|
|
281
|
+
export type CodecName = string;
|
|
282
|
+
|
|
262
283
|
/**
|
|
263
284
|
* A format version which is dependent on some parent format version.
|
|
264
285
|
*/
|
|
@@ -374,9 +395,13 @@ function isJsonCodec<TDecoded, TContext>(
|
|
|
374
395
|
* Constructs a {@link IMultiFormatCodec} from a `IJsonCodec` using a generic binary encoding that simply writes
|
|
375
396
|
* the json representation of the object to a buffer.
|
|
376
397
|
*/
|
|
377
|
-
export function withDefaultBinaryEncoding<
|
|
378
|
-
|
|
379
|
-
|
|
398
|
+
export function withDefaultBinaryEncoding<
|
|
399
|
+
TDecoded,
|
|
400
|
+
TContext,
|
|
401
|
+
TEncoded extends JsonCompatibleReadOnly = JsonCompatibleReadOnly,
|
|
402
|
+
>(
|
|
403
|
+
jsonCodec: IJsonCodec<TDecoded, TEncoded, JsonCompatibleReadOnly, TContext>,
|
|
404
|
+
): IMultiFormatCodec<TDecoded, TEncoded, JsonCompatibleReadOnly, TContext> {
|
|
380
405
|
return {
|
|
381
406
|
json: jsonCodec,
|
|
382
407
|
binary: new DefaultBinaryCodec(jsonCodec),
|
|
@@ -387,11 +412,15 @@ export function withDefaultBinaryEncoding<TDecoded, TContext>(
|
|
|
387
412
|
* Ensures that the provided single or multi-format codec has a binary encoding.
|
|
388
413
|
* Adapts the json encoding using {@link withDefaultBinaryEncoding} if necessary.
|
|
389
414
|
*/
|
|
390
|
-
export function ensureBinaryEncoding<
|
|
415
|
+
export function ensureBinaryEncoding<
|
|
416
|
+
TDecoded,
|
|
417
|
+
TContext,
|
|
418
|
+
TEncoded extends JsonCompatibleReadOnly = JsonCompatibleReadOnly,
|
|
419
|
+
>(
|
|
391
420
|
codec:
|
|
392
|
-
| IMultiFormatCodec<TDecoded,
|
|
393
|
-
| IJsonCodec<TDecoded,
|
|
394
|
-
): IMultiFormatCodec<TDecoded,
|
|
421
|
+
| IMultiFormatCodec<TDecoded, TEncoded, JsonCompatibleReadOnly, TContext>
|
|
422
|
+
| IJsonCodec<TDecoded, TEncoded, JsonCompatibleReadOnly, TContext>,
|
|
423
|
+
): IMultiFormatCodec<TDecoded, TEncoded, JsonCompatibleReadOnly, TContext> {
|
|
395
424
|
return isJsonCodec(codec) ? withDefaultBinaryEncoding(codec) : codec;
|
|
396
425
|
}
|
|
397
426
|
|
|
@@ -548,6 +577,17 @@ export const FluidClientVersion = {
|
|
|
548
577
|
* - ForestSummaryFormatVersion.v3 - written when minVersionForCollab \>= 2.74
|
|
549
578
|
*/
|
|
550
579
|
v2_74: "2.74.0",
|
|
580
|
+
|
|
581
|
+
/**
|
|
582
|
+
* Fluid Framework Client 2.80 and newer.
|
|
583
|
+
* @remarks
|
|
584
|
+
* New formats introduced in 2.80:
|
|
585
|
+
* - MessageFormatVersion.v6 - written when minVersionForCollab \>= 2.80
|
|
586
|
+
* - EditManagerFormatVersion.v6 - written when minVersionForCollab \>= 2.80
|
|
587
|
+
* - SharedTreeChangeFormatVersion.v5 - written when minVersionForCollab \>= 2.80
|
|
588
|
+
* - ModularChangeFormatVersion.v5 - written when minVersionForCollab \>= 2.80
|
|
589
|
+
*/
|
|
590
|
+
v2_80: "2.80.0",
|
|
551
591
|
} as const satisfies Record<string, MinimumVersionForCollab>;
|
|
552
592
|
|
|
553
593
|
/**
|
package/src/codec/index.ts
CHANGED
|
@@ -28,6 +28,7 @@ export {
|
|
|
28
28
|
type CodecTree,
|
|
29
29
|
jsonableCodecTree,
|
|
30
30
|
extractJsonValidator,
|
|
31
|
+
type CodecName,
|
|
31
32
|
} from "./codec.js";
|
|
32
33
|
export {
|
|
33
34
|
DiscriminatedUnionDispatcher,
|
|
@@ -36,8 +37,10 @@ export {
|
|
|
36
37
|
} from "./discriminatedUnions.js";
|
|
37
38
|
export {
|
|
38
39
|
Versioned,
|
|
39
|
-
makeVersionedCodec,
|
|
40
40
|
makeVersionedValidatedCodec,
|
|
41
41
|
makeVersionDispatchingCodec,
|
|
42
42
|
makeDiscontinuedCodecVersion,
|
|
43
|
+
ClientVersionDispatchingCodecBuilder,
|
|
44
|
+
type CodecVersion,
|
|
45
|
+
type CodecAndSchema,
|
|
43
46
|
} from "./versioned/index.js";
|
|
@@ -5,10 +5,19 @@
|
|
|
5
5
|
|
|
6
6
|
import { assert } from "@fluidframework/core-utils/internal";
|
|
7
7
|
import { UsageError } from "@fluidframework/telemetry-utils/internal";
|
|
8
|
-
import
|
|
8
|
+
import {
|
|
9
|
+
getConfigForMinVersionForCollabIterable,
|
|
10
|
+
type ConfigMapEntry,
|
|
11
|
+
type MinimumMinorSemanticVersion,
|
|
12
|
+
type SemanticVersion,
|
|
13
|
+
} from "@fluidframework/runtime-utils/internal";
|
|
9
14
|
import { Type, type TSchema } from "@sinclair/typebox";
|
|
15
|
+
import { gt } from "semver-ts";
|
|
10
16
|
|
|
11
|
-
import type {
|
|
17
|
+
import type {
|
|
18
|
+
JsonCompatibleReadOnly,
|
|
19
|
+
JsonCompatibleReadOnlyObject,
|
|
20
|
+
} from "../../util/index.js";
|
|
12
21
|
import {
|
|
13
22
|
type ICodecFamily,
|
|
14
23
|
type ICodecOptions,
|
|
@@ -16,15 +25,24 @@ import {
|
|
|
16
25
|
withSchemaValidation,
|
|
17
26
|
type FormatVersion,
|
|
18
27
|
type CodecWriteOptions,
|
|
28
|
+
type IMultiFormatCodec,
|
|
29
|
+
type CodecName,
|
|
30
|
+
ensureBinaryEncoding,
|
|
31
|
+
type CodecTree,
|
|
19
32
|
} from "../codec.js";
|
|
20
33
|
|
|
21
34
|
import { Versioned } from "./format.js";
|
|
22
35
|
import { pkgVersion } from "../../packageVersion.js";
|
|
23
36
|
import type { MinimumVersionForCollab } from "@fluidframework/runtime-definitions/internal";
|
|
24
37
|
|
|
25
|
-
|
|
38
|
+
/**
|
|
39
|
+
* Json compatible data with a format version.
|
|
40
|
+
*/
|
|
41
|
+
type VersionedJson = JsonCompatibleReadOnlyObject & Versioned;
|
|
42
|
+
|
|
43
|
+
function makeVersionedCodec<
|
|
26
44
|
TDecoded,
|
|
27
|
-
TEncoded extends Versioned =
|
|
45
|
+
TEncoded extends Versioned = VersionedJson,
|
|
28
46
|
TValidate = TEncoded,
|
|
29
47
|
TContext = void,
|
|
30
48
|
>(
|
|
@@ -45,7 +63,7 @@ export function makeVersionedCodec<
|
|
|
45
63
|
const versioned = data as Versioned; // Validated by withSchemaValidation
|
|
46
64
|
if (!supportedVersions.has(versioned.version)) {
|
|
47
65
|
throw new UsageError(
|
|
48
|
-
`Unsupported version ${versioned.version} encountered while decoding data. Supported versions for this data are: ${
|
|
66
|
+
`Unsupported version ${versioned.version} encountered while decoding data. Supported versions for this data are: ${[...supportedVersions].join(", ")}.
|
|
49
67
|
The client which encoded this data likely specified an "minVersionForCollab" value which corresponds to a version newer than the version of this client ("${pkgVersion}").`,
|
|
50
68
|
);
|
|
51
69
|
}
|
|
@@ -59,10 +77,13 @@ The client which encoded this data likely specified an "minVersionForCollab" val
|
|
|
59
77
|
: withSchemaValidation(Versioned, codec, validator);
|
|
60
78
|
}
|
|
61
79
|
|
|
80
|
+
/**
|
|
81
|
+
* TODO: users of this should migrate to {@link ClientVersionDispatchingCodecBuilder}.
|
|
82
|
+
*/
|
|
62
83
|
export function makeVersionedValidatedCodec<
|
|
63
84
|
EncodedSchema extends TSchema,
|
|
64
85
|
TDecoded,
|
|
65
|
-
TEncoded extends Versioned =
|
|
86
|
+
TEncoded extends Versioned = VersionedJson,
|
|
66
87
|
TValidate = TEncoded,
|
|
67
88
|
TContext = void,
|
|
68
89
|
>(
|
|
@@ -80,10 +101,13 @@ export function makeVersionedValidatedCodec<
|
|
|
80
101
|
|
|
81
102
|
/**
|
|
82
103
|
* Creates a codec which always throws a UsageError when encoding or decoding, indicating that the format version is discontinued.
|
|
104
|
+
*
|
|
105
|
+
* TODO: {@link ClientVersionDispatchingCodecBuilder} should get support for extra decode only entries and/or unstable formats (codecs without a minVersionForCollab that will never be selected for write unless overridden).
|
|
106
|
+
* Once done, users of this should migrate to ClientVersionDispatchingCodecBuilder and this function can be simplified.
|
|
83
107
|
*/
|
|
84
108
|
export function makeDiscontinuedCodecVersion<
|
|
85
109
|
TDecoded,
|
|
86
|
-
TEncoded extends Versioned =
|
|
110
|
+
TEncoded extends Versioned = VersionedJson,
|
|
87
111
|
TContext = unknown,
|
|
88
112
|
>(
|
|
89
113
|
options: ICodecOptions,
|
|
@@ -103,12 +127,12 @@ export function makeDiscontinuedCodecVersion<
|
|
|
103
127
|
const codec: IJsonCodec<TDecoded, TEncoded, TEncoded, TContext> = {
|
|
104
128
|
encode: (_: TDecoded): TEncoded => {
|
|
105
129
|
throw new UsageError(
|
|
106
|
-
`Cannot encode data to format ${discontinuedVersion}. The codec was discontinued in
|
|
130
|
+
`Cannot encode data to format ${discontinuedVersion}. The codec was discontinued in Fluid Framework client version ${discontinuedSince}.`,
|
|
107
131
|
);
|
|
108
132
|
},
|
|
109
133
|
decode: (data: TEncoded): TDecoded => {
|
|
110
134
|
throw new UsageError(
|
|
111
|
-
`Cannot decode data to format ${data.version}. The codec was discontinued in
|
|
135
|
+
`Cannot decode data to format ${data.version}. The codec was discontinued in Fluid Framework client version ${discontinuedSince}.`,
|
|
112
136
|
);
|
|
113
137
|
},
|
|
114
138
|
};
|
|
@@ -125,7 +149,7 @@ export function makeDiscontinuedCodecVersion<
|
|
|
125
149
|
*/
|
|
126
150
|
export function makeVersionDispatchingCodec<TDecoded, TContext>(
|
|
127
151
|
family: ICodecFamily<TDecoded, TContext>,
|
|
128
|
-
options: ICodecOptions & { writeVersion:
|
|
152
|
+
options: ICodecOptions & { writeVersion: FormatVersion },
|
|
129
153
|
): IJsonCodec<TDecoded, JsonCompatibleReadOnly, JsonCompatibleReadOnly, TContext> {
|
|
130
154
|
const writeCodec = family.resolve(options.writeVersion).json;
|
|
131
155
|
const supportedVersions = new Set(family.getSupportedFormats());
|
|
@@ -140,30 +164,324 @@ export function makeVersionDispatchingCodec<TDecoded, TContext>(
|
|
|
140
164
|
});
|
|
141
165
|
}
|
|
142
166
|
|
|
167
|
+
/**
|
|
168
|
+
* A friendly format for codec authors use to define their codec and schema for use in {@link CodecVersion}.
|
|
169
|
+
* @remarks
|
|
170
|
+
* The codec should not perform its own schema validation.
|
|
171
|
+
* The schema validation gets added when normalizing to {@link NormalizedCodecVersion}.
|
|
172
|
+
*/
|
|
173
|
+
export type CodecAndSchema<TDecoded, TContext = void> = { readonly schema: TSchema } & (
|
|
174
|
+
| IMultiFormatCodec<TDecoded, VersionedJson, JsonCompatibleReadOnly, TContext>
|
|
175
|
+
| IJsonCodec<TDecoded, VersionedJson, JsonCompatibleReadOnly, TContext>
|
|
176
|
+
);
|
|
177
|
+
|
|
178
|
+
/**
|
|
179
|
+
* A codec alongside its format version and schema.
|
|
180
|
+
*/
|
|
181
|
+
export interface CodecVersionBase<
|
|
182
|
+
T = unknown,
|
|
183
|
+
TFormatVersion extends FormatVersion = FormatVersion,
|
|
184
|
+
> {
|
|
185
|
+
readonly formatVersion: TFormatVersion;
|
|
186
|
+
readonly codec: T;
|
|
187
|
+
}
|
|
188
|
+
|
|
189
|
+
/**
|
|
190
|
+
* A particular version of a codec and when to use it.
|
|
191
|
+
* @privateRemarks
|
|
192
|
+
* This allows lazy building of the codec with options.
|
|
193
|
+
* This option can likely be removed as the codec handling is made simpler and more consistent.
|
|
194
|
+
* Removing support for this laziness would be nice to help prevent unexpected coupling and alteration to codec behavior,
|
|
195
|
+
* helping ensure that tests and production code behave the same.
|
|
196
|
+
*/
|
|
197
|
+
export interface CodecVersion<
|
|
198
|
+
TDecoded,
|
|
199
|
+
TContext,
|
|
200
|
+
TFormatVersion extends FormatVersion,
|
|
201
|
+
TBuildOptions extends CodecWriteOptions,
|
|
202
|
+
> extends CodecVersionBase<
|
|
203
|
+
| CodecAndSchema<TDecoded, TContext>
|
|
204
|
+
| ((options: TBuildOptions) => CodecAndSchema<TDecoded, TContext>),
|
|
205
|
+
TFormatVersion
|
|
206
|
+
> {}
|
|
207
|
+
|
|
208
|
+
/**
|
|
209
|
+
* {@link CodecVersion} after normalization into a consistent type.
|
|
210
|
+
* @remarks
|
|
211
|
+
* Produced by {@link normalizeCodecVersion}.
|
|
212
|
+
* Includes schema validation.
|
|
213
|
+
*/
|
|
214
|
+
export interface NormalizedCodecVersion<
|
|
215
|
+
TDecoded,
|
|
216
|
+
TContext,
|
|
217
|
+
TFormatVersion extends FormatVersion,
|
|
218
|
+
TBuildOptions extends CodecWriteOptions,
|
|
219
|
+
> extends CodecVersionBase<
|
|
220
|
+
(
|
|
221
|
+
options: TBuildOptions,
|
|
222
|
+
) => IJsonCodec<TDecoded, VersionedJson, JsonCompatibleReadOnly, TContext>,
|
|
223
|
+
TFormatVersion
|
|
224
|
+
> {}
|
|
225
|
+
|
|
226
|
+
/**
|
|
227
|
+
* {@link NormalizedCodecVersion} after applying the build options.
|
|
228
|
+
* @remarks
|
|
229
|
+
* Produced by {@link ClientVersionDispatchingCodecBuilder.applyOptions}.
|
|
230
|
+
*/
|
|
231
|
+
export interface EvaluatedCodecVersion<
|
|
232
|
+
TDecoded,
|
|
233
|
+
TContext,
|
|
234
|
+
TFormatVersion extends FormatVersion,
|
|
235
|
+
> extends CodecVersionBase<
|
|
236
|
+
IJsonCodec<TDecoded, VersionedJson, JsonCompatibleReadOnly, TContext>,
|
|
237
|
+
TFormatVersion
|
|
238
|
+
> {}
|
|
239
|
+
|
|
240
|
+
/**
|
|
241
|
+
* Normalize the codec to a single format.
|
|
242
|
+
* @remarks
|
|
243
|
+
* Bakes in schema validation, so output no longer exposes the schema.
|
|
244
|
+
*/
|
|
245
|
+
function normalizeCodecVersion<
|
|
246
|
+
TDecoded,
|
|
247
|
+
TContext,
|
|
248
|
+
TFormatVersion extends FormatVersion,
|
|
249
|
+
TBuildOptions extends CodecWriteOptions,
|
|
250
|
+
>(
|
|
251
|
+
codecVersion: CodecVersion<TDecoded, TContext, TFormatVersion, TBuildOptions>,
|
|
252
|
+
): NormalizedCodecVersion<TDecoded, TContext, TFormatVersion, TBuildOptions> {
|
|
253
|
+
const codecBuilder: (options: TBuildOptions) => CodecAndSchema<TDecoded, TContext> =
|
|
254
|
+
typeof codecVersion.codec === "function"
|
|
255
|
+
? codecVersion.codec
|
|
256
|
+
: () => codecVersion.codec as CodecAndSchema<TDecoded, TContext>;
|
|
257
|
+
const codec = (
|
|
258
|
+
options: TBuildOptions,
|
|
259
|
+
): IJsonCodec<TDecoded, VersionedJson, JsonCompatibleReadOnly, TContext> => {
|
|
260
|
+
const built = codecBuilder(options);
|
|
261
|
+
// We currently don't expose or use binary formats, but someday we might.
|
|
262
|
+
const multiFormat = ensureBinaryEncoding<TDecoded, TContext, VersionedJson>(built);
|
|
263
|
+
return makeVersionedValidatedCodec(
|
|
264
|
+
options,
|
|
265
|
+
new Set([codecVersion.formatVersion]),
|
|
266
|
+
built.schema,
|
|
267
|
+
multiFormat.json,
|
|
268
|
+
);
|
|
269
|
+
};
|
|
270
|
+
|
|
271
|
+
return {
|
|
272
|
+
formatVersion: codecVersion.formatVersion,
|
|
273
|
+
codec,
|
|
274
|
+
};
|
|
275
|
+
}
|
|
276
|
+
|
|
143
277
|
/**
|
|
144
278
|
* Creates a codec which dispatches to the appropriate member of a codec family based on the `minVersionForCollab` for encode and the
|
|
145
279
|
* version number in data it encounters for decode.
|
|
146
280
|
* @privateRemarks
|
|
147
281
|
* This is a two stage builder so the first stage can encapsulate all codec specific details and the second can bring in configuration.
|
|
148
282
|
*/
|
|
149
|
-
export class ClientVersionDispatchingCodecBuilder<
|
|
150
|
-
|
|
283
|
+
export class ClientVersionDispatchingCodecBuilder<
|
|
284
|
+
Name extends CodecName,
|
|
285
|
+
TDecoded,
|
|
286
|
+
TContext,
|
|
287
|
+
TFormatVersion extends FormatVersion,
|
|
288
|
+
TBuildOptions extends CodecWriteOptions,
|
|
289
|
+
> {
|
|
290
|
+
public readonly registry: ReadonlyMap<
|
|
291
|
+
MinimumVersionForCollab,
|
|
292
|
+
NormalizedCodecVersion<TDecoded, TContext, TFormatVersion, TBuildOptions>
|
|
293
|
+
>;
|
|
294
|
+
|
|
295
|
+
/**
|
|
296
|
+
* Use {@link ClientVersionDispatchingCodecBuilder.build} to create an instance of this class.
|
|
297
|
+
*/
|
|
298
|
+
private constructor(
|
|
151
299
|
/**
|
|
152
|
-
*
|
|
300
|
+
* See {@link CodecName}.
|
|
153
301
|
*/
|
|
154
|
-
|
|
302
|
+
public readonly name: Name,
|
|
155
303
|
/**
|
|
156
|
-
*
|
|
157
|
-
* This can (and typically does) pick the newest version of the codec which is known to be compatible with the client version so that
|
|
158
|
-
* any improvements in newer versions of the codec can be used when allowed.
|
|
304
|
+
* The registry of codecs which this builder can use to encode and decode data.
|
|
159
305
|
*/
|
|
160
|
-
|
|
161
|
-
|
|
306
|
+
inputRegistry: ConfigMapEntry<
|
|
307
|
+
CodecVersion<TDecoded, TContext, TFormatVersion, TBuildOptions>
|
|
308
|
+
>,
|
|
309
|
+
) {
|
|
310
|
+
type Normalized = NormalizedCodecVersion<
|
|
311
|
+
TDecoded,
|
|
312
|
+
TContext,
|
|
313
|
+
TFormatVersion,
|
|
314
|
+
TBuildOptions
|
|
315
|
+
>;
|
|
316
|
+
const normalizedRegistry = new Map<MinimumVersionForCollab, Normalized>();
|
|
317
|
+
|
|
318
|
+
for (const [minVersionForCollab, codec] of Object.entries(inputRegistry) as Iterable<
|
|
319
|
+
[
|
|
320
|
+
MinimumVersionForCollab,
|
|
321
|
+
CodecVersion<TDecoded, TContext, TFormatVersion, TBuildOptions>,
|
|
322
|
+
]
|
|
323
|
+
>) {
|
|
324
|
+
const normalizedCodec = normalizeCodecVersion(codec);
|
|
325
|
+
normalizedRegistry.set(minVersionForCollab, normalizedCodec);
|
|
326
|
+
}
|
|
327
|
+
|
|
328
|
+
this.registry = normalizedRegistry;
|
|
329
|
+
}
|
|
162
330
|
|
|
331
|
+
/**
|
|
332
|
+
* Applies the provided options to the codec registry to produce a list of evaluated codecs.
|
|
333
|
+
* @remarks
|
|
334
|
+
* This is used by build, which is what production code should use.
|
|
335
|
+
* This is only exposed for testing purposes.
|
|
336
|
+
*/
|
|
337
|
+
public applyOptions(
|
|
338
|
+
options: TBuildOptions,
|
|
339
|
+
): [MinimumVersionForCollab, EvaluatedCodecVersion<TDecoded, TContext, TFormatVersion>][] {
|
|
340
|
+
return Array.from(
|
|
341
|
+
this.registry,
|
|
342
|
+
([version, codec]) =>
|
|
343
|
+
[
|
|
344
|
+
version,
|
|
345
|
+
{
|
|
346
|
+
formatVersion: codec.formatVersion,
|
|
347
|
+
codec: codec.codec(options),
|
|
348
|
+
},
|
|
349
|
+
] as const,
|
|
350
|
+
);
|
|
351
|
+
}
|
|
352
|
+
|
|
353
|
+
/**
|
|
354
|
+
* Produce a single codec which can read any supported format, and writes a version selected based on the provided options.
|
|
355
|
+
*/
|
|
163
356
|
public build(
|
|
164
|
-
options:
|
|
357
|
+
options: TBuildOptions,
|
|
165
358
|
): IJsonCodec<TDecoded, JsonCompatibleReadOnly, JsonCompatibleReadOnly, TContext> {
|
|
166
|
-
const
|
|
167
|
-
|
|
359
|
+
const applied = this.applyOptions(options);
|
|
360
|
+
const writeVersion = getWriteVersion(this.name, options, applied);
|
|
361
|
+
const fromFormatVersion = new Map<
|
|
362
|
+
FormatVersion,
|
|
363
|
+
EvaluatedCodecVersion<TDecoded, TContext, TFormatVersion>
|
|
364
|
+
>(applied.map(([_version, codec]) => [codec.formatVersion, codec]));
|
|
365
|
+
return {
|
|
366
|
+
encode: (data: TDecoded, context: TContext): JsonCompatibleReadOnly => {
|
|
367
|
+
return writeVersion.codec.encode(data, context);
|
|
368
|
+
},
|
|
369
|
+
decode: (data: JsonCompatibleReadOnly, context: TContext): TDecoded => {
|
|
370
|
+
const versioned = data as Partial<Versioned>;
|
|
371
|
+
const codec = fromFormatVersion.get(versioned.version);
|
|
372
|
+
if (codec === undefined) {
|
|
373
|
+
throw new UsageError(
|
|
374
|
+
`Unsupported version ${versioned.version} encountered while decoding ${this.name} data. Supported versions for this data are: ${versionList(applied)}.
|
|
375
|
+
The client which encoded this data likely specified an "minVersionForCollab" value which corresponds to a version newer than the version of this client ("${pkgVersion}").`,
|
|
376
|
+
);
|
|
377
|
+
}
|
|
378
|
+
return codec.codec.decode(data, context);
|
|
379
|
+
},
|
|
380
|
+
};
|
|
381
|
+
}
|
|
382
|
+
|
|
383
|
+
public getCodecTree(clientVersion: MinimumVersionForCollab): CodecTree {
|
|
384
|
+
// TODO: add support for children codecs.
|
|
385
|
+
const selected = getConfigForMinVersionForCollabIterable(clientVersion, this.registry);
|
|
386
|
+
return {
|
|
387
|
+
name: this.name,
|
|
388
|
+
version: selected.formatVersion,
|
|
389
|
+
};
|
|
168
390
|
}
|
|
391
|
+
|
|
392
|
+
/**
|
|
393
|
+
* Builds a ClientVersionDispatchingCodecBuilder from the provided registry.
|
|
394
|
+
* @remarks
|
|
395
|
+
* This static method infers the types of the builder from the provided registry,
|
|
396
|
+
* making it easier to create builders without needing to explicitly specify all type parameters.
|
|
397
|
+
* This gets better type inference than the constructor.
|
|
398
|
+
*/
|
|
399
|
+
// eslint-disable-next-line @typescript-eslint/explicit-function-return-type
|
|
400
|
+
public static build<
|
|
401
|
+
Name extends CodecName,
|
|
402
|
+
Entry extends CodecVersion<unknown, unknown, FormatVersion, never>,
|
|
403
|
+
>(name: Name, inputRegistry: ConfigMapEntry<Entry>) {
|
|
404
|
+
type TDecoded2 = Entry extends CodecVersion<infer D, unknown, FormatVersion, never>
|
|
405
|
+
? D
|
|
406
|
+
: never;
|
|
407
|
+
type TContext2 = Entry extends CodecVersion<unknown, infer C, FormatVersion, never>
|
|
408
|
+
? C
|
|
409
|
+
: never;
|
|
410
|
+
type TFormatVersion2 = Entry extends CodecVersion<unknown, unknown, infer F, never>
|
|
411
|
+
? F
|
|
412
|
+
: never;
|
|
413
|
+
type TBuildOptions2 = Entry extends CodecVersion<unknown, unknown, FormatVersion, infer B>
|
|
414
|
+
? B
|
|
415
|
+
: never;
|
|
416
|
+
const builder = new ClientVersionDispatchingCodecBuilder(
|
|
417
|
+
name,
|
|
418
|
+
inputRegistry as ConfigMapEntry<unknown> as ConfigMapEntry<
|
|
419
|
+
CodecVersion<
|
|
420
|
+
TDecoded2,
|
|
421
|
+
// If it does not matter what context is provided, undefined is fine, so allow it to be omitted.
|
|
422
|
+
TContext2 extends unknown ? void : TContext2,
|
|
423
|
+
TFormatVersion2,
|
|
424
|
+
TBuildOptions2
|
|
425
|
+
>
|
|
426
|
+
>,
|
|
427
|
+
);
|
|
428
|
+
return builder;
|
|
429
|
+
}
|
|
430
|
+
}
|
|
431
|
+
|
|
432
|
+
/**
|
|
433
|
+
* Selects which format should be used when writing data.
|
|
434
|
+
* @remarks
|
|
435
|
+
* This either uses the override specified in the options, or selects the newest format compatible with the provided minVersionForCollab.
|
|
436
|
+
*/
|
|
437
|
+
function getWriteVersion<T extends CodecVersionBase>(
|
|
438
|
+
name: CodecName,
|
|
439
|
+
options: CodecWriteOptions,
|
|
440
|
+
versions: readonly [MinimumMinorSemanticVersion | MinimumVersionForCollab, T][],
|
|
441
|
+
): T {
|
|
442
|
+
if (options.writeVersionOverrides?.has(name) === true) {
|
|
443
|
+
const selectedFormatVersion = options.writeVersionOverrides.get(name);
|
|
444
|
+
const selected = versions.find(
|
|
445
|
+
([_v, codec]) => codec.formatVersion === selectedFormatVersion,
|
|
446
|
+
);
|
|
447
|
+
if (selected === undefined) {
|
|
448
|
+
throw new UsageError(
|
|
449
|
+
`Codec "${name}" does not support requested format version ${selectedFormatVersion}. Supported versions are: ${versionList(versions)}.`,
|
|
450
|
+
);
|
|
451
|
+
} else if (options.allowPossiblyIncompatibleWriteVersionOverrides !== true) {
|
|
452
|
+
const selectedMinVersionForCollab = selected[0];
|
|
453
|
+
// Currently all versions must specify a minVersionForCollab, so undefined is not expected here.
|
|
454
|
+
// TODO: It should be possible to have a version which would never be automatically selected for write (and thus does not have or need a minVersionForCollab), but can be selected via override.
|
|
455
|
+
// Use-cases for this include experimental versions not yet stable, and discontinued or intermediate versions which are mainly being kept for read compatibility but still support writing (perhaps for round-trip testing).
|
|
456
|
+
// For now, this check should never pass, and there is no way to create such a version yet.
|
|
457
|
+
if (selectedMinVersionForCollab === undefined) {
|
|
458
|
+
throw new UsageError(
|
|
459
|
+
`Codec "${name}" does not support requested format version ${selectedFormatVersion} because it does not specify a minVersionForCollab. Use "allowPossiblyIncompatibleWriteVersionOverrides" to suppress this error if appropriate.`,
|
|
460
|
+
);
|
|
461
|
+
} else if (gt(selectedMinVersionForCollab, options.minVersionForCollab)) {
|
|
462
|
+
throw new UsageError(
|
|
463
|
+
`Codec "${name}" does not support requested format version ${selectedFormatVersion} because it is only compatible back to client version ${selectedMinVersionForCollab} and the requested oldest compatible client was ${options.minVersionForCollab}. Use "allowPossiblyIncompatibleWriteVersionOverrides" to suppress this error if appropriate.`,
|
|
464
|
+
);
|
|
465
|
+
}
|
|
466
|
+
}
|
|
467
|
+
|
|
468
|
+
return selected[1];
|
|
469
|
+
}
|
|
470
|
+
const result: T = getConfigForMinVersionForCollabIterable(
|
|
471
|
+
options.minVersionForCollab,
|
|
472
|
+
versions,
|
|
473
|
+
);
|
|
474
|
+
return result;
|
|
475
|
+
}
|
|
476
|
+
|
|
477
|
+
/**
|
|
478
|
+
* Formats a list of versions for use in UsageErrors.
|
|
479
|
+
*/
|
|
480
|
+
function versionList(
|
|
481
|
+
versions: readonly [
|
|
482
|
+
MinimumMinorSemanticVersion | MinimumVersionForCollab,
|
|
483
|
+
CodecVersionBase,
|
|
484
|
+
][],
|
|
485
|
+
): string {
|
|
486
|
+
return `${Array.from(versions, ([_v, codec]) => codec.formatVersion).join(", ")}`;
|
|
169
487
|
}
|
|
@@ -5,8 +5,10 @@
|
|
|
5
5
|
|
|
6
6
|
export { Versioned } from "./format.js";
|
|
7
7
|
export {
|
|
8
|
-
makeVersionedCodec,
|
|
9
8
|
makeVersionedValidatedCodec,
|
|
10
9
|
makeVersionDispatchingCodec,
|
|
11
10
|
makeDiscontinuedCodecVersion,
|
|
11
|
+
ClientVersionDispatchingCodecBuilder,
|
|
12
|
+
type CodecVersion,
|
|
13
|
+
type CodecAndSchema,
|
|
12
14
|
} from "./codec.js";
|