@fluidframework/tree 2.70.0-360753 → 2.70.0-361248

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.
Files changed (191) hide show
  1. package/.eslintrc.cjs +1 -0
  2. package/dist/codec/codec.d.ts +3 -3
  3. package/dist/codec/codec.js.map +1 -1
  4. package/dist/core/rebase/changeRebaser.d.ts +1 -1
  5. package/dist/core/rebase/changeRebaser.js.map +1 -1
  6. package/dist/core/tree/detachedFieldIndex.d.ts.map +1 -1
  7. package/dist/core/tree/detachedFieldIndex.js +4 -1
  8. package/dist/core/tree/detachedFieldIndex.js.map +1 -1
  9. package/dist/feature-libraries/chunked-forest/codec/schemaBasedEncode.d.ts +0 -1
  10. package/dist/feature-libraries/chunked-forest/codec/schemaBasedEncode.d.ts.map +1 -1
  11. package/dist/feature-libraries/chunked-forest/codec/schemaBasedEncode.js +3 -14
  12. package/dist/feature-libraries/chunked-forest/codec/schemaBasedEncode.js.map +1 -1
  13. package/dist/feature-libraries/flex-tree/utilities.d.ts +1 -1
  14. package/dist/feature-libraries/flex-tree/utilities.js +1 -1
  15. package/dist/feature-libraries/flex-tree/utilities.js.map +1 -1
  16. package/dist/feature-libraries/incrementalSummarizationUtils.d.ts +1 -1
  17. package/dist/feature-libraries/incrementalSummarizationUtils.js.map +1 -1
  18. package/dist/feature-libraries/modular-schema/modularChangeFamily.d.ts +1 -1
  19. package/dist/feature-libraries/modular-schema/modularChangeFamily.js +1 -1
  20. package/dist/feature-libraries/modular-schema/modularChangeFamily.js.map +1 -1
  21. package/dist/feature-libraries/sequence-field/formatV1.d.ts +1 -1
  22. package/dist/feature-libraries/sequence-field/formatV1.js.map +1 -1
  23. package/dist/feature-libraries/sequence-field/formatV2.d.ts +1 -1
  24. package/dist/feature-libraries/sequence-field/formatV2.js.map +1 -1
  25. package/dist/feature-libraries/sequence-field/formatV3.d.ts +1 -1
  26. package/dist/feature-libraries/sequence-field/formatV3.js.map +1 -1
  27. package/dist/packageVersion.d.ts +1 -1
  28. package/dist/packageVersion.js +1 -1
  29. package/dist/packageVersion.js.map +1 -1
  30. package/dist/shared-tree/sharedTree.d.ts +1 -1
  31. package/dist/shared-tree/sharedTree.js +1 -1
  32. package/dist/shared-tree/sharedTree.js.map +1 -1
  33. package/dist/shared-tree/treeCheckout.d.ts +1 -1
  34. package/dist/shared-tree/treeCheckout.js +1 -1
  35. package/dist/shared-tree/treeCheckout.js.map +1 -1
  36. package/dist/shared-tree-core/transaction.d.ts +2 -2
  37. package/dist/shared-tree-core/transaction.js.map +1 -1
  38. package/dist/simple-tree/core/allowedTypes.d.ts +6 -2
  39. package/dist/simple-tree/core/allowedTypes.d.ts.map +1 -1
  40. package/dist/simple-tree/core/allowedTypes.js +2 -2
  41. package/dist/simple-tree/core/allowedTypes.js.map +1 -1
  42. package/dist/simple-tree/core/treeNodeSchema.d.ts +3 -8
  43. package/dist/simple-tree/core/treeNodeSchema.d.ts.map +1 -1
  44. package/dist/simple-tree/core/treeNodeSchema.js.map +1 -1
  45. package/dist/simple-tree/core/treeNodeValid.d.ts +2 -2
  46. package/dist/simple-tree/core/treeNodeValid.d.ts.map +1 -1
  47. package/dist/simple-tree/core/treeNodeValid.js +2 -2
  48. package/dist/simple-tree/core/treeNodeValid.js.map +1 -1
  49. package/dist/simple-tree/core/walkSchema.d.ts.map +1 -1
  50. package/dist/simple-tree/core/walkSchema.js +1 -1
  51. package/dist/simple-tree/core/walkSchema.js.map +1 -1
  52. package/dist/simple-tree/createContext.d.ts.map +1 -1
  53. package/dist/simple-tree/createContext.js +1 -1
  54. package/dist/simple-tree/createContext.js.map +1 -1
  55. package/dist/simple-tree/leafNodeSchema.js +1 -1
  56. package/dist/simple-tree/leafNodeSchema.js.map +1 -1
  57. package/dist/simple-tree/node-kinds/array/arrayNode.d.ts.map +1 -1
  58. package/dist/simple-tree/node-kinds/array/arrayNode.js +1 -1
  59. package/dist/simple-tree/node-kinds/array/arrayNode.js.map +1 -1
  60. package/dist/simple-tree/node-kinds/map/mapNode.js +1 -1
  61. package/dist/simple-tree/node-kinds/map/mapNode.js.map +1 -1
  62. package/dist/simple-tree/node-kinds/object/objectNode.d.ts.map +1 -1
  63. package/dist/simple-tree/node-kinds/object/objectNode.js +1 -1
  64. package/dist/simple-tree/node-kinds/object/objectNode.js.map +1 -1
  65. package/dist/simple-tree/node-kinds/record/recordNode.js +1 -1
  66. package/dist/simple-tree/node-kinds/record/recordNode.js.map +1 -1
  67. package/dist/util/breakable.js +3 -3
  68. package/dist/util/breakable.js.map +1 -1
  69. package/dist/util/index.d.ts +1 -1
  70. package/dist/util/index.d.ts.map +1 -1
  71. package/dist/util/index.js +2 -2
  72. package/dist/util/index.js.map +1 -1
  73. package/dist/util/nestedMap.d.ts +1 -1
  74. package/dist/util/nestedMap.js +1 -1
  75. package/dist/util/nestedMap.js.map +1 -1
  76. package/dist/util/referenceCounting.d.ts +1 -1
  77. package/dist/util/referenceCounting.js.map +1 -1
  78. package/dist/util/utils.d.ts +7 -4
  79. package/dist/util/utils.d.ts.map +1 -1
  80. package/dist/util/utils.js +23 -16
  81. package/dist/util/utils.js.map +1 -1
  82. package/lib/codec/codec.d.ts +3 -3
  83. package/lib/codec/codec.js.map +1 -1
  84. package/lib/core/rebase/changeRebaser.d.ts +1 -1
  85. package/lib/core/rebase/changeRebaser.js.map +1 -1
  86. package/lib/core/tree/detachedFieldIndex.d.ts.map +1 -1
  87. package/lib/core/tree/detachedFieldIndex.js +4 -1
  88. package/lib/core/tree/detachedFieldIndex.js.map +1 -1
  89. package/lib/feature-libraries/chunked-forest/codec/schemaBasedEncode.d.ts +0 -1
  90. package/lib/feature-libraries/chunked-forest/codec/schemaBasedEncode.d.ts.map +1 -1
  91. package/lib/feature-libraries/chunked-forest/codec/schemaBasedEncode.js +2 -12
  92. package/lib/feature-libraries/chunked-forest/codec/schemaBasedEncode.js.map +1 -1
  93. package/lib/feature-libraries/flex-tree/utilities.d.ts +1 -1
  94. package/lib/feature-libraries/flex-tree/utilities.js +1 -1
  95. package/lib/feature-libraries/flex-tree/utilities.js.map +1 -1
  96. package/lib/feature-libraries/incrementalSummarizationUtils.d.ts +1 -1
  97. package/lib/feature-libraries/incrementalSummarizationUtils.js.map +1 -1
  98. package/lib/feature-libraries/modular-schema/modularChangeFamily.d.ts +1 -1
  99. package/lib/feature-libraries/modular-schema/modularChangeFamily.js +1 -1
  100. package/lib/feature-libraries/modular-schema/modularChangeFamily.js.map +1 -1
  101. package/lib/feature-libraries/sequence-field/formatV1.d.ts +1 -1
  102. package/lib/feature-libraries/sequence-field/formatV1.js.map +1 -1
  103. package/lib/feature-libraries/sequence-field/formatV2.d.ts +1 -1
  104. package/lib/feature-libraries/sequence-field/formatV2.js.map +1 -1
  105. package/lib/feature-libraries/sequence-field/formatV3.d.ts +1 -1
  106. package/lib/feature-libraries/sequence-field/formatV3.js.map +1 -1
  107. package/lib/packageVersion.d.ts +1 -1
  108. package/lib/packageVersion.js +1 -1
  109. package/lib/packageVersion.js.map +1 -1
  110. package/lib/shared-tree/sharedTree.d.ts +1 -1
  111. package/lib/shared-tree/sharedTree.js +1 -1
  112. package/lib/shared-tree/sharedTree.js.map +1 -1
  113. package/lib/shared-tree/treeCheckout.d.ts +1 -1
  114. package/lib/shared-tree/treeCheckout.js +1 -1
  115. package/lib/shared-tree/treeCheckout.js.map +1 -1
  116. package/lib/shared-tree-core/transaction.d.ts +2 -2
  117. package/lib/shared-tree-core/transaction.js.map +1 -1
  118. package/lib/simple-tree/core/allowedTypes.d.ts +6 -2
  119. package/lib/simple-tree/core/allowedTypes.d.ts.map +1 -1
  120. package/lib/simple-tree/core/allowedTypes.js +2 -2
  121. package/lib/simple-tree/core/allowedTypes.js.map +1 -1
  122. package/lib/simple-tree/core/treeNodeSchema.d.ts +3 -8
  123. package/lib/simple-tree/core/treeNodeSchema.d.ts.map +1 -1
  124. package/lib/simple-tree/core/treeNodeSchema.js.map +1 -1
  125. package/lib/simple-tree/core/treeNodeValid.d.ts +2 -2
  126. package/lib/simple-tree/core/treeNodeValid.d.ts.map +1 -1
  127. package/lib/simple-tree/core/treeNodeValid.js +2 -2
  128. package/lib/simple-tree/core/treeNodeValid.js.map +1 -1
  129. package/lib/simple-tree/core/walkSchema.d.ts.map +1 -1
  130. package/lib/simple-tree/core/walkSchema.js +1 -1
  131. package/lib/simple-tree/core/walkSchema.js.map +1 -1
  132. package/lib/simple-tree/createContext.d.ts.map +1 -1
  133. package/lib/simple-tree/createContext.js +2 -2
  134. package/lib/simple-tree/createContext.js.map +1 -1
  135. package/lib/simple-tree/leafNodeSchema.js +1 -1
  136. package/lib/simple-tree/leafNodeSchema.js.map +1 -1
  137. package/lib/simple-tree/node-kinds/array/arrayNode.d.ts.map +1 -1
  138. package/lib/simple-tree/node-kinds/array/arrayNode.js +1 -1
  139. package/lib/simple-tree/node-kinds/array/arrayNode.js.map +1 -1
  140. package/lib/simple-tree/node-kinds/map/mapNode.js +1 -1
  141. package/lib/simple-tree/node-kinds/map/mapNode.js.map +1 -1
  142. package/lib/simple-tree/node-kinds/object/objectNode.d.ts.map +1 -1
  143. package/lib/simple-tree/node-kinds/object/objectNode.js +1 -1
  144. package/lib/simple-tree/node-kinds/object/objectNode.js.map +1 -1
  145. package/lib/simple-tree/node-kinds/record/recordNode.js +1 -1
  146. package/lib/simple-tree/node-kinds/record/recordNode.js.map +1 -1
  147. package/lib/util/breakable.js +3 -3
  148. package/lib/util/breakable.js.map +1 -1
  149. package/lib/util/index.d.ts +1 -1
  150. package/lib/util/index.d.ts.map +1 -1
  151. package/lib/util/index.js +1 -1
  152. package/lib/util/index.js.map +1 -1
  153. package/lib/util/nestedMap.d.ts +1 -1
  154. package/lib/util/nestedMap.js +1 -1
  155. package/lib/util/nestedMap.js.map +1 -1
  156. package/lib/util/referenceCounting.d.ts +1 -1
  157. package/lib/util/referenceCounting.js.map +1 -1
  158. package/lib/util/utils.d.ts +7 -4
  159. package/lib/util/utils.d.ts.map +1 -1
  160. package/lib/util/utils.js +21 -14
  161. package/lib/util/utils.js.map +1 -1
  162. package/package.json +23 -23
  163. package/src/codec/codec.ts +3 -3
  164. package/src/core/rebase/changeRebaser.ts +1 -1
  165. package/src/core/tree/detachedFieldIndex.ts +4 -1
  166. package/src/feature-libraries/chunked-forest/codec/schemaBasedEncode.ts +2 -13
  167. package/src/feature-libraries/flex-tree/utilities.ts +1 -1
  168. package/src/feature-libraries/incrementalSummarizationUtils.ts +1 -1
  169. package/src/feature-libraries/modular-schema/modularChangeFamily.ts +1 -1
  170. package/src/feature-libraries/sequence-field/formatV1.ts +1 -1
  171. package/src/feature-libraries/sequence-field/formatV2.ts +1 -1
  172. package/src/feature-libraries/sequence-field/formatV3.ts +1 -1
  173. package/src/packageVersion.ts +1 -1
  174. package/src/shared-tree/sharedTree.ts +1 -1
  175. package/src/shared-tree/treeCheckout.ts +1 -1
  176. package/src/shared-tree-core/transaction.ts +2 -2
  177. package/src/simple-tree/core/allowedTypes.ts +5 -17
  178. package/src/simple-tree/core/treeNodeSchema.ts +3 -8
  179. package/src/simple-tree/core/treeNodeValid.ts +3 -3
  180. package/src/simple-tree/core/walkSchema.ts +1 -2
  181. package/src/simple-tree/createContext.ts +1 -4
  182. package/src/simple-tree/leafNodeSchema.ts +1 -1
  183. package/src/simple-tree/node-kinds/array/arrayNode.ts +5 -2
  184. package/src/simple-tree/node-kinds/map/mapNode.ts +1 -1
  185. package/src/simple-tree/node-kinds/object/objectNode.ts +2 -5
  186. package/src/simple-tree/node-kinds/record/recordNode.ts +1 -1
  187. package/src/util/breakable.ts +4 -4
  188. package/src/util/index.ts +1 -1
  189. package/src/util/nestedMap.ts +1 -1
  190. package/src/util/referenceCounting.ts +1 -1
  191. package/src/util/utils.ts +22 -15
@@ -401,7 +401,7 @@ export declare const Changeset: <Schema extends TSchema>(tNodeChange: Schema) =>
401
401
  count: import("@sinclair/typebox").TNumber;
402
402
  }>>;
403
403
  /**
404
- * @privateRemarks - Many of these names are currently used in the sequence-field types. Putting them in a namespace makes codec code more readable.
404
+ * @privateRemarks Many of these names are currently used in the sequence-field types. Putting them in a namespace makes codec code more readable.
405
405
  */
