@fluidframework/tree 2.103.0 → 2.110.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (224) hide show
  1. package/CHANGELOG.md +61 -0
  2. package/api-report/tree.alpha.api.md +12 -3
  3. package/api-report/tree.beta.api.md +11 -3
  4. package/api-report/tree.legacy.beta.api.md +11 -3
  5. package/dist/codec/versioned/format.js +2 -24
  6. package/dist/codec/versioned/format.js.map +1 -1
  7. package/dist/core/rebase/types.js +2 -24
  8. package/dist/core/rebase/types.js.map +1 -1
  9. package/dist/core/schema-stored/formatV1.js +2 -24
  10. package/dist/core/schema-stored/formatV1.js.map +1 -1
  11. package/dist/core/schema-stored/formatV2.js +2 -24
  12. package/dist/core/schema-stored/formatV2.js.map +1 -1
  13. package/dist/core/schema-stored/index.js +3 -25
  14. package/dist/core/schema-stored/index.js.map +1 -1
  15. package/dist/core/tree/anchorSet.js +4 -8
  16. package/dist/core/tree/anchorSet.js.map +1 -1
  17. package/dist/core/tree/detachedFieldIndexFormatCommon.js +2 -24
  18. package/dist/core/tree/detachedFieldIndexFormatCommon.js.map +1 -1
  19. package/dist/core/tree/detachedFieldIndexFormatV2.js +2 -24
  20. package/dist/core/tree/detachedFieldIndexFormatV2.js.map +1 -1
  21. package/dist/core/tree/persistedTreeTextFormat.js +2 -24
  22. package/dist/core/tree/persistedTreeTextFormat.js.map +1 -1
  23. package/dist/entrypoints/internal.js +2 -15
  24. package/dist/entrypoints/internal.js.map +1 -1
  25. package/dist/feature-libraries/chunked-forest/chunkedForest.js +7 -11
  26. package/dist/feature-libraries/chunked-forest/chunkedForest.js.map +1 -1
  27. package/dist/feature-libraries/chunked-forest/codec/format/formatGeneric.js +2 -24
  28. package/dist/feature-libraries/chunked-forest/codec/format/formatGeneric.js.map +1 -1
  29. package/dist/feature-libraries/chunked-forest/codec/format/formatV1.js +2 -24
  30. package/dist/feature-libraries/chunked-forest/codec/format/formatV1.js.map +1 -1
  31. package/dist/feature-libraries/chunked-forest/codec/format/formatV2.js +2 -24
  32. package/dist/feature-libraries/chunked-forest/codec/format/formatV2.js.map +1 -1
  33. package/dist/feature-libraries/chunked-forest/codec/format/formatVText.js +2 -24
  34. package/dist/feature-libraries/chunked-forest/codec/format/formatVText.js.map +1 -1
  35. package/dist/feature-libraries/flex-tree/lazyEntity.js +9 -19
  36. package/dist/feature-libraries/flex-tree/lazyEntity.js.map +1 -1
  37. package/dist/feature-libraries/flex-tree/lazyNode.js +3 -13
  38. package/dist/feature-libraries/flex-tree/lazyNode.js.map +1 -1
  39. package/dist/feature-libraries/forest-summary/formatCommon.js +2 -24
  40. package/dist/feature-libraries/forest-summary/formatCommon.js.map +1 -1
  41. package/dist/feature-libraries/index.js +2 -24
  42. package/dist/feature-libraries/index.js.map +1 -1
  43. package/dist/feature-libraries/modular-schema/genericFieldKindFormat.js +2 -24
  44. package/dist/feature-libraries/modular-schema/genericFieldKindFormat.js.map +1 -1
  45. package/dist/feature-libraries/modular-schema/modularChangeFamily.d.ts.map +1 -1
  46. package/dist/feature-libraries/modular-schema/modularChangeFamily.js +10 -30
  47. package/dist/feature-libraries/modular-schema/modularChangeFamily.js.map +1 -1
  48. package/dist/feature-libraries/modular-schema/modularChangeFormatV1.js +2 -24
  49. package/dist/feature-libraries/modular-schema/modularChangeFormatV1.js.map +1 -1
  50. package/dist/feature-libraries/modular-schema/modularChangeFormatV2.js +2 -24
  51. package/dist/feature-libraries/modular-schema/modularChangeFormatV2.js.map +1 -1
  52. package/dist/feature-libraries/modular-schema/modularChangeTypes.d.ts +0 -5
  53. package/dist/feature-libraries/modular-schema/modularChangeTypes.d.ts.map +1 -1
  54. package/dist/feature-libraries/modular-schema/modularChangeTypes.js.map +1 -1
  55. package/dist/feature-libraries/object-forest/objectForest.js +11 -55
  56. package/dist/feature-libraries/object-forest/objectForest.js.map +1 -1
  57. package/dist/feature-libraries/optional-field/optionalFieldChangeFormatV1.js +2 -24
  58. package/dist/feature-libraries/optional-field/optionalFieldChangeFormatV1.js.map +1 -1
  59. package/dist/feature-libraries/optional-field/optionalFieldChangeFormatV2.js +2 -24
  60. package/dist/feature-libraries/optional-field/optionalFieldChangeFormatV2.js.map +1 -1
  61. package/dist/feature-libraries/schema-edits/schemaChangeFormat.js +2 -24
  62. package/dist/feature-libraries/schema-edits/schemaChangeFormat.js.map +1 -1
  63. package/dist/feature-libraries/schema-index/formatV1.js +2 -24
  64. package/dist/feature-libraries/schema-index/formatV1.js.map +1 -1
  65. package/dist/feature-libraries/schema-index/formatV2.js +2 -24
  66. package/dist/feature-libraries/schema-index/formatV2.js.map +1 -1
  67. package/dist/feature-libraries/sequence-field/formatV1.js +2 -24
  68. package/dist/feature-libraries/sequence-field/formatV1.js.map +1 -1
  69. package/dist/feature-libraries/sequence-field/formatV2.js +2 -24
  70. package/dist/feature-libraries/sequence-field/formatV2.js.map +1 -1
  71. package/dist/feature-libraries/sequence-field/formatV3.js +2 -24
  72. package/dist/feature-libraries/sequence-field/formatV3.js.map +1 -1
  73. package/dist/index.js +2 -24
  74. package/dist/index.js.map +1 -1
  75. package/dist/packageVersion.d.ts +1 -1
  76. package/dist/packageVersion.js +1 -1
  77. package/dist/packageVersion.js.map +1 -1
  78. package/dist/shared-tree/schematizingTreeView.d.ts +1 -0
  79. package/dist/shared-tree/schematizingTreeView.d.ts.map +1 -1
  80. package/dist/shared-tree/schematizingTreeView.js +7 -41
  81. package/dist/shared-tree/schematizingTreeView.js.map +1 -1
  82. package/dist/shared-tree/sharedTree.d.ts +0 -1
  83. package/dist/shared-tree/sharedTree.d.ts.map +1 -1
  84. package/dist/shared-tree/sharedTree.js +6 -45
  85. package/dist/shared-tree/sharedTree.js.map +1 -1
  86. package/dist/shared-tree/sharedTreeChangeFormat.js +2 -24
  87. package/dist/shared-tree/sharedTreeChangeFormat.js.map +1 -1
  88. package/dist/shared-tree/treeCheckout.d.ts +12 -3
  89. package/dist/shared-tree/treeCheckout.d.ts.map +1 -1
  90. package/dist/shared-tree/treeCheckout.js +106 -136
  91. package/dist/shared-tree/treeCheckout.js.map +1 -1
  92. package/dist/shared-tree-core/branch.js +13 -17
  93. package/dist/shared-tree-core/branch.js.map +1 -1
  94. package/dist/shared-tree-core/editManagerFormatCommons.js +2 -24
  95. package/dist/shared-tree-core/editManagerFormatCommons.js.map +1 -1
  96. package/dist/shared-tree-core/editManagerFormatV1toV4.js +2 -24
  97. package/dist/shared-tree-core/editManagerFormatV1toV4.js.map +1 -1
  98. package/dist/shared-tree-core/editManagerFormatVSharedBranches.js +2 -24
  99. package/dist/shared-tree-core/editManagerFormatVSharedBranches.js.map +1 -1
  100. package/dist/shared-tree-core/messageCodecVSharedBranches.js +2 -24
  101. package/dist/shared-tree-core/messageCodecVSharedBranches.js.map +1 -1
  102. package/dist/shared-tree-core/messageFormatV1ToV4.js +2 -24
  103. package/dist/shared-tree-core/messageFormatV1ToV4.js.map +1 -1
  104. package/dist/shared-tree-core/messageFormatVSharedBranches.js +2 -24
  105. package/dist/shared-tree-core/messageFormatVSharedBranches.js.map +1 -1
  106. package/dist/shared-tree-core/sharedTreeCore.js +6 -43
  107. package/dist/shared-tree-core/sharedTreeCore.js.map +1 -1
  108. package/dist/shared-tree-core/transaction.js +20 -30
  109. package/dist/shared-tree-core/transaction.js.map +1 -1
  110. package/dist/simple-tree/api/simpleSchemaCodec.js +2 -24
  111. package/dist/simple-tree/api/simpleSchemaCodec.js.map +1 -1
  112. package/dist/simple-tree/api/snapshotCompatibilityChecker.js +2 -24
  113. package/dist/simple-tree/api/snapshotCompatibilityChecker.js.map +1 -1
  114. package/dist/simple-tree/api/tree.d.ts +10 -0
  115. package/dist/simple-tree/api/tree.d.ts.map +1 -1
  116. package/dist/simple-tree/api/tree.js.map +1 -1
  117. package/dist/simple-tree/core/treeNodeKernel.js +83 -93
  118. package/dist/simple-tree/core/treeNodeKernel.js.map +1 -1
  119. package/dist/simple-tree/core/unhydratedFlexTree.js +6 -10
  120. package/dist/simple-tree/core/unhydratedFlexTree.js.map +1 -1
  121. package/dist/simple-tree/leafNodeSchema.js +2 -12
  122. package/dist/simple-tree/leafNodeSchema.js.map +1 -1
  123. package/dist/simple-tree/node-kinds/array/arrayNode.js +2 -6
  124. package/dist/simple-tree/node-kinds/array/arrayNode.js.map +1 -1
  125. package/dist/simple-tree/simpleSchemaFormatV1.js +2 -24
  126. package/dist/simple-tree/simpleSchemaFormatV1.js.map +1 -1
  127. package/dist/tableSchema.d.ts +50 -4
  128. package/dist/tableSchema.d.ts.map +1 -1
  129. package/dist/tableSchema.js +202 -106
  130. package/dist/tableSchema.js.map +1 -1
  131. package/dist/util/arrayUtilities.d.ts +20 -0
  132. package/dist/util/arrayUtilities.d.ts.map +1 -1
  133. package/dist/util/arrayUtilities.js +24 -1
  134. package/dist/util/arrayUtilities.js.map +1 -1
  135. package/dist/util/index.d.ts +1 -1
  136. package/dist/util/index.d.ts.map +1 -1
  137. package/dist/util/index.js +3 -2
  138. package/dist/util/index.js.map +1 -1
  139. package/dist/util/rangeMap.d.ts +13 -0
  140. package/dist/util/rangeMap.d.ts.map +1 -1
  141. package/dist/util/rangeMap.js +69 -8
  142. package/dist/util/rangeMap.js.map +1 -1
  143. package/dist/util/typeboxBrand.js +2 -24
  144. package/dist/util/typeboxBrand.js.map +1 -1
  145. package/dist/util/utils.js +2 -24
  146. package/dist/util/utils.js.map +1 -1
  147. package/eslint.config.mts +0 -30
  148. package/lib/core/tree/anchorSet.js +1 -5
  149. package/lib/core/tree/anchorSet.js.map +1 -1
  150. package/lib/feature-libraries/chunked-forest/chunkedForest.js +1 -5
  151. package/lib/feature-libraries/chunked-forest/chunkedForest.js.map +1 -1
  152. package/lib/feature-libraries/flex-tree/lazyEntity.js +1 -11
  153. package/lib/feature-libraries/flex-tree/lazyEntity.js.map +1 -1
  154. package/lib/feature-libraries/flex-tree/lazyNode.js +1 -11
  155. package/lib/feature-libraries/flex-tree/lazyNode.js.map +1 -1
  156. package/lib/feature-libraries/modular-schema/modularChangeFamily.d.ts.map +1 -1
  157. package/lib/feature-libraries/modular-schema/modularChangeFamily.js +10 -30
  158. package/lib/feature-libraries/modular-schema/modularChangeFamily.js.map +1 -1
  159. package/lib/feature-libraries/modular-schema/modularChangeTypes.d.ts +0 -5
  160. package/lib/feature-libraries/modular-schema/modularChangeTypes.d.ts.map +1 -1
  161. package/lib/feature-libraries/modular-schema/modularChangeTypes.js.map +1 -1
  162. package/lib/feature-libraries/object-forest/objectForest.js +1 -45
  163. package/lib/feature-libraries/object-forest/objectForest.js.map +1 -1
  164. package/lib/packageVersion.d.ts +1 -1
  165. package/lib/packageVersion.js +1 -1
  166. package/lib/packageVersion.js.map +1 -1
  167. package/lib/shared-tree/schematizingTreeView.d.ts +1 -0
  168. package/lib/shared-tree/schematizingTreeView.d.ts.map +1 -1
  169. package/lib/shared-tree/schematizingTreeView.js +4 -38
  170. package/lib/shared-tree/schematizingTreeView.js.map +1 -1
  171. package/lib/shared-tree/sharedTree.d.ts +0 -1
  172. package/lib/shared-tree/sharedTree.d.ts.map +1 -1
  173. package/lib/shared-tree/sharedTree.js +1 -40
  174. package/lib/shared-tree/sharedTree.js.map +1 -1
  175. package/lib/shared-tree/treeCheckout.d.ts +12 -3
  176. package/lib/shared-tree/treeCheckout.d.ts.map +1 -1
  177. package/lib/shared-tree/treeCheckout.js +62 -92
  178. package/lib/shared-tree/treeCheckout.js.map +1 -1
  179. package/lib/shared-tree-core/branch.js +1 -5
  180. package/lib/shared-tree-core/branch.js.map +1 -1
  181. package/lib/shared-tree-core/sharedTreeCore.js +1 -38
  182. package/lib/shared-tree-core/sharedTreeCore.js.map +1 -1
  183. package/lib/shared-tree-core/transaction.js +1 -11
  184. package/lib/shared-tree-core/transaction.js.map +1 -1
  185. package/lib/simple-tree/api/tree.d.ts +10 -0
  186. package/lib/simple-tree/api/tree.d.ts.map +1 -1
  187. package/lib/simple-tree/api/tree.js.map +1 -1
  188. package/lib/simple-tree/core/treeNodeKernel.js +1 -11
  189. package/lib/simple-tree/core/treeNodeKernel.js.map +1 -1
  190. package/lib/simple-tree/core/unhydratedFlexTree.js +1 -5
  191. package/lib/simple-tree/core/unhydratedFlexTree.js.map +1 -1
  192. package/lib/simple-tree/leafNodeSchema.js +1 -11
  193. package/lib/simple-tree/leafNodeSchema.js.map +1 -1
  194. package/lib/simple-tree/node-kinds/array/arrayNode.js +1 -5
  195. package/lib/simple-tree/node-kinds/array/arrayNode.js.map +1 -1
  196. package/lib/tableSchema.d.ts +50 -4
  197. package/lib/tableSchema.d.ts.map +1 -1
  198. package/lib/tableSchema.js +171 -75
  199. package/lib/tableSchema.js.map +1 -1
  200. package/lib/util/arrayUtilities.d.ts +20 -0
  201. package/lib/util/arrayUtilities.d.ts.map +1 -1
  202. package/lib/util/arrayUtilities.js +22 -0
  203. package/lib/util/arrayUtilities.js.map +1 -1
  204. package/lib/util/index.d.ts +1 -1
  205. package/lib/util/index.d.ts.map +1 -1
  206. package/lib/util/index.js +1 -1
  207. package/lib/util/index.js.map +1 -1
  208. package/lib/util/rangeMap.d.ts +13 -0
  209. package/lib/util/rangeMap.d.ts.map +1 -1
  210. package/lib/util/rangeMap.js +69 -8
  211. package/lib/util/rangeMap.js.map +1 -1
  212. package/package.json +24 -23
  213. package/src/feature-libraries/modular-schema/modularChangeFamily.ts +14 -47
  214. package/src/feature-libraries/modular-schema/modularChangeTypes.ts +0 -5
  215. package/src/packageVersion.ts +1 -1
  216. package/src/shared-tree/schematizingTreeView.ts +4 -0
  217. package/src/shared-tree/sharedTree.ts +2 -6
  218. package/src/shared-tree/treeCheckout.ts +59 -51
  219. package/src/simple-tree/api/tree.ts +11 -0
  220. package/src/tableSchema.ts +306 -80
  221. package/src/util/arrayUtilities.ts +35 -0
  222. package/src/util/index.ts +2 -0
  223. package/src/util/rangeMap.ts +108 -9
  224. package/tsconfig.json +5 -0