406
406
  export declare namespace Encoded {
407
407
  type CellCount = Static<typeof CellCount>;
@@ -1 +1 @@
1
- {"version":3,"file":"formatV1.js","sourceRoot":"","sources":["../../../src/feature-libraries/sequence-field/formatV1.ts"],"names":[],"mappings":"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","sourcesContent":["/*!\n * Copyright (c) Microsoft Corporation and contributors. All rights reserved.\n * Licensed under the MIT License.\n */\n\nimport { type ObjectOptions, type Static, type TSchema, Type } from \"@sinclair/typebox\";\n\nimport { unionOptions } from \"../../codec/index.js\";\nimport { RevisionTagSchema } from \"../../core/index.js\";\nimport { ChangesetLocalIdSchema, EncodedChangeAtomId } from \"../modular-schema/index.js\";\n\nexport enum DetachIdOverrideType {\n\t/**\n\t * The detach effect is the inverse of the prior attach characterized by the accompanying `CellId`'s revision and\n\t * local ID.\n\t *\n\t * An override is needed in such a case to ensure that rollbacks and undos return tree content to the appropriate\n\t * detached root. It is also needed to ensure that cell comparisons work properly for undos.\n\t */\n\tUnattach = 0,\n\t/**\n\t * The detach effect is reapplying a prior detach.\n\t *\n\t * The accompanying cell ID is used in two ways:\n\t * - It indicates the location of the cell (including adjacent cell information) so that rebasing over this detach\n\t * can contribute the correct lineage information to the rebased mark.\n\t * - It specifies the revision and local ID that should be used to characterize the cell in the output context of\n\t * detach.\n\t */\n\tRedetach = 1,\n}\n\nconst noAdditionalProps: ObjectOptions = { additionalProperties: false };\n\nconst CellCount = Type.Number({ multipleOf: 1, minimum: 1 });\n\nconst MoveId = ChangesetLocalIdSchema;\nconst HasMoveId = Type.Object({ id: MoveId });\n\nconst LineageEvent = Type.Tuple([\n\tRevisionTagSchema,\n\tChangesetLocalIdSchema,\n\t/** count */\n\tCellCount,\n\t/** offset */\n\tType.Number({ multipleOf: 1, minimum: 0 }),\n]);\n\nconst HasLineage = Type.Object({ lineage: Type.Optional(Type.Array(LineageEvent)) });\n\nconst IdRange = Type.Tuple([ChangesetLocalIdSchema, CellCount]);\n\nconst CellId = Type.Composite(\n\t[\n\t\tHasLineage,\n\t\tType.Object({\n\t\t\tatom: EncodedChangeAtomId,\n\t\t\tadjacentCells: Type.Optional(Type.Array(IdRange)),\n\t\t}),\n\t],\n\tnoAdditionalProps,\n);\n\nconst HasRevisionTag = Type.Object({ revision: Type.Optional(RevisionTagSchema) });\n\nconst Insert = Type.Composite([HasMoveId, HasRevisionTag], noAdditionalProps);\n\nconst HasMoveFields = Type.Composite([\n\tHasMoveId,\n\tHasRevisionTag,\n\tType.Object({ finalEndpoint: Type.Optional(EncodedChangeAtomId) }),\n]);\n\nconst MoveIn = Type.Composite([HasMoveFields], noAdditionalProps);\n\nconst DetachIdOverride = Type.Object(\n\t{\n\t\ttype: Type.Enum(DetachIdOverrideType),\n\t\tid: CellId,\n\t},\n\tnoAdditionalProps,\n);\n\nconst DetachFields = Type.Object({\n\tidOverride: Type.Optional(DetachIdOverride),\n});\n\nconst Remove = Type.Composite(\n\t[\n\t\tType.Object({\n\t\t\tid: ChangesetLocalIdSchema,\n\t\t}),\n\t\tHasRevisionTag,\n\t\tDetachFields,\n\t],\n\tnoAdditionalProps,\n);\n\nconst MoveOut = Type.Composite([HasMoveFields, DetachFields], noAdditionalProps);\n\nconst Attach = Type.Object(\n\t{\n\t\tinsert: Type.Optional(Insert),\n\t\tmoveIn: Type.Optional(MoveIn),\n\t},\n\tunionOptions,\n);\n\nconst Detach = Type.Object(\n\t{\n\t\t// TODO:AB6715 rename to `remove`\n\t\tdelete: Type.Optional(Remove),\n\t\tmoveOut: Type.Optional(MoveOut),\n\t},\n\tunionOptions,\n);\n\nconst AttachAndDetach = Type.Object({\n\tattach: Attach,\n\tdetach: Detach,\n});\n\nconst MarkEffect = Type.Object(\n\t{\n\t\t// Note: `noop` is encoded by omitting `effect` from the encoded cell mark, so is not included here.\n\t\tinsert: Type.Optional(Insert),\n\t\tmoveIn: Type.Optional(MoveIn),\n\t\t// TODO:AB6715 rename to `remove`\n\t\tdelete: Type.Optional(Remove),\n\t\tmoveOut: Type.Optional(MoveOut),\n\t\tattachAndDetach: Type.Optional(AttachAndDetach),\n\t},\n\tunionOptions,\n);\n\nconst CellMark = <TMark extends TSchema, TNodeChange extends TSchema>(\n\ttMark: TMark,\n\ttNodeChange: TNodeChange,\n\t// Return type is intentionally derived.\n\t// eslint-disable-next-line @typescript-eslint/explicit-function-return-type\n) =>\n\tType.Object(\n\t\t{\n\t\t\t// If undefined, indicates a Noop mark.\n\t\t\teffect: Type.Optional(tMark),\n\t\t\tcellId: Type.Optional(CellId),\n\t\t\tchanges: Type.Optional(tNodeChange),\n\t\t\tcount: CellCount,\n\t\t},\n\t\tnoAdditionalProps,\n\t);\n\n// Return type is intentionally derived.\n// eslint-disable-next-line @typescript-eslint/explicit-function-return-type\nconst Mark = <Schema extends TSchema>(tNodeChange: Schema) =>\n\tCellMark(MarkEffect, tNodeChange);\n\n// Return type is intentionally derived.\n// eslint-disable-next-line @typescript-eslint/explicit-function-return-type\nexport const Changeset = <Schema extends TSchema>(tNodeChange: Schema) =>\n\tType.Array(Mark(tNodeChange));\n\n/**\n * @privateRemarks - Many of these names are currently used in the sequence-field types. Putting them in a namespace makes codec code more readable.\n */\nexport namespace Encoded {\n\texport type CellCount = Static<typeof CellCount>;\n\n\texport type MoveId = Static<typeof MoveId>;\n\texport type LineageEvent = Static<typeof LineageEvent>;\n\texport type IdRange = Static<typeof IdRange>;\n\n\texport type CellId = Static<typeof CellId>;\n\n\texport type Insert = Static<typeof Insert>;\n\texport type MoveIn = Static<typeof MoveIn>;\n\texport type Remove = Static<typeof Remove>;\n\texport type MoveOut = Static<typeof MoveOut>;\n\texport type Attach = Static<typeof Attach>;\n\texport type Detach = Static<typeof Detach>;\n\texport type AttachAndDetach = Static<typeof AttachAndDetach>;\n\texport type MarkEffect = Static<typeof MarkEffect>;\n\n\texport type CellMark<Schema extends TSchema, TNodeChange extends TSchema> = Static<\n\t\tReturnType<typeof CellMark<Schema, TNodeChange>>\n\t>;\n\texport type Mark<Schema extends TSchema> = Static<ReturnType<typeof Mark<Schema>>>;\n\texport type Changeset<Schema extends TSchema> = Static<ReturnType<typeof Changeset<Schema>>>;\n}\n"]}
1
+ {"version":3,"file":"formatV1.js","sourceRoot":"","sources":["../../../src/feature-libraries/sequence-field/formatV1.ts"],"names":[],"mappings":"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","sourcesContent":["/*!\n * Copyright (c) Microsoft Corporation and contributors. All rights reserved.\n * Licensed under the MIT License.\n */\n\nimport { type ObjectOptions, type Static, type TSchema, Type } from \"@sinclair/typebox\";\n\nimport { unionOptions } from \"../../codec/index.js\";\nimport { RevisionTagSchema } from \"../../core/index.js\";\nimport { ChangesetLocalIdSchema, EncodedChangeAtomId } from \"../modular-schema/index.js\";\n\nexport enum DetachIdOverrideType {\n\t/**\n\t * The detach effect is the inverse of the prior attach characterized by the accompanying `CellId`'s revision and\n\t * local ID.\n\t *\n\t * An override is needed in such a case to ensure that rollbacks and undos return tree content to the appropriate\n\t * detached root. It is also needed to ensure that cell comparisons work properly for undos.\n\t */\n\tUnattach = 0,\n\t/**\n\t * The detach effect is reapplying a prior detach.\n\t *\n\t * The accompanying cell ID is used in two ways:\n\t * - It indicates the location of the cell (including adjacent cell information) so that rebasing over this detach\n\t * can contribute the correct lineage information to the rebased mark.\n\t * - It specifies the revision and local ID that should be used to characterize the cell in the output context of\n\t * detach.\n\t */\n\tRedetach = 1,\n}\n\nconst noAdditionalProps: ObjectOptions = { additionalProperties: false };\n\nconst CellCount = Type.Number({ multipleOf: 1, minimum: 1 });\n\nconst MoveId = ChangesetLocalIdSchema;\nconst HasMoveId = Type.Object({ id: MoveId });\n\nconst LineageEvent = Type.Tuple([\n\tRevisionTagSchema,\n\tChangesetLocalIdSchema,\n\t/** count */\n\tCellCount,\n\t/** offset */\n\tType.Number({ multipleOf: 1, minimum: 0 }),\n]);\n\nconst HasLineage = Type.Object({ lineage: Type.Optional(Type.Array(LineageEvent)) });\n\nconst IdRange = Type.Tuple([ChangesetLocalIdSchema, CellCount]);\n\nconst CellId = Type.Composite(\n\t[\n\t\tHasLineage,\n\t\tType.Object({\n\t\t\tatom: EncodedChangeAtomId,\n\t\t\tadjacentCells: Type.Optional(Type.Array(IdRange)),\n\t\t}),\n\t],\n\tnoAdditionalProps,\n);\n\nconst HasRevisionTag = Type.Object({ revision: Type.Optional(RevisionTagSchema) });\n\nconst Insert = Type.Composite([HasMoveId, HasRevisionTag], noAdditionalProps);\n\nconst HasMoveFields = Type.Composite([\n\tHasMoveId,\n\tHasRevisionTag,\n\tType.Object({ finalEndpoint: Type.Optional(EncodedChangeAtomId) }),\n]);\n\nconst MoveIn = Type.Composite([HasMoveFields], noAdditionalProps);\n\nconst DetachIdOverride = Type.Object(\n\t{\n\t\ttype: Type.Enum(DetachIdOverrideType),\n\t\tid: CellId,\n\t},\n\tnoAdditionalProps,\n);\n\nconst DetachFields = Type.Object({\n\tidOverride: Type.Optional(DetachIdOverride),\n});\n\nconst Remove = Type.Composite(\n\t[\n\t\tType.Object({\n\t\t\tid: ChangesetLocalIdSchema,\n\t\t}),\n\t\tHasRevisionTag,\n\t\tDetachFields,\n\t],\n\tnoAdditionalProps,\n);\n\nconst MoveOut = Type.Composite([HasMoveFields, DetachFields], noAdditionalProps);\n\nconst Attach = Type.Object(\n\t{\n\t\tinsert: Type.Optional(Insert),\n\t\tmoveIn: Type.Optional(MoveIn),\n\t},\n\tunionOptions,\n);\n\nconst Detach = Type.Object(\n\t{\n\t\t// TODO:AB6715 rename to `remove`\n\t\tdelete: Type.Optional(Remove),\n\t\tmoveOut: Type.Optional(MoveOut),\n\t},\n\tunionOptions,\n);\n\nconst AttachAndDetach = Type.Object({\n\tattach: Attach,\n\tdetach: Detach,\n});\n\nconst MarkEffect = Type.Object(\n\t{\n\t\t// Note: `noop` is encoded by omitting `effect` from the encoded cell mark, so is not included here.\n\t\tinsert: Type.Optional(Insert),\n\t\tmoveIn: Type.Optional(MoveIn),\n\t\t// TODO:AB6715 rename to `remove`\n\t\tdelete: Type.Optional(Remove),\n\t\tmoveOut: Type.Optional(MoveOut),\n\t\tattachAndDetach: Type.Optional(AttachAndDetach),\n\t},\n\tunionOptions,\n);\n\nconst CellMark = <TMark extends TSchema, TNodeChange extends TSchema>(\n\ttMark: TMark,\n\ttNodeChange: TNodeChange,\n\t// Return type is intentionally derived.\n\t// eslint-disable-next-line @typescript-eslint/explicit-function-return-type\n) =>\n\tType.Object(\n\t\t{\n\t\t\t// If undefined, indicates a Noop mark.\n\t\t\teffect: Type.Optional(tMark),\n\t\t\tcellId: Type.Optional(CellId),\n\t\t\tchanges: Type.Optional(tNodeChange),\n\t\t\tcount: CellCount,\n\t\t},\n\t\tnoAdditionalProps,\n\t);\n\n// Return type is intentionally derived.\n// eslint-disable-next-line @typescript-eslint/explicit-function-return-type\nconst Mark = <Schema extends TSchema>(tNodeChange: Schema) =>\n\tCellMark(MarkEffect, tNodeChange);\n\n// Return type is intentionally derived.\n// eslint-disable-next-line @typescript-eslint/explicit-function-return-type\nexport const Changeset = <Schema extends TSchema>(tNodeChange: Schema) =>\n\tType.Array(Mark(tNodeChange));\n\n/**\n * @privateRemarks Many of these names are currently used in the sequence-field types. Putting them in a namespace makes codec code more readable.\n */\nexport namespace Encoded {\n\texport type CellCount = Static<typeof CellCount>;\n\n\texport type MoveId = Static<typeof MoveId>;\n\texport type LineageEvent = Static<typeof LineageEvent>;\n\texport type IdRange = Static<typeof IdRange>;\n\n\texport type CellId = Static<typeof CellId>;\n\n\texport type Insert = Static<typeof Insert>;\n\texport type MoveIn = Static<typeof MoveIn>;\n\texport type Remove = Static<typeof Remove>;\n\texport type MoveOut = Static<typeof MoveOut>;\n\texport type Attach = Static<typeof Attach>;\n\texport type Detach = Static<typeof Detach>;\n\texport type AttachAndDetach = Static<typeof AttachAndDetach>;\n\texport type MarkEffect = Static<typeof MarkEffect>;\n\n\texport type CellMark<Schema extends TSchema, TNodeChange extends TSchema> = Static<\n\t\tReturnType<typeof CellMark<Schema, TNodeChange>>\n\t>;\n\texport type Mark<Schema extends TSchema> = Static<ReturnType<typeof Mark<Schema>>>;\n\texport type Changeset<Schema extends TSchema> = Static<ReturnType<typeof Changeset<Schema>>>;\n}\n"]}
@@ -238,7 +238,7 @@ export declare const Changeset: <Schema extends TSchema>(tNodeChange: Schema) =>
238
238
  count: import("@sinclair/typebox").TNumber;
239
239
  }>>;
240
240
  /**
241
- * @privateRemarks - Many of these names are currently used in the sequence-field types. Putting them in a namespace makes codec code more readable.
241
+ * @privateRemarks Many of these names are currently used in the sequence-field types. Putting them in a namespace makes codec code more readable.
242
242
  */
243
243
  export declare namespace Encoded {
244
244
  type CellCount = Static<typeof CellCount>;
@@ -1 +1 @@
1
- {"version":3,"file":"formatV2.js","sourceRoot":"","sources":["../../../src/feature-libraries/sequence-field/formatV2.ts"],"names":[],"mappings":"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","sourcesContent":["/*!\n * Copyright (c) Microsoft Corporation and contributors. All rights reserved.\n * Licensed under the MIT License.\n */\n\nimport { type ObjectOptions, type Static, type TSchema, Type } from \"@sinclair/typebox\";\n\nimport { unionOptions } from \"../../codec/index.js\";\nimport { RevisionTagSchema } from \"../../core/index.js\";\nimport { ChangesetLocalIdSchema, EncodedChangeAtomId } from \"../modular-schema/index.js\";\n\nconst noAdditionalProps: ObjectOptions = { additionalProperties: false };\n\nconst CellCount = Type.Number({ multipleOf: 1, minimum: 1 });\n\nconst MoveId = ChangesetLocalIdSchema;\nconst HasMoveId = Type.Object({ id: MoveId });\n\nconst IdRange = Type.Tuple([ChangesetLocalIdSchema, CellCount]);\n\nexport const CellId = EncodedChangeAtomId;\n\nconst HasRevisionTag = Type.Object({ revision: Type.Optional(RevisionTagSchema) });\n\nconst Insert = Type.Composite([HasMoveId, HasRevisionTag], noAdditionalProps);\n\nconst HasMoveFields = Type.Composite([\n\tHasMoveId,\n\tHasRevisionTag,\n\tType.Object({ finalEndpoint: Type.Optional(EncodedChangeAtomId) }),\n]);\n\nconst MoveIn = Type.Composite([HasMoveFields], noAdditionalProps);\n\nconst DetachFields = Type.Object({\n\tidOverride: Type.Optional(CellId),\n});\n\nconst Remove = Type.Composite(\n\t[\n\t\tType.Object({\n\t\t\tid: ChangesetLocalIdSchema,\n\t\t}),\n\t\tHasRevisionTag,\n\t\tDetachFields,\n\t],\n\tnoAdditionalProps,\n);\n\nconst MoveOut = Type.Composite([HasMoveFields, DetachFields], noAdditionalProps);\n\nconst Attach = Type.Object(\n\t{\n\t\tinsert: Type.Optional(Insert),\n\t\tmoveIn: Type.Optional(MoveIn),\n\t},\n\tunionOptions,\n);\n\nconst Detach = Type.Object(\n\t{\n\t\tremove: Type.Optional(Remove),\n\t\tmoveOut: Type.Optional(MoveOut),\n\t},\n\tunionOptions,\n);\n\nconst AttachAndDetach = Type.Object({\n\tattach: Attach,\n\tdetach: Detach,\n});\n\nexport const MarkEffect = Type.Object(\n\t{\n\t\t// Note: `noop` is encoded by omitting `effect` from the encoded cell mark, so is not included here.\n\t\tinsert: Type.Optional(Insert),\n\t\tmoveIn: Type.Optional(MoveIn),\n\t\tremove: Type.Optional(Remove),\n\t\tmoveOut: Type.Optional(MoveOut),\n\t\tattachAndDetach: Type.Optional(AttachAndDetach),\n\t},\n\tunionOptions,\n);\n\nexport const CellMark = <TMark extends TSchema, TNodeChange extends TSchema>(\n\ttMark: TMark,\n\ttNodeChange: TNodeChange,\n\t// Return type is intentionally derived.\n\t// eslint-disable-next-line @typescript-eslint/explicit-function-return-type\n) =>\n\tType.Object(\n\t\t{\n\t\t\t// If undefined, indicates a Noop mark.\n\t\t\teffect: Type.Optional(tMark),\n\t\t\tcellId: Type.Optional(CellId),\n\t\t\tchanges: Type.Optional(tNodeChange),\n\t\t\tcount: CellCount,\n\t\t},\n\t\tnoAdditionalProps,\n\t);\n\n// Return type is intentionally derived.\n// eslint-disable-next-line @typescript-eslint/explicit-function-return-type\nconst Mark = <Schema extends TSchema>(tNodeChange: Schema) =>\n\tCellMark(MarkEffect, tNodeChange);\n\n// Return type is intentionally derived.\n// eslint-disable-next-line @typescript-eslint/explicit-function-return-type\nexport const Changeset = <Schema extends TSchema>(tNodeChange: Schema) =>\n\tType.Array(Mark(tNodeChange));\n\n/**\n * @privateRemarks - Many of these names are currently used in the sequence-field types. Putting them in a namespace makes codec code more readable.\n */\nexport namespace Encoded {\n\texport type CellCount = Static<typeof CellCount>;\n\n\texport type MoveId = Static<typeof MoveId>;\n\texport type IdRange = Static<typeof IdRange>;\n\n\texport type CellId = Static<typeof CellId>;\n\n\texport type Insert = Static<typeof Insert>;\n\texport type MoveIn = Static<typeof MoveIn>;\n\texport type Remove = Static<typeof Remove>;\n\texport type MoveOut = Static<typeof MoveOut>;\n\texport type Attach = Static<typeof Attach>;\n\texport type Detach = Static<typeof Detach>;\n\texport type AttachAndDetach = Static<typeof AttachAndDetach>;\n\texport type MarkEffect = Static<typeof MarkEffect>;\n\n\texport type CellMark<Schema extends TSchema, TNodeChange extends TSchema> = Static<\n\t\tReturnType<typeof CellMark<Schema, TNodeChange>>\n\t>;\n\texport type Mark<Schema extends TSchema> = Static<ReturnType<typeof Mark<Schema>>>;\n\texport type Changeset<Schema extends TSchema> = Static<ReturnType<typeof Changeset<Schema>>>;\n}\n"]}
1
+ {"version":3,"file":"formatV2.js","sourceRoot":"","sources":["../../../src/feature-libraries/sequence-field/formatV2.ts"],"names":[],"mappings":";AAAA;;;GAGG;;;AAEH,+CAAwF;AAExF,mDAAoD;AACpD,kDAAwD;AACxD,yDAAyF;AAEzF,MAAM,iBAAiB,GAAkB,EAAE,oBAAoB,EAAE,KAAK,EAAE,CAAC;AAEzE,MAAM,SAAS,GAAG,cAAI,CAAC,MAAM,CAAC,EAAE,UAAU,EAAE,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;AAE7D,MAAM,MAAM,GAAG,iCAAsB,CAAC;AACtC,MAAM,SAAS,GAAG,cAAI,CAAC,MAAM,CAAC,EAAE,EAAE,EAAE,MAAM,EAAE,CAAC,CAAC;AAE9C,MAAM,OAAO,GAAG,cAAI,CAAC,KAAK,CAAC,CAAC,iCAAsB,EAAE,SAAS,CAAC,CAAC,CAAC;AAEnD,QAAA,MAAM,GAAG,8BAAmB,CAAC;AAE1C,MAAM,cAAc,GAAG,cAAI,CAAC,MAAM,CAAC,EAAE,QAAQ,EAAE,cAAI,CAAC,QAAQ,CAAC,4BAAiB,CAAC,EAAE,CAAC,CAAC;AAEnF,MAAM,MAAM,GAAG,cAAI,CAAC,SAAS,CAAC,CAAC,SAAS,EAAE,cAAc,CAAC,EAAE,iBAAiB,CAAC,CAAC;AAE9E,MAAM,aAAa,GAAG,cAAI,CAAC,SAAS,CAAC;IACpC,SAAS;IACT,cAAc;IACd,cAAI,CAAC,MAAM,CAAC,EAAE,aAAa,EAAE,cAAI,CAAC,QAAQ,CAAC,8BAAmB,CAAC,EAAE,CAAC;CAClE,CAAC,CAAC;AAEH,MAAM,MAAM,GAAG,cAAI,CAAC,SAAS,CAAC,CAAC,aAAa,CAAC,EAAE,iBAAiB,CAAC,CAAC;AAElE,MAAM,YAAY,GAAG,cAAI,CAAC,MAAM,CAAC;IAChC,UAAU,EAAE,cAAI,CAAC,QAAQ,CAAC,cAAM,CAAC;CACjC,CAAC,CAAC;AAEH,MAAM,MAAM,GAAG,cAAI,CAAC,SAAS,CAC5B;IACC,cAAI,CAAC,MAAM,CAAC;QACX,EAAE,EAAE,iCAAsB;KAC1B,CAAC;IACF,cAAc;IACd,YAAY;CACZ,EACD,iBAAiB,CACjB,CAAC;AAEF,MAAM,OAAO,GAAG,cAAI,CAAC,SAAS,CAAC,CAAC,aAAa,EAAE,YAAY,CAAC,EAAE,iBAAiB,CAAC,CAAC;AAEjF,MAAM,MAAM,GAAG,cAAI,CAAC,MAAM,CACzB;IACC,MAAM,EAAE,cAAI,CAAC,QAAQ,CAAC,MAAM,CAAC;IAC7B,MAAM,EAAE,cAAI,CAAC,QAAQ,CAAC,MAAM,CAAC;CAC7B,EACD,uBAAY,CACZ,CAAC;AAEF,MAAM,MAAM,GAAG,cAAI,CAAC,MAAM,CACzB;IACC,MAAM,EAAE,cAAI,CAAC,QAAQ,CAAC,MAAM,CAAC;IAC7B,OAAO,EAAE,cAAI,CAAC,QAAQ,CAAC,OAAO,CAAC;CAC/B,EACD,uBAAY,CACZ,CAAC;AAEF,MAAM,eAAe,GAAG,cAAI,CAAC,MAAM,CAAC;IACnC,MAAM,EAAE,MAAM;IACd,MAAM,EAAE,MAAM;CACd,CAAC,CAAC;AAEU,QAAA,UAAU,GAAG,cAAI,CAAC,MAAM,CACpC;IACC,oGAAoG;IACpG,MAAM,EAAE,cAAI,CAAC,QAAQ,CAAC,MAAM,CAAC;IAC7B,MAAM,EAAE,cAAI,CAAC,QAAQ,CAAC,MAAM,CAAC;IAC7B,MAAM,EAAE,cAAI,CAAC,QAAQ,CAAC,MAAM,CAAC;IAC7B,OAAO,EAAE,cAAI,CAAC,QAAQ,CAAC,OAAO,CAAC;IAC/B,eAAe,EAAE,cAAI,CAAC,QAAQ,CAAC,eAAe,CAAC;CAC/C,EACD,uBAAY,CACZ,CAAC;AAEK,MAAM,QAAQ,GAAG,CACvB,KAAY,EACZ,WAAwB,EAGvB,EAAE,CACH,cAAI,CAAC,MAAM,CACV;IACC,uCAAuC;IACvC,MAAM,EAAE,cAAI,CAAC,QAAQ,CAAC,KAAK,CAAC;IAC5B,MAAM,EAAE,cAAI,CAAC,QAAQ,CAAC,cAAM,CAAC;IAC7B,OAAO,EAAE,cAAI,CAAC,QAAQ,CAAC,WAAW,CAAC;IACnC,KAAK,EAAE,SAAS;CAChB,EACD,iBAAiB,CACjB,CAAC;AAfU,QAAA,QAAQ,YAelB;AAEH,wCAAwC;AACxC,4EAA4E;AAC5E,MAAM,IAAI,GAAG,CAAyB,WAAmB,EAAE,EAAE,CAC5D,IAAA,gBAAQ,EAAC,kBAAU,EAAE,WAAW,CAAC,CAAC;AAEnC,wCAAwC;AACxC,4EAA4E;AACrE,MAAM,SAAS,GAAG,CAAyB,WAAmB,EAAE,EAAE,CACxE,cAAI,CAAC,KAAK,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC;AADlB,QAAA,SAAS,aACS","sourcesContent":["/*!\n * Copyright (c) Microsoft Corporation and contributors. All rights reserved.\n * Licensed under the MIT License.\n */\n\nimport { type ObjectOptions, type Static, type TSchema, Type } from \"@sinclair/typebox\";\n\nimport { unionOptions } from \"../../codec/index.js\";\nimport { RevisionTagSchema } from \"../../core/index.js\";\nimport { ChangesetLocalIdSchema, EncodedChangeAtomId } from \"../modular-schema/index.js\";\n\nconst noAdditionalProps: ObjectOptions = { additionalProperties: false };\n\nconst CellCount = Type.Number({ multipleOf: 1, minimum: 1 });\n\nconst MoveId = ChangesetLocalIdSchema;\nconst HasMoveId = Type.Object({ id: MoveId });\n\nconst IdRange = Type.Tuple([ChangesetLocalIdSchema, CellCount]);\n\nexport const CellId = EncodedChangeAtomId;\n\nconst HasRevisionTag = Type.Object({ revision: Type.Optional(RevisionTagSchema) });\n\nconst Insert = Type.Composite([HasMoveId, HasRevisionTag], noAdditionalProps);\n\nconst HasMoveFields = Type.Composite([\n\tHasMoveId,\n\tHasRevisionTag,\n\tType.Object({ finalEndpoint: Type.Optional(EncodedChangeAtomId) }),\n]);\n\nconst MoveIn = Type.Composite([HasMoveFields], noAdditionalProps);\n\nconst DetachFields = Type.Object({\n\tidOverride: Type.Optional(CellId),\n});\n\nconst Remove = Type.Composite(\n\t[\n\t\tType.Object({\n\t\t\tid: ChangesetLocalIdSchema,\n\t\t}),\n\t\tHasRevisionTag,\n\t\tDetachFields,\n\t],\n\tnoAdditionalProps,\n);\n\nconst MoveOut = Type.Composite([HasMoveFields, DetachFields], noAdditionalProps);\n\nconst Attach = Type.Object(\n\t{\n\t\tinsert: Type.Optional(Insert),\n\t\tmoveIn: Type.Optional(MoveIn),\n\t},\n\tunionOptions,\n);\n\nconst Detach = Type.Object(\n\t{\n\t\tremove: Type.Optional(Remove),\n\t\tmoveOut: Type.Optional(MoveOut),\n\t},\n\tunionOptions,\n);\n\nconst AttachAndDetach = Type.Object({\n\tattach: Attach,\n\tdetach: Detach,\n});\n\nexport const MarkEffect = Type.Object(\n\t{\n\t\t// Note: `noop` is encoded by omitting `effect` from the encoded cell mark, so is not included here.\n\t\tinsert: Type.Optional(Insert),\n\t\tmoveIn: Type.Optional(MoveIn),\n\t\tremove: Type.Optional(Remove),\n\t\tmoveOut: Type.Optional(MoveOut),\n\t\tattachAndDetach: Type.Optional(AttachAndDetach),\n\t},\n\tunionOptions,\n);\n\nexport const CellMark = <TMark extends TSchema, TNodeChange extends TSchema>(\n\ttMark: TMark,\n\ttNodeChange: TNodeChange,\n\t// Return type is intentionally derived.\n\t// eslint-disable-next-line @typescript-eslint/explicit-function-return-type\n) =>\n\tType.Object(\n\t\t{\n\t\t\t// If undefined, indicates a Noop mark.\n\t\t\teffect: Type.Optional(tMark),\n\t\t\tcellId: Type.Optional(CellId),\n\t\t\tchanges: Type.Optional(tNodeChange),\n\t\t\tcount: CellCount,\n\t\t},\n\t\tnoAdditionalProps,\n\t);\n\n// Return type is intentionally derived.\n// eslint-disable-next-line @typescript-eslint/explicit-function-return-type\nconst Mark = <Schema extends TSchema>(tNodeChange: Schema) =>\n\tCellMark(MarkEffect, tNodeChange);\n\n// Return type is intentionally derived.\n// eslint-disable-next-line @typescript-eslint/explicit-function-return-type\nexport const Changeset = <Schema extends TSchema>(tNodeChange: Schema) =>\n\tType.Array(Mark(tNodeChange));\n\n/**\n * @privateRemarks Many of these names are currently used in the sequence-field types. Putting them in a namespace makes codec code more readable.\n */\nexport namespace Encoded {\n\texport type CellCount = Static<typeof CellCount>;\n\n\texport type MoveId = Static<typeof MoveId>;\n\texport type IdRange = Static<typeof IdRange>;\n\n\texport type CellId = Static<typeof CellId>;\n\n\texport type Insert = Static<typeof Insert>;\n\texport type MoveIn = Static<typeof MoveIn>;\n\texport type Remove = Static<typeof Remove>;\n\texport type MoveOut = Static<typeof MoveOut>;\n\texport type Attach = Static<typeof Attach>;\n\texport type Detach = Static<typeof Detach>;\n\texport type AttachAndDetach = Static<typeof AttachAndDetach>;\n\texport type MarkEffect = Static<typeof MarkEffect>;\n\n\texport type CellMark<Schema extends TSchema, TNodeChange extends TSchema> = Static<\n\t\tReturnType<typeof CellMark<Schema, TNodeChange>>\n\t>;\n\texport type Mark<Schema extends TSchema> = Static<ReturnType<typeof Mark<Schema>>>;\n\texport type Changeset<Schema extends TSchema> = Static<ReturnType<typeof Changeset<Schema>>>;\n}\n"]}
@@ -171,7 +171,7 @@ export declare const Changeset: <Schema extends TSchema>(tNodeChange: Schema) =>
171
171
  count: import("@sinclair/typebox").TNumber;
172
172
  }>>;
173
173
  /**
174
- * @privateRemarks - Many of these names are currently used in the sequence-field types. Putting them in a namespace makes codec code more readable.
174
+ * @privateRemarks Many of these names are currently used in the sequence-field types. Putting them in a namespace makes codec code more readable.
175
175
  */