@@ -138,7 +138,6 @@ export declare function createTreeCheckout(idCompressor: IIdCompressor, mintRevi
138
138
  chunkCompressionStrategy?: TreeCompressionStrategy;
139
139
  logger?: TelemetryLoggerExt;
140
140
  breaker?: Breakable;
141
- disposeForksAfterTransaction?: boolean;
142
141
  codecOptions?: Partial<CodecWriteOptions>;
143
142
  }): TreeCheckout;
144
143
  /**
@@ -183,7 +182,6 @@ export declare class TreeCheckout implements ITreeCheckout {
183
182
  /** Optional logger for telemetry. */
184
183
  private readonly logger?;
185
184
  readonly breaker: Breakable;
186
- readonly disposeForksAfterTransaction: boolean;
187
185
  disposed: boolean;
188
186
  private editLock;
189
187
  /**
@@ -223,7 +221,7 @@ export declare class TreeCheckout implements ITreeCheckout {
223
221
  /** True if and only if this checkout is for a branch which is persisted and shared with other clients. */
224
222
  isSharedBranch: boolean, changeFamily: ChangeFamily<SharedTreeEditBuilder, SharedTreeChange>, storedSchema: TreeStoredSchemaRepository, forest: IEditableForest, mintRevisionTag: () => RevisionTag, revisionTagCodec: RevisionTagCodec, idCompressor: IIdCompressor, _removedRoots?: DetachedFieldIndex,