176
176
  export declare namespace Encoded {
177
177
  type CellCount = EncodedV2.CellCount;
@@ -1 +1 @@
1
- {"version":3,"file":"formatV3.js","sourceRoot":"","sources":["../../../src/feature-libraries/sequence-field/formatV3.ts"],"names":[],"mappings":";AAAA;;;GAGG;;;AAEH,+CAAwF;AAExF,mDAAoD;AAEpD,+CAKuB;AAEvB,MAAM,iBAAiB,GAAkB,EAAE,oBAAoB,EAAE,KAAK,EAAE,CAAC;AAEzE,MAAM,MAAM,GAAG,cAAI,CAAC,MAAM,CACzB;IACC,UAAU,EAAE,oBAAM;CAClB,EACD,iBAAiB,CACjB,CAAC;AAEF,MAAM,UAAU,GAAG,cAAI,CAAC,SAAS,CAChC,CAAC,wBAAY,EAAE,cAAI,CAAC,MAAM,CAAC,EAAE,MAAM,EAAE,cAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,EAC9D,uBAAY,CACZ,CAAC;AAEF,wCAAwC;AACxC,4EAA4E;AAC5E,MAAM,IAAI,GAAG,CAAyB,WAAmB,EAAE,EAAE,CAC5D,IAAA,sBAAQ,EAAC,UAAU,EAAE,WAAW,CAAC,CAAC;AAEnC,wCAAwC;AACxC,4EAA4E;AACrE,MAAM,SAAS,GAAG,CAAyB,WAAmB,EAAE,EAAE,CACxE,cAAI,CAAC,KAAK,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC;AADlB,QAAA,SAAS,aACS","sourcesContent":["/*!\n * Copyright (c) Microsoft Corporation and contributors. All rights reserved.\n * Licensed under the MIT License.\n */\n\nimport { type ObjectOptions, type Static, type TSchema, Type } from \"@sinclair/typebox\";\n\nimport { unionOptions } from \"../../codec/index.js\";\n\nimport {\n\tCellId,\n\tCellMark,\n\ttype Encoded as EncodedV2,\n\tMarkEffect as MarkEffectV2,\n} from \"./formatV2.js\";\n\nconst noAdditionalProps: ObjectOptions = { additionalProperties: false };\n\nconst Rename = Type.Object(\n\t{\n\t\tidOverride: CellId,\n\t},\n\tnoAdditionalProps,\n);\n\nconst MarkEffect = Type.Composite(\n\t[MarkEffectV2, Type.Object({ rename: Type.Optional(Rename) })],\n\tunionOptions,\n);\n\n// Return type is intentionally derived.\n// eslint-disable-next-line @typescript-eslint/explicit-function-return-type\nconst Mark = <Schema extends TSchema>(tNodeChange: Schema) =>\n\tCellMark(MarkEffect, tNodeChange);\n\n// Return type is intentionally derived.\n// eslint-disable-next-line @typescript-eslint/explicit-function-return-type\nexport const Changeset = <Schema extends TSchema>(tNodeChange: Schema) =>\n\tType.Array(Mark(tNodeChange));\n\n/**\n * @privateRemarks - Many of these names are currently used in the sequence-field types. Putting them in a namespace makes codec code more readable.\n */\nexport namespace Encoded {\n\texport type CellCount = EncodedV2.CellCount;\n\n\texport type MoveId = EncodedV2.MoveId;\n\texport type IdRange = EncodedV2.IdRange;\n\texport type CellId = EncodedV2.CellId;\n\texport type Insert = EncodedV2.Insert;\n\texport type MoveIn = EncodedV2.MoveIn;\n\texport type Remove = EncodedV2.Remove;\n\texport type MoveOut = EncodedV2.MoveOut;\n\texport type Attach = EncodedV2.Attach;\n\texport type Detach = EncodedV2.Detach;\n\texport type AttachAndDetach = EncodedV2.AttachAndDetach;\n\texport type CellMark<\n\t\tSchema extends TSchema,\n\t\tTNodeChange extends TSchema,\n\t> = EncodedV2.CellMark<Schema, TNodeChange>;\n\n\texport type Rename = Static<typeof Rename>;\n\texport type MarkEffect = Static<typeof MarkEffect>;\n\texport type Mark<Schema extends TSchema> = Static<ReturnType<typeof Mark<Schema>>>;\n\texport type Changeset<Schema extends TSchema> = Static<ReturnType<typeof Changeset<Schema>>>;\n}\n"]}
1
+ {"version":3,"file":"formatV3.js","sourceRoot":"","sources":["../../../src/feature-libraries/sequence-field/formatV3.ts"],"names":[],"mappings":";AAAA;;;GAGG;;;AAEH,+CAAwF;AAExF,mDAAoD;AAEpD,+CAKuB;AAEvB,MAAM,iBAAiB,GAAkB,EAAE,oBAAoB,EAAE,KAAK,EAAE,CAAC;AAEzE,MAAM,MAAM,GAAG,cAAI,CAAC,MAAM,CACzB;IACC,UAAU,EAAE,oBAAM;CAClB,EACD,iBAAiB,CACjB,CAAC;AAEF,MAAM,UAAU,GAAG,cAAI,CAAC,SAAS,CAChC,CAAC,wBAAY,EAAE,cAAI,CAAC,MAAM,CAAC,EAAE,MAAM,EAAE,cAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,EAC9D,uBAAY,CACZ,CAAC;AAEF,wCAAwC;AACxC,4EAA4E;AAC5E,MAAM,IAAI,GAAG,CAAyB,WAAmB,EAAE,EAAE,CAC5D,IAAA,sBAAQ,EAAC,UAAU,EAAE,WAAW,CAAC,CAAC;AAEnC,wCAAwC;AACxC,4EAA4E;AACrE,MAAM,SAAS,GAAG,CAAyB,WAAmB,EAAE,EAAE,CACxE,cAAI,CAAC,KAAK,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC;AADlB,QAAA,SAAS,aACS","sourcesContent":["/*!\n * Copyright (c) Microsoft Corporation and contributors. All rights reserved.\n * Licensed under the MIT License.\n */\n\nimport { type ObjectOptions, type Static, type TSchema, Type } from \"@sinclair/typebox\";\n\nimport { unionOptions } from \"../../codec/index.js\";\n\nimport {\n\tCellId,\n\tCellMark,\n\ttype Encoded as EncodedV2,\n\tMarkEffect as MarkEffectV2,\n} from \"./formatV2.js\";\n\nconst noAdditionalProps: ObjectOptions = { additionalProperties: false };\n\nconst Rename = Type.Object(\n\t{\n\t\tidOverride: CellId,\n\t},\n\tnoAdditionalProps,\n);\n\nconst MarkEffect = Type.Composite(\n\t[MarkEffectV2, Type.Object({ rename: Type.Optional(Rename) })],\n\tunionOptions,\n);\n\n// Return type is intentionally derived.\n// eslint-disable-next-line @typescript-eslint/explicit-function-return-type\nconst Mark = <Schema extends TSchema>(tNodeChange: Schema) =>\n\tCellMark(MarkEffect, tNodeChange);\n\n// Return type is intentionally derived.\n// eslint-disable-next-line @typescript-eslint/explicit-function-return-type\nexport const Changeset = <Schema extends TSchema>(tNodeChange: Schema) =>\n\tType.Array(Mark(tNodeChange));\n\n/**\n * @privateRemarks Many of these names are currently used in the sequence-field types. Putting them in a namespace makes codec code more readable.\n */\nexport namespace Encoded {\n\texport type CellCount = EncodedV2.CellCount;\n\n\texport type MoveId = EncodedV2.MoveId;\n\texport type IdRange = EncodedV2.IdRange;\n\texport type CellId = EncodedV2.CellId;\n\texport type Insert = EncodedV2.Insert;\n\texport type MoveIn = EncodedV2.MoveIn;\n\texport type Remove = EncodedV2.Remove;\n\texport type MoveOut = EncodedV2.MoveOut;\n\texport type Attach = EncodedV2.Attach;\n\texport type Detach = EncodedV2.Detach;\n\texport type AttachAndDetach = EncodedV2.AttachAndDetach;\n\texport type CellMark<\n\t\tSchema extends TSchema,\n\t\tTNodeChange extends TSchema,\n\t> = EncodedV2.CellMark<Schema, TNodeChange>;\n\n\texport type Rename = Static<typeof Rename>;\n\texport type MarkEffect = Static<typeof MarkEffect>;\n\texport type Mark<Schema extends TSchema> = Static<ReturnType<typeof Mark<Schema>>>;\n\texport type Changeset<Schema extends TSchema> = Static<ReturnType<typeof Changeset<Schema>>>;\n}\n"]}
@@ -5,5 +5,5 @@
5
5
  * THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY
6
6
  */
7
7
  export declare const pkgName = "@fluidframework/tree";
8
- export declare const pkgVersion = "2.70.0-360753";
8
+ export declare const pkgVersion = "2.70.0-361248";
9
9
  //# sourceMappingURL=packageVersion.d.ts.map
@@ -8,5 +8,5 @@
8
8
  Object.defineProperty(exports, "__esModule", { value: true });
9
9
  exports.pkgVersion = exports.pkgName = void 0;
10
10
  exports.pkgName = "@fluidframework/tree";
11
- exports.pkgVersion = "2.70.0-360753";
11
+ exports.pkgVersion = "2.70.0-361248";
12
12
  //# sourceMappingURL=packageVersion.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"packageVersion.js","sourceRoot":"","sources":["../src/packageVersion.ts"],"names":[],"mappings":";AAAA;;;;;GAKG;;;AAEU,QAAA,OAAO,GAAG,sBAAsB,CAAC;AACjC,QAAA,UAAU,GAAG,eAAe,CAAC","sourcesContent":["/*!\n * Copyright (c) Microsoft Corporation and contributors. All rights reserved.\n * Licensed under the MIT License.\n *\n * THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY\n */\n\nexport const pkgName = \"@fluidframework/tree\";\nexport const pkgVersion = \"2.70.0-360753\";\n"]}
1
+ {"version":3,"file":"packageVersion.js","sourceRoot":"","sources":["../src/packageVersion.ts"],"names":[],"mappings":";AAAA;;;;;GAKG;;;AAEU,QAAA,OAAO,GAAG,sBAAsB,CAAC;AACjC,QAAA,UAAU,GAAG,eAAe,CAAC","sourcesContent":["/*!\n * Copyright (c) Microsoft Corporation and contributors. All rights reserved.\n * Licensed under the MIT License.\n *\n * THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY\n */\n\nexport const pkgName = \"@fluidframework/tree\";\nexport const pkgVersion = \"2.70.0-361248\";\n"]}
@@ -148,7 +148,7 @@ export declare const SharedTreeFormatVersion: {
148
148
  /**
149
149
  * Requires \@fluidframework/tree \>= 2.0.0.
150
150
  *
151
- * @deprecated - FF does not currently plan on supporting this format long-term.
151
+ * @deprecated FF does not currently plan on supporting this format long-term.
152
152
  * Do not write production documents using this format, as they may not be loadable in the future.
153
153
  */
154
154
  readonly v1: 1;
@@ -379,7 +379,7 @@ exports.SharedTreeFormatVersion = {
379
379
  /**
380
380
  * Requires \@fluidframework/tree \>= 2.0.0.
381
381
  *
382
- * @deprecated - FF does not currently plan on supporting this format long-term.
382
+ * @deprecated FF does not currently plan on supporting this format long-term.
383
383
  * Do not write production documents using this format, as they may not be loadable in the future.
384
384
  */
385
385
  v1: 1,
@@ -1 +1 @@
1
- {"version":3,"file":"sharedTree.js","sourceRoot":"","sources":["../../src/shared-tree/sharedTree.ts"],"names":[],"mappings":"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","sourcesContent":["/*!\n * Copyright (c) Microsoft Corporation and contributors. All rights reserved.\n * Licensed under the MIT License.\n */\n\nimport type { ErasedType, IFluidLoadable } from \"@fluidframework/core-interfaces/internal\";\nimport { assert, fail, unreachableCase } from \"@fluidframework/core-utils/internal\";\nimport type { IChannelStorageService } from \"@fluidframework/datastore-definitions/internal\";\nimport type { IIdCompressor, StableId } from \"@fluidframework/id-compressor\";\nimport type {\n\tIChannelView,\n\tIFluidSerializer,\n\tSharedKernel,\n} from \"@fluidframework/shared-object-base/internal\";\nimport {\n\tUsageError,\n\ttype ITelemetryLoggerExt,\n} from \"@fluidframework/telemetry-utils/internal\";\n\nimport {\n\ttype CodecTree,\n\ttype CodecWriteOptions,\n\tDependentFormatVersion,\n\tFluidClientVersion,\n\tFormatValidatorNoOp,\n\ttype ICodecOptions,\n} from \"../codec/index.js\";\nimport {\n\ttype DetachedFieldIndexFormatVersion,\n\ttype FieldKey,\n\ttype GraphCommit,\n\ttype IEditableForest,\n\ttype JsonableTree,\n\tLeafNodeStoredSchema,\n\tMapNodeStoredSchema,\n\tObjectNodeStoredSchema,\n\tRevisionTagCodec,\n\ttype SchemaFormatVersion,\n\tSchemaVersion,\n\ttype TreeFieldStoredSchema,\n\ttype TreeNodeStoredSchema,\n\ttype TreeStoredSchema,\n\tTreeStoredSchemaRepository,\n\ttype TreeStoredSchemaSubscription,\n\tgetCodecTreeForDetachedFieldIndexFormat,\n\tmakeDetachedFieldIndex,\n\tmoveToDetachedField,\n} from \"../core/index.js\";\nimport {\n\tDetachedFieldIndexSummarizer,\n\tFieldKinds,\n\tForestSummarizer,\n\tSchemaSummarizer,\n\tTreeCompressionStrategy,\n\tbuildChunkedForest,\n\tbuildForest,\n\tdefaultIncrementalEncodingPolicy,\n\tdefaultSchemaPolicy,\n\tgetCodecTreeForFieldBatchFormat,\n\tgetCodecTreeForForestFormat,\n\tgetCodecTreeForSchemaFormat,\n\tjsonableTreeFromFieldCursor,\n\tmakeFieldBatchCodec,\n\tmakeMitigatedChangeFamily,\n\tmakeSchemaCodec,\n\tmakeTreeChunker,\n\ttype IncrementalEncodingPolicy,\n\ttype FieldBatchFormatVersion,\n\ttype ForestFormatVersion,\n\ttype TreeCompressionStrategyPrivate,\n} from \"../feature-libraries/index.js\";\n// eslint-disable-next-line import/no-internal-modules\nimport type { FormatV1 } from \"../feature-libraries/schema-index/index.js\";\nimport {\n\ttype BranchId,\n\ttype ClonableSchemaAndPolicy,\n\ttype EditManagerFormatVersion,\n\ttype ExplicitCoreCodecVersions,\n\tgetCodecTreeForEditManagerFormatWithChange,\n\tgetCodecTreeForMessageFormatWithChange,\n\ttype MessageFormatVersion,\n\tSharedTreeCore,\n} from \"../shared-tree-core/index.js\";\nimport {\n\ttype ITree,\n\ttype ImplicitFieldSchema,\n\tNodeKind,\n\ttype ReadSchema,\n\ttype SimpleFieldSchema,\n\ttype SimpleTreeSchema,\n\ttype TreeView,\n\ttype TreeViewAlpha,\n\ttype TreeViewConfiguration,\n\ttype UnsafeUnknownSchema,\n\ttype VerboseTree,\n\ttryStoredSchemaAsArray,\n\ttype SimpleNodeSchema,\n\tFieldKind,\n\ttype ITreeAlpha,\n\ttype SimpleObjectFieldSchema,\n} from \"../simple-tree/index.js\";\n\nimport { SchematizingSimpleTreeView } from \"./schematizingTreeView.js\";\nimport { SharedTreeReadonlyChangeEnricher } from \"./sharedTreeChangeEnricher.js\";\nimport { SharedTreeChangeFamily } from \"./sharedTreeChangeFamily.js\";\nimport type { SharedTreeChange } from \"./sharedTreeChangeTypes.js\";\nimport type { SharedTreeEditBuilder } from \"./sharedTreeEditBuilder.js\";\nimport { type TreeCheckout, type BranchableTree, createTreeCheckout } from \"./treeCheckout.js\";\nimport {\n\tbrand,\n\ttype Breakable,\n\tbreakingClass,\n\ttype JsonCompatible,\n\tthrowIfBroken,\n} from \"../util/index.js\";\nimport {\n\tgetCodecTreeForChangeFormat,\n\ttype SharedTreeChangeFormatVersion,\n} from \"./sharedTreeChangeCodecs.js\";\n\n/**\n * Copy of data from an {@link ITreePrivate} at some point in time.\n * @remarks\n * This is unrelated to Fluids concept of \"snapshots\".\n */\nexport interface SharedTreeContentSnapshot {\n\t/**\n\t * The schema stored in the document.\n\t *\n\t * @remarks\n\t * Edits to the schema can mutate the schema stored of the tree which took this snapshot (but this snapshot will remain the same)\n\t * This is mainly useful for debugging cases where schematize reports an incompatible view schema.\n\t */\n\treadonly schema: TreeStoredSchema;\n\t/**\n\t * All {@link TreeStatus.InDocument} content.\n\t */\n\treadonly tree: JsonableTree[];\n\t/**\n\t * All {@link TreeStatus.Removed} content.\n\t */\n\treadonly removed: [string | number | undefined, number, JsonableTree][];\n}\n\n/**\n * {@link ITree} extended with some non-public APIs.\n * @internal\n */\nexport interface ITreeInternal extends IChannelView, ITreeAlpha {}\n\n/**\n * {@link ITreeInternal} extended with some non-exported APIs.\n * @remarks\n * This allows access to the tree content using the internal data model used at the storage and \"flex\" layers,\n * and should only be needed for testing and debugging this package's internals.\n */\nexport interface ITreePrivate extends ITreeInternal {\n\t/**\n\t * Provides a copy of the current content of the tree.\n\t * This can be useful for inspecting the tree when no suitable view schema is available.\n\t * This is only intended for use in testing and exceptional code paths: it is not performant.\n\t *\n\t * This does not include everything that is included in a tree summary, since information about how to merge future edits is omitted.\n\t */\n\tcontentSnapshot(): SharedTreeContentSnapshot;\n\n\t/**\n\t * Access to internals for testing.\n\t */\n\treadonly kernel: SharedTreeKernel;\n}\n\n/**\n * Has an entry for each codec which writes an explicit version into its data.\n *\n * This is used to map the single API entrypoint controlling the format {@link SharedTreeOptions.formatVersion}\n * to a list of write versions that for each codec that should be used for that format.\n *\n * Note that all explicitly versioned codecs should be using the format version from the data to read encoded data.\n *\n * TODO: Plumb these write versions into forest, schema, detached field index codec creation.\n */\ninterface ExplicitCodecVersions extends ExplicitCoreCodecVersions {\n\tforest: ForestFormatVersion;\n\tschema: SchemaFormatVersion;\n\tdetachedFieldIndex: DetachedFieldIndexFormatVersion;\n\tfieldBatch: FieldBatchFormatVersion;\n}\n\nconst formatVersionToTopLevelCodecVersions = new Map<number, ExplicitCodecVersions>([\n\t[\n\t\t1,\n\t\t{\n\t\t\tforest: brand(1),\n\t\t\tschema: brand(1),\n\t\t\tdetachedFieldIndex: brand(1),\n\t\t\teditManager: brand(1),\n\t\t\tmessage: brand(1),\n\t\t\tfieldBatch: brand(1),\n\t\t},\n\t],\n\t[\n\t\t2,\n\t\t{\n\t\t\tforest: brand(1),\n\t\t\tschema: brand(1),\n\t\t\tdetachedFieldIndex: brand(1),\n\t\t\teditManager: brand(2),\n\t\t\tmessage: brand(2),\n\t\t\tfieldBatch: brand(1),\n\t\t},\n\t],\n\t[\n\t\t3,\n\t\t{\n\t\t\tforest: brand(1),\n\t\t\tschema: brand(1),\n\t\t\tdetachedFieldIndex: brand(1),\n\t\t\teditManager: brand(3),\n\t\t\tmessage: brand(3),\n\t\t\tfieldBatch: brand(1),\n\t\t},\n\t],\n\t[\n\t\t4,\n\t\t{\n\t\t\tforest: brand(1),\n\t\t\tschema: brand(1),\n\t\t\tdetachedFieldIndex: brand(1),\n\t\t\teditManager: brand(4),\n\t\t\tmessage: brand(4),\n\t\t\tfieldBatch: brand(1),\n\t\t},\n\t],\n\t[\n\t\t5,\n\t\t{\n\t\t\tforest: brand(1),\n\t\t\tschema: brand(2),\n\t\t\tdetachedFieldIndex: brand(1),\n\t\t\teditManager: brand(4),\n\t\t\tmessage: brand(4),\n\t\t\tfieldBatch: brand(1),\n\t\t},\n\t],\n\t[\n\t\t100, // SharedTreeFormatVersion.vSharedBranches\n\t\t{\n\t\t\tforest: brand(1),\n\t\t\tschema: brand(2),\n\t\t\tdetachedFieldIndex: brand(1),\n\t\t\teditManager: brand(5),\n\t\t\tmessage: brand(5),\n\t\t\tfieldBatch: brand(1),\n\t\t},\n\t],\n]);\n\nfunction getCodecVersions(formatVersion: number): ExplicitCodecVersions {\n\tconst versions = formatVersionToTopLevelCodecVersions.get(formatVersion);\n\tassert(versions !== undefined, 0x90e /* Unknown format version */);\n\treturn versions;\n}\n\n/**\n * The type SharedTree's kernel's view must implement so what when its merged with the underling SharedObject's API it fully implements the required tree API surface ({@link ITreePrivate }).\n */\nexport type SharedTreeKernelView = Omit<ITreePrivate, keyof (IChannelView & IFluidLoadable)>;\n\n/**\n * SharedTreeCore, configured with a good set of indexes and field kinds which will maintain compatibility over time.\n *\n * TODO: detail compatibility requirements.\n */\n@breakingClass\nexport class SharedTreeKernel\n\textends SharedTreeCore<SharedTreeEditBuilder, SharedTreeChange>\n\timplements SharedKernel\n{\n\tpublic readonly checkout: TreeCheckout;\n\tpublic get storedSchema(): TreeStoredSchemaRepository {\n\t\treturn this.checkout.storedSchema;\n\t}\n\n\tprivate readonly checkouts: Map<BranchId, TreeCheckout> = new Map();\n\n\t/**\n\t * The app-facing API for SharedTree implemented by this Kernel.\n\t * @remarks\n\t * This is the API grafted onto the ISharedObject which apps can access.\n\t * It includes both the APIs used for internal testing, and public facing APIs (both stable and unstable).\n\t * Different users will have access to different subsets of this API, see {@link ITree}, {@link ITreeAlpha} and {@link ITreeInternal} which this {@link ITreePrivate} extends.\n\t */\n\tpublic readonly view: SharedTreeKernelView;\n\n\tpublic constructor(\n\t\tbreaker: Breakable,\n\t\tsharedObject: IChannelView & IFluidLoadable,\n\t\tserializer: IFluidSerializer,\n\t\tsubmitLocalMessage: (content: unknown, localOpMetadata?: unknown) => void,\n\t\tlastSequenceNumber: () => number | undefined,\n\t\tinitialSequenceNumber: number,\n\t\tprivate readonly logger: ITelemetryLoggerExt | undefined,\n\t\tidCompressor: IIdCompressor,\n\t\toptionsParam: SharedTreeOptionsInternal,\n\t) {\n\t\tconst options = { ...defaultSharedTreeOptions, ...optionsParam };\n\t\tconst codecVersions = getCodecVersions(options.formatVersion);\n\t\tconst schema = new TreeStoredSchemaRepository();\n\t\tconst forest = buildConfiguredForest(\n\t\t\tbreaker,\n\t\t\toptions.forest,\n\t\t\tschema,\n\t\t\tidCompressor,\n\t\t\toptions.shouldEncodeIncrementally,\n\t\t);\n\t\tconst revisionTagCodec = new RevisionTagCodec(idCompressor);\n\t\tconst removedRoots = makeDetachedFieldIndex(\n\t\t\t\"repair\",\n\t\t\trevisionTagCodec,\n\t\t\tidCompressor,\n\t\t\toptions,\n\t\t);\n\t\tconst schemaCodec = makeSchemaCodec(options, codecVersions.schema);\n\t\tconst schemaSummarizer = new SchemaSummarizer(\n\t\t\tschema,\n\t\t\t{\n\t\t\t\tgetCurrentSeq: lastSequenceNumber,\n\t\t\t},\n\t\t\tschemaCodec,\n\t\t);\n\t\tconst fieldBatchCodec = makeFieldBatchCodec(options, codecVersions.fieldBatch);\n\n\t\tconst encoderContext = {\n\t\t\tschema: {\n\t\t\t\tschema,\n\t\t\t\tpolicy: defaultSchemaPolicy,\n\t\t\t},\n\t\t\tencodeType: options.treeEncodeType,\n\t\t\toriginatorId: idCompressor.localSessionId,\n\t\t\tidCompressor,\n\t\t};\n\t\tconst forestSummarizer = new ForestSummarizer(\n\t\t\tforest,\n\t\t\trevisionTagCodec,\n\t\t\tfieldBatchCodec,\n\t\t\tencoderContext,\n\t\t\toptions,\n\t\t\tidCompressor,\n\t\t\tinitialSequenceNumber,\n\t\t\toptions.shouldEncodeIncrementally,\n\t\t);\n\t\tconst removedRootsSummarizer = new DetachedFieldIndexSummarizer(removedRoots);\n\t\tconst innerChangeFamily = new SharedTreeChangeFamily(\n\t\t\trevisionTagCodec,\n\t\t\tfieldBatchCodec,\n\t\t\toptions,\n\t\t\toptions.treeEncodeType,\n\t\t\tidCompressor,\n\t\t);\n\t\tconst changeFamily = makeMitigatedChangeFamily(\n\t\t\tinnerChangeFamily,\n\t\t\tSharedTreeChangeFamily.emptyChange,\n\t\t\t(error: unknown) => {\n\t\t\t\t// TODO:6344 Add telemetry for these errors.\n\t\t\t\t// Rethrowing the error has a different effect depending on the context in which the\n\t\t\t\t// ChangeFamily was invoked:\n\t\t\t\t// - If the ChangeFamily was invoked as part of incoming op processing, rethrowing the error\n\t\t\t\t// will cause the runtime to disconnect the client, log a severe error, and not reconnect.\n\t\t\t\t// This will not cause the host application to crash because it is not on the stack at that time.\n\t\t\t\t// TODO: let the host application know that the client is now disconnected.\n\t\t\t\t// - If the ChangeFamily was invoked as part of dealing with a local change, rethrowing the\n\t\t\t\t// error will cause the host application to crash. This is not ideal, but is better than\n\t\t\t\t// letting the application either send an invalid change to the server or allowing the\n\t\t\t\t// application to continue working when its local branches contain edits that cannot be\n\t\t\t\t// reflected in its views.\n\t\t\t\t// The best course of action for a host application in such a state is to restart.\n\t\t\t\t// TODO: let the host application know about this situation and provide a way to\n\t\t\t\t// programmatically reload the SharedTree container.\n\t\t\t\tthrow error;\n\t\t\t},\n\t\t);\n\t\tconst changeEnricher = new SharedTreeReadonlyChangeEnricher(forest, schema, removedRoots);\n\t\tsuper(\n\t\t\tbreaker,\n\t\t\tsharedObject,\n\t\t\tserializer,\n\t\t\tsubmitLocalMessage,\n\t\t\tlogger,\n\t\t\t[schemaSummarizer, forestSummarizer, removedRootsSummarizer],\n\t\t\tchangeFamily,\n\t\t\toptions,\n\t\t\tcodecVersions,\n\t\t\tchangeFormatVersionForEditManager,\n\t\t\tchangeFormatVersionForMessage,\n\t\t\tidCompressor,\n\t\t\tschema,\n\t\t\tdefaultSchemaPolicy,\n\t\t\tundefined,\n\t\t\tchangeEnricher,\n\t\t);\n\n\t\tthis.checkout = createTreeCheckout(idCompressor, this.mintRevisionTag, revisionTagCodec, {\n\t\t\tbranch: this.getLocalBranch(),\n\t\t\tchangeFamily,\n\t\t\tschema,\n\t\t\tforest,\n\t\t\tfieldBatchCodec,\n\t\t\tremovedRoots,\n\t\t\tchunkCompressionStrategy: options.treeEncodeType,\n\t\t\tlogger,\n\t\t\tbreaker: this.breaker,\n\t\t\tdisposeForksAfterTransaction: options.disposeForksAfterTransaction,\n\t\t});\n\n\t\tthis.registerCheckout(\"main\", this.checkout);\n\n\t\tthis.view = {\n\t\t\tcontentSnapshot: () => this.contentSnapshot(),\n\t\t\texportSimpleSchema: () => this.exportSimpleSchema(),\n\t\t\texportVerbose: () => this.exportVerbose(),\n\t\t\tviewWith: this.viewWith.bind(this),\n\t\t\tviewSharedBranchWith: this.viewBranchWith.bind(this),\n\t\t\tcreateSharedBranch: this.createSharedBranch.bind(this),\n\t\t\tgetSharedBranchIds: this.getSharedBranchIds.bind(this),\n\t\t\tkernel: this,\n\t\t};\n\t}\n\n\tprivate registerCheckout(branchId: BranchId, checkout: TreeCheckout): void {\n\t\tthis.checkouts.set(branchId, checkout);\n\t\tconst enricher = this.getCommitEnricher(branchId);\n\t\tcheckout.transaction.events.on(\"started\", () => {\n\t\t\tif (this.sharedObject.isAttached()) {\n\t\t\t\t// It is currently forbidden to attach during a transaction, so transaction state changes can be ignored until after attaching.\n\t\t\t\tenricher.startTransaction();\n\t\t\t}\n\t\t});\n\n\t\tcheckout.transaction.events.on(\"aborting\", () => {\n\t\t\tif (this.sharedObject.isAttached()) {\n\t\t\t\t// It is currently forbidden to attach during a transaction, so transaction state changes can be ignored until after attaching.\n\t\t\t\tenricher.abortTransaction();\n\t\t\t}\n\t\t});\n\t\tcheckout.transaction.events.on(\"committing\", () => {\n\t\t\tif (this.sharedObject.isAttached()) {\n\t\t\t\t// It is currently forbidden to attach during a transaction, so transaction state changes can be ignored until after attaching.\n\t\t\t\tenricher.commitTransaction();\n\t\t\t}\n\t\t});\n\t\tcheckout.events.on(\"beforeBatch\", (event) => {\n\t\t\tif (event.type === \"append\" && this.sharedObject.isAttached()) {\n\t\t\t\tif (checkout.transaction.isInProgress()) {\n\t\t\t\t\tenricher.addTransactionCommits(event.newCommits);\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\t}\n\n\tpublic exportVerbose(): VerboseTree | undefined {\n\t\treturn this.checkout.exportVerbose();\n\t}\n\n\tpublic exportSimpleSchema(): SimpleTreeSchema {\n\t\treturn exportSimpleSchema(this.storedSchema);\n\t}\n\n\t@throwIfBroken\n\tpublic contentSnapshot(): SharedTreeContentSnapshot {\n\t\tconst cursor = this.checkout.forest.allocateCursor(\"contentSnapshot\");\n\t\ttry {\n\t\t\tmoveToDetachedField(this.checkout.forest, cursor);\n\t\t\treturn {\n\t\t\t\tschema: this.storedSchema.clone(),\n\t\t\t\ttree: jsonableTreeFromFieldCursor(cursor),\n\t\t\t\tremoved: this.checkout.getRemovedRoots(),\n\t\t\t};\n\t\t} finally {\n\t\t\tcursor.free();\n\t\t}\n\t}\n\n\t// For the new TreeViewAlpha API\n\tpublic viewWith<TRoot extends ImplicitFieldSchema | UnsafeUnknownSchema>(\n\t\tconfig: TreeViewConfiguration<ReadSchema<TRoot>>,\n\t): SchematizingSimpleTreeView<TRoot> & TreeView<ReadSchema<TRoot>>;\n\n\t// For the old TreeView API\n\tpublic viewWith<TRoot extends ImplicitFieldSchema>(\n\t\tconfig: TreeViewConfiguration<TRoot>,\n\t): SchematizingSimpleTreeView<TRoot> & TreeView<TRoot>;\n\n\tpublic viewWith<TRoot extends ImplicitFieldSchema | UnsafeUnknownSchema>(\n\t\tconfig: TreeViewConfiguration<ReadSchema<TRoot>>,\n\t): SchematizingSimpleTreeView<TRoot> & TreeView<ReadSchema<TRoot>> {\n\t\treturn this.checkout.viewWith(config) as SchematizingSimpleTreeView<TRoot> &\n\t\t\tTreeView<ReadSchema<TRoot>>;\n\t}\n\n\tpublic viewBranchWith<TRoot extends ImplicitFieldSchema>(\n\t\tbranchId: string,\n\t\tconfig: TreeViewConfiguration<TRoot>,\n\t): TreeView<TRoot>;\n\n\tpublic viewBranchWith<TRoot extends ImplicitFieldSchema | UnsafeUnknownSchema>(\n\t\tbranchId: string,\n\t\tconfig: TreeViewConfiguration<ReadSchema<TRoot>>,\n\t): SchematizingSimpleTreeView<TRoot> & TreeView<ReadSchema<TRoot>> {\n\t\tconst compressedId = this.idCompressor.tryRecompress(branchId as StableId);\n\t\tif (compressedId === undefined) {\n\t\t\tthrow new UsageError(`No branch found with id: ${branchId}`);\n\t\t}\n\t\treturn this.getCheckout(compressedId).viewWith(\n\t\t\tconfig,\n\t\t) as SchematizingSimpleTreeView<TRoot> & TreeView<ReadSchema<TRoot>>;\n\t}\n\n\tprivate getCheckout(branchId: BranchId): TreeCheckout {\n\t\treturn this.checkouts.get(branchId) ?? this.checkoutBranch(branchId);\n\t}\n\n\tprivate checkoutBranch(branchId: BranchId): TreeCheckout {\n\t\tconst checkout = this.checkout.branch();\n\t\tcheckout.switchBranch(this.getSharedBranch(branchId));\n\t\tconst enricher = new SharedTreeReadonlyChangeEnricher(\n\t\t\tcheckout.forest,\n\t\t\tcheckout.storedSchema,\n\t\t\tcheckout.removedRoots,\n\t\t);\n\n\t\tthis.registerSharedBranchForEditing(branchId, enricher);\n\t\tthis.registerCheckout(branchId, checkout);\n\t\treturn checkout;\n\t}\n\n\tpublic override async loadCore(services: IChannelStorageService): Promise<void> {\n\t\tawait super.loadCore(services);\n\t\tthis.checkout.load();\n\t}\n\n\tpublic override didAttach(): void {\n\t\tfor (const checkout of this.checkouts.values()) {\n\t\t\tif (checkout.transaction.isInProgress()) {\n\t\t\t\t// Attaching during a transaction is not currently supported.\n\t\t\t\t// At least part of of the system is known to not handle this case correctly - commit enrichment - and there may be others.\n\t\t\t\tthrow new UsageError(\n\t\t\t\t\t\"Cannot attach while a transaction is in progress. Commit or abort the transaction before attaching.\",\n\t\t\t\t);\n\t\t\t}\n\t\t}\n\t\tsuper.didAttach();\n\t}\n\n\tpublic override applyStashedOp(\n\t\t...args: Parameters<\n\t\t\tSharedTreeCore<SharedTreeEditBuilder, SharedTreeChange>[\"applyStashedOp\"]\n\t\t>\n\t): void {\n\t\tfor (const checkout of this.checkouts.values()) {\n\t\t\tassert(\n\t\t\t\t!checkout.transaction.isInProgress(),\n\t\t\t\t0x674 /* Unexpected transaction is open while applying stashed ops */,\n\t\t\t);\n\t\t}\n\t\tsuper.applyStashedOp(...args);\n\t}\n\n\tprotected override submitCommit(\n\t\tbranchId: BranchId,\n\t\tcommit: GraphCommit<SharedTreeChange>,\n\t\tschemaAndPolicy: ClonableSchemaAndPolicy,\n\t\tisResubmit: boolean,\n\t): void {\n\t\tconst checkout = this.getCheckout(branchId);\n\t\tassert(\n\t\t\t!checkout.transaction.isInProgress(),\n\t\t\t0xaa6 /* Cannot submit a commit while a transaction is in progress */,\n\t\t);\n\t\tif (isResubmit) {\n\t\t\treturn super.submitCommit(branchId, commit, schemaAndPolicy, isResubmit);\n\t\t}\n\n\t\t// Refrain from submitting new commits until they are validated by the checkout.\n\t\t// This is not a strict requirement for correctness in our system, but in the event that there is a bug when applying commits to the checkout\n\t\t// that causes a crash (e.g. in the forest), this will at least prevent this client from sending the problematic commit to any other clients.\n\t\tcheckout.onCommitValid(commit, () =>\n\t\t\tsuper.submitCommit(branchId, commit, schemaAndPolicy, isResubmit),\n\t\t);\n\t}\n\n\tpublic onDisconnect(): void {}\n}\n\nexport function exportSimpleSchema(storedSchema: TreeStoredSchema): SimpleTreeSchema {\n\treturn {\n\t\troot: exportSimpleFieldSchemaStored(storedSchema.rootFieldSchema),\n\t\tdefinitions: new Map(\n\t\t\t[...storedSchema.nodeSchema].map(([key, schema]) => {\n\t\t\t\treturn [key, exportSimpleNodeSchemaStored(schema)];\n\t\t\t}),\n\t\t),\n\t};\n}\n\n/**\n * A way to parse schema in the persisted format from {@link extractPersistedSchema}.\n * @remarks\n * This behaves identically to {@link ITreeAlpha.exportSimpleSchema},\n * except that it gets the schema from the caller instead of from an existing tree.\n *\n * This can be useful for inspecting the contents of persisted schema,\n * such as those generated by {@link extractPersistedSchema} for use in testing.\n * Since that data format is otherwise unspecified,\n * this provides a way to inspect its contents with documented semantics.\n * @alpha\n */\nexport function persistedToSimpleSchema(\n\tpersisted: JsonCompatible,\n\toptions: ICodecOptions,\n): SimpleTreeSchema {\n\tconst schemaCodec = makeSchemaCodec(options, SchemaVersion.v1);\n\tconst stored = schemaCodec.decode(persisted as FormatV1);\n\treturn exportSimpleSchema(stored);\n}\n\n/**\n * Get a {@link BranchableTree} from a {@link ITree}.\n * @remarks The branch can be used for \"version control\"-style coordination of edits on the tree.\n * @privateRemarks This function will be removed if/when the branching API becomes public,\n * but it (or something like it) is necessary in the meantime to prevent the alpha types from being exposed as public.\n * @alpha\n * @deprecated This API is superseded by {@link TreeBranch}, which should be used instead.\n */\nexport function getBranch(tree: ITree): BranchableTree;\n/**\n * Get a {@link BranchableTree} from a {@link TreeView}.\n * @remarks The branch can be used for \"version control\"-style coordination of edits on the tree.\n * Branches are currently an unstable \"alpha\" API and are subject to change in the future.\n * @privateRemarks This function will be removed if/when the branching API becomes public,\n * but it (or something like it) is necessary in the meantime to prevent the alpha types from being exposed as public.\n * @alpha\n * @deprecated This API is superseded by {@link TreeBranch}, which should be used instead.\n */\nexport function getBranch<T extends ImplicitFieldSchema | UnsafeUnknownSchema>(\n\tview: TreeViewAlpha<T>,\n): BranchableTree;\nexport function getBranch<T extends ImplicitFieldSchema | UnsafeUnknownSchema>(\n\ttreeOrView: ITree | TreeViewAlpha<T>,\n): BranchableTree {\n\tif (treeOrView instanceof SchematizingSimpleTreeView) {\n\t\treturn treeOrView.checkout as unknown as BranchableTree;\n\t}\n\tconst kernel = (treeOrView as ITree as ITreePrivate).kernel;\n\tassert(kernel instanceof SharedTreeKernel, 0xb56 /* Invalid ITree */);\n\t// This cast is safe so long as TreeCheckout supports all the operations on the branch interface.\n\treturn kernel.checkout as unknown as BranchableTree;\n}\n\n/**\n * Format versions supported by SharedTree.\n *\n * Each version documents a required minimum version of the \\@fluidframework/tree package.\n * @alpha\n */\nexport const SharedTreeFormatVersion = {\n\t/**\n\t * Requires \\@fluidframework/tree \\>= 2.0.0.\n\t *\n\t * @deprecated - FF does not currently plan on supporting this format long-term.\n\t * Do not write production documents using this format, as they may not be loadable in the future.\n\t */\n\tv1: 1,\n\n\t/**\n\t * Requires \\@fluidframework/tree \\>= 2.0.0.\n\t */\n\tv2: 2,\n\n\t/**\n\t * Requires \\@fluidframework/tree \\>= 2.0.0.\n\t */\n\tv3: 3,\n\n\t/**\n\t * Requires \\@fluidframework/tree \\>= 2.0.0.\n\t */\n\tv5: 5,\n\n\t/**\n\t * For testing purposes only.\n\t */\n\tvSharedBranches: 100,\n} as const;\n\n/**\n * Format versions supported by SharedTree.\n *\n * Each version documents a required minimum version of the \\@fluidframework/tree package.\n * @alpha\n * @privateRemarks\n * See packages/dds/tree/docs/main/compatibility.md for information on how to add support for a new format.\n *\n * TODO: Before this gets promoted past Alpha,\n * a separate abstraction more suited for use in the public API should be adopted rather than reusing the same types used internally.\n * Such an abstraction should probably be in the form of a Fluid-Framework wide compatibility enum.\n */\nexport type SharedTreeFormatVersion = typeof SharedTreeFormatVersion;\n\n/**\n * Defines for each EditManagerFormatVersion the SharedTreeChangeFormatVersion to use.\n * This is an arbitrary mapping that is injected in the EditManger codec.\n * Once an entry is defined and used in production, it cannot be changed.\n * This is because the format for SharedTree changes are not explicitly versioned.\n */\nexport const changeFormatVersionForEditManager = DependentFormatVersion.fromPairs([\n\t[brand<EditManagerFormatVersion>(1), brand<SharedTreeChangeFormatVersion>(1)],\n\t[brand<EditManagerFormatVersion>(2), brand<SharedTreeChangeFormatVersion>(2)],\n\t[brand<EditManagerFormatVersion>(3), brand<SharedTreeChangeFormatVersion>(3)],\n\t[brand<EditManagerFormatVersion>(4), brand<SharedTreeChangeFormatVersion>(4)],\n\t[brand<EditManagerFormatVersion>(5), brand<SharedTreeChangeFormatVersion>(4)],\n]);\n\n/**\n * Defines for each MessageFormatVersion the SharedTreeChangeFormatVersion to use.\n * This is an arbitrary mapping that is injected in the message codec.\n * Once an entry is defined and used in production, it cannot be changed.\n * This is because the format for SharedTree changes are not explicitly versioned.\n */\nexport const changeFormatVersionForMessage = DependentFormatVersion.fromPairs([\n\t[brand<MessageFormatVersion>(undefined), brand<SharedTreeChangeFormatVersion>(1)],\n\t[brand<MessageFormatVersion>(1), brand<SharedTreeChangeFormatVersion>(1)],\n\t[brand<MessageFormatVersion>(2), brand<SharedTreeChangeFormatVersion>(2)],\n\t[brand<MessageFormatVersion>(3), brand<SharedTreeChangeFormatVersion>(3)],\n\t[brand<MessageFormatVersion>(4), brand<SharedTreeChangeFormatVersion>(4)],\n\t[brand<MessageFormatVersion>(5), brand<SharedTreeChangeFormatVersion>(4)],\n]);\n\nfunction getCodecTreeForEditManagerFormat(version: EditManagerFormatVersion): CodecTree {\n\tconst change = changeFormatVersionForEditManager.lookup(version);\n\tconst changeCodecTree = getCodecTreeForChangeFormat(change);\n\treturn getCodecTreeForEditManagerFormatWithChange(version, changeCodecTree);\n}\n\nfunction getCodecTreeForMessageFormat(version: MessageFormatVersion): CodecTree {\n\tconst change = changeFormatVersionForMessage.lookup(version);\n\tconst changeCodecTree = getCodecTreeForChangeFormat(change);\n\treturn getCodecTreeForMessageFormatWithChange(version, changeCodecTree);\n}\n\nexport function getCodecTreeForSharedTreeFormat(\n\tversion: SharedTreeFormatVersion[keyof SharedTreeFormatVersion],\n): CodecTree {\n\tconst children: CodecTree[] = [];\n\tconst childCodecs = getCodecVersions(version);\n\tfor (const name of Object.keys(childCodecs) as (keyof ExplicitCodecVersions)[]) {\n\t\tswitch (name) {\n\t\t\tcase \"editManager\":\n\t\t\t\tchildren.push(getCodecTreeForEditManagerFormat(childCodecs.editManager));\n\t\t\t\tbreak;\n\t\t\tcase \"message\":\n\t\t\t\tchildren.push(getCodecTreeForMessageFormat(childCodecs.message));\n\t\t\t\tbreak;\n\t\t\tcase \"forest\":\n\t\t\t\tchildren.push(getCodecTreeForForestFormat(childCodecs.forest));\n\t\t\t\tbreak;\n\t\t\tcase \"schema\":\n\t\t\t\tchildren.push(getCodecTreeForSchemaFormat(childCodecs.schema));\n\t\t\t\tbreak;\n\t\t\tcase \"detachedFieldIndex\":\n\t\t\t\tchildren.push(getCodecTreeForDetachedFieldIndexFormat(childCodecs.detachedFieldIndex));\n\t\t\t\tbreak;\n\t\t\tcase \"fieldBatch\":\n\t\t\t\tchildren.push(getCodecTreeForFieldBatchFormat(childCodecs.fieldBatch));\n\t\t\t\tbreak;\n\t\t\tdefault:\n\t\t\t\tunreachableCase(name);\n\t\t}\n\t}\n\treturn {\n\t\tname: \"SharedTree\",\n\t\tversion,\n\t\tchildren,\n\t};\n}\n\n/**\n * Configuration options for SharedTree.\n * @beta @input\n */\nexport type SharedTreeOptionsBeta = ForestOptions;\n\n/**\n * Configuration options for SharedTree.\n * @alpha @input\n */\nexport type SharedTreeOptions = Partial<CodecWriteOptions> &\n\tPartial<SharedTreeFormatOptions> &\n\tSharedTreeOptionsBeta;\n\nexport interface SharedTreeOptionsInternal\n\textends Omit<SharedTreeOptions, \"treeEncodeType\">,\n\t\tPartial<SharedTreeFormatOptionsInternal> {\n\tdisposeForksAfterTransaction?: boolean;\n\t/**\n\t * Returns whether a node / field should be incrementally encoded.\n\t * @remarks\n\t * See {@link IncrementalEncodingPolicy}.\n\t */\n\tshouldEncodeIncrementally?: IncrementalEncodingPolicy;\n}\n/**\n * Configuration options for SharedTree's internal tree storage.\n * @beta @input\n */\nexport interface ForestOptions {\n\t/**\n\t * The {@link ForestType} indicating which forest type should be created for the SharedTree.\n\t */\n\treadonly forest?: ForestType;\n}\n\n/**\n * Options for configuring the persisted format SharedTree uses.\n * @alpha @input\n */\nexport interface SharedTreeFormatOptions {\n\t/**\n\t * See {@link TreeCompressionStrategy}.\n\t * default: TreeCompressionStrategy.Compressed\n\t */\n\ttreeEncodeType: TreeCompressionStrategy;\n\t/**\n\t * The format version SharedTree should use to persist documents.\n\t *\n\t * This option has compatibility implications for applications using SharedTree.\n\t * Each version documents a required minimum version of \\@fluidframework/tree.\n\t * If this minimum version fails to be met, the SharedTree may fail to load.\n\t * To be safe, application authors should verify that they have saturated this version\n\t * of \\@fluidframework/tree in their ecosystem before changing the format version.\n\t *\n\t * This option defaults to SharedTreeFormatVersion.v2.\n\t */\n\tformatVersion: SharedTreeFormatVersion[keyof SharedTreeFormatVersion];\n}\n\nexport interface SharedTreeFormatOptionsInternal\n\textends Omit<SharedTreeFormatOptions, \"treeEncodeType\"> {\n\ttreeEncodeType: TreeCompressionStrategyPrivate;\n}\n\n/**\n * Used to distinguish between different forest types.\n * @remarks\n * The \"Forest\" is the internal data structure used to store all the trees (the main tree and any removed ones) for a given view or branch.\n * ForestTypes should all have the same behavior, but may differ in performance and debuggability.\n *\n * Current options are {@link ForestTypeReference}, {@link ForestTypeOptimized} and {@link ForestTypeExpensiveDebug}.\n * @privateRemarks\n * Implement using {@link toForestType}.\n * Consume using {@link buildConfiguredForest}.\n * @sealed @beta\n */\nexport interface ForestType extends ErasedType<\"ForestType\"> {}\n\n/**\n * Reference implementation of forest.\n * @remarks\n * A simple implementation with minimal complexity and moderate debuggability, validation and performance.\n * @privateRemarks\n * The \"ObjectForest\" forest type.\n * @beta\n */\nexport const ForestTypeReference = toForestType(\n\t(breaker: Breakable, schema: TreeStoredSchemaSubscription, idCompressor: IIdCompressor) =>\n\t\tbuildForest(breaker, schema),\n);\n\n/**\n * Optimized implementation of forest.\n * @remarks\n * A complex optimized forest implementation, which has minimal validation and debuggability to optimize for performance.\n * Uses an internal representation optimized for size designed to scale to larger datasets with reduced overhead.\n * @privateRemarks\n * The \"ChunkedForest\" forest type.\n * @beta\n */\nexport const ForestTypeOptimized = toForestType(\n\t(\n\t\tbreaker: Breakable,\n\t\tschema: TreeStoredSchemaSubscription,\n\t\tidCompressor: IIdCompressor,\n\t\tshouldEncodeIncrementally: IncrementalEncodingPolicy,\n\t) =>\n\t\tbuildChunkedForest(\n\t\t\tmakeTreeChunker(schema, defaultSchemaPolicy, shouldEncodeIncrementally),\n\t\t\tundefined,\n\t\t\tidCompressor,\n\t\t),\n);\n\n/**\n * Slow implementation of forest intended only for debugging.\n * @remarks\n * Includes validation with scales poorly.\n * May be asymptotically slower than {@link ForestTypeReference}, and may perform very badly with larger data sizes.\n * @privateRemarks\n * The \"ObjectForest\" forest type with expensive asserts for debugging.\n * @beta\n */\nexport const ForestTypeExpensiveDebug = toForestType(\n\t(breaker: Breakable, schema: TreeStoredSchemaSubscription) =>\n\t\tbuildForest(breaker, schema, undefined, true),\n);\n\ntype ForestFactory = (\n\tbreaker: Breakable,\n\tschema: TreeStoredSchemaSubscription,\n\tidCompressor: IIdCompressor,\n\tshouldEncodeIncrementally: IncrementalEncodingPolicy,\n) => IEditableForest;\n\nfunction toForestType(factory: ForestFactory): ForestType {\n\treturn factory as unknown as ForestType;\n}\n\n/**\n * Build and return a forest of the requested type.\n */\nexport function buildConfiguredForest(\n\tbreaker: Breakable,\n\tfactory: ForestType,\n\tschema: TreeStoredSchemaSubscription,\n\tidCompressor: IIdCompressor,\n\tshouldEncodeIncrementally: IncrementalEncodingPolicy,\n): IEditableForest {\n\treturn (factory as unknown as ForestFactory)(\n\t\tbreaker,\n\t\tschema,\n\t\tidCompressor,\n\t\tshouldEncodeIncrementally,\n\t);\n}\n\nexport const defaultSharedTreeOptions: Required<SharedTreeOptionsInternal> = {\n\tjsonValidator: FormatValidatorNoOp,\n\tminVersionForCollab: FluidClientVersion.v2_0,\n\tforest: ForestTypeReference,\n\ttreeEncodeType: TreeCompressionStrategy.Compressed,\n\tformatVersion: SharedTreeFormatVersion.v3,\n\tdisposeForksAfterTransaction: true,\n\tshouldEncodeIncrementally: defaultIncrementalEncodingPolicy,\n};\n\nfunction exportSimpleFieldSchemaStored(schema: TreeFieldStoredSchema): SimpleFieldSchema {\n\tlet kind: FieldKind;\n\tswitch (schema.kind) {\n\t\tcase FieldKinds.identifier.identifier:\n\t\t\tkind = FieldKind.Identifier;\n\t\t\tbreak;\n\t\tcase FieldKinds.optional.identifier:\n\t\t\tkind = FieldKind.Optional;\n\t\t\tbreak;\n\t\tcase FieldKinds.required.identifier:\n\t\t\tkind = FieldKind.Required;\n\t\t\tbreak;\n\t\tcase FieldKinds.forbidden.identifier:\n\t\t\tkind = FieldKind.Optional;\n\t\t\tassert(schema.types.size === 0, 0xa94 /* invalid forbidden field */);\n\t\t\tbreak;\n\t\tdefault:\n\t\t\tfail(0xaca /* invalid field kind */);\n\t}\n\treturn {\n\t\tkind,\n\t\tallowedTypesIdentifiers: schema.types,\n\t\tmetadata: {},\n\t\tpersistedMetadata: schema.persistedMetadata,\n\t};\n}\n\n/**\n * Export a {@link SimpleNodeSchema} from a {@link TreeNodeStoredSchema}.\n * @privateRemarks\n * TODO: Persist node metadata once schema FormatV2 is supported.\n */\nfunction exportSimpleNodeSchemaStored(schema: TreeNodeStoredSchema): SimpleNodeSchema {\n\tconst arrayTypes = tryStoredSchemaAsArray(schema);\n\tif (arrayTypes !== undefined) {\n\t\treturn {\n\t\t\tkind: NodeKind.Array,\n\t\t\tallowedTypesIdentifiers: arrayTypes,\n\t\t\tmetadata: {},\n\t\t\tpersistedMetadata: schema.metadata,\n\t\t};\n\t}\n\tif (schema instanceof ObjectNodeStoredSchema) {\n\t\tconst fields = new Map<FieldKey, SimpleObjectFieldSchema>();\n\t\tfor (const [storedKey, field] of schema.objectNodeFields) {\n\t\t\tfields.set(storedKey, { ...exportSimpleFieldSchemaStored(field), storedKey });\n\t\t}\n\t\treturn { kind: NodeKind.Object, fields, metadata: {}, persistedMetadata: schema.metadata };\n\t}\n\tif (schema instanceof MapNodeStoredSchema) {\n\t\tassert(\n\t\t\tschema.mapFields.kind === FieldKinds.optional.identifier,\n\t\t\t0xa95 /* Invalid map schema */,\n\t\t);\n\t\treturn {\n\t\t\tkind: NodeKind.Map,\n\t\t\tallowedTypesIdentifiers: schema.mapFields.types,\n\t\t\tmetadata: {},\n\t\t\tpersistedMetadata: schema.metadata,\n\t\t};\n\t}\n\tif (schema instanceof LeafNodeStoredSchema) {\n\t\treturn {\n\t\t\tkind: NodeKind.Leaf,\n\t\t\tleafKind: schema.leafValue,\n\t\t\tmetadata: {},\n\t\t\tpersistedMetadata: schema.metadata,\n\t\t};\n\t}\n\tfail(0xacb /* invalid schema kind */);\n}\n"]}
1
+ {"version":3,"file":"sharedTree.js","sourceRoot":"","sources":["../../src/shared-tree/sharedTree.ts"],"names":[],"mappings":"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","sourcesContent":["/*!\n * Copyright (c) Microsoft Corporation and contributors. All rights reserved.\n * Licensed under the MIT License.\n */\n\nimport type { ErasedType, IFluidLoadable } from \"@fluidframework/core-interfaces/internal\";\nimport { assert, fail, unreachableCase } from \"@fluidframework/core-utils/internal\";\nimport type { IChannelStorageService } from \"@fluidframework/datastore-definitions/internal\";\nimport type { IIdCompressor, StableId } from \"@fluidframework/id-compressor\";\nimport type {\n\tIChannelView,\n\tIFluidSerializer,\n\tSharedKernel,\n} from \"@fluidframework/shared-object-base/internal\";\nimport {\n\tUsageError,\n\ttype ITelemetryLoggerExt,\n} from \"@fluidframework/telemetry-utils/internal\";\n\nimport {\n\ttype CodecTree,\n\ttype CodecWriteOptions,\n\tDependentFormatVersion,\n\tFluidClientVersion,\n\tFormatValidatorNoOp,\n\ttype ICodecOptions,\n} from \"../codec/index.js\";\nimport {\n\ttype DetachedFieldIndexFormatVersion,\n\ttype FieldKey,\n\ttype GraphCommit,\n\ttype IEditableForest,\n\ttype JsonableTree,\n\tLeafNodeStoredSchema,\n\tMapNodeStoredSchema,\n\tObjectNodeStoredSchema,\n\tRevisionTagCodec,\n\ttype SchemaFormatVersion,\n\tSchemaVersion,\n\ttype TreeFieldStoredSchema,\n\ttype TreeNodeStoredSchema,\n\ttype TreeStoredSchema,\n\tTreeStoredSchemaRepository,\n\ttype TreeStoredSchemaSubscription,\n\tgetCodecTreeForDetachedFieldIndexFormat,\n\tmakeDetachedFieldIndex,\n\tmoveToDetachedField,\n} from \"../core/index.js\";\nimport {\n\tDetachedFieldIndexSummarizer,\n\tFieldKinds,\n\tForestSummarizer,\n\tSchemaSummarizer,\n\tTreeCompressionStrategy,\n\tbuildChunkedForest,\n\tbuildForest,\n\tdefaultIncrementalEncodingPolicy,\n\tdefaultSchemaPolicy,\n\tgetCodecTreeForFieldBatchFormat,\n\tgetCodecTreeForForestFormat,\n\tgetCodecTreeForSchemaFormat,\n\tjsonableTreeFromFieldCursor,\n\tmakeFieldBatchCodec,\n\tmakeMitigatedChangeFamily,\n\tmakeSchemaCodec,\n\tmakeTreeChunker,\n\ttype IncrementalEncodingPolicy,\n\ttype FieldBatchFormatVersion,\n\ttype ForestFormatVersion,\n\ttype TreeCompressionStrategyPrivate,\n} from \"../feature-libraries/index.js\";\n// eslint-disable-next-line import/no-internal-modules\nimport type { FormatV1 } from \"../feature-libraries/schema-index/index.js\";\nimport {\n\ttype BranchId,\n\ttype ClonableSchemaAndPolicy,\n\ttype EditManagerFormatVersion,\n\ttype ExplicitCoreCodecVersions,\n\tgetCodecTreeForEditManagerFormatWithChange,\n\tgetCodecTreeForMessageFormatWithChange,\n\ttype MessageFormatVersion,\n\tSharedTreeCore,\n} from \"../shared-tree-core/index.js\";\nimport {\n\ttype ITree,\n\ttype ImplicitFieldSchema,\n\tNodeKind,\n\ttype ReadSchema,\n\ttype SimpleFieldSchema,\n\ttype SimpleTreeSchema,\n\ttype TreeView,\n\ttype TreeViewAlpha,\n\ttype TreeViewConfiguration,\n\ttype UnsafeUnknownSchema,\n\ttype VerboseTree,\n\ttryStoredSchemaAsArray,\n\ttype SimpleNodeSchema,\n\tFieldKind,\n\ttype ITreeAlpha,\n\ttype SimpleObjectFieldSchema,\n} from \"../simple-tree/index.js\";\n\nimport { SchematizingSimpleTreeView } from \"./schematizingTreeView.js\";\nimport { SharedTreeReadonlyChangeEnricher } from \"./sharedTreeChangeEnricher.js\";\nimport { SharedTreeChangeFamily } from \"./sharedTreeChangeFamily.js\";\nimport type { SharedTreeChange } from \"./sharedTreeChangeTypes.js\";\nimport type { SharedTreeEditBuilder } from \"./sharedTreeEditBuilder.js\";\nimport { type TreeCheckout, type BranchableTree, createTreeCheckout } from \"./treeCheckout.js\";\nimport {\n\tbrand,\n\ttype Breakable,\n\tbreakingClass,\n\ttype JsonCompatible,\n\tthrowIfBroken,\n} from \"../util/index.js\";\nimport {\n\tgetCodecTreeForChangeFormat,\n\ttype SharedTreeChangeFormatVersion,\n} from \"./sharedTreeChangeCodecs.js\";\n\n/**\n * Copy of data from an {@link ITreePrivate} at some point in time.\n * @remarks\n * This is unrelated to Fluids concept of \"snapshots\".\n */\nexport interface SharedTreeContentSnapshot {\n\t/**\n\t * The schema stored in the document.\n\t *\n\t * @remarks\n\t * Edits to the schema can mutate the schema stored of the tree which took this snapshot (but this snapshot will remain the same)\n\t * This is mainly useful for debugging cases where schematize reports an incompatible view schema.\n\t */\n\treadonly schema: TreeStoredSchema;\n\t/**\n\t * All {@link TreeStatus.InDocument} content.\n\t */\n\treadonly tree: JsonableTree[];\n\t/**\n\t * All {@link TreeStatus.Removed} content.\n\t */\n\treadonly removed: [string | number | undefined, number, JsonableTree][];\n}\n\n/**\n * {@link ITree} extended with some non-public APIs.\n * @internal\n */\nexport interface ITreeInternal extends IChannelView, ITreeAlpha {}\n\n/**\n * {@link ITreeInternal} extended with some non-exported APIs.\n * @remarks\n * This allows access to the tree content using the internal data model used at the storage and \"flex\" layers,\n * and should only be needed for testing and debugging this package's internals.\n */\nexport interface ITreePrivate extends ITreeInternal {\n\t/**\n\t * Provides a copy of the current content of the tree.\n\t * This can be useful for inspecting the tree when no suitable view schema is available.\n\t * This is only intended for use in testing and exceptional code paths: it is not performant.\n\t *\n\t * This does not include everything that is included in a tree summary, since information about how to merge future edits is omitted.\n\t */\n\tcontentSnapshot(): SharedTreeContentSnapshot;\n\n\t/**\n\t * Access to internals for testing.\n\t */\n\treadonly kernel: SharedTreeKernel;\n}\n\n/**\n * Has an entry for each codec which writes an explicit version into its data.\n *\n * This is used to map the single API entrypoint controlling the format {@link SharedTreeOptions.formatVersion}\n * to a list of write versions that for each codec that should be used for that format.\n *\n * Note that all explicitly versioned codecs should be using the format version from the data to read encoded data.\n *\n * TODO: Plumb these write versions into forest, schema, detached field index codec creation.\n */\ninterface ExplicitCodecVersions extends ExplicitCoreCodecVersions {\n\tforest: ForestFormatVersion;\n\tschema: SchemaFormatVersion;\n\tdetachedFieldIndex: DetachedFieldIndexFormatVersion;\n\tfieldBatch: FieldBatchFormatVersion;\n}\n\nconst formatVersionToTopLevelCodecVersions = new Map<number, ExplicitCodecVersions>([\n\t[\n\t\t1,\n\t\t{\n\t\t\tforest: brand(1),\n\t\t\tschema: brand(1),\n\t\t\tdetachedFieldIndex: brand(1),\n\t\t\teditManager: brand(1),\n\t\t\tmessage: brand(1),\n\t\t\tfieldBatch: brand(1),\n\t\t},\n\t],\n\t[\n\t\t2,\n\t\t{\n\t\t\tforest: brand(1),\n\t\t\tschema: brand(1),\n\t\t\tdetachedFieldIndex: brand(1),\n\t\t\teditManager: brand(2),\n\t\t\tmessage: brand(2),\n\t\t\tfieldBatch: brand(1),\n\t\t},\n\t],\n\t[\n\t\t3,\n\t\t{\n\t\t\tforest: brand(1),\n\t\t\tschema: brand(1),\n\t\t\tdetachedFieldIndex: brand(1),\n\t\t\teditManager: brand(3),\n\t\t\tmessage: brand(3),\n\t\t\tfieldBatch: brand(1),\n\t\t},\n\t],\n\t[\n\t\t4,\n\t\t{\n\t\t\tforest: brand(1),\n\t\t\tschema: brand(1),\n\t\t\tdetachedFieldIndex: brand(1),\n\t\t\teditManager: brand(4),\n\t\t\tmessage: brand(4),\n\t\t\tfieldBatch: brand(1),\n\t\t},\n\t],\n\t[\n\t\t5,\n\t\t{\n\t\t\tforest: brand(1),\n\t\t\tschema: brand(2),\n\t\t\tdetachedFieldIndex: brand(1),\n\t\t\teditManager: brand(4),\n\t\t\tmessage: brand(4),\n\t\t\tfieldBatch: brand(1),\n\t\t},\n\t],\n\t[\n\t\t100, // SharedTreeFormatVersion.vSharedBranches\n\t\t{\n\t\t\tforest: brand(1),\n\t\t\tschema: brand(2),\n\t\t\tdetachedFieldIndex: brand(1),\n\t\t\teditManager: brand(5),\n\t\t\tmessage: brand(5),\n\t\t\tfieldBatch: brand(1),\n\t\t},\n\t],\n]);\n\nfunction getCodecVersions(formatVersion: number): ExplicitCodecVersions {\n\tconst versions = formatVersionToTopLevelCodecVersions.get(formatVersion);\n\tassert(versions !== undefined, 0x90e /* Unknown format version */);\n\treturn versions;\n}\n\n/**\n * The type SharedTree's kernel's view must implement so what when its merged with the underling SharedObject's API it fully implements the required tree API surface ({@link ITreePrivate }).\n */\nexport type SharedTreeKernelView = Omit<ITreePrivate, keyof (IChannelView & IFluidLoadable)>;\n\n/**\n * SharedTreeCore, configured with a good set of indexes and field kinds which will maintain compatibility over time.\n *\n * TODO: detail compatibility requirements.\n */\n@breakingClass\nexport class SharedTreeKernel\n\textends SharedTreeCore<SharedTreeEditBuilder, SharedTreeChange>\n\timplements SharedKernel\n{\n\tpublic readonly checkout: TreeCheckout;\n\tpublic get storedSchema(): TreeStoredSchemaRepository {\n\t\treturn this.checkout.storedSchema;\n\t}\n\n\tprivate readonly checkouts: Map<BranchId, TreeCheckout> = new Map();\n\n\t/**\n\t * The app-facing API for SharedTree implemented by this Kernel.\n\t * @remarks\n\t * This is the API grafted onto the ISharedObject which apps can access.\n\t * It includes both the APIs used for internal testing, and public facing APIs (both stable and unstable).\n\t * Different users will have access to different subsets of this API, see {@link ITree}, {@link ITreeAlpha} and {@link ITreeInternal} which this {@link ITreePrivate} extends.\n\t */\n\tpublic readonly view: SharedTreeKernelView;\n\n\tpublic constructor(\n\t\tbreaker: Breakable,\n\t\tsharedObject: IChannelView & IFluidLoadable,\n\t\tserializer: IFluidSerializer,\n\t\tsubmitLocalMessage: (content: unknown, localOpMetadata?: unknown) => void,\n\t\tlastSequenceNumber: () => number | undefined,\n\t\tinitialSequenceNumber: number,\n\t\tprivate readonly logger: ITelemetryLoggerExt | undefined,\n\t\tidCompressor: IIdCompressor,\n\t\toptionsParam: SharedTreeOptionsInternal,\n\t) {\n\t\tconst options = { ...defaultSharedTreeOptions, ...optionsParam };\n\t\tconst codecVersions = getCodecVersions(options.formatVersion);\n\t\tconst schema = new TreeStoredSchemaRepository();\n\t\tconst forest = buildConfiguredForest(\n\t\t\tbreaker,\n\t\t\toptions.forest,\n\t\t\tschema,\n\t\t\tidCompressor,\n\t\t\toptions.shouldEncodeIncrementally,\n\t\t);\n\t\tconst revisionTagCodec = new RevisionTagCodec(idCompressor);\n\t\tconst removedRoots = makeDetachedFieldIndex(\n\t\t\t\"repair\",\n\t\t\trevisionTagCodec,\n\t\t\tidCompressor,\n\t\t\toptions,\n\t\t);\n\t\tconst schemaCodec = makeSchemaCodec(options, codecVersions.schema);\n\t\tconst schemaSummarizer = new SchemaSummarizer(\n\t\t\tschema,\n\t\t\t{\n\t\t\t\tgetCurrentSeq: lastSequenceNumber,\n\t\t\t},\n\t\t\tschemaCodec,\n\t\t);\n\t\tconst fieldBatchCodec = makeFieldBatchCodec(options, codecVersions.fieldBatch);\n\n\t\tconst encoderContext = {\n\t\t\tschema: {\n\t\t\t\tschema,\n\t\t\t\tpolicy: defaultSchemaPolicy,\n\t\t\t},\n\t\t\tencodeType: options.treeEncodeType,\n\t\t\toriginatorId: idCompressor.localSessionId,\n\t\t\tidCompressor,\n\t\t};\n\t\tconst forestSummarizer = new ForestSummarizer(\n\t\t\tforest,\n\t\t\trevisionTagCodec,\n\t\t\tfieldBatchCodec,\n\t\t\tencoderContext,\n\t\t\toptions,\n\t\t\tidCompressor,\n\t\t\tinitialSequenceNumber,\n\t\t\toptions.shouldEncodeIncrementally,\n\t\t);\n\t\tconst removedRootsSummarizer = new DetachedFieldIndexSummarizer(removedRoots);\n\t\tconst innerChangeFamily = new SharedTreeChangeFamily(\n\t\t\trevisionTagCodec,\n\t\t\tfieldBatchCodec,\n\t\t\toptions,\n\t\t\toptions.treeEncodeType,\n\t\t\tidCompressor,\n\t\t);\n\t\tconst changeFamily = makeMitigatedChangeFamily(\n\t\t\tinnerChangeFamily,\n\t\t\tSharedTreeChangeFamily.emptyChange,\n\t\t\t(error: unknown) => {\n\t\t\t\t// TODO:6344 Add telemetry for these errors.\n\t\t\t\t// Rethrowing the error has a different effect depending on the context in which the\n\t\t\t\t// ChangeFamily was invoked:\n\t\t\t\t// - If the ChangeFamily was invoked as part of incoming op processing, rethrowing the error\n\t\t\t\t// will cause the runtime to disconnect the client, log a severe error, and not reconnect.\n\t\t\t\t// This will not cause the host application to crash because it is not on the stack at that time.\n\t\t\t\t// TODO: let the host application know that the client is now disconnected.\n\t\t\t\t// - If the ChangeFamily was invoked as part of dealing with a local change, rethrowing the\n\t\t\t\t// error will cause the host application to crash. This is not ideal, but is better than\n\t\t\t\t// letting the application either send an invalid change to the server or allowing the\n\t\t\t\t// application to continue working when its local branches contain edits that cannot be\n\t\t\t\t// reflected in its views.\n\t\t\t\t// The best course of action for a host application in such a state is to restart.\n\t\t\t\t// TODO: let the host application know about this situation and provide a way to\n\t\t\t\t// programmatically reload the SharedTree container.\n\t\t\t\tthrow error;\n\t\t\t},\n\t\t);\n\t\tconst changeEnricher = new SharedTreeReadonlyChangeEnricher(forest, schema, removedRoots);\n\t\tsuper(\n\t\t\tbreaker,\n\t\t\tsharedObject,\n\t\t\tserializer,\n\t\t\tsubmitLocalMessage,\n\t\t\tlogger,\n\t\t\t[schemaSummarizer, forestSummarizer, removedRootsSummarizer],\n\t\t\tchangeFamily,\n\t\t\toptions,\n\t\t\tcodecVersions,\n\t\t\tchangeFormatVersionForEditManager,\n\t\t\tchangeFormatVersionForMessage,\n\t\t\tidCompressor,\n\t\t\tschema,\n\t\t\tdefaultSchemaPolicy,\n\t\t\tundefined,\n\t\t\tchangeEnricher,\n\t\t);\n\n\t\tthis.checkout = createTreeCheckout(idCompressor, this.mintRevisionTag, revisionTagCodec, {\n\t\t\tbranch: this.getLocalBranch(),\n\t\t\tchangeFamily,\n\t\t\tschema,\n\t\t\tforest,\n\t\t\tfieldBatchCodec,\n\t\t\tremovedRoots,\n\t\t\tchunkCompressionStrategy: options.treeEncodeType,\n\t\t\tlogger,\n\t\t\tbreaker: this.breaker,\n\t\t\tdisposeForksAfterTransaction: options.disposeForksAfterTransaction,\n\t\t});\n\n\t\tthis.registerCheckout(\"main\", this.checkout);\n\n\t\tthis.view = {\n\t\t\tcontentSnapshot: () => this.contentSnapshot(),\n\t\t\texportSimpleSchema: () => this.exportSimpleSchema(),\n\t\t\texportVerbose: () => this.exportVerbose(),\n\t\t\tviewWith: this.viewWith.bind(this),\n\t\t\tviewSharedBranchWith: this.viewBranchWith.bind(this),\n\t\t\tcreateSharedBranch: this.createSharedBranch.bind(this),\n\t\t\tgetSharedBranchIds: this.getSharedBranchIds.bind(this),\n\t\t\tkernel: this,\n\t\t};\n\t}\n\n\tprivate registerCheckout(branchId: BranchId, checkout: TreeCheckout): void {\n\t\tthis.checkouts.set(branchId, checkout);\n\t\tconst enricher = this.getCommitEnricher(branchId);\n\t\tcheckout.transaction.events.on(\"started\", () => {\n\t\t\tif (this.sharedObject.isAttached()) {\n\t\t\t\t// It is currently forbidden to attach during a transaction, so transaction state changes can be ignored until after attaching.\n\t\t\t\tenricher.startTransaction();\n\t\t\t}\n\t\t});\n\n\t\tcheckout.transaction.events.on(\"aborting\", () => {\n\t\t\tif (this.sharedObject.isAttached()) {\n\t\t\t\t// It is currently forbidden to attach during a transaction, so transaction state changes can be ignored until after attaching.\n\t\t\t\tenricher.abortTransaction();\n\t\t\t}\n\t\t});\n\t\tcheckout.transaction.events.on(\"committing\", () => {\n\t\t\tif (this.sharedObject.isAttached()) {\n\t\t\t\t// It is currently forbidden to attach during a transaction, so transaction state changes can be ignored until after attaching.\n\t\t\t\tenricher.commitTransaction();\n\t\t\t}\n\t\t});\n\t\tcheckout.events.on(\"beforeBatch\", (event) => {\n\t\t\tif (event.type === \"append\" && this.sharedObject.isAttached()) {\n\t\t\t\tif (checkout.transaction.isInProgress()) {\n\t\t\t\t\tenricher.addTransactionCommits(event.newCommits);\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\t}\n\n\tpublic exportVerbose(): VerboseTree | undefined {\n\t\treturn this.checkout.exportVerbose();\n\t}\n\n\tpublic exportSimpleSchema(): SimpleTreeSchema {\n\t\treturn exportSimpleSchema(this.storedSchema);\n\t}\n\n\t@throwIfBroken\n\tpublic contentSnapshot(): SharedTreeContentSnapshot {\n\t\tconst cursor = this.checkout.forest.allocateCursor(\"contentSnapshot\");\n\t\ttry {\n\t\t\tmoveToDetachedField(this.checkout.forest, cursor);\n\t\t\treturn {\n\t\t\t\tschema: this.storedSchema.clone(),\n\t\t\t\ttree: jsonableTreeFromFieldCursor(cursor),\n\t\t\t\tremoved: this.checkout.getRemovedRoots(),\n\t\t\t};\n\t\t} finally {\n\t\t\tcursor.free();\n\t\t}\n\t}\n\n\t// For the new TreeViewAlpha API\n\tpublic viewWith<TRoot extends ImplicitFieldSchema | UnsafeUnknownSchema>(\n\t\tconfig: TreeViewConfiguration<ReadSchema<TRoot>>,\n\t): SchematizingSimpleTreeView<TRoot> & TreeView<ReadSchema<TRoot>>;\n\n\t// For the old TreeView API\n\tpublic viewWith<TRoot extends ImplicitFieldSchema>(\n\t\tconfig: TreeViewConfiguration<TRoot>,\n\t): SchematizingSimpleTreeView<TRoot> & TreeView<TRoot>;\n\n\tpublic viewWith<TRoot extends ImplicitFieldSchema | UnsafeUnknownSchema>(\n\t\tconfig: TreeViewConfiguration<ReadSchema<TRoot>>,\n\t): SchematizingSimpleTreeView<TRoot> & TreeView<ReadSchema<TRoot>> {\n\t\treturn this.checkout.viewWith(config) as SchematizingSimpleTreeView<TRoot> &\n\t\t\tTreeView<ReadSchema<TRoot>>;\n\t}\n\n\tpublic viewBranchWith<TRoot extends ImplicitFieldSchema>(\n\t\tbranchId: string,\n\t\tconfig: TreeViewConfiguration<TRoot>,\n\t): TreeView<TRoot>;\n\n\tpublic viewBranchWith<TRoot extends ImplicitFieldSchema | UnsafeUnknownSchema>(\n\t\tbranchId: string,\n\t\tconfig: TreeViewConfiguration<ReadSchema<TRoot>>,\n\t): SchematizingSimpleTreeView<TRoot> & TreeView<ReadSchema<TRoot>> {\n\t\tconst compressedId = this.idCompressor.tryRecompress(branchId as StableId);\n\t\tif (compressedId === undefined) {\n\t\t\tthrow new UsageError(`No branch found with id: ${branchId}`);\n\t\t}\n\t\treturn this.getCheckout(compressedId).viewWith(\n\t\t\tconfig,\n\t\t) as SchematizingSimpleTreeView<TRoot> & TreeView<ReadSchema<TRoot>>;\n\t}\n\n\tprivate getCheckout(branchId: BranchId): TreeCheckout {\n\t\treturn this.checkouts.get(branchId) ?? this.checkoutBranch(branchId);\n\t}\n\n\tprivate checkoutBranch(branchId: BranchId): TreeCheckout {\n\t\tconst checkout = this.checkout.branch();\n\t\tcheckout.switchBranch(this.getSharedBranch(branchId));\n\t\tconst enricher = new SharedTreeReadonlyChangeEnricher(\n\t\t\tcheckout.forest,\n\t\t\tcheckout.storedSchema,\n\t\t\tcheckout.removedRoots,\n\t\t);\n\n\t\tthis.registerSharedBranchForEditing(branchId, enricher);\n\t\tthis.registerCheckout(branchId, checkout);\n\t\treturn checkout;\n\t}\n\n\tpublic override async loadCore(services: IChannelStorageService): Promise<void> {\n\t\tawait super.loadCore(services);\n\t\tthis.checkout.load();\n\t}\n\n\tpublic override didAttach(): void {\n\t\tfor (const checkout of this.checkouts.values()) {\n\t\t\tif (checkout.transaction.isInProgress()) {\n\t\t\t\t// Attaching during a transaction is not currently supported.\n\t\t\t\t// At least part of of the system is known to not handle this case correctly - commit enrichment - and there may be others.\n\t\t\t\tthrow new UsageError(\n\t\t\t\t\t\"Cannot attach while a transaction is in progress. Commit or abort the transaction before attaching.\",\n\t\t\t\t);\n\t\t\t}\n\t\t}\n\t\tsuper.didAttach();\n\t}\n\n\tpublic override applyStashedOp(\n\t\t...args: Parameters<\n\t\t\tSharedTreeCore<SharedTreeEditBuilder, SharedTreeChange>[\"applyStashedOp\"]\n\t\t>\n\t): void {\n\t\tfor (const checkout of this.checkouts.values()) {\n\t\t\tassert(\n\t\t\t\t!checkout.transaction.isInProgress(),\n\t\t\t\t0x674 /* Unexpected transaction is open while applying stashed ops */,\n\t\t\t);\n\t\t}\n\t\tsuper.applyStashedOp(...args);\n\t}\n\n\tprotected override submitCommit(\n\t\tbranchId: BranchId,\n\t\tcommit: GraphCommit<SharedTreeChange>,\n\t\tschemaAndPolicy: ClonableSchemaAndPolicy,\n\t\tisResubmit: boolean,\n\t): void {\n\t\tconst checkout = this.getCheckout(branchId);\n\t\tassert(\n\t\t\t!checkout.transaction.isInProgress(),\n\t\t\t0xaa6 /* Cannot submit a commit while a transaction is in progress */,\n\t\t);\n\t\tif (isResubmit) {\n\t\t\treturn super.submitCommit(branchId, commit, schemaAndPolicy, isResubmit);\n\t\t}\n\n\t\t// Refrain from submitting new commits until they are validated by the checkout.\n\t\t// This is not a strict requirement for correctness in our system, but in the event that there is a bug when applying commits to the checkout\n\t\t// that causes a crash (e.g. in the forest), this will at least prevent this client from sending the problematic commit to any other clients.\n\t\tcheckout.onCommitValid(commit, () =>\n\t\t\tsuper.submitCommit(branchId, commit, schemaAndPolicy, isResubmit),\n\t\t);\n\t}\n\n\tpublic onDisconnect(): void {}\n}\n\nexport function exportSimpleSchema(storedSchema: TreeStoredSchema): SimpleTreeSchema {\n\treturn {\n\t\troot: exportSimpleFieldSchemaStored(storedSchema.rootFieldSchema),\n\t\tdefinitions: new Map(\n\t\t\t[...storedSchema.nodeSchema].map(([key, schema]) => {\n\t\t\t\treturn [key, exportSimpleNodeSchemaStored(schema)];\n\t\t\t}),\n\t\t),\n\t};\n}\n\n/**\n * A way to parse schema in the persisted format from {@link extractPersistedSchema}.\n * @remarks\n * This behaves identically to {@link ITreeAlpha.exportSimpleSchema},\n * except that it gets the schema from the caller instead of from an existing tree.\n *\n * This can be useful for inspecting the contents of persisted schema,\n * such as those generated by {@link extractPersistedSchema} for use in testing.\n * Since that data format is otherwise unspecified,\n * this provides a way to inspect its contents with documented semantics.\n * @alpha\n */\nexport function persistedToSimpleSchema(\n\tpersisted: JsonCompatible,\n\toptions: ICodecOptions,\n): SimpleTreeSchema {\n\tconst schemaCodec = makeSchemaCodec(options, SchemaVersion.v1);\n\tconst stored = schemaCodec.decode(persisted as FormatV1);\n\treturn exportSimpleSchema(stored);\n}\n\n/**\n * Get a {@link BranchableTree} from a {@link ITree}.\n * @remarks The branch can be used for \"version control\"-style coordination of edits on the tree.\n * @privateRemarks This function will be removed if/when the branching API becomes public,\n * but it (or something like it) is necessary in the meantime to prevent the alpha types from being exposed as public.\n * @alpha\n * @deprecated This API is superseded by {@link TreeBranch}, which should be used instead.\n */\nexport function getBranch(tree: ITree): BranchableTree;\n/**\n * Get a {@link BranchableTree} from a {@link TreeView}.\n * @remarks The branch can be used for \"version control\"-style coordination of edits on the tree.\n * Branches are currently an unstable \"alpha\" API and are subject to change in the future.\n * @privateRemarks This function will be removed if/when the branching API becomes public,\n * but it (or something like it) is necessary in the meantime to prevent the alpha types from being exposed as public.\n * @alpha\n * @deprecated This API is superseded by {@link TreeBranch}, which should be used instead.\n */\nexport function getBranch<T extends ImplicitFieldSchema | UnsafeUnknownSchema>(\n\tview: TreeViewAlpha<T>,\n): BranchableTree;\nexport function getBranch<T extends ImplicitFieldSchema | UnsafeUnknownSchema>(\n\ttreeOrView: ITree | TreeViewAlpha<T>,\n): BranchableTree {\n\tif (treeOrView instanceof SchematizingSimpleTreeView) {\n\t\treturn treeOrView.checkout as unknown as BranchableTree;\n\t}\n\tconst kernel = (treeOrView as ITree as ITreePrivate).kernel;\n\tassert(kernel instanceof SharedTreeKernel, 0xb56 /* Invalid ITree */);\n\t// This cast is safe so long as TreeCheckout supports all the operations on the branch interface.\n\treturn kernel.checkout as unknown as BranchableTree;\n}\n\n/**\n * Format versions supported by SharedTree.\n *\n * Each version documents a required minimum version of the \\@fluidframework/tree package.\n * @alpha\n */\nexport const SharedTreeFormatVersion = {\n\t/**\n\t * Requires \\@fluidframework/tree \\>= 2.0.0.\n\t *\n\t * @deprecated FF does not currently plan on supporting this format long-term.\n\t * Do not write production documents using this format, as they may not be loadable in the future.\n\t */\n\tv1: 1,\n\n\t/**\n\t * Requires \\@fluidframework/tree \\>= 2.0.0.\n\t */\n\tv2: 2,\n\n\t/**\n\t * Requires \\@fluidframework/tree \\>= 2.0.0.\n\t */\n\tv3: 3,\n\n\t/**\n\t * Requires \\@fluidframework/tree \\>= 2.0.0.\n\t */\n\tv5: 5,\n\n\t/**\n\t * For testing purposes only.\n\t */\n\tvSharedBranches: 100,\n} as const;\n\n/**\n * Format versions supported by SharedTree.\n *\n * Each version documents a required minimum version of the \\@fluidframework/tree package.\n * @alpha\n * @privateRemarks\n * See packages/dds/tree/docs/main/compatibility.md for information on how to add support for a new format.\n *\n * TODO: Before this gets promoted past Alpha,\n * a separate abstraction more suited for use in the public API should be adopted rather than reusing the same types used internally.\n * Such an abstraction should probably be in the form of a Fluid-Framework wide compatibility enum.\n */\nexport type SharedTreeFormatVersion = typeof SharedTreeFormatVersion;\n\n/**\n * Defines for each EditManagerFormatVersion the SharedTreeChangeFormatVersion to use.\n * This is an arbitrary mapping that is injected in the EditManger codec.\n * Once an entry is defined and used in production, it cannot be changed.\n * This is because the format for SharedTree changes are not explicitly versioned.\n */\nexport const changeFormatVersionForEditManager = DependentFormatVersion.fromPairs([\n\t[brand<EditManagerFormatVersion>(1), brand<SharedTreeChangeFormatVersion>(1)],\n\t[brand<EditManagerFormatVersion>(2), brand<SharedTreeChangeFormatVersion>(2)],\n\t[brand<EditManagerFormatVersion>(3), brand<SharedTreeChangeFormatVersion>(3)],\n\t[brand<EditManagerFormatVersion>(4), brand<SharedTreeChangeFormatVersion>(4)],\n\t[brand<EditManagerFormatVersion>(5), brand<SharedTreeChangeFormatVersion>(4)],\n]);\n\n/**\n * Defines for each MessageFormatVersion the SharedTreeChangeFormatVersion to use.\n * This is an arbitrary mapping that is injected in the message codec.\n * Once an entry is defined and used in production, it cannot be changed.\n * This is because the format for SharedTree changes are not explicitly versioned.\n */\nexport const changeFormatVersionForMessage = DependentFormatVersion.fromPairs([\n\t[brand<MessageFormatVersion>(undefined), brand<SharedTreeChangeFormatVersion>(1)],\n\t[brand<MessageFormatVersion>(1), brand<SharedTreeChangeFormatVersion>(1)],\n\t[brand<MessageFormatVersion>(2), brand<SharedTreeChangeFormatVersion>(2)],\n\t[brand<MessageFormatVersion>(3), brand<SharedTreeChangeFormatVersion>(3)],\n\t[brand<MessageFormatVersion>(4), brand<SharedTreeChangeFormatVersion>(4)],\n\t[brand<MessageFormatVersion>(5), brand<SharedTreeChangeFormatVersion>(4)],\n]);\n\nfunction getCodecTreeForEditManagerFormat(version: EditManagerFormatVersion): CodecTree {\n\tconst change = changeFormatVersionForEditManager.lookup(version);\n\tconst changeCodecTree = getCodecTreeForChangeFormat(change);\n\treturn getCodecTreeForEditManagerFormatWithChange(version, changeCodecTree);\n}\n\nfunction getCodecTreeForMessageFormat(version: MessageFormatVersion): CodecTree {\n\tconst change = changeFormatVersionForMessage.lookup(version);\n\tconst changeCodecTree = getCodecTreeForChangeFormat(change);\n\treturn getCodecTreeForMessageFormatWithChange(version, changeCodecTree);\n}\n\nexport function getCodecTreeForSharedTreeFormat(\n\tversion: SharedTreeFormatVersion[keyof SharedTreeFormatVersion],\n): CodecTree {\n\tconst children: CodecTree[] = [];\n\tconst childCodecs = getCodecVersions(version);\n\tfor (const name of Object.keys(childCodecs) as (keyof ExplicitCodecVersions)[]) {\n\t\tswitch (name) {\n\t\t\tcase \"editManager\":\n\t\t\t\tchildren.push(getCodecTreeForEditManagerFormat(childCodecs.editManager));\n\t\t\t\tbreak;\n\t\t\tcase \"message\":\n\t\t\t\tchildren.push(getCodecTreeForMessageFormat(childCodecs.message));\n\t\t\t\tbreak;\n\t\t\tcase \"forest\":\n\t\t\t\tchildren.push(getCodecTreeForForestFormat(childCodecs.forest));\n\t\t\t\tbreak;\n\t\t\tcase \"schema\":\n\t\t\t\tchildren.push(getCodecTreeForSchemaFormat(childCodecs.schema));\n\t\t\t\tbreak;\n\t\t\tcase \"detachedFieldIndex\":\n\t\t\t\tchildren.push(getCodecTreeForDetachedFieldIndexFormat(childCodecs.detachedFieldIndex));\n\t\t\t\tbreak;\n\t\t\tcase \"fieldBatch\":\n\t\t\t\tchildren.push(getCodecTreeForFieldBatchFormat(childCodecs.fieldBatch));\n\t\t\t\tbreak;\n\t\t\tdefault:\n\t\t\t\tunreachableCase(name);\n\t\t}\n\t}\n\treturn {\n\t\tname: \"SharedTree\",\n\t\tversion,\n\t\tchildren,\n\t};\n}\n\n/**\n * Configuration options for SharedTree.\n * @beta @input\n */\nexport type SharedTreeOptionsBeta = ForestOptions;\n\n/**\n * Configuration options for SharedTree.\n * @alpha @input\n */\nexport type SharedTreeOptions = Partial<CodecWriteOptions> &\n\tPartial<SharedTreeFormatOptions> &\n\tSharedTreeOptionsBeta;\n\nexport interface SharedTreeOptionsInternal\n\textends Omit<SharedTreeOptions, \"treeEncodeType\">,\n\t\tPartial<SharedTreeFormatOptionsInternal> {\n\tdisposeForksAfterTransaction?: boolean;\n\t/**\n\t * Returns whether a node / field should be incrementally encoded.\n\t * @remarks\n\t * See {@link IncrementalEncodingPolicy}.\n\t */\n\tshouldEncodeIncrementally?: IncrementalEncodingPolicy;\n}\n/**\n * Configuration options for SharedTree's internal tree storage.\n * @beta @input\n */\nexport interface ForestOptions {\n\t/**\n\t * The {@link ForestType} indicating which forest type should be created for the SharedTree.\n\t */\n\treadonly forest?: ForestType;\n}\n\n/**\n * Options for configuring the persisted format SharedTree uses.\n * @alpha @input\n */\nexport interface SharedTreeFormatOptions {\n\t/**\n\t * See {@link TreeCompressionStrategy}.\n\t * default: TreeCompressionStrategy.Compressed\n\t */\n\ttreeEncodeType: TreeCompressionStrategy;\n\t/**\n\t * The format version SharedTree should use to persist documents.\n\t *\n\t * This option has compatibility implications for applications using SharedTree.\n\t * Each version documents a required minimum version of \\@fluidframework/tree.\n\t * If this minimum version fails to be met, the SharedTree may fail to load.\n\t * To be safe, application authors should verify that they have saturated this version\n\t * of \\@fluidframework/tree in their ecosystem before changing the format version.\n\t *\n\t * This option defaults to SharedTreeFormatVersion.v2.\n\t */\n\tformatVersion: SharedTreeFormatVersion[keyof SharedTreeFormatVersion];\n}\n\nexport interface SharedTreeFormatOptionsInternal\n\textends Omit<SharedTreeFormatOptions, \"treeEncodeType\"> {\n\ttreeEncodeType: TreeCompressionStrategyPrivate;\n}\n\n/**\n * Used to distinguish between different forest types.\n * @remarks\n * The \"Forest\" is the internal data structure used to store all the trees (the main tree and any removed ones) for a given view or branch.\n * ForestTypes should all have the same behavior, but may differ in performance and debuggability.\n *\n * Current options are {@link ForestTypeReference}, {@link ForestTypeOptimized} and {@link ForestTypeExpensiveDebug}.\n * @privateRemarks\n * Implement using {@link toForestType}.\n * Consume using {@link buildConfiguredForest}.\n * @sealed @beta\n */\nexport interface ForestType extends ErasedType<\"ForestType\"> {}\n\n/**\n * Reference implementation of forest.\n * @remarks\n * A simple implementation with minimal complexity and moderate debuggability, validation and performance.\n * @privateRemarks\n * The \"ObjectForest\" forest type.\n * @beta\n */\nexport const ForestTypeReference = toForestType(\n\t(breaker: Breakable, schema: TreeStoredSchemaSubscription, idCompressor: IIdCompressor) =>\n\t\tbuildForest(breaker, schema),\n);\n\n/**\n * Optimized implementation of forest.\n * @remarks\n * A complex optimized forest implementation, which has minimal validation and debuggability to optimize for performance.\n * Uses an internal representation optimized for size designed to scale to larger datasets with reduced overhead.\n * @privateRemarks\n * The \"ChunkedForest\" forest type.\n * @beta\n */\nexport const ForestTypeOptimized = toForestType(\n\t(\n\t\tbreaker: Breakable,\n\t\tschema: TreeStoredSchemaSubscription,\n\t\tidCompressor: IIdCompressor,\n\t\tshouldEncodeIncrementally: IncrementalEncodingPolicy,\n\t) =>\n\t\tbuildChunkedForest(\n\t\t\tmakeTreeChunker(schema, defaultSchemaPolicy, shouldEncodeIncrementally),\n\t\t\tundefined,\n\t\t\tidCompressor,\n\t\t),\n);\n\n/**\n * Slow implementation of forest intended only for debugging.\n * @remarks\n * Includes validation with scales poorly.\n * May be asymptotically slower than {@link ForestTypeReference}, and may perform very badly with larger data sizes.\n * @privateRemarks\n * The \"ObjectForest\" forest type with expensive asserts for debugging.\n * @beta\n */\nexport const ForestTypeExpensiveDebug = toForestType(\n\t(breaker: Breakable, schema: TreeStoredSchemaSubscription) =>\n\t\tbuildForest(breaker, schema, undefined, true),\n);\n\ntype ForestFactory = (\n\tbreaker: Breakable,\n\tschema: TreeStoredSchemaSubscription,\n\tidCompressor: IIdCompressor,\n\tshouldEncodeIncrementally: IncrementalEncodingPolicy,\n) => IEditableForest;\n\nfunction toForestType(factory: ForestFactory): ForestType {\n\treturn factory as unknown as ForestType;\n}\n\n/**\n * Build and return a forest of the requested type.\n */\nexport function buildConfiguredForest(\n\tbreaker: Breakable,\n\tfactory: ForestType,\n\tschema: TreeStoredSchemaSubscription,\n\tidCompressor: IIdCompressor,\n\tshouldEncodeIncrementally: IncrementalEncodingPolicy,\n): IEditableForest {\n\treturn (factory as unknown as ForestFactory)(\n\t\tbreaker,\n\t\tschema,\n\t\tidCompressor,\n\t\tshouldEncodeIncrementally,\n\t);\n}\n\nexport const defaultSharedTreeOptions: Required<SharedTreeOptionsInternal> = {\n\tjsonValidator: FormatValidatorNoOp,\n\tminVersionForCollab: FluidClientVersion.v2_0,\n\tforest: ForestTypeReference,\n\ttreeEncodeType: TreeCompressionStrategy.Compressed,\n\tformatVersion: SharedTreeFormatVersion.v3,\n\tdisposeForksAfterTransaction: true,\n\tshouldEncodeIncrementally: defaultIncrementalEncodingPolicy,\n};\n\nfunction exportSimpleFieldSchemaStored(schema: TreeFieldStoredSchema): SimpleFieldSchema {\n\tlet kind: FieldKind;\n\tswitch (schema.kind) {\n\t\tcase FieldKinds.identifier.identifier:\n\t\t\tkind = FieldKind.Identifier;\n\t\t\tbreak;\n\t\tcase FieldKinds.optional.identifier:\n\t\t\tkind = FieldKind.Optional;\n\t\t\tbreak;\n\t\tcase FieldKinds.required.identifier:\n\t\t\tkind = FieldKind.Required;\n\t\t\tbreak;\n\t\tcase FieldKinds.forbidden.identifier:\n\t\t\tkind = FieldKind.Optional;\n\t\t\tassert(schema.types.size === 0, 0xa94 /* invalid forbidden field */);\n\t\t\tbreak;\n\t\tdefault:\n\t\t\tfail(0xaca /* invalid field kind */);\n\t}\n\treturn {\n\t\tkind,\n\t\tallowedTypesIdentifiers: schema.types,\n\t\tmetadata: {},\n\t\tpersistedMetadata: schema.persistedMetadata,\n\t};\n}\n\n/**\n * Export a {@link SimpleNodeSchema} from a {@link TreeNodeStoredSchema}.\n * @privateRemarks\n * TODO: Persist node metadata once schema FormatV2 is supported.\n */\nfunction exportSimpleNodeSchemaStored(schema: TreeNodeStoredSchema): SimpleNodeSchema {\n\tconst arrayTypes = tryStoredSchemaAsArray(schema);\n\tif (arrayTypes !== undefined) {\n\t\treturn {\n\t\t\tkind: NodeKind.Array,\n\t\t\tallowedTypesIdentifiers: arrayTypes,\n\t\t\tmetadata: {},\n\t\t\tpersistedMetadata: schema.metadata,\n\t\t};\n\t}\n\tif (schema instanceof ObjectNodeStoredSchema) {\n\t\tconst fields = new Map<FieldKey, SimpleObjectFieldSchema>();\n\t\tfor (const [storedKey, field] of schema.objectNodeFields) {\n\t\t\tfields.set(storedKey, { ...exportSimpleFieldSchemaStored(field), storedKey });\n\t\t}\n\t\treturn { kind: NodeKind.Object, fields, metadata: {}, persistedMetadata: schema.metadata };\n\t}\n\tif (schema instanceof MapNodeStoredSchema) {\n\t\tassert(\n\t\t\tschema.mapFields.kind === FieldKinds.optional.identifier,\n\t\t\t0xa95 /* Invalid map schema */,\n\t\t);\n\t\treturn {\n\t\t\tkind: NodeKind.Map,\n\t\t\tallowedTypesIdentifiers: schema.mapFields.types,\n\t\t\tmetadata: {},\n\t\t\tpersistedMetadata: schema.metadata,\n\t\t};\n\t}\n\tif (schema instanceof LeafNodeStoredSchema) {\n\t\treturn {\n\t\t\tkind: NodeKind.Leaf,\n\t\t\tleafKind: schema.leafValue,\n\t\t\tmetadata: {},\n\t\t\tpersistedMetadata: schema.metadata,\n\t\t};\n\t}\n\tfail(0xacb /* invalid schema kind */);\n}\n"]}
@@ -270,7 +270,7 @@ export declare class TreeCheckout implements ITreeCheckoutFork {
270
270
  * @param kind - The {@link CommitKind} that produced this revertible (e.g., Default, Undo, Redo).
271
271
  * @param checkout - The {@link TreeCheckout} instance this revertible belongs to.
272
272
  * @param onRevertibleDisposed - Callback function that will be called when the revertible is disposed.
273
- * @returns - {@link RevertibleAlpha}
273
+ * @returns A {@link RevertibleAlpha} object.
274
274
  */
275
275
  private createRevertible;
276
276
  viewWith<TRoot extends ImplicitFieldSchema | UnsafeUnknownSchema>(config: TreeViewConfiguration<ReadSchema<TRoot>>): SchematizingSimpleTreeView<TRoot>;
@@ -291,7 +291,7 @@ class TreeCheckout {
291
291
  * @param kind - The {@link CommitKind} that produced this revertible (e.g., Default, Undo, Redo).
292
292
  * @param checkout - The {@link TreeCheckout} instance this revertible belongs to.
293
293
  * @param onRevertibleDisposed - Callback function that will be called when the revertible is disposed.
294
- * @returns - {@link RevertibleAlpha}
294
+ * @returns A {@link RevertibleAlpha} object.
295
295
  */
296
296
  createRevertible(revision, kind, checkout, onRevertibleDisposed) {
297
297
  const commitBranches = checkout.revertibleCommitBranches;