225
223
  /** Optional logger for telemetry. */
226
- logger?: TelemetryLoggerExt | undefined, breaker?: Breakable, disposeForksAfterTransaction?: boolean);
224
+ logger?: TelemetryLoggerExt | undefined, breaker?: Breakable);
227
225
  /**
228
226
  * Pushes a new label node for a transaction nesting level.
229
227
  *
@@ -266,6 +264,16 @@ export declare class TreeCheckout implements ITreeCheckout {
266
264
  private createTransactionStack;
267
265
  exportVerbose(): VerboseTree | undefined;
268
266
  private readonly onAfterBranchChange;
267
+ /**
268
+ * Hold the `editLock` for the duration of `emit`, so that re-entrant edits, transactions,
269
+ * branch operations, etc. attempted from inside a `changed` listener throw the canonical
270
+ * "forbidden during a change event" {@link UsageError} via {@link EditLock.checkUnlocked}.
271
+ *
272
+ * @remarks
273
+ * Shared by both the local and remote `changed` emission paths in {@link TreeCheckout.onAfterBranchChange}.
274
+ * The `try`/`finally` ensures the lock is released even if a listener throws.
275
+ */
276
+ private emitChangedLocked;
269
277
  private readonly onAfterChange;
270
278
  /**
271
279
  * Applies the given serialized change (as was produced via a `"changed"` event of another checkout) to this checkout.
@@ -307,6 +315,7 @@ export declare class TreeCheckout implements ITreeCheckout {
307
315
  switchBranch(branch: SharedTreeBranch<SharedTreeEditBuilder, SharedTreeChange>): void;
308
316
  private rebase;
309
317
  rebaseOnto(branch: TreeBranch): void;
318
+ isMissingEditsFrom(branch: TreeBranch): boolean;
310
319
  merge(branch: TreeBranch): void;
311
320
  merge(branch: TreeBranch, disposeMerged: boolean): void;
312
321
  updateSchema(newSchema: TreeStoredSchema, allowNonSupersetSchema?: true): void;
@@ -1 +1 @@
1
- {"version":3,"file":"treeCheckout.d.ts","sourceRoot":"","sources":["../../src/shared-tree/treeCheckout.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"treeCheckout.d.ts","sourceRoot":"","sources":["../../src/shared-tree/treeCheckout.ts"],"names":[],"mappings":"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"}
@@ -3,53 +3,9 @@
3
3
  * Copyright (c) Microsoft Corporation and contributors. All rights reserved.
4
4
  * Licensed under the MIT License.
5
5
  */
6
- var __runInitializers = (this && this.__runInitializers) || function (thisArg, initializers, value) {
7
- var useValue = arguments.length > 2;
8
- for (var i = 0; i < initializers.length; i++) {
9
- value = useValue ? initializers[i].call(thisArg, value) : initializers[i].call(thisArg);
10
- }
11
- return useValue ? value : void 0;
12
- };
13
- var __esDecorate = (this && this.__esDecorate) || function (ctor, descriptorIn, decorators, contextIn, initializers, extraInitializers) {
14
- function accept(f) { if (f !== void 0 && typeof f !== "function") throw new TypeError("Function expected"); return f; }
15
- var kind = contextIn.kind, key = kind === "getter" ? "get" : kind === "setter" ? "set" : "value";
16
- var target = !descriptorIn && ctor ? contextIn["static"] ? ctor : ctor.prototype : null;
17
- var descriptor = descriptorIn || (target ? Object.getOwnPropertyDescriptor(target, contextIn.name) : {});
18
- var _, done = false;
19
- for (var i = decorators.length - 1; i >= 0; i--) {
20
- var context = {};
21
- for (var p in contextIn) context[p] = p === "access" ? {} : contextIn[p];
22
- for (var p in contextIn.access) context.access[p] = contextIn.access[p];
23
- context.addInitializer = function (f) { if (done) throw new TypeError("Cannot add initializers after decoration has completed"); extraInitializers.push(accept(f || null)); };
24
- var result = (0, decorators[i])(kind === "accessor" ? { get: descriptor.get, set: descriptor.set } : descriptor[key], context);
25
- if (kind === "accessor") {
26
- if (result === void 0) continue;
27
- if (result === null || typeof result !== "object") throw new TypeError("Object expected");
28
- if (_ = accept(result.get)) descriptor.get = _;
29
- if (_ = accept(result.set)) descriptor.set = _;
30
- if (_ = accept(result.init)) initializers.unshift(_);
31
- }
32
- else if (_ = accept(result)) {
33
- if (kind === "field") initializers.unshift(_);
34
- else descriptor[key] = _;
35
- }
36
- }
37
- if (target) Object.defineProperty(target, contextIn.name, descriptor);
38
- done = true;
39
- };
40
- var __classPrivateFieldSet = (this && this.__classPrivateFieldSet) || function (receiver, state, value, kind, f) {
41
- if (kind === "m") throw new TypeError("Private method is not writable");
42
- if (kind === "a" && !f) throw new TypeError("Private accessor was defined without a setter");
43
- if (typeof state === "function" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError("Cannot write private member to an object whose class did not declare it");
44
- return (kind === "a" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;
45
- };
46
- var __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (receiver, state, kind, f) {
47
- if (kind === "a" && !f) throw new TypeError("Private accessor was defined without a getter");
48
- if (typeof state === "function" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError("Cannot read private member from an object whose class did not declare it");
49
- return kind === "m" ? f : kind === "a" ? f.call(receiver) : f ? f.value : state.get(receiver);
50
- };
51
6
  Object.defineProperty(exports, "__esModule", { value: true });
52
7
  exports.TreeCheckout = exports.assertValidConstraint = exports.addConstraintsToTransaction = exports.createTreeCheckout = void 0;
8
+ const tslib_1 = require("tslib");
53
9
  const client_utils_1 = require("@fluid-internal/client-utils");
54
10
  const internal_1 = require("@fluidframework/core-utils/internal");
55
11
  const internal_2 = require("@fluidframework/id-compressor/internal");
@@ -129,7 +85,7 @@ function createTreeCheckout(idCompressor, mintRevisionTag, revisionTagCodec, arg
129
85
  change: changeFamily.rebaser.compose([]),
130
86
  revision: "root",
131
87
  }, changeFamily, () => idCompressor.generateCompressedId());
132
- return new TreeCheckout(branch, true, changeFamily, schema, forest, mintRevisionTag, revisionTagCodec, idCompressor, args?.removedRoots, args?.logger, breaker, args?.disposeForksAfterTransaction);
88
+ return new TreeCheckout(branch, true, changeFamily, schema, forest, mintRevisionTag, revisionTagCodec, idCompressor, args?.removedRoots, args?.logger, breaker);
133
89
  }
134
90
  exports.createTreeCheckout = createTreeCheckout;
135
91
  /**
@@ -226,8 +182,8 @@ let TreeCheckout = (() => {
226
182
  /** True if and only if this checkout is for a branch which is persisted and shared with other clients. */
227
183
  isSharedBranch, changeFamily, storedSchema, forest, mintRevisionTag, revisionTagCodec, idCompressor, _removedRoots = (0, index_js_2.makeDetachedFieldIndex)("repair", revisionTagCodec, idCompressor),
228
184
  /** Optional logger for telemetry. */
229
- logger, breaker = new index_js_6.Breakable("TreeCheckout"), disposeForksAfterTransaction = true) {
230
- this.isSharedBranch = (__runInitializers(this, _instanceExtraInitializers), isSharedBranch);
185
+ logger, breaker = new index_js_6.Breakable("TreeCheckout")) {
186
+ this.isSharedBranch = (tslib_1.__runInitializers(this, _instanceExtraInitializers), isSharedBranch);
231
187
  this.changeFamily = changeFamily;
232
188
  this.storedSchema = storedSchema;
233
189
  this.forest = forest;
@@ -237,7 +193,6 @@ let TreeCheckout = (() => {
237
193
  this._removedRoots = _removedRoots;
238
194
  this.logger = logger;
239
195
  this.breaker = breaker;
240
- this.disposeForksAfterTransaction = disposeForksAfterTransaction;
241
196
  this.disposed = false;
242
197
  this.views = new Set();
243
198
  /**
@@ -251,7 +206,7 @@ let TreeCheckout = (() => {
251
206
  */
252
207
  this.revertibleCommitBranches = new Map();
253
208
  _TreeCheckout_events.set(this, (0, client_utils_1.createEmitter)());
254
- this.events = __classPrivateFieldGet(this, _TreeCheckout_events, "f");
209
+ this.events = tslib_1.__classPrivateFieldGet(this, _TreeCheckout_events, "f");
255
210
  this.onAfterBranchChange = (event) => {
256
211
  // The following logic allows revertibles to be generated for the change.
257
212
  // Currently only appends (including merges and transaction commits) are supported.
@@ -275,7 +230,7 @@ let TreeCheckout = (() => {
275
230
  throw new internal_3.UsageError("Cannot generate the same revertible more than once. Note that this can happen when multiple changed event listeners are registered.");
276
231
  }
277
232
  const revertible = this.createRevertible(revision, kind, this, onRevertibleDisposed, commitLabelTree);
278
- this.revertibleCommitBranches.set(revision, __classPrivateFieldGet(this, _TreeCheckout_transaction, "f").activeBranch.fork(commit));
233
+ this.revertibleCommitBranches.set(revision, tslib_1.__classPrivateFieldGet(this, _TreeCheckout_transaction, "f").activeBranch.fork(commit));
279
234
  this.revertibles.add(revertible);
280
235
  return revertible;
281
236
  };
@@ -303,29 +258,33 @@ let TreeCheckout = (() => {
303
258
  label: this.labelTreeNode?.label,
304
259
  labels: buildLabelsSet(this.labelTreeNode),
305
260
  };
306
- __classPrivateFieldGet(this, _TreeCheckout_events, "f").emit("changed", metadata, getRevertible);
261
+ this.emitChangedLocked(() => {
262
+ tslib_1.__classPrivateFieldGet(this, _TreeCheckout_events, "f").emit("changed", metadata, getRevertible);
263
+ });
307
264
  withinEventContext = false;
308
265
  }
309
266
  }
310
267
  else if (this.isRemoteChangeEvent(event)) {
311
268
  // TODO: figure out how to plumb through commit kind info for remote changes
312
- __classPrivateFieldGet(this, _TreeCheckout_events, "f").emit("changed", {
313
- isLocal: false,
314
- kind: index_js_2.CommitKind.Default,
315
- labels: new Set(),
269
+ this.emitChangedLocked(() => {
270
+ tslib_1.__classPrivateFieldGet(this, _TreeCheckout_events, "f").emit("changed", {
271
+ isLocal: false,
272
+ kind: index_js_2.CommitKind.Default,
273
+ labels: new Set(),
274
+ });
316
275
  });
317
276
  }
318
277
  };
319
278
  this.onAfterChange = (event) => {
320
279
  this.editLock.lock();
321
- __classPrivateFieldGet(this, _TreeCheckout_events, "f").emit("beforeBatch", event);
280
+ tslib_1.__classPrivateFieldGet(this, _TreeCheckout_events, "f").emit("beforeBatch", event);
322
281
  if (event.change !== undefined) {
323
282
  const revision = event.type === "rebase"
324
- ? __classPrivateFieldGet(this, _TreeCheckout_transaction, "f").activeBranch.getHead().revision
283
+ ? tslib_1.__classPrivateFieldGet(this, _TreeCheckout_transaction, "f").activeBranch.getHead().revision
325
284
  : event.change.revision;
326
285
  this.applyInternalChange(event.change.change, revision);
327
286
  }
328
- __classPrivateFieldGet(this, _TreeCheckout_events, "f").emit("afterBatch");
287
+ tslib_1.__classPrivateFieldGet(this, _TreeCheckout_events, "f").emit("afterBatch");
329
288
  this.editLock.unlock();
330
289
  if (event.type === "append") {
331
290
  for (const commit of event.newCommits) {
@@ -370,8 +329,8 @@ let TreeCheckout = (() => {
370
329
  * The performance cost of maintaining this information is negligible.
371
330
  */
372
331
  this.enrichmentStats = { batches: 0, diffs: 0, commitsEnriched: 0, refreshers: 0, forks: 0, applied: 0 };
373
- __classPrivateFieldSet(this, _TreeCheckout_transaction, this.createTransactionStack(branch), "f");
374
- this.editLock = new EditLock(__classPrivateFieldGet(this, _TreeCheckout_transaction, "f").activeBranchEditor);
332
+ tslib_1.__classPrivateFieldSet(this, _TreeCheckout_transaction, this.createTransactionStack(branch), "f");
333
+ this.editLock = new EditLock(tslib_1.__classPrivateFieldGet(this, _TreeCheckout_transaction, "f").activeBranchEditor);
375
334
  this.registerForBranchEvents();
376
335
  }
377
336
  /**
@@ -479,24 +438,21 @@ let TreeCheckout = (() => {
479
438
  return this._removedRoots;
480
439
  }
481
440
  registerForBranchEvents() {
482
- __classPrivateFieldGet(this, _TreeCheckout_transaction, "f").branch.events.on("afterChange", this.onAfterBranchChange);
483
- __classPrivateFieldGet(this, _TreeCheckout_transaction, "f").activeBranchEvents.on("afterChange", this.onAfterChange);
484
- __classPrivateFieldGet(this, _TreeCheckout_transaction, "f").activeBranchEvents.on("ancestryTrimmed", this.onAncestryTrimmed);
441
+ tslib_1.__classPrivateFieldGet(this, _TreeCheckout_transaction, "f").branch.events.on("afterChange", this.onAfterBranchChange);
442
+ tslib_1.__classPrivateFieldGet(this, _TreeCheckout_transaction, "f").activeBranchEvents.on("afterChange", this.onAfterChange);
443
+ tslib_1.__classPrivateFieldGet(this, _TreeCheckout_transaction, "f").activeBranchEvents.on("ancestryTrimmed", this.onAncestryTrimmed);
485
444
  }
486
445
  unregisterFromBranchEvents() {
487
- __classPrivateFieldGet(this, _TreeCheckout_transaction, "f").branch.events.off("afterChange", this.onAfterBranchChange);
488
- __classPrivateFieldGet(this, _TreeCheckout_transaction, "f").activeBranchEvents.off("afterChange", this.onAfterChange);
489
- __classPrivateFieldGet(this, _TreeCheckout_transaction, "f").activeBranchEvents.off("ancestryTrimmed", this.onAncestryTrimmed);
446
+ tslib_1.__classPrivateFieldGet(this, _TreeCheckout_transaction, "f").branch.events.off("afterChange", this.onAfterBranchChange);
447
+ tslib_1.__classPrivateFieldGet(this, _TreeCheckout_transaction, "f").activeBranchEvents.off("afterChange", this.onAfterChange);
448
+ tslib_1.__classPrivateFieldGet(this, _TreeCheckout_transaction, "f").activeBranchEvents.off("ancestryTrimmed", this.onAncestryTrimmed);
490
449
  }
491
450
  createTransactionStack(branch) {
492
451
  return new index_js_4.SquashingTransactionStack(branch, this.mintRevisionTag, () => {
493
- const disposeForks = this.disposeForksAfterTransaction
494
- ? trackForksForDisposal(this)
495
- : undefined;
496
452
  // When each transaction is started, make a restorable checkpoint of the current state of removed roots
497
453
  const restoreRemovedRoots = this._removedRoots.createCheckpoint();
498
454
  return (result, viewUpdate) => {
499
- const newHead = __classPrivateFieldGet(this, _TreeCheckout_transaction, "f").branch.getHead();
455
+ const newHead = tslib_1.__classPrivateFieldGet(this, _TreeCheckout_transaction, "f").branch.getHead();
500
456
  switch (result) {
501
457
  case index_js_4.TransactionResult.Abort: {
502
458
  restoreRemovedRoots();
@@ -519,7 +475,6 @@ let TreeCheckout = (() => {
519
475
  (0, internal_1.unreachableCase)(result);
520
476
  }
521
477
  }
522
- disposeForks?.();
523
478
  };
524
479
  });
525
480
  }
@@ -543,6 +498,31 @@ let TreeCheckout = (() => {
543
498
  cursor.free();
544
499
  }
545
500
  }
501
+ /**
502
+ * Hold the `editLock` for the duration of `emit`, so that re-entrant edits, transactions,
503
+ * branch operations, etc. attempted from inside a `changed` listener throw the canonical
504
+ * "forbidden during a change event" {@link UsageError} via {@link EditLock.checkUnlocked}.
505
+ *
506
+ * @remarks
507
+ * Shared by both the local and remote `changed` emission paths in {@link TreeCheckout.onAfterBranchChange}.
508
+ * The `try`/`finally` ensures the lock is released even if a listener throws.
509
+ */
510
+ emitChangedLocked(emit) {
511
+ this.editLock.lock();
512
+ try {
513
+ emit();
514
+ }
515
+ finally {
516
+ // TODO: any event that throws potentially leaves the code which triggered that event,
517
+ // and thus this checkout (and likely more) in a broken state.
518
+ // Unlocking this editLock prevents future use of this broken state from giving a confusing error in this case,
519
+ // however, a better approach would probably be to put something (this checkout and/or the editLock)
520
+ // into a broken state (using a properly scoped `Breakable`),
521
+ // likely by moving emitChangedLocked into EditLock, and having EditLock get a Breakable,
522
+ // and having the new emitChangedLocked use `Breakable.use`.
523
+ this.editLock.unlock();
524
+ }
525
+ }
546
526
  /**
547
527
  * Applies the given serialized change (as was produced via a `"changed"` event of another checkout) to this checkout.
548
528
  */
@@ -562,7 +542,7 @@ let TreeCheckout = (() => {
562
542
  };
563
543
  const decodedChange = this.changeFamily.codecs.resolve(4).decode(change, context);
564
544
  // Apply the change to the branch, but _not_ the `activeBranch` - we do not support squashing serialized commits in a transaction.
565
- __classPrivateFieldGet(this, _TreeCheckout_transaction, "f").branch.apply((0, index_js_2.tagChange)(decodedChange, revision));
545
+ tslib_1.__classPrivateFieldGet(this, _TreeCheckout_transaction, "f").branch.apply((0, index_js_2.tagChange)(decodedChange, revision));
566
546
  }
567
547
  // #region TreeBranchAlpha
568
548
  applyChange(change) {
@@ -586,6 +566,15 @@ let TreeCheckout = (() => {
586
566
  }
587
567
  mountTransaction(params, isAsync) {
588
568
  this.checkNotDisposed();
569
+ // Starting a transaction is an edit, so it is forbidden from within a change-event
570
+ // callback (where the edit lock is held), the same as direct edits. For the async
571
+ // entry point this throw is captured as a rejected promise by the `async` wrapper.
572
+ //
573
+ // Note: because runTransaction/runTransactionAsync are `@breakingMethod`, this throw also
574
+ // puts the checkout into a broken state (unlike a direct edit, which throws recoverably).
575
+ // That is the same pre-existing broken-state limitation tracked by the TODO in
576
+ // `emitChangedLocked`, not something specific to transactions.
577
+ this.editLock.checkUnlocked("Running a transaction");
589
578
  if (isAsync && this.transaction.size > 0) {
590
579
  throw new internal_3.UsageError("An asynchronous transaction cannot be started while another transaction is already in progress.");
591
580
  }
@@ -704,7 +693,7 @@ let TreeCheckout = (() => {
704
693
  throw new internal_3.UsageError("Unable to clone a revertible that has been disposed.");
705
694
  }
706
695
  const commitToRevert = revertibleBranch.getHead();
707
- const activeBranchHead = __classPrivateFieldGet(targetCheckout, _TreeCheckout_transaction, "f").activeBranch.getHead();
696
+ const activeBranchHead = tslib_1.__classPrivateFieldGet(targetCheckout, _TreeCheckout_transaction, "f").activeBranch.getHead();
708
697
  if ((0, index_js_2.isAncestor)(commitToRevert, activeBranchHead, true) === false) {
709
698
  throw new internal_3.UsageError("Cannot clone revertible for a commit that is not present on the given branch.");
710
699
  }
@@ -740,7 +729,7 @@ let TreeCheckout = (() => {
740
729
  return this.forest.anchors.locate(anchor);
741
730
  }
742
731
  get transaction() {
743
- return __classPrivateFieldGet(this, _TreeCheckout_transaction, "f");
732
+ return tslib_1.__classPrivateFieldGet(this, _TreeCheckout_transaction, "f");
744
733
  }
745
734
  fork() {
746
735
  this.checkNotDisposed("The parent branch has already been disposed and can no longer create new branches.");
@@ -748,26 +737,25 @@ let TreeCheckout = (() => {
748
737
  if (this.transaction.size > 0) {
749
738
  throw new internal_3.UsageError("A view cannot be forked while it has a pending transaction.");
750
739
  }
751
- this.editLock.checkUnlocked("Branching");
752
- const branch = __classPrivateFieldGet(this, _TreeCheckout_transaction, "f").activeBranch.fork();
740
+ const branch = tslib_1.__classPrivateFieldGet(this, _TreeCheckout_transaction, "f").activeBranch.fork();
753
741
  const storedSchema = this.storedSchema.clone();
754
742
  const forkBreaker = new index_js_6.Breakable("TreeCheckout");
755
743
  const forest = this.forest.clone(storedSchema, forkBreaker);
756
- const checkout = new _a(branch, false, this.changeFamily, storedSchema, forest, this.mintRevisionTag, this.revisionTagCodec, this.idCompressor, this._removedRoots.clone(), this.logger, forkBreaker, this.disposeForksAfterTransaction);
757
- __classPrivateFieldGet(this, _TreeCheckout_events, "f").emit("fork", checkout);
744
+ const checkout = new _a(branch, false, this.changeFamily, storedSchema, forest, this.mintRevisionTag, this.revisionTagCodec, this.idCompressor, this._removedRoots.clone(), this.logger, forkBreaker);
745
+ tslib_1.__classPrivateFieldGet(this, _TreeCheckout_events, "f").emit("fork", checkout);
758
746
  return checkout;
759
747
  }
760
748
  switchBranch(branch) {
761
749
  // TODO: Dispose old branch, if necessary
762
- (0, internal_1.assert)(__classPrivateFieldGet(this, _TreeCheckout_transaction, "f").size === 0, 0xc55 /* Cannot switch branches during a transaction */);
763
- const diff = (0, index_js_2.diffHistories)(this.changeFamily.rebaser, __classPrivateFieldGet(this, _TreeCheckout_transaction, "f").branch.getHead(), branch.getHead(), this.mintRevisionTag);
750
+ (0, internal_1.assert)(tslib_1.__classPrivateFieldGet(this, _TreeCheckout_transaction, "f").size === 0, 0xc55 /* Cannot switch branches during a transaction */);
751
+ const diff = (0, index_js_2.diffHistories)(this.changeFamily.rebaser, tslib_1.__classPrivateFieldGet(this, _TreeCheckout_transaction, "f").branch.getHead(), branch.getHead(), this.mintRevisionTag);
764
752
  this.unregisterFromBranchEvents();
765
- __classPrivateFieldSet(this, _TreeCheckout_transaction, this.createTransactionStack(branch), "f");
766
- this.editLock = new EditLock(__classPrivateFieldGet(this, _TreeCheckout_transaction, "f").activeBranchEditor);
753
+ tslib_1.__classPrivateFieldSet(this, _TreeCheckout_transaction, this.createTransactionStack(branch), "f");
754
+ this.editLock = new EditLock(tslib_1.__classPrivateFieldGet(this, _TreeCheckout_transaction, "f").activeBranchEditor);
767
755
  this.registerForBranchEvents();
768
756
  // TODO: Rework eventing
769
757
  this.applyInternalChange(diff);
770
- __classPrivateFieldGet(this, _TreeCheckout_events, "f").emit("afterBatch");
758
+ tslib_1.__classPrivateFieldGet(this, _TreeCheckout_events, "f").emit("afterBatch");
771
759
  }
772
760
  rebase(branch) {
773
761
  const checkout = getCheckout(branch);
@@ -781,11 +769,23 @@ let TreeCheckout = (() => {
781
769
  throw new internal_3.UsageError("A view cannot be rebased while it has a pending transaction.");
782
770
  }
783
771
  (0, internal_1.assert)(!checkout.isSharedBranch, 0xa5d /* Shared branches cannot be rebased onto another branch. */);
784
- __classPrivateFieldGet(checkout, _TreeCheckout_transaction, "f").activeBranch.rebaseOnto(__classPrivateFieldGet(this, _TreeCheckout_transaction, "f").activeBranch);
772
+ tslib_1.__classPrivateFieldGet(checkout, _TreeCheckout_transaction, "f").activeBranch.rebaseOnto(tslib_1.__classPrivateFieldGet(this, _TreeCheckout_transaction, "f").activeBranch);
785
773
  }
786
774
  rebaseOnto(branch) {
787
775
  getCheckout(branch).rebase(this);
788
776
  }
777
+ isMissingEditsFrom(branch) {
778
+ const branchCheckout = getCheckout(branch);
779
+ const targetPath = [];
780
+ const ancestor = (0, index_js_2.findCommonAncestor)(this.mainBranch.getHead(), [
781
+ branchCheckout.mainBranch.getHead(),
782
+ targetPath,
783
+ ]);
784
+ if (ancestor === undefined) {
785
+ throw new internal_3.UsageError("Branches do not share a common ancestor.");
786
+ }
787
+ return targetPath.length > 0;
788
+ }
789
789
  merge(branch, disposeMerged = true) {
790
790
  const checkout = getCheckout(branch);
791
791
  this.checkNotDisposed("The target branch of the merge has been disposed and cannot be merged.");
@@ -797,7 +797,7 @@ let TreeCheckout = (() => {
797
797
  if (checkout.transaction.size > 0) {
798
798
  throw new internal_3.UsageError("Views with an open transaction cannot be merged into another view.");
799
799
  }
800
- __classPrivateFieldGet(this, _TreeCheckout_transaction, "f").activeBranch.merge(__classPrivateFieldGet(checkout, _TreeCheckout_transaction, "f").activeBranch);
800
+ tslib_1.__classPrivateFieldGet(this, _TreeCheckout_transaction, "f").activeBranch.merge(tslib_1.__classPrivateFieldGet(checkout, _TreeCheckout_transaction, "f").activeBranch);
801
801
  if (disposeMerged && !checkout.isSharedBranch) {
802
802
  // Dispose the merged checkout unless it is a shared branch.
803
803
  checkout[index_js_6.disposeSymbol]();
@@ -817,13 +817,13 @@ let TreeCheckout = (() => {
817
817
  [(_TreeCheckout_events = new WeakMap(), _TreeCheckout_transaction = new WeakMap(), _TreeCheckout_validatedCommits = new WeakMap(), _exportVerbose_decorators = [index_js_6.throwIfBroken], _applySerializedChange_decorators = [index_js_6.throwIfBroken], _applyChange_decorators = [index_js_6.throwIfBroken], _runTransaction_decorators = [index_js_6.breakingMethod], _runTransactionAsync_decorators = [index_js_6.breakingMethod], _viewWith_decorators = [index_js_6.throwIfBroken], _fork_decorators = [index_js_6.throwIfBroken], index_js_6.disposeSymbol)]() {
818
818
  this.checkNotDisposed("The branch has already been disposed and cannot be disposed again.");
819
819
  this.disposed = true;
820
- __classPrivateFieldGet(this, _TreeCheckout_transaction, "f").branch.dispose();
821
- __classPrivateFieldGet(this, _TreeCheckout_transaction, "f").dispose();
820
+ tslib_1.__classPrivateFieldGet(this, _TreeCheckout_transaction, "f").branch.dispose();
821
+ tslib_1.__classPrivateFieldGet(this, _TreeCheckout_transaction, "f").dispose();
822
822
  this.purgeRevertibles();
823
823
  for (const view of this.views) {
824
824
  view.dispose();
825
825
  }
826
- __classPrivateFieldGet(this, _TreeCheckout_events, "f").emit("dispose");
826
+ tslib_1.__classPrivateFieldGet(this, _TreeCheckout_events, "f").emit("dispose");
827
827
  }
828
828
  getRemovedRoots() {
829
829
  this.assertNoUntrackedRoots();
@@ -849,9 +849,9 @@ let TreeCheckout = (() => {
849
849
  load() {
850
850
  // Set the tip revision as the latest relevant revision for any removed roots that are loaded from a summary - this allows them to be garbage collected later.
851
851
  // When a load happens, the head of the trunk and the head of the local/main branch must be the same (this is enforced by SharedTree).
852
- this._removedRoots.setRevisionsForLoadedData(__classPrivateFieldGet(this, _TreeCheckout_transaction, "f").branch.getHead().revision);
852
+ this._removedRoots.setRevisionsForLoadedData(tslib_1.__classPrivateFieldGet(this, _TreeCheckout_transaction, "f").branch.getHead().revision);
853
853
  // The content of the checkout (e.g. the forest) has (maybe) changed, so fire an afterBatch event.
854
- __classPrivateFieldGet(this, _TreeCheckout_events, "f").emit("afterBatch");
854
+ tslib_1.__classPrivateFieldGet(this, _TreeCheckout_events, "f").emit("afterBatch");
855
855
  }
856
856
  purgeRevertibles() {
857
857
  for (const revertible of this.revertibles) {
@@ -873,7 +873,7 @@ let TreeCheckout = (() => {
873
873
  const commitToRevert = revertibleBranch.getHead();
874
874
  const revisionForInvert = this.mintRevisionTag();
875
875
  let change = (0, index_js_2.tagChange)(this.changeFamily.rebaser.invert(commitToRevert, false, revisionForInvert), revisionForInvert);
876
- const headCommit = __classPrivateFieldGet(this, _TreeCheckout_transaction, "f").activeBranch.getHead();
876
+ const headCommit = tslib_1.__classPrivateFieldGet(this, _TreeCheckout_transaction, "f").activeBranch.getHead();
877
877
  // Rebase the inverted change onto any commits that occurred after the undoable commits.
878
878
  if (commitToRevert !== headCommit) {
879
879
  // The inverse may be rebased over newer commits which (despite being present in the history)
@@ -889,7 +889,7 @@ let TreeCheckout = (() => {
889
889
  const previousLabelTreeNode = this.labelTreeNode;
890
890
  this.labelTreeNode = labelTree;
891
891
  try {
892
- __classPrivateFieldGet(this, _TreeCheckout_transaction, "f").activeBranch.apply(change, kind === index_js_2.CommitKind.Default || kind === index_js_2.CommitKind.Redo
892
+ tslib_1.__classPrivateFieldGet(this, _TreeCheckout_transaction, "f").activeBranch.apply(change, kind === index_js_2.CommitKind.Default || kind === index_js_2.CommitKind.Redo
893
893
  ? index_js_2.CommitKind.Undo
894
894
  : index_js_2.CommitKind.Redo);
895
895
  }
@@ -943,7 +943,7 @@ let TreeCheckout = (() => {
943
943
  * Otherwise, the function is registered to be called later and this function returns `false`.
944
944
  */
945
945
  onCommitValid(commit, fn) {
946
- const validated = (0, index_js_6.getOrCreate)(__classPrivateFieldGet(this, _TreeCheckout_validatedCommits, "f"), commit, () => []);
946
+ const validated = (0, index_js_6.getOrCreate)(tslib_1.__classPrivateFieldGet(this, _TreeCheckout_validatedCommits, "f"), commit, () => []);
947
947
  if (validated === true) {
948
948
  fn(commit);
949
949
  return true;
@@ -953,12 +953,12 @@ let TreeCheckout = (() => {
953
953
  }
954
954
  /** Mark the given commit as "validated" according to the contract of {@link onCommitValid}(). */
955
955
  validateCommit(commit) {
956
- const validated = (0, index_js_6.getOrCreate)(__classPrivateFieldGet(this, _TreeCheckout_validatedCommits, "f"), commit, () => []);
956
+ const validated = (0, index_js_6.getOrCreate)(tslib_1.__classPrivateFieldGet(this, _TreeCheckout_validatedCommits, "f"), commit, () => []);
957
957
  if (validated !== true) {
958
958
  for (const fn of validated) {
959
959
  fn(commit);
960
960
  }
961
- __classPrivateFieldGet(this, _TreeCheckout_validatedCommits, "f").set(commit, true);
961
+ tslib_1.__classPrivateFieldGet(this, _TreeCheckout_validatedCommits, "f").set(commit, true);
962
962
  }
963
963
  }
964
964
  resetEnrichmentStats() {
@@ -980,7 +980,7 @@ let TreeCheckout = (() => {
980
980
  const enricher = new sharedTreeChangeEnricher_js_1.SharedTreeChangeEnricher(this.forest, this._removedRoots, this.storedSchema, this.idCompressor, () => (this.enrichmentStats.commitsEnriched += 1), () => (this.enrichmentStats.refreshers += 1), () => (this.enrichmentStats.forks += 1), () => (this.enrichmentStats.applied += 1));
981
981
  // This `lastCommitApplied` may be on the main branch or on a transaction branch.
982
982
  // In either case, it is crucial that the state of the forest & detached field index reflects all changes up to and including this commit.
983
- const lastCommitApplied = __classPrivateFieldGet(this, _TreeCheckout_transaction, "f").activeBranch.getHead();
983
+ const lastCommitApplied = tslib_1.__classPrivateFieldGet(this, _TreeCheckout_transaction, "f").activeBranch.getHead();
984
984
  if (context !== lastCommitApplied) {
985
985
  enricher.enqueueChange(() => {
986
986
  this.enrichmentStats.diffs += 1;
@@ -997,18 +997,18 @@ let TreeCheckout = (() => {
997
997
  return enriched;
998
998
  }
999
999
  get mainBranch() {
1000
- return __classPrivateFieldGet(this, _TreeCheckout_transaction, "f").branch;
1000
+ return tslib_1.__classPrivateFieldGet(this, _TreeCheckout_transaction, "f").branch;
1001
1001
  }
1002
1002
  },
1003
1003
  (() => {
1004
1004
  const _metadata = typeof Symbol === "function" && Symbol.metadata ? Object.create(null) : void 0;
1005
- __esDecorate(_a, null, _exportVerbose_decorators, { kind: "method", name: "exportVerbose", static: false, private: false, access: { has: obj => "exportVerbose" in obj, get: obj => obj.exportVerbose }, metadata: _metadata }, null, _instanceExtraInitializers);
1006
- __esDecorate(_a, null, _applySerializedChange_decorators, { kind: "method", name: "applySerializedChange", static: false, private: false, access: { has: obj => "applySerializedChange" in obj, get: obj => obj.applySerializedChange }, metadata: _metadata }, null, _instanceExtraInitializers);
1007
- __esDecorate(_a, null, _applyChange_decorators, { kind: "method", name: "applyChange", static: false, private: false, access: { has: obj => "applyChange" in obj, get: obj => obj.applyChange }, metadata: _metadata }, null, _instanceExtraInitializers);
1008
- __esDecorate(_a, null, _runTransaction_decorators, { kind: "method", name: "runTransaction", static: false, private: false, access: { has: obj => "runTransaction" in obj, get: obj => obj.runTransaction }, metadata: _metadata }, null, _instanceExtraInitializers);
1009
- __esDecorate(_a, null, _runTransactionAsync_decorators, { kind: "method", name: "runTransactionAsync", static: false, private: false, access: { has: obj => "runTransactionAsync" in obj, get: obj => obj.runTransactionAsync }, metadata: _metadata }, null, _instanceExtraInitializers);
1010
- __esDecorate(_a, null, _viewWith_decorators, { kind: "method", name: "viewWith", static: false, private: false, access: { has: obj => "viewWith" in obj, get: obj => obj.viewWith }, metadata: _metadata }, null, _instanceExtraInitializers);
1011
- __esDecorate(_a, null, _fork_decorators, { kind: "method", name: "fork", static: false, private: false, access: { has: obj => "fork" in obj, get: obj => obj.fork }, metadata: _metadata }, null, _instanceExtraInitializers);
1005
+ tslib_1.__esDecorate(_a, null, _exportVerbose_decorators, { kind: "method", name: "exportVerbose", static: false, private: false, access: { has: obj => "exportVerbose" in obj, get: obj => obj.exportVerbose }, metadata: _metadata }, null, _instanceExtraInitializers);
1006
+ tslib_1.__esDecorate(_a, null, _applySerializedChange_decorators, { kind: "method", name: "applySerializedChange", static: false, private: false, access: { has: obj => "applySerializedChange" in obj, get: obj => obj.applySerializedChange }, metadata: _metadata }, null, _instanceExtraInitializers);
1007
+ tslib_1.__esDecorate(_a, null, _applyChange_decorators, { kind: "method", name: "applyChange", static: false, private: false, access: { has: obj => "applyChange" in obj, get: obj => obj.applyChange }, metadata: _metadata }, null, _instanceExtraInitializers);
1008
+ tslib_1.__esDecorate(_a, null, _runTransaction_decorators, { kind: "method", name: "runTransaction", static: false, private: false, access: { has: obj => "runTransaction" in obj, get: obj => obj.runTransaction }, metadata: _metadata }, null, _instanceExtraInitializers);
1009
+ tslib_1.__esDecorate(_a, null, _runTransactionAsync_decorators, { kind: "method", name: "runTransactionAsync", static: false, private: false, access: { has: obj => "runTransactionAsync" in obj, get: obj => obj.runTransactionAsync }, metadata: _metadata }, null, _instanceExtraInitializers);
1010
+ tslib_1.__esDecorate(_a, null, _viewWith_decorators, { kind: "method", name: "viewWith", static: false, private: false, access: { has: obj => "viewWith" in obj, get: obj => obj.viewWith }, metadata: _metadata }, null, _instanceExtraInitializers);
1011
+ tslib_1.__esDecorate(_a, null, _fork_decorators, { kind: "method", name: "fork", static: false, private: false, access: { has: obj => "fork" in obj, get: obj => obj.fork }, metadata: _metadata }, null, _instanceExtraInitializers);
1012
1012
  if (_metadata) Object.defineProperty(_a, Symbol.metadata, { enumerable: true, configurable: true, writable: true, value: _metadata });
1013
1013
  })(),
1014
1014
  /**
@@ -1101,10 +1101,7 @@ class EditLock {
1101
1101
  */
1102
1102
  checkUnlocked(action) {
1103
1103
  if (this.locked) {
1104
- // These type assertions ensure that the event name strings used here match the actual event names
1105
- const nodeChanged = "nodeChanged";
1106
- const treeChanged = "treeChanged";
1107
- throw new internal_3.UsageError(`${action} is forbidden during a ${nodeChanged} or ${treeChanged} event`);
1104
+ throw new internal_3.UsageError(`${action} is forbidden during a change event callback`);
1108
1105
  }
1109
1106
  }
1110
1107
  /**
@@ -1116,33 +1113,6 @@ class EditLock {
1116
1113
  this.locked = false;
1117
1114
  }
1118
1115
  }
1119
- /**
1120
- * Keeps track of all new forks created until the returned function is invoked, which will dispose all of those for.
1121
- * The returned function may only be called once.
1122
- *
1123
- * @param checkout - The tree checkout for which you want to monitor forks for disposal.
1124
- * @returns a function which can be called to dispose all of the tracked forks.
1125
- */
1126
- function trackForksForDisposal(checkout) {
1127
- const forks = new Set();
1128
- const onDisposeUnSubscribes = [];
1129
- const onForkUnSubscribe = (0, index_js_4.onForkTransitive)(checkout, (fork) => {
1130
- forks.add(fork);
1131
- onDisposeUnSubscribes.push(fork.events.on("dispose", () => forks.delete(fork)));
1132
- });
1133
- let disposed = false;
1134
- return () => {
1135
- (0, internal_1.assert)(!disposed, 0xaa9 /* Forks may only be disposed once */);
1136
- for (const fork of forks) {
1137
- fork.dispose();
1138
- }
1139
- for (const unsubscribe of onDisposeUnSubscribes) {
1140
- unsubscribe();
1141
- }
1142
- onForkUnSubscribe();
1143
- disposed = true;
1144
- };
1145
- }
1146
1116
  function verboseFromCursor(reader, schema) {
1147
1117
  const fields = (0, index_js_5.customFromCursorStored)(reader, schema, verboseFromCursor);
1148
1118
  const nodeSchema = schema.get(reader.type) ?? (0, internal_1.fail)(0xac9 /* missing schema for type in cursor */);