@fluidframework/merge-tree 2.5.0 → 2.10.0-305357

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 (112) hide show
  1. package/api-report/merge-tree.legacy.alpha.api.md +0 -230
  2. package/dist/client.d.ts +9 -8
  3. package/dist/client.d.ts.map +1 -1
  4. package/dist/client.js +7 -6
  5. package/dist/client.js.map +1 -1
  6. package/dist/index.d.ts +3 -4
  7. package/dist/index.d.ts.map +1 -1
  8. package/dist/index.js +3 -5
  9. package/dist/index.js.map +1 -1
  10. package/dist/legacy.d.ts +0 -12
  11. package/dist/mergeTree.d.ts +14 -13
  12. package/dist/mergeTree.d.ts.map +1 -1
  13. package/dist/mergeTree.js +51 -20
  14. package/dist/mergeTree.js.map +1 -1
  15. package/dist/mergeTreeNodes.d.ts +13 -79
  16. package/dist/mergeTreeNodes.d.ts.map +1 -1
  17. package/dist/mergeTreeNodes.js +5 -95
  18. package/dist/mergeTreeNodes.js.map +1 -1
  19. package/dist/referencePositions.d.ts +0 -12
  20. package/dist/referencePositions.d.ts.map +1 -1
  21. package/dist/referencePositions.js.map +1 -1
  22. package/dist/segmentGroupCollection.d.ts +7 -14
  23. package/dist/segmentGroupCollection.d.ts.map +1 -1
  24. package/dist/segmentGroupCollection.js +2 -9
  25. package/dist/segmentGroupCollection.js.map +1 -1
  26. package/dist/segmentPropertiesManager.d.ts +13 -12
  27. package/dist/segmentPropertiesManager.d.ts.map +1 -1
  28. package/dist/segmentPropertiesManager.js +19 -13
  29. package/dist/segmentPropertiesManager.js.map +1 -1
  30. package/dist/sortedSegmentSet.d.ts +0 -1
  31. package/dist/sortedSegmentSet.d.ts.map +1 -1
  32. package/dist/sortedSegmentSet.js.map +1 -1
  33. package/dist/sortedSet.d.ts +0 -1
  34. package/dist/sortedSet.d.ts.map +1 -1
  35. package/dist/sortedSet.js +0 -1
  36. package/dist/sortedSet.js.map +1 -1
  37. package/dist/test/index.d.ts +2 -2
  38. package/dist/test/index.d.ts.map +1 -1
  39. package/dist/test/index.js +2 -4
  40. package/dist/test/index.js.map +1 -1
  41. package/dist/test/mergeTree.annotate.spec.js +4 -4
  42. package/dist/test/mergeTree.annotate.spec.js.map +1 -1
  43. package/dist/test/segmentGroupCollection.spec.js +22 -18
  44. package/dist/test/segmentGroupCollection.spec.js.map +1 -1
  45. package/dist/test/snapshot.spec.js.map +1 -1
  46. package/dist/test/snapshot.utils.d.ts +4 -4
  47. package/dist/test/snapshot.utils.d.ts.map +1 -1
  48. package/dist/test/snapshot.utils.js.map +1 -1
  49. package/dist/textSegment.d.ts +1 -3
  50. package/dist/textSegment.d.ts.map +1 -1
  51. package/dist/textSegment.js.map +1 -1
  52. package/lib/client.d.ts +9 -8
  53. package/lib/client.d.ts.map +1 -1
  54. package/lib/client.js +8 -7
  55. package/lib/client.js.map +1 -1
  56. package/lib/index.d.ts +3 -4
  57. package/lib/index.d.ts.map +1 -1
  58. package/lib/index.js +2 -3
  59. package/lib/index.js.map +1 -1
  60. package/lib/legacy.d.ts +0 -12
  61. package/lib/mergeTree.d.ts +14 -13
  62. package/lib/mergeTree.d.ts.map +1 -1
  63. package/lib/mergeTree.js +53 -22
  64. package/lib/mergeTree.js.map +1 -1
  65. package/lib/mergeTreeNodes.d.ts +13 -79
  66. package/lib/mergeTreeNodes.d.ts.map +1 -1
  67. package/lib/mergeTreeNodes.js +5 -94
  68. package/lib/mergeTreeNodes.js.map +1 -1
  69. package/lib/referencePositions.d.ts +0 -12
  70. package/lib/referencePositions.d.ts.map +1 -1
  71. package/lib/referencePositions.js.map +1 -1
  72. package/lib/segmentGroupCollection.d.ts +7 -14
  73. package/lib/segmentGroupCollection.d.ts.map +1 -1
  74. package/lib/segmentGroupCollection.js +2 -9
  75. package/lib/segmentGroupCollection.js.map +1 -1
  76. package/lib/segmentPropertiesManager.d.ts +13 -12
  77. package/lib/segmentPropertiesManager.d.ts.map +1 -1
  78. package/lib/segmentPropertiesManager.js +17 -12
  79. package/lib/segmentPropertiesManager.js.map +1 -1
  80. package/lib/sortedSegmentSet.d.ts +0 -1
  81. package/lib/sortedSegmentSet.d.ts.map +1 -1
  82. package/lib/sortedSegmentSet.js.map +1 -1
  83. package/lib/sortedSet.d.ts +0 -1
  84. package/lib/sortedSet.d.ts.map +1 -1
  85. package/lib/sortedSet.js +0 -1
  86. package/lib/sortedSet.js.map +1 -1
  87. package/lib/test/index.d.ts +2 -2
  88. package/lib/test/index.d.ts.map +1 -1
  89. package/lib/test/index.js +2 -2
  90. package/lib/test/index.js.map +1 -1
  91. package/lib/test/mergeTree.annotate.spec.js +4 -4
  92. package/lib/test/mergeTree.annotate.spec.js.map +1 -1
  93. package/lib/test/segmentGroupCollection.spec.js +22 -18
  94. package/lib/test/segmentGroupCollection.spec.js.map +1 -1
  95. package/lib/test/snapshot.spec.js.map +1 -1
  96. package/lib/test/snapshot.utils.d.ts +4 -4
  97. package/lib/test/snapshot.utils.d.ts.map +1 -1
  98. package/lib/test/snapshot.utils.js.map +1 -1
  99. package/lib/textSegment.d.ts +1 -3
  100. package/lib/textSegment.d.ts.map +1 -1
  101. package/lib/textSegment.js.map +1 -1
  102. package/package.json +91 -19
  103. package/src/client.ts +15 -12
  104. package/src/index.ts +6 -3
  105. package/src/mergeTree.ts +87 -38
  106. package/src/mergeTreeNodes.ts +16 -177
  107. package/src/referencePositions.ts +0 -12
  108. package/src/segmentGroupCollection.ts +14 -20
  109. package/src/segmentPropertiesManager.ts +30 -12
  110. package/src/sortedSegmentSet.ts +0 -1
  111. package/src/sortedSet.ts +0 -1
  112. package/src/textSegment.ts +1 -3
@@ -1 +1 @@
1
- {"version":3,"file":"referencePositions.js","sourceRoot":"","sources":["../src/referencePositions.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAIH,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AAGzC;;GAEG;AACH,MAAM,CAAC,MAAM,qBAAqB,GAAG,qBAAqB,CAAC;AAC3D;;GAEG;AACH,MAAM,CAAC,MAAM,sBAAsB,GAAG,sBAAsB,CAAC;AAE7D;;;GAGG;AACH,MAAM,UAAU,mBAAmB,CAClC,YAA+C,EAC/C,KAAoB;IAEpB,MAAM,OAAO,GAAG,OAAO,YAAY,KAAK,QAAQ,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,YAAY,CAAC,OAAO,CAAC;IACvF,sCAAsC;IACtC,OAAO,CAAC,OAAO,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC;AAChC,CAAC;AAED;;;;GAIG;AACH,MAAM,CAAC,MAAM,gBAAgB,GAAG,CAAC,MAAyB,EAAwB,EAAE,CACnF,mBAAmB,CAAC,MAAM,EAAE,aAAa,CAAC,IAAI,CAAC,IAAI,MAAM,CAAC,UAAU;IACnE,CAAC,CAAE,MAAM,CAAC,UAAU,CAAC,qBAAqB,CAAc;IACxD,CAAC,CAAC,SAAS,CAAC;AAEd;;;;GAIG;AACH,MAAM,UAAU,eAAe,CAAC,MAAyB,EAAE,KAAa;IACvE,MAAM,UAAU,GAAG,gBAAgB,CAAC,MAAM,CAAC,CAAC;IAC5C,OAAO,UAAU,EAAE,QAAQ,CAAC,KAAK,CAAC,IAAI,KAAK,CAAC;AAC7C,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,gBAAgB,CAAC,MAAyB;IACzD,OAAO,gBAAgB,CAAC,MAAM,CAAC,KAAK,SAAS,CAAC;AAC/C,CAAC;AAwDD;;GAEG;AACH,MAAM,CAAC,MAAM,yBAAyB,GAAG,CAAC,CAAC,CAAC;AAE5C;;;GAGG;AACH,MAAM,UAAU,oBAAoB,CAA8B,CAAI,EAAE,CAAI;IAC3E,OAAO,yBAAyB,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AACpD,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,oBAAoB,CAA8B,CAAI,EAAE,CAAI;IAC3E,OAAO,yBAAyB,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AACpD,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,yBAAyB,CAAC,CAAoB,EAAE,CAAoB;IACnF,MAAM,IAAI,GAAG,CAAC,CAAC,UAAU,EAAE,CAAC;IAC5B,MAAM,IAAI,GAAG,CAAC,CAAC,UAAU,EAAE,CAAC;IAC5B,IAAI,IAAI,KAAK,IAAI,EAAE,CAAC;QACnB,OAAO,CAAC,CAAC,SAAS,EAAE,GAAG,CAAC,CAAC,SAAS,EAAE,CAAC;IACtC,CAAC;SAAM,CAAC;QACP,OAAO,IAAI,KAAK,SAAS,IAAI,CAAC,IAAI,KAAK,SAAS,IAAI,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IAC3F,CAAC;AACF,CAAC","sourcesContent":["/*!\n * Copyright (c) Microsoft Corporation and contributors. All rights reserved.\n * Licensed under the MIT License.\n */\n\nimport { SlidingPreference } from \"./localReference.js\";\nimport { ISegment } from \"./mergeTreeNodes.js\";\nimport { ReferenceType } from \"./ops.js\";\nimport { PropertySet } from \"./properties.js\";\n\n/**\n * @internal\n */\nexport const reservedTileLabelsKey = \"referenceTileLabels\";\n/**\n * @internal\n */\nexport const reservedRangeLabelsKey = \"referenceRangeLabels\";\n\n/**\n * Determines if the given reference type includes the given flags.\n * @internal\n */\nexport function refTypeIncludesFlag(\n\trefPosOrType: ReferencePosition | ReferenceType,\n\tflags: ReferenceType,\n): boolean {\n\tconst refType = typeof refPosOrType === \"number\" ? refPosOrType : refPosOrType.refType;\n\t// eslint-disable-next-line no-bitwise\n\treturn (refType & flags) !== 0;\n}\n\n/**\n * Gets the tile labels stored in the given reference position.\n * @legacy\n * @alpha\n */\nexport const refGetTileLabels = (refPos: ReferencePosition): string[] | undefined =>\n\trefTypeIncludesFlag(refPos, ReferenceType.Tile) && refPos.properties\n\t\t? (refPos.properties[reservedTileLabelsKey] as string[])\n\t\t: undefined;\n\n/**\n * Determines if a reference position has the given tile label.\n * @legacy\n * @alpha\n */\nexport function refHasTileLabel(refPos: ReferencePosition, label: string): boolean {\n\tconst tileLabels = refGetTileLabels(refPos);\n\treturn tileLabels?.includes(label) ?? false;\n}\n\n/**\n * Determines if a reference position has any tile labels.\n * @internal\n */\nexport function refHasTileLabels(refPos: ReferencePosition): boolean {\n\treturn refGetTileLabels(refPos) !== undefined;\n}\n\n/**\n * Represents a reference to a place within a merge tree. This place conceptually remains stable over time\n * by referring to a particular segment and offset within that segment.\n * Thus, this reference's character position changes as the tree is edited.\n * @legacy\n * @alpha\n */\nexport interface ReferencePosition {\n\t/**\n\t * Properties associated with this reference\n\t */\n\tproperties?: PropertySet;\n\n\t/**\n\t * The direction for this reference position to slide when the segment it\n\t * points to is removed. See {@link (SlidingPreference:type)} for additional context.\n\t *\n\t * Defaults to SlidingPreference.Forward\n\t */\n\tslidingPreference?: SlidingPreference;\n\n\trefType: ReferenceType;\n\n\t/**\n\t * Gets the segment that this reference position is semantically associated with. Returns undefined iff the\n\t * reference became detached from the string.\n\t */\n\tgetSegment(): ISegment | undefined;\n\n\t/**\n\t * Gets the offset for this reference position within its associated segment.\n\t *\n\t * @example\n\t *\n\t * If a merge-tree has 3 leaf segments [\"hello\", \" \", \"world\"] and a ReferencePosition refers to the \"l\"\n\t * in \"world\", that reference's offset would be 3 as \"l\" is the character at index 3 within \"world\".\n\t */\n\tgetOffset(): number;\n\n\t/**\n\t * @param newProps - Properties to add to this reference.\n\t * @remarks Note that merge-tree does not broadcast changes to other clients. It is up to the consumer\n\t * to ensure broadcast happens if that is desired.\n\t *\n\t * @deprecated - This function should not be used externally and will be removed in a subsequent release.\n\t *\n\t * @privateRemarks This interface is used by both marker segments and local reference positions. We will remove\n\t * this function from segments, but keep it on local reference positions for now. So it has been added to local reference\n\t * positions, and must be removed here to not apply to marker segments.\n\t */\n\taddProperties(newProps: PropertySet): void;\n\tisLeaf(): this is ISegment;\n}\n\n/**\n * @internal\n */\nexport const DetachedReferencePosition = -1;\n\n/**\n * Finds the minimum reference position.\n * @internal\n */\nexport function minReferencePosition<T extends ReferencePosition>(a: T, b: T): T {\n\treturn compareReferencePositions(a, b) < 0 ? a : b;\n}\n\n/**\n * Finds the maximum reference position.\n * @internal\n */\nexport function maxReferencePosition<T extends ReferencePosition>(a: T, b: T): T {\n\treturn compareReferencePositions(a, b) > 0 ? a : b;\n}\n\n/**\n * Compares two reference positions.\n * @internal\n */\nexport function compareReferencePositions(a: ReferencePosition, b: ReferencePosition): number {\n\tconst aSeg = a.getSegment();\n\tconst bSeg = b.getSegment();\n\tif (aSeg === bSeg) {\n\t\treturn a.getOffset() - b.getOffset();\n\t} else {\n\t\treturn aSeg === undefined || (bSeg !== undefined && aSeg.ordinal < bSeg.ordinal) ? -1 : 1;\n\t}\n}\n"]}
1
+ {"version":3,"file":"referencePositions.js","sourceRoot":"","sources":["../src/referencePositions.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAIH,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AAGzC;;GAEG;AACH,MAAM,CAAC,MAAM,qBAAqB,GAAG,qBAAqB,CAAC;AAC3D;;GAEG;AACH,MAAM,CAAC,MAAM,sBAAsB,GAAG,sBAAsB,CAAC;AAE7D;;;GAGG;AACH,MAAM,UAAU,mBAAmB,CAClC,YAA+C,EAC/C,KAAoB;IAEpB,MAAM,OAAO,GAAG,OAAO,YAAY,KAAK,QAAQ,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,YAAY,CAAC,OAAO,CAAC;IACvF,sCAAsC;IACtC,OAAO,CAAC,OAAO,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC;AAChC,CAAC;AAED;;;;GAIG;AACH,MAAM,CAAC,MAAM,gBAAgB,GAAG,CAAC,MAAyB,EAAwB,EAAE,CACnF,mBAAmB,CAAC,MAAM,EAAE,aAAa,CAAC,IAAI,CAAC,IAAI,MAAM,CAAC,UAAU;IACnE,CAAC,CAAE,MAAM,CAAC,UAAU,CAAC,qBAAqB,CAAc;IACxD,CAAC,CAAC,SAAS,CAAC;AAEd;;;;GAIG;AACH,MAAM,UAAU,eAAe,CAAC,MAAyB,EAAE,KAAa;IACvE,MAAM,UAAU,GAAG,gBAAgB,CAAC,MAAM,CAAC,CAAC;IAC5C,OAAO,UAAU,EAAE,QAAQ,CAAC,KAAK,CAAC,IAAI,KAAK,CAAC;AAC7C,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,gBAAgB,CAAC,MAAyB;IACzD,OAAO,gBAAgB,CAAC,MAAM,CAAC,KAAK,SAAS,CAAC;AAC/C,CAAC;AA4CD;;GAEG;AACH,MAAM,CAAC,MAAM,yBAAyB,GAAG,CAAC,CAAC,CAAC;AAE5C;;;GAGG;AACH,MAAM,UAAU,oBAAoB,CAA8B,CAAI,EAAE,CAAI;IAC3E,OAAO,yBAAyB,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AACpD,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,oBAAoB,CAA8B,CAAI,EAAE,CAAI;IAC3E,OAAO,yBAAyB,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AACpD,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,yBAAyB,CAAC,CAAoB,EAAE,CAAoB;IACnF,MAAM,IAAI,GAAG,CAAC,CAAC,UAAU,EAAE,CAAC;IAC5B,MAAM,IAAI,GAAG,CAAC,CAAC,UAAU,EAAE,CAAC;IAC5B,IAAI,IAAI,KAAK,IAAI,EAAE,CAAC;QACnB,OAAO,CAAC,CAAC,SAAS,EAAE,GAAG,CAAC,CAAC,SAAS,EAAE,CAAC;IACtC,CAAC;SAAM,CAAC;QACP,OAAO,IAAI,KAAK,SAAS,IAAI,CAAC,IAAI,KAAK,SAAS,IAAI,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IAC3F,CAAC;AACF,CAAC","sourcesContent":["/*!\n * Copyright (c) Microsoft Corporation and contributors. All rights reserved.\n * Licensed under the MIT License.\n */\n\nimport { SlidingPreference } from \"./localReference.js\";\nimport { ISegment } from \"./mergeTreeNodes.js\";\nimport { ReferenceType } from \"./ops.js\";\nimport { PropertySet } from \"./properties.js\";\n\n/**\n * @internal\n */\nexport const reservedTileLabelsKey = \"referenceTileLabels\";\n/**\n * @internal\n */\nexport const reservedRangeLabelsKey = \"referenceRangeLabels\";\n\n/**\n * Determines if the given reference type includes the given flags.\n * @internal\n */\nexport function refTypeIncludesFlag(\n\trefPosOrType: ReferencePosition | ReferenceType,\n\tflags: ReferenceType,\n): boolean {\n\tconst refType = typeof refPosOrType === \"number\" ? refPosOrType : refPosOrType.refType;\n\t// eslint-disable-next-line no-bitwise\n\treturn (refType & flags) !== 0;\n}\n\n/**\n * Gets the tile labels stored in the given reference position.\n * @legacy\n * @alpha\n */\nexport const refGetTileLabels = (refPos: ReferencePosition): string[] | undefined =>\n\trefTypeIncludesFlag(refPos, ReferenceType.Tile) && refPos.properties\n\t\t? (refPos.properties[reservedTileLabelsKey] as string[])\n\t\t: undefined;\n\n/**\n * Determines if a reference position has the given tile label.\n * @legacy\n * @alpha\n */\nexport function refHasTileLabel(refPos: ReferencePosition, label: string): boolean {\n\tconst tileLabels = refGetTileLabels(refPos);\n\treturn tileLabels?.includes(label) ?? false;\n}\n\n/**\n * Determines if a reference position has any tile labels.\n * @internal\n */\nexport function refHasTileLabels(refPos: ReferencePosition): boolean {\n\treturn refGetTileLabels(refPos) !== undefined;\n}\n\n/**\n * Represents a reference to a place within a merge tree. This place conceptually remains stable over time\n * by referring to a particular segment and offset within that segment.\n * Thus, this reference's character position changes as the tree is edited.\n * @legacy\n * @alpha\n */\nexport interface ReferencePosition {\n\t/**\n\t * Properties associated with this reference\n\t */\n\tproperties?: PropertySet;\n\n\t/**\n\t * The direction for this reference position to slide when the segment it\n\t * points to is removed. See {@link (SlidingPreference:type)} for additional context.\n\t *\n\t * Defaults to SlidingPreference.Forward\n\t */\n\tslidingPreference?: SlidingPreference;\n\n\trefType: ReferenceType;\n\n\t/**\n\t * Gets the segment that this reference position is semantically associated with. Returns undefined iff the\n\t * reference became detached from the string.\n\t */\n\tgetSegment(): ISegment | undefined;\n\n\t/**\n\t * Gets the offset for this reference position within its associated segment.\n\t *\n\t * @example\n\t *\n\t * If a merge-tree has 3 leaf segments [\"hello\", \" \", \"world\"] and a ReferencePosition refers to the \"l\"\n\t * in \"world\", that reference's offset would be 3 as \"l\" is the character at index 3 within \"world\".\n\t */\n\tgetOffset(): number;\n\n\tisLeaf(): this is ISegment;\n}\n\n/**\n * @internal\n */\nexport const DetachedReferencePosition = -1;\n\n/**\n * Finds the minimum reference position.\n * @internal\n */\nexport function minReferencePosition<T extends ReferencePosition>(a: T, b: T): T {\n\treturn compareReferencePositions(a, b) < 0 ? a : b;\n}\n\n/**\n * Finds the maximum reference position.\n * @internal\n */\nexport function maxReferencePosition<T extends ReferencePosition>(a: T, b: T): T {\n\treturn compareReferencePositions(a, b) > 0 ? a : b;\n}\n\n/**\n * Compares two reference positions.\n * @internal\n */\nexport function compareReferencePositions(a: ReferencePosition, b: ReferencePosition): number {\n\tconst aSeg = a.getSegment();\n\tconst bSeg = b.getSegment();\n\tif (aSeg === bSeg) {\n\t\treturn a.getOffset() - b.getOffset();\n\t} else {\n\t\treturn aSeg === undefined || (bSeg !== undefined && aSeg.ordinal < bSeg.ordinal) ? -1 : 1;\n\t}\n}\n"]}
@@ -2,25 +2,18 @@
2
2
  * Copyright (c) Microsoft Corporation and contributors. All rights reserved.
3
3
  * Licensed under the MIT License.
4
4
  */
5
- import { ISegment, SegmentGroup } from "./mergeTreeNodes.js";
6
- /**
7
- * @deprecated - This class should not be used externally and will be removed in a subsequent release.
8
- * @legacy
9
- * @alpha
10
- *
11
- * @privateRemarks After the deprecation period this class should be remove from this package's exports, and only be used internally
12
- */
5
+ import { SegmentGroup, type ISegmentLeaf } from "./mergeTreeNodes.js";
13
6
  export declare class SegmentGroupCollection {
14
7
  private readonly segment;
15
8
  private readonly segmentGroups;
16
- constructor(segment: ISegment);
9
+ constructor(segment: ISegmentLeaf);
17
10
  get size(): number;
18
11
  get empty(): boolean;
19
- enqueue(segmentGroup: SegmentGroup): void;
20
- dequeue(): SegmentGroup | undefined;
21
- remove?(segmentGroup: SegmentGroup): boolean;
22
- pop?(): SegmentGroup | undefined;
23
- copyTo(segment: ISegment): void;
12
+ enqueue(segmentGroup: SegmentGroup<ISegmentLeaf>): void;
13
+ dequeue(): SegmentGroup<ISegmentLeaf> | undefined;
14
+ remove?(segmentGroup: SegmentGroup<ISegmentLeaf>): boolean;
15
+ pop?(): SegmentGroup<ISegmentLeaf> | undefined;
16
+ copyTo(segmentGroups: SegmentGroupCollection): void;
24
17
  private enqueueOnCopy;
25
18
  }
26
19
  //# sourceMappingURL=segmentGroupCollection.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"segmentGroupCollection.d.ts","sourceRoot":"","sources":["../src/segmentGroupCollection.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAIH,OAAO,EAAE,QAAQ,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AAE7D;;;;;;GAMG;AACH,qBAAa,sBAAsB;IAItB,OAAO,CAAC,QAAQ,CAAC,OAAO;IAFpC,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAiC;gBAElC,OAAO,EAAE,QAAQ;IAK9C,IAAW,IAAI,IAAI,MAAM,CAExB;IAED,IAAW,KAAK,IAAI,OAAO,CAE1B;IAGM,OAAO,CAAC,YAAY,EAAE,YAAY,GAAG,IAAI;IAMzC,OAAO,IAAI,YAAY,GAAG,SAAS;IAKnC,MAAM,CAAC,CAAC,YAAY,EAAE,YAAY,GAAG,OAAO;IAU5C,GAAG,CAAC,IAAI,YAAY,GAAG,SAAS;IAIhC,MAAM,CAAC,OAAO,EAAE,QAAQ,GAAG,IAAI;IAOtC,OAAO,CAAC,aAAa;CAUrB"}
1
+ {"version":3,"file":"segmentGroupCollection.d.ts","sourceRoot":"","sources":["../src/segmentGroupCollection.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAIH,OAAO,EAAE,YAAY,EAAE,KAAK,YAAY,EAAE,MAAM,qBAAqB,CAAC;AAEtE,qBAAa,sBAAsB;IAItB,OAAO,CAAC,QAAQ,CAAC,OAAO;IAFpC,OAAO,CAAC,QAAQ,CAAC,aAAa,CAA+C;gBAEhD,OAAO,EAAE,YAAY;IAKlD,IAAW,IAAI,IAAI,MAAM,CAExB;IAED,IAAW,KAAK,IAAI,OAAO,CAE1B;IAGM,OAAO,CAAC,YAAY,EAAE,YAAY,CAAC,YAAY,CAAC,GAAG,IAAI;IAMvD,OAAO,IAAI,YAAY,CAAC,YAAY,CAAC,GAAG,SAAS;IAKjD,MAAM,CAAC,CAAC,YAAY,EAAE,YAAY,CAAC,YAAY,CAAC,GAAG,OAAO;IAU1D,GAAG,CAAC,IAAI,YAAY,CAAC,YAAY,CAAC,GAAG,SAAS;IAI9C,MAAM,CAAC,aAAa,EAAE,sBAAsB,GAAG,IAAI;IAK1D,OAAO,CAAC,aAAa;CAarB"}
@@ -3,13 +3,6 @@
3
3
  * Licensed under the MIT License.
4
4
  */
5
5
  import { DoublyLinkedList, walkList } from "./collections/index.js";
6
- /**
7
- * @deprecated - This class should not be used externally and will be removed in a subsequent release.
8
- * @legacy
9
- * @alpha
10
- *
11
- * @privateRemarks After the deprecation period this class should be remove from this package's exports, and only be used internally
12
- */
13
6
  export class SegmentGroupCollection {
14
7
  constructor(segment) {
15
8
  this.segment = segment;
@@ -44,8 +37,8 @@ export class SegmentGroupCollection {
44
37
  pop() {
45
38
  return this.segmentGroups.pop ? this.segmentGroups.pop()?.data : undefined;
46
39
  }
47
- copyTo(segment) {
48
- walkList(this.segmentGroups, (sg) => segment.segmentGroups.enqueueOnCopy(sg.data, this.segment));
40
+ copyTo(segmentGroups) {
41
+ walkList(this.segmentGroups, (sg) => segmentGroups.enqueueOnCopy(sg.data, this.segment));
49
42
  }
50
43
  // eslint-disable-next-line import/no-deprecated
51
44
  enqueueOnCopy(segmentGroup, sourceSegment) {
@@ -1 +1 @@
1
- {"version":3,"file":"segmentGroupCollection.js","sourceRoot":"","sources":["../src/segmentGroupCollection.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,gBAAgB,EAAE,QAAQ,EAAE,MAAM,wBAAwB,CAAC;AAIpE;;;;;;GAMG;AACH,MAAM,OAAO,sBAAsB;IAIlC,YAA6B,OAAiB;QAAjB,YAAO,GAAP,OAAO,CAAU;QAC7C,gDAAgD;QAChD,IAAI,CAAC,aAAa,GAAG,IAAI,gBAAgB,EAAgB,CAAC;IAC3D,CAAC;IAED,IAAW,IAAI;QACd,OAAO,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC;IAClC,CAAC;IAED,IAAW,KAAK;QACf,OAAO,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC;IACjC,CAAC;IAED,gDAAgD;IACzC,OAAO,CAAC,YAA0B;QACxC,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;QACtC,YAAY,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;IAC1C,CAAC;IAED,gDAAgD;IACzC,OAAO;QACb,OAAO,IAAI,CAAC,aAAa,CAAC,KAAK,EAAE,EAAE,IAAI,CAAC;IACzC,CAAC;IAED,gDAAgD;IACzC,MAAM,CAAE,YAA0B;QACxC,MAAM,KAAK,GAAG,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,YAAY,CAAC,CAAC;QACtE,IAAI,KAAK,KAAK,SAAS,EAAE,CAAC;YACzB,OAAO,KAAK,CAAC;QACd,CAAC;QACD,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;QACjC,OAAO,IAAI,CAAC;IACb,CAAC;IAED,gDAAgD;IACzC,GAAG;QACT,OAAO,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,aAAa,CAAC,GAAG,EAAE,EAAE,IAAI,CAAC,CAAC,CAAC,SAAS,CAAC;IAC5E,CAAC;IAEM,MAAM,CAAC,OAAiB;QAC9B,QAAQ,CAAC,IAAI,CAAC,aAAa,EAAE,CAAC,EAAE,EAAE,EAAE,CACnC,OAAO,CAAC,aAAa,CAAC,aAAa,CAAC,EAAE,CAAC,IAAI,EAAE,IAAI,CAAC,OAAO,CAAC,CAC1D,CAAC;IACH,CAAC;IAED,gDAAgD;IACxC,aAAa,CAAC,YAA0B,EAAE,aAAuB;QACxE,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC;QAC3B,IAAI,YAAY,CAAC,aAAa,EAAE,CAAC;YAChC,+CAA+C;YAC/C,MAAM,KAAK,GAAG,YAAY,CAAC,QAAQ,CAAC,OAAO,CAAC,aAAa,CAAC,CAAC;YAC3D,IAAI,KAAK,KAAK,CAAC,CAAC,EAAE,CAAC;gBAClB,YAAY,CAAC,aAAa,CAAC,IAAI,CAAC,YAAY,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC,CAAC;YACpE,CAAC;QACF,CAAC;IACF,CAAC;CACD","sourcesContent":["/*!\n * Copyright (c) Microsoft Corporation and contributors. All rights reserved.\n * Licensed under the MIT License.\n */\n\nimport { DoublyLinkedList, walkList } from \"./collections/index.js\";\n// eslint-disable-next-line import/no-deprecated\nimport { ISegment, SegmentGroup } from \"./mergeTreeNodes.js\";\n\n/**\n * @deprecated - This class should not be used externally and will be removed in a subsequent release.\n * @legacy\n * @alpha\n *\n * @privateRemarks After the deprecation period this class should be remove from this package's exports, and only be used internally\n */\nexport class SegmentGroupCollection {\n\t// eslint-disable-next-line import/no-deprecated\n\tprivate readonly segmentGroups: DoublyLinkedList<SegmentGroup>;\n\n\tconstructor(private readonly segment: ISegment) {\n\t\t// eslint-disable-next-line import/no-deprecated\n\t\tthis.segmentGroups = new DoublyLinkedList<SegmentGroup>();\n\t}\n\n\tpublic get size(): number {\n\t\treturn this.segmentGroups.length;\n\t}\n\n\tpublic get empty(): boolean {\n\t\treturn this.segmentGroups.empty;\n\t}\n\n\t// eslint-disable-next-line import/no-deprecated\n\tpublic enqueue(segmentGroup: SegmentGroup): void {\n\t\tthis.segmentGroups.push(segmentGroup);\n\t\tsegmentGroup.segments.push(this.segment);\n\t}\n\n\t// eslint-disable-next-line import/no-deprecated\n\tpublic dequeue(): SegmentGroup | undefined {\n\t\treturn this.segmentGroups.shift()?.data;\n\t}\n\n\t// eslint-disable-next-line import/no-deprecated\n\tpublic remove?(segmentGroup: SegmentGroup): boolean {\n\t\tconst found = this.segmentGroups.find((v) => v.data === segmentGroup);\n\t\tif (found === undefined) {\n\t\t\treturn false;\n\t\t}\n\t\tthis.segmentGroups.remove(found);\n\t\treturn true;\n\t}\n\n\t// eslint-disable-next-line import/no-deprecated\n\tpublic pop?(): SegmentGroup | undefined {\n\t\treturn this.segmentGroups.pop ? this.segmentGroups.pop()?.data : undefined;\n\t}\n\n\tpublic copyTo(segment: ISegment): void {\n\t\twalkList(this.segmentGroups, (sg) =>\n\t\t\tsegment.segmentGroups.enqueueOnCopy(sg.data, this.segment),\n\t\t);\n\t}\n\n\t// eslint-disable-next-line import/no-deprecated\n\tprivate enqueueOnCopy(segmentGroup: SegmentGroup, sourceSegment: ISegment): void {\n\t\tthis.enqueue(segmentGroup);\n\t\tif (segmentGroup.previousProps) {\n\t\t\t// duplicate the previousProps for this segment\n\t\t\tconst index = segmentGroup.segments.indexOf(sourceSegment);\n\t\t\tif (index !== -1) {\n\t\t\t\tsegmentGroup.previousProps.push(segmentGroup.previousProps[index]);\n\t\t\t}\n\t\t}\n\t}\n}\n"]}
1
+ {"version":3,"file":"segmentGroupCollection.js","sourceRoot":"","sources":["../src/segmentGroupCollection.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,gBAAgB,EAAE,QAAQ,EAAE,MAAM,wBAAwB,CAAC;AAIpE,MAAM,OAAO,sBAAsB;IAIlC,YAA6B,OAAqB;QAArB,YAAO,GAAP,OAAO,CAAc;QACjD,gDAAgD;QAChD,IAAI,CAAC,aAAa,GAAG,IAAI,gBAAgB,EAA8B,CAAC;IACzE,CAAC;IAED,IAAW,IAAI;QACd,OAAO,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC;IAClC,CAAC;IAED,IAAW,KAAK;QACf,OAAO,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC;IACjC,CAAC;IAED,gDAAgD;IACzC,OAAO,CAAC,YAAwC;QACtD,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;QACtC,YAAY,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;IAC1C,CAAC;IAED,gDAAgD;IACzC,OAAO;QACb,OAAO,IAAI,CAAC,aAAa,CAAC,KAAK,EAAE,EAAE,IAAI,CAAC;IACzC,CAAC;IAED,gDAAgD;IACzC,MAAM,CAAE,YAAwC;QACtD,MAAM,KAAK,GAAG,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,YAAY,CAAC,CAAC;QACtE,IAAI,KAAK,KAAK,SAAS,EAAE,CAAC;YACzB,OAAO,KAAK,CAAC;QACd,CAAC;QACD,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;QACjC,OAAO,IAAI,CAAC;IACb,CAAC;IAED,gDAAgD;IACzC,GAAG;QACT,OAAO,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,aAAa,CAAC,GAAG,EAAE,EAAE,IAAI,CAAC,CAAC,CAAC,SAAS,CAAC;IAC5E,CAAC;IAEM,MAAM,CAAC,aAAqC;QAClD,QAAQ,CAAC,IAAI,CAAC,aAAa,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,aAAa,CAAC,aAAa,CAAC,EAAE,CAAC,IAAI,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC;IAC1F,CAAC;IAED,gDAAgD;IACxC,aAAa,CACpB,YAAwC,EACxC,aAA2B;QAE3B,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC;QAC3B,IAAI,YAAY,CAAC,aAAa,EAAE,CAAC;YAChC,+CAA+C;YAC/C,MAAM,KAAK,GAAG,YAAY,CAAC,QAAQ,CAAC,OAAO,CAAC,aAAa,CAAC,CAAC;YAC3D,IAAI,KAAK,KAAK,CAAC,CAAC,EAAE,CAAC;gBAClB,YAAY,CAAC,aAAa,CAAC,IAAI,CAAC,YAAY,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC,CAAC;YACpE,CAAC;QACF,CAAC;IACF,CAAC;CACD","sourcesContent":["/*!\n * Copyright (c) Microsoft Corporation and contributors. All rights reserved.\n * Licensed under the MIT License.\n */\n\nimport { DoublyLinkedList, walkList } from \"./collections/index.js\";\n// eslint-disable-next-line import/no-deprecated\nimport { SegmentGroup, type ISegmentLeaf } from \"./mergeTreeNodes.js\";\n\nexport class SegmentGroupCollection {\n\t// eslint-disable-next-line import/no-deprecated\n\tprivate readonly segmentGroups: DoublyLinkedList<SegmentGroup<ISegmentLeaf>>;\n\n\tconstructor(private readonly segment: ISegmentLeaf) {\n\t\t// eslint-disable-next-line import/no-deprecated\n\t\tthis.segmentGroups = new DoublyLinkedList<SegmentGroup<ISegmentLeaf>>();\n\t}\n\n\tpublic get size(): number {\n\t\treturn this.segmentGroups.length;\n\t}\n\n\tpublic get empty(): boolean {\n\t\treturn this.segmentGroups.empty;\n\t}\n\n\t// eslint-disable-next-line import/no-deprecated\n\tpublic enqueue(segmentGroup: SegmentGroup<ISegmentLeaf>): void {\n\t\tthis.segmentGroups.push(segmentGroup);\n\t\tsegmentGroup.segments.push(this.segment);\n\t}\n\n\t// eslint-disable-next-line import/no-deprecated\n\tpublic dequeue(): SegmentGroup<ISegmentLeaf> | undefined {\n\t\treturn this.segmentGroups.shift()?.data;\n\t}\n\n\t// eslint-disable-next-line import/no-deprecated\n\tpublic remove?(segmentGroup: SegmentGroup<ISegmentLeaf>): boolean {\n\t\tconst found = this.segmentGroups.find((v) => v.data === segmentGroup);\n\t\tif (found === undefined) {\n\t\t\treturn false;\n\t\t}\n\t\tthis.segmentGroups.remove(found);\n\t\treturn true;\n\t}\n\n\t// eslint-disable-next-line import/no-deprecated\n\tpublic pop?(): SegmentGroup<ISegmentLeaf> | undefined {\n\t\treturn this.segmentGroups.pop ? this.segmentGroups.pop()?.data : undefined;\n\t}\n\n\tpublic copyTo(segmentGroups: SegmentGroupCollection): void {\n\t\twalkList(this.segmentGroups, (sg) => segmentGroups.enqueueOnCopy(sg.data, this.segment));\n\t}\n\n\t// eslint-disable-next-line import/no-deprecated\n\tprivate enqueueOnCopy(\n\t\tsegmentGroup: SegmentGroup<ISegmentLeaf>,\n\t\tsourceSegment: ISegmentLeaf,\n\t): void {\n\t\tthis.enqueue(segmentGroup);\n\t\tif (segmentGroup.previousProps) {\n\t\t\t// duplicate the previousProps for this segment\n\t\t\tconst index = segmentGroup.segments.indexOf(sourceSegment);\n\t\t\tif (index !== -1) {\n\t\t\t\tsegmentGroup.previousProps.push(segmentGroup.previousProps[index]);\n\t\t\t}\n\t\t}\n\t}\n}\n"]}
@@ -5,12 +5,7 @@
5
5
  import { IMergeTreeAnnotateMsg } from "./ops.js";
6
6
  import { PropertySet } from "./properties.js";
7
7
  /**
8
- * @legacy
9
- * @alpha
10
- *
11
- * @deprecated - This enum should not be used externally and will be removed in a subsequent release.
12
- *
13
- * @privateRemarks This enum should be made internal after the deprecation period
8
+ * @internal
14
9
  */
15
10
  export declare enum PropertiesRollback {
16
11
  /**
@@ -23,12 +18,18 @@ export declare enum PropertiesRollback {
23
18
  Rollback = 1
24
19
  }
25
20
  /**
26
- * @legacy
27
- * @alpha
28
- *
29
- * @deprecated - This class should not be used externally and will be removed in a subsequent release.
30
- *
31
- * @privateRemarks This class should be made internal after the deprecation period
21
+ * Minimally copies properties and the property manager from source to destination.
22
+ * @internal
23
+ */
24
+ export declare function copyPropertiesAndManager(source: {
25
+ properties?: PropertySet;
26
+ propertyManager?: PropertiesManager;
27
+ }, destination: {
28
+ properties?: PropertySet;
29
+ propertyManager?: PropertiesManager;
30
+ }): void;
31
+ /**
32
+ * @internal
32
33
  */
33
34
  export declare class PropertiesManager {
34
35
  private pendingKeyUpdateCount;
@@ -1 +1 @@
1
- {"version":3,"file":"segmentPropertiesManager.d.ts","sourceRoot":"","sources":["../src/segmentPropertiesManager.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAOH,OAAO,EAAE,qBAAqB,EAAE,MAAM,UAAU,CAAC;AACjD,OAAO,EAAW,WAAW,EAA4B,MAAM,iBAAiB,CAAC;AAEjF;;;;;;;GAOG;AACH,oBAAY,kBAAkB;IAC7B;;OAEG;IACH,IAAI,IAAA;IAEJ;;OAEG;IACH,QAAQ,IAAA;CACR;AAED;;;;;;;GAOG;AACH,qBAAa,iBAAiB;IAC7B,OAAO,CAAC,qBAAqB,CAA8B;IAEpD,oBAAoB,CAAC,UAAU,EAAE,qBAAqB,GAAG,IAAI;IAIpE,OAAO,CAAC,sBAAsB;IAgBvB,aAAa,CACnB,QAAQ,EAAE,WAAW,EACrB,QAAQ,EAAE,WAAW,EACrB,GAAG,CAAC,EAAE,MAAM,EACZ,aAAa,GAAE,OAAe,EAC9B,QAAQ,GAAE,kBAA4C,GACpD,WAAW;IAqDP,MAAM,CACZ,QAAQ,EAAE,WAAW,EACrB,QAAQ,EAAE,WAAW,GAAG,SAAS,EACjC,UAAU,EAAE,iBAAiB,GAC3B,WAAW,GAAG,SAAS;IAgB1B;;OAEG;IACI,oBAAoB,CAAC,KAAK,EAAE,WAAW,GAAG,OAAO;IASjD,kBAAkB,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO;CAG/C"}
1
+ {"version":3,"file":"segmentPropertiesManager.d.ts","sourceRoot":"","sources":["../src/segmentPropertiesManager.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAOH,OAAO,EAAE,qBAAqB,EAAE,MAAM,UAAU,CAAC;AACjD,OAAO,EAAW,WAAW,EAA4B,MAAM,iBAAiB,CAAC;AAEjF;;GAEG;AACH,oBAAY,kBAAkB;IAC7B;;OAEG;IACH,IAAI,IAAA;IAEJ;;OAEG;IACH,QAAQ,IAAA;CACR;AAED;;;GAGG;AACH,wBAAgB,wBAAwB,CACvC,MAAM,EAAE;IACP,UAAU,CAAC,EAAE,WAAW,CAAC;IACzB,eAAe,CAAC,EAAE,iBAAiB,CAAC;CACpC,EACD,WAAW,EAAE;IACZ,UAAU,CAAC,EAAE,WAAW,CAAC;IACzB,eAAe,CAAC,EAAE,iBAAiB,CAAC;CACpC,GACC,IAAI,CAaN;AAED;;GAEG;AACH,qBAAa,iBAAiB;IAC7B,OAAO,CAAC,qBAAqB,CAA8B;IAEpD,oBAAoB,CAAC,UAAU,EAAE,qBAAqB,GAAG,IAAI;IAIpE,OAAO,CAAC,sBAAsB;IAgBvB,aAAa,CACnB,QAAQ,EAAE,WAAW,EACrB,QAAQ,EAAE,WAAW,EACrB,GAAG,CAAC,EAAE,MAAM,EACZ,aAAa,GAAE,OAAe,EAC9B,QAAQ,GAAE,kBAA4C,GACpD,WAAW;IAqDP,MAAM,CACZ,QAAQ,EAAE,WAAW,EACrB,QAAQ,EAAE,WAAW,GAAG,SAAS,EACjC,UAAU,EAAE,iBAAiB,GAC3B,WAAW,GAAG,SAAS;IAgB1B;;OAEG;IACI,oBAAoB,CAAC,KAAK,EAAE,WAAW,GAAG,OAAO;IASjD,kBAAkB,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO;CAG/C"}
@@ -7,12 +7,7 @@ import { assert } from "@fluidframework/core-utils/internal";
7
7
  import { UnassignedSequenceNumber, UniversalSequenceNumber } from "./constants.js";
8
8
  import { clone, createMap, extend } from "./properties.js";
9
9
  /**
10
- * @legacy
11
- * @alpha
12
- *
13
- * @deprecated - This enum should not be used externally and will be removed in a subsequent release.
14
- *
15
- * @privateRemarks This enum should be made internal after the deprecation period
10
+ * @internal
16
11
  */
17
12
  export var PropertiesRollback;
18
13
  (function (PropertiesRollback) {
@@ -26,12 +21,22 @@ export var PropertiesRollback;
26
21
  PropertiesRollback[PropertiesRollback["Rollback"] = 1] = "Rollback";
27
22
  })(PropertiesRollback || (PropertiesRollback = {}));
28
23
  /**
29
- * @legacy
30
- * @alpha
31
- *
32
- * @deprecated - This class should not be used externally and will be removed in a subsequent release.
33
- *
34
- * @privateRemarks This class should be made internal after the deprecation period
24
+ * Minimally copies properties and the property manager from source to destination.
25
+ * @internal
26
+ */
27
+ export function copyPropertiesAndManager(source, destination) {
28
+ if (source.properties) {
29
+ if (source.propertyManager === undefined) {
30
+ destination.properties = clone(source.properties);
31
+ }
32
+ else {
33
+ destination.propertyManager ?? (destination.propertyManager = new PropertiesManager());
34
+ destination.properties = source.propertyManager.copyTo(source.properties, destination.properties, destination.propertyManager);
35
+ }
36
+ }
37
+ }
38
+ /**
39
+ * @internal
35
40
  */
36
41
  export class PropertiesManager {
37
42
  ackPendingProperties(annotateOp) {
@@ -1 +1 @@
1
- {"version":3,"file":"segmentPropertiesManager.js","sourceRoot":"","sources":["../src/segmentPropertiesManager.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\n/* eslint-disable @typescript-eslint/no-non-null-assertion */\n\nimport { assert } from \"@fluidframework/core-utils/internal\";\n\nimport { UnassignedSequenceNumber, UniversalSequenceNumber } from \"./constants.js\";\nimport { IMergeTreeAnnotateMsg } from \"./ops.js\";\nimport { MapLike, PropertySet, clone, createMap, extend } from \"./properties.js\";\n\n/**\n * @legacy\n * @alpha\n *\n * @deprecated - This enum should not be used externally and will be removed in a subsequent release.\n *\n * @privateRemarks This enum should be made internal after the deprecation period\n */\nexport enum PropertiesRollback {\n\t/**\n\t * Not in a rollback\n\t */\n\tNone,\n\n\t/**\n\t * Rollback\n\t */\n\tRollback,\n}\n\n/**\n * @legacy\n * @alpha\n *\n * @deprecated - This class should not be used externally and will be removed in a subsequent release.\n *\n * @privateRemarks This class should be made internal after the deprecation period\n */\nexport class PropertiesManager {\n\tprivate pendingKeyUpdateCount: MapLike<number> | undefined;\n\n\tpublic ackPendingProperties(annotateOp: IMergeTreeAnnotateMsg): void {\n\t\tthis.decrementPendingCounts(annotateOp.props);\n\t}\n\n\tprivate decrementPendingCounts(props: PropertySet): void {\n\t\tfor (const [key, value] of Object.entries(props)) {\n\t\t\tif (value !== undefined && this.pendingKeyUpdateCount?.[key] !== undefined) {\n\t\t\t\tassert(\n\t\t\t\t\tthis.pendingKeyUpdateCount[key]! > 0,\n\t\t\t\t\t0x05c /* \"Trying to update more annotate props than do exist!\" */,\n\t\t\t\t);\n\t\t\t\tthis.pendingKeyUpdateCount[key]--;\n\t\t\t\tif (this.pendingKeyUpdateCount?.[key] === 0) {\n\t\t\t\t\t// eslint-disable-next-line @typescript-eslint/no-dynamic-delete\n\t\t\t\t\tdelete this.pendingKeyUpdateCount[key];\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\tpublic addProperties(\n\t\toldProps: PropertySet,\n\t\tnewProps: PropertySet,\n\t\tseq?: number,\n\t\tcollaborating: boolean = false,\n\t\trollback: PropertiesRollback = PropertiesRollback.None,\n\t): PropertySet {\n\t\tthis.pendingKeyUpdateCount ??= createMap<number>();\n\n\t\t// Clean up counts for rolled back edits before modifying oldProps\n\t\tif (collaborating && rollback === PropertiesRollback.Rollback) {\n\t\t\tthis.decrementPendingCounts(newProps);\n\t\t}\n\n\t\tconst shouldModifyKey = (key: string): boolean => {\n\t\t\tif (\n\t\t\t\tseq === UnassignedSequenceNumber ||\n\t\t\t\tseq === UniversalSequenceNumber ||\n\t\t\t\tthis.pendingKeyUpdateCount?.[key] === undefined\n\t\t\t) {\n\t\t\t\treturn true;\n\t\t\t}\n\t\t\treturn false;\n\t\t};\n\n\t\tconst deltas: PropertySet = {};\n\n\t\tfor (const [key, newValue] of Object.entries(newProps)) {\n\t\t\tif (newValue === undefined) {\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\tif (collaborating) {\n\t\t\t\tif (seq === UnassignedSequenceNumber) {\n\t\t\t\t\tif (this.pendingKeyUpdateCount?.[key] === undefined) {\n\t\t\t\t\t\tthis.pendingKeyUpdateCount[key] = 0;\n\t\t\t\t\t}\n\t\t\t\t\tthis.pendingKeyUpdateCount[key]++;\n\t\t\t\t} else if (!shouldModifyKey(key)) {\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tconst previousValue: unknown = oldProps[key];\n\t\t\t// The delta should be null if undefined, as that's how we encode delete\n\t\t\t// eslint-disable-next-line unicorn/no-null\n\t\t\tdeltas[key] = previousValue === undefined ? null : previousValue;\n\t\t\tif (newValue === null) {\n\t\t\t\t// eslint-disable-next-line @typescript-eslint/no-dynamic-delete\n\t\t\t\tdelete oldProps[key];\n\t\t\t} else {\n\t\t\t\t// eslint-disable-next-line @typescript-eslint/no-unsafe-assignment\n\t\t\t\toldProps[key] = newValue;\n\t\t\t}\n\t\t}\n\n\t\treturn deltas;\n\t}\n\n\tpublic copyTo(\n\t\toldProps: PropertySet,\n\t\tnewProps: PropertySet | undefined,\n\t\tnewManager: PropertiesManager,\n\t): PropertySet | undefined {\n\t\tif (oldProps) {\n\t\t\t// eslint-disable-next-line no-param-reassign\n\t\t\tnewProps ??= createMap<unknown>();\n\t\t\tif (!newManager) {\n\t\t\t\tthrow new Error(\"Must provide new PropertyManager\");\n\t\t\t}\n\t\t\textend(newProps, oldProps);\n\n\t\t\tif (this.pendingKeyUpdateCount) {\n\t\t\t\tnewManager.pendingKeyUpdateCount = clone(this.pendingKeyUpdateCount);\n\t\t\t}\n\t\t}\n\t\treturn newProps;\n\t}\n\n\t/**\n\t * Determines if all of the defined properties in a given property set are pending.\n\t */\n\tpublic hasPendingProperties(props: PropertySet): boolean {\n\t\tfor (const [key, value] of Object.entries(props)) {\n\t\t\tif (value !== undefined && this.pendingKeyUpdateCount?.[key] === undefined) {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t}\n\t\treturn true;\n\t}\n\n\tpublic hasPendingProperty(key: string): boolean {\n\t\treturn (this.pendingKeyUpdateCount?.[key] ?? 0) > 0;\n\t}\n}\n"]}
1
+ {"version":3,"file":"segmentPropertiesManager.js","sourceRoot":"","sources":["../src/segmentPropertiesManager.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\n/* eslint-disable @typescript-eslint/no-non-null-assertion */\n\nimport { assert } from \"@fluidframework/core-utils/internal\";\n\nimport { UnassignedSequenceNumber, UniversalSequenceNumber } from \"./constants.js\";\nimport { IMergeTreeAnnotateMsg } from \"./ops.js\";\nimport { MapLike, PropertySet, clone, createMap, extend } from \"./properties.js\";\n\n/**\n * @internal\n */\nexport enum PropertiesRollback {\n\t/**\n\t * Not in a rollback\n\t */\n\tNone,\n\n\t/**\n\t * Rollback\n\t */\n\tRollback,\n}\n\n/**\n * Minimally copies properties and the property manager from source to destination.\n * @internal\n */\nexport function copyPropertiesAndManager(\n\tsource: {\n\t\tproperties?: PropertySet;\n\t\tpropertyManager?: PropertiesManager;\n\t},\n\tdestination: {\n\t\tproperties?: PropertySet;\n\t\tpropertyManager?: PropertiesManager;\n\t},\n): void {\n\tif (source.properties) {\n\t\tif (source.propertyManager === undefined) {\n\t\t\tdestination.properties = clone(source.properties);\n\t\t} else {\n\t\t\tdestination.propertyManager ??= new PropertiesManager();\n\t\t\tdestination.properties = source.propertyManager.copyTo(\n\t\t\t\tsource.properties,\n\t\t\t\tdestination.properties,\n\t\t\t\tdestination.propertyManager,\n\t\t\t);\n\t\t}\n\t}\n}\n\n/**\n * @internal\n */\nexport class PropertiesManager {\n\tprivate pendingKeyUpdateCount: MapLike<number> | undefined;\n\n\tpublic ackPendingProperties(annotateOp: IMergeTreeAnnotateMsg): void {\n\t\tthis.decrementPendingCounts(annotateOp.props);\n\t}\n\n\tprivate decrementPendingCounts(props: PropertySet): void {\n\t\tfor (const [key, value] of Object.entries(props)) {\n\t\t\tif (value !== undefined && this.pendingKeyUpdateCount?.[key] !== undefined) {\n\t\t\t\tassert(\n\t\t\t\t\tthis.pendingKeyUpdateCount[key]! > 0,\n\t\t\t\t\t0x05c /* \"Trying to update more annotate props than do exist!\" */,\n\t\t\t\t);\n\t\t\t\tthis.pendingKeyUpdateCount[key]--;\n\t\t\t\tif (this.pendingKeyUpdateCount?.[key] === 0) {\n\t\t\t\t\t// eslint-disable-next-line @typescript-eslint/no-dynamic-delete\n\t\t\t\t\tdelete this.pendingKeyUpdateCount[key];\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\tpublic addProperties(\n\t\toldProps: PropertySet,\n\t\tnewProps: PropertySet,\n\t\tseq?: number,\n\t\tcollaborating: boolean = false,\n\t\trollback: PropertiesRollback = PropertiesRollback.None,\n\t): PropertySet {\n\t\tthis.pendingKeyUpdateCount ??= createMap<number>();\n\n\t\t// Clean up counts for rolled back edits before modifying oldProps\n\t\tif (collaborating && rollback === PropertiesRollback.Rollback) {\n\t\t\tthis.decrementPendingCounts(newProps);\n\t\t}\n\n\t\tconst shouldModifyKey = (key: string): boolean => {\n\t\t\tif (\n\t\t\t\tseq === UnassignedSequenceNumber ||\n\t\t\t\tseq === UniversalSequenceNumber ||\n\t\t\t\tthis.pendingKeyUpdateCount?.[key] === undefined\n\t\t\t) {\n\t\t\t\treturn true;\n\t\t\t}\n\t\t\treturn false;\n\t\t};\n\n\t\tconst deltas: PropertySet = {};\n\n\t\tfor (const [key, newValue] of Object.entries(newProps)) {\n\t\t\tif (newValue === undefined) {\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\tif (collaborating) {\n\t\t\t\tif (seq === UnassignedSequenceNumber) {\n\t\t\t\t\tif (this.pendingKeyUpdateCount?.[key] === undefined) {\n\t\t\t\t\t\tthis.pendingKeyUpdateCount[key] = 0;\n\t\t\t\t\t}\n\t\t\t\t\tthis.pendingKeyUpdateCount[key]++;\n\t\t\t\t} else if (!shouldModifyKey(key)) {\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tconst previousValue: unknown = oldProps[key];\n\t\t\t// The delta should be null if undefined, as that's how we encode delete\n\t\t\t// eslint-disable-next-line unicorn/no-null\n\t\t\tdeltas[key] = previousValue === undefined ? null : previousValue;\n\t\t\tif (newValue === null) {\n\t\t\t\t// eslint-disable-next-line @typescript-eslint/no-dynamic-delete\n\t\t\t\tdelete oldProps[key];\n\t\t\t} else {\n\t\t\t\t// eslint-disable-next-line @typescript-eslint/no-unsafe-assignment\n\t\t\t\toldProps[key] = newValue;\n\t\t\t}\n\t\t}\n\n\t\treturn deltas;\n\t}\n\n\tpublic copyTo(\n\t\toldProps: PropertySet,\n\t\tnewProps: PropertySet | undefined,\n\t\tnewManager: PropertiesManager,\n\t): PropertySet | undefined {\n\t\tif (oldProps) {\n\t\t\t// eslint-disable-next-line no-param-reassign\n\t\t\tnewProps ??= createMap<unknown>();\n\t\t\tif (!newManager) {\n\t\t\t\tthrow new Error(\"Must provide new PropertyManager\");\n\t\t\t}\n\t\t\textend(newProps, oldProps);\n\n\t\t\tif (this.pendingKeyUpdateCount) {\n\t\t\t\tnewManager.pendingKeyUpdateCount = clone(this.pendingKeyUpdateCount);\n\t\t\t}\n\t\t}\n\t\treturn newProps;\n\t}\n\n\t/**\n\t * Determines if all of the defined properties in a given property set are pending.\n\t */\n\tpublic hasPendingProperties(props: PropertySet): boolean {\n\t\tfor (const [key, value] of Object.entries(props)) {\n\t\t\tif (value !== undefined && this.pendingKeyUpdateCount?.[key] === undefined) {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t}\n\t\treturn true;\n\t}\n\n\tpublic hasPendingProperty(key: string): boolean {\n\t\treturn (this.pendingKeyUpdateCount?.[key] ?? 0) > 0;\n\t}\n}\n"]}
@@ -6,7 +6,6 @@ import { LocalReferencePosition } from "./localReference.js";
6
6
  import { ISegment } from "./mergeTreeNodes.js";
7
7
  import { SortedSet } from "./sortedSet.js";
8
8
  /**
9
- * @deprecated This functionality was not meant to be exported and will be removed in a future release
10
9
  * @internal
11
10
  */
12
11
  export type SortedSegmentSetItem = ISegment | LocalReferencePosition | {
@@ -1 +1 @@
1
- {"version":3,"file":"sortedSegmentSet.d.ts","sourceRoot":"","sources":["../src/sortedSegmentSet.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,sBAAsB,EAAE,MAAM,qBAAqB,CAAC;AAC7D,OAAO,EAAE,QAAQ,EAAE,MAAM,qBAAqB,CAAC;AAE/C,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAE3C;;;GAGG;AACH,MAAM,MAAM,oBAAoB,GAC7B,QAAQ,GACR,sBAAsB,GACtB;IAAE,QAAQ,CAAC,OAAO,EAAE,QAAQ,CAAA;CAAE,CAAC;AAElC;;;;;;;;;;;GAWG;AAEH,qBAAa,gBAAgB,CAAC,CAAC,SAAS,oBAAoB,GAAG,QAAQ,CAAE,SAAQ,SAAS,CACzF,CAAC,EACD,MAAM,CACN;IACA,SAAS,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC,GAAG,MAAM;IAmBjC,SAAS,CAAC,gBAAgB,CAAC,IAAI,EAAE,CAAC,GAAG;QAAE,MAAM,EAAE,OAAO,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE;CAqDvE"}
1
+ {"version":3,"file":"sortedSegmentSet.d.ts","sourceRoot":"","sources":["../src/sortedSegmentSet.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,sBAAsB,EAAE,MAAM,qBAAqB,CAAC;AAC7D,OAAO,EAAE,QAAQ,EAAE,MAAM,qBAAqB,CAAC;AAE/C,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAE3C;;GAEG;AACH,MAAM,MAAM,oBAAoB,GAC7B,QAAQ,GACR,sBAAsB,GACtB;IAAE,QAAQ,CAAC,OAAO,EAAE,QAAQ,CAAA;CAAE,CAAC;AAElC;;;;;;;;;;;GAWG;AAEH,qBAAa,gBAAgB,CAAC,CAAC,SAAS,oBAAoB,GAAG,QAAQ,CAAE,SAAQ,SAAS,CACzF,CAAC,EACD,MAAM,CACN;IACA,SAAS,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC,GAAG,MAAM;IAmBjC,SAAS,CAAC,gBAAgB,CAAC,IAAI,EAAE,CAAC,GAAG;QAAE,MAAM,EAAE,OAAO,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE;CAqDvE"}
@@ -1 +1 @@
1
- {"version":3,"file":"sortedSegmentSet.js","sourceRoot":"","sources":["../src/sortedSegmentSet.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 { LocalReferencePosition } from \"./localReference.js\";\nimport { ISegment } from \"./mergeTreeNodes.js\";\n// eslint-disable-next-line import/no-deprecated\nimport { SortedSet } from \"./sortedSet.js\";\n\n/**\n * @deprecated This functionality was not meant to be exported and will be removed in a future release\n * @internal\n */\nexport type SortedSegmentSetItem =\n\t| ISegment\n\t| LocalReferencePosition\n\t| { readonly segment: ISegment };\n\n/**\n * Stores a unique and sorted set of segments, or objects with segments\n *\n * This differs from a normal sorted set in that the keys are not fixed.\n * The segments are sorted via their ordinals which can change as the merge tree is modified.\n * Even though the values of the ordinals can change their ordering and uniqueness cannot, so the order of a set of\n * segments ordered by their ordinals will always have the same order even if the ordinal values on\n * the segments changes. This invariant allows us to ensure the segments stay\n * ordered and unique, and that new segments can be inserted into that order.\n *\n * @internal\n */\n// eslint-disable-next-line import/no-deprecated\nexport class SortedSegmentSet<T extends SortedSegmentSetItem = ISegment> extends SortedSet<\n\tT,\n\tstring\n> {\n\tprotected getKey(item: T): string {\n\t\tconst maybeRef = item as Partial<LocalReferencePosition>;\n\t\tif (maybeRef.getSegment !== undefined && maybeRef.isLeaf?.() === false) {\n\t\t\tconst lref = maybeRef as LocalReferencePosition;\n\t\t\t// If the reference position has no associated segment, assign it a sentinel value.\n\t\t\t// The particular value for comparison doesn't matter because `findItemPosition` tolerates\n\t\t\t// elements with duplicate keys (as it must, since local references use the same key as their segment).\n\t\t\t// All that matters is that it's consistent.\n\t\t\treturn lref.getSegment()?.ordinal ?? \"\";\n\t\t}\n\t\tconst maybeObject = item as { readonly segment: ISegment };\n\t\tif (maybeObject?.segment) {\n\t\t\treturn maybeObject.segment.ordinal;\n\t\t}\n\n\t\tconst maybeSegment = item as ISegment;\n\t\treturn maybeSegment.ordinal;\n\t}\n\n\tprotected findItemPosition(item: T): { exists: boolean; index: number } {\n\t\tif (this.keySortedItems.length === 0) {\n\t\t\treturn { exists: false, index: 0 };\n\t\t}\n\t\tlet start = 0;\n\t\tlet end = this.keySortedItems.length - 1;\n\t\tconst itemKey = this.getKey(item);\n\t\tlet index = -1;\n\n\t\twhile (start <= end) {\n\t\t\tindex = start + Math.floor((end - start) / 2);\n\t\t\tconst indexKey = this.getKey(this.keySortedItems[index]);\n\t\t\tif (indexKey > itemKey) {\n\t\t\t\tif (start === index) {\n\t\t\t\t\treturn { exists: false, index };\n\t\t\t\t}\n\t\t\t\tend = index - 1;\n\t\t\t} else if (indexKey < itemKey) {\n\t\t\t\tif (index === end) {\n\t\t\t\t\treturn { exists: false, index: index + 1 };\n\t\t\t\t}\n\t\t\t\tstart = index + 1;\n\t\t\t} else if (indexKey === itemKey) {\n\t\t\t\t// at this point we've found the key of the item\n\t\t\t\t// so we need to find the index of the item instance\n\t\t\t\t//\n\t\t\t\tif (item === this.keySortedItems[index]) {\n\t\t\t\t\treturn { exists: true, index };\n\t\t\t\t}\n\t\t\t\tfor (\n\t\t\t\t\tlet b = index - 1;\n\t\t\t\t\tb >= 0 && this.getKey(this.keySortedItems[b]) === itemKey;\n\t\t\t\t\tb--\n\t\t\t\t) {\n\t\t\t\t\tif (this.keySortedItems[b] === item) {\n\t\t\t\t\t\treturn { exists: true, index: b };\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tfor (\n\t\t\t\t\tindex + 1;\n\t\t\t\t\tindex < this.keySortedItems.length &&\n\t\t\t\t\tthis.getKey(this.keySortedItems[index]) === itemKey;\n\t\t\t\t\tindex++\n\t\t\t\t) {\n\t\t\t\t\tif (this.keySortedItems[index] === item) {\n\t\t\t\t\t\treturn { exists: true, index };\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\treturn { exists: false, index };\n\t\t\t}\n\t\t}\n\t\treturn { exists: false, index };\n\t}\n}\n"]}
1
+ {"version":3,"file":"sortedSegmentSet.js","sourceRoot":"","sources":["../src/sortedSegmentSet.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 { LocalReferencePosition } from \"./localReference.js\";\nimport { ISegment } from \"./mergeTreeNodes.js\";\n// eslint-disable-next-line import/no-deprecated\nimport { SortedSet } from \"./sortedSet.js\";\n\n/**\n * @internal\n */\nexport type SortedSegmentSetItem =\n\t| ISegment\n\t| LocalReferencePosition\n\t| { readonly segment: ISegment };\n\n/**\n * Stores a unique and sorted set of segments, or objects with segments\n *\n * This differs from a normal sorted set in that the keys are not fixed.\n * The segments are sorted via their ordinals which can change as the merge tree is modified.\n * Even though the values of the ordinals can change their ordering and uniqueness cannot, so the order of a set of\n * segments ordered by their ordinals will always have the same order even if the ordinal values on\n * the segments changes. This invariant allows us to ensure the segments stay\n * ordered and unique, and that new segments can be inserted into that order.\n *\n * @internal\n */\n// eslint-disable-next-line import/no-deprecated\nexport class SortedSegmentSet<T extends SortedSegmentSetItem = ISegment> extends SortedSet<\n\tT,\n\tstring\n> {\n\tprotected getKey(item: T): string {\n\t\tconst maybeRef = item as Partial<LocalReferencePosition>;\n\t\tif (maybeRef.getSegment !== undefined && maybeRef.isLeaf?.() === false) {\n\t\t\tconst lref = maybeRef as LocalReferencePosition;\n\t\t\t// If the reference position has no associated segment, assign it a sentinel value.\n\t\t\t// The particular value for comparison doesn't matter because `findItemPosition` tolerates\n\t\t\t// elements with duplicate keys (as it must, since local references use the same key as their segment).\n\t\t\t// All that matters is that it's consistent.\n\t\t\treturn lref.getSegment()?.ordinal ?? \"\";\n\t\t}\n\t\tconst maybeObject = item as { readonly segment: ISegment };\n\t\tif (maybeObject?.segment) {\n\t\t\treturn maybeObject.segment.ordinal;\n\t\t}\n\n\t\tconst maybeSegment = item as ISegment;\n\t\treturn maybeSegment.ordinal;\n\t}\n\n\tprotected findItemPosition(item: T): { exists: boolean; index: number } {\n\t\tif (this.keySortedItems.length === 0) {\n\t\t\treturn { exists: false, index: 0 };\n\t\t}\n\t\tlet start = 0;\n\t\tlet end = this.keySortedItems.length - 1;\n\t\tconst itemKey = this.getKey(item);\n\t\tlet index = -1;\n\n\t\twhile (start <= end) {\n\t\t\tindex = start + Math.floor((end - start) / 2);\n\t\t\tconst indexKey = this.getKey(this.keySortedItems[index]);\n\t\t\tif (indexKey > itemKey) {\n\t\t\t\tif (start === index) {\n\t\t\t\t\treturn { exists: false, index };\n\t\t\t\t}\n\t\t\t\tend = index - 1;\n\t\t\t} else if (indexKey < itemKey) {\n\t\t\t\tif (index === end) {\n\t\t\t\t\treturn { exists: false, index: index + 1 };\n\t\t\t\t}\n\t\t\t\tstart = index + 1;\n\t\t\t} else if (indexKey === itemKey) {\n\t\t\t\t// at this point we've found the key of the item\n\t\t\t\t// so we need to find the index of the item instance\n\t\t\t\t//\n\t\t\t\tif (item === this.keySortedItems[index]) {\n\t\t\t\t\treturn { exists: true, index };\n\t\t\t\t}\n\t\t\t\tfor (\n\t\t\t\t\tlet b = index - 1;\n\t\t\t\t\tb >= 0 && this.getKey(this.keySortedItems[b]) === itemKey;\n\t\t\t\t\tb--\n\t\t\t\t) {\n\t\t\t\t\tif (this.keySortedItems[b] === item) {\n\t\t\t\t\t\treturn { exists: true, index: b };\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tfor (\n\t\t\t\t\tindex + 1;\n\t\t\t\t\tindex < this.keySortedItems.length &&\n\t\t\t\t\tthis.getKey(this.keySortedItems[index]) === itemKey;\n\t\t\t\t\tindex++\n\t\t\t\t) {\n\t\t\t\t\tif (this.keySortedItems[index] === item) {\n\t\t\t\t\t\treturn { exists: true, index };\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\treturn { exists: false, index };\n\t\t\t}\n\t\t}\n\t\treturn { exists: false, index };\n\t}\n}\n"]}
@@ -3,7 +3,6 @@
3
3
  * Licensed under the MIT License.
4
4
  */
5
5
  /**
6
- * @deprecated This functionality was not meant to be exported and will be removed in a future release
7
6
  * @internal
8
7
  */
9
8
  export declare abstract class SortedSet<T, U extends string | number> {
@@ -1 +1 @@
1
- {"version":3,"file":"sortedSet.d.ts","sourceRoot":"","sources":["../src/sortedSet.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH;;;GAGG;AACH,8BAAsB,SAAS,CAAC,CAAC,EAAE,CAAC,SAAS,MAAM,GAAG,MAAM;IAC3D,SAAS,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC;IAElC,SAAS,CAAC,QAAQ,CAAC,cAAc,EAAE,CAAC,EAAE,CAAM;IAE5C,IAAW,IAAI,IAAI,MAAM,CAExB;IAED,IAAW,KAAK,IAAI,SAAS,CAAC,EAAE,CAE/B;IAEM,WAAW,CAAC,OAAO,EAAE,CAAC,EAAE,MAAM,CAAC,EAAE,CAAC,YAAY,EAAE,CAAC,EAAE,OAAO,EAAE,CAAC,KAAK,IAAI,GAAG,IAAI;IAS7E,MAAM,CAAC,IAAI,EAAE,CAAC,GAAG,OAAO;IASxB,GAAG,CAAC,IAAI,EAAE,CAAC,GAAG,OAAO;IAK5B,SAAS,CAAC,gBAAgB,CAAC,IAAI,EAAE,CAAC,GAAG;QAAE,MAAM,EAAE,OAAO,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE;CA4BvE"}
1
+ {"version":3,"file":"sortedSet.d.ts","sourceRoot":"","sources":["../src/sortedSet.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH;;GAEG;AACH,8BAAsB,SAAS,CAAC,CAAC,EAAE,CAAC,SAAS,MAAM,GAAG,MAAM;IAC3D,SAAS,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC;IAElC,SAAS,CAAC,QAAQ,CAAC,cAAc,EAAE,CAAC,EAAE,CAAM;IAE5C,IAAW,IAAI,IAAI,MAAM,CAExB;IAED,IAAW,KAAK,IAAI,SAAS,CAAC,EAAE,CAE/B;IAEM,WAAW,CAAC,OAAO,EAAE,CAAC,EAAE,MAAM,CAAC,EAAE,CAAC,YAAY,EAAE,CAAC,EAAE,OAAO,EAAE,CAAC,KAAK,IAAI,GAAG,IAAI;IAS7E,MAAM,CAAC,IAAI,EAAE,CAAC,GAAG,OAAO;IASxB,GAAG,CAAC,IAAI,EAAE,CAAC,GAAG,OAAO;IAK5B,SAAS,CAAC,gBAAgB,CAAC,IAAI,EAAE,CAAC,GAAG;QAAE,MAAM,EAAE,OAAO,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE;CA4BvE"}
package/lib/sortedSet.js CHANGED
@@ -3,7 +3,6 @@
3
3
  * Licensed under the MIT License.
4
4
  */
5
5
  /**
6
- * @deprecated This functionality was not meant to be exported and will be removed in a future release
7
6
  * @internal
8
7
  */
9
8
  export class SortedSet {
@@ -1 +1 @@
1
- {"version":3,"file":"sortedSet.js","sourceRoot":"","sources":["../src/sortedSet.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\n/**\n * @deprecated This functionality was not meant to be exported and will be removed in a future release\n * @internal\n */\nexport abstract class SortedSet<T, U extends string | number> {\n\tprotected abstract getKey(t: T): U;\n\n\tprotected readonly keySortedItems: T[] = [];\n\n\tpublic get size(): number {\n\t\treturn this.keySortedItems.length;\n\t}\n\n\tpublic get items(): readonly T[] {\n\t\treturn this.keySortedItems;\n\t}\n\n\tpublic addOrUpdate(newItem: T, update?: (existingItem: T, newItem: T) => void): void {\n\t\tconst position = this.findItemPosition(newItem);\n\t\tif (position.exists) {\n\t\t\tupdate?.(this.keySortedItems[position.index], newItem);\n\t\t} else {\n\t\t\tthis.keySortedItems.splice(position.index, 0, newItem);\n\t\t}\n\t}\n\n\tpublic remove(item: T): boolean {\n\t\tconst position = this.findItemPosition(item);\n\t\tif (position.exists) {\n\t\t\tthis.keySortedItems.splice(position.index, 1);\n\t\t\treturn true;\n\t\t}\n\t\treturn false;\n\t}\n\n\tpublic has(item: T): boolean {\n\t\tconst position = this.findItemPosition(item);\n\t\treturn position.exists;\n\t}\n\n\tprotected findItemPosition(item: T): { exists: boolean; index: number } {\n\t\tif (this.keySortedItems.length === 0) {\n\t\t\treturn { exists: false, index: 0 };\n\t\t}\n\t\tlet start = 0;\n\t\tlet end = this.keySortedItems.length - 1;\n\t\tconst itemKey = this.getKey(item);\n\t\tlet index = -1;\n\n\t\twhile (start <= end) {\n\t\t\tindex = start + Math.floor((end - start) / 2);\n\t\t\tconst indexKey = this.getKey(this.keySortedItems[index]);\n\t\t\tif (indexKey > itemKey) {\n\t\t\t\tif (start === index) {\n\t\t\t\t\treturn { exists: false, index };\n\t\t\t\t}\n\t\t\t\tend = index - 1;\n\t\t\t} else if (indexKey < itemKey) {\n\t\t\t\tif (index === end) {\n\t\t\t\t\treturn { exists: false, index: index + 1 };\n\t\t\t\t}\n\t\t\t\tstart = index + 1;\n\t\t\t} else if (indexKey === itemKey) {\n\t\t\t\treturn { exists: true, index };\n\t\t\t}\n\t\t}\n\t\treturn { exists: false, index };\n\t}\n}\n"]}
1
+ {"version":3,"file":"sortedSet.js","sourceRoot":"","sources":["../src/sortedSet.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\n/**\n * @internal\n */\nexport abstract class SortedSet<T, U extends string | number> {\n\tprotected abstract getKey(t: T): U;\n\n\tprotected readonly keySortedItems: T[] = [];\n\n\tpublic get size(): number {\n\t\treturn this.keySortedItems.length;\n\t}\n\n\tpublic get items(): readonly T[] {\n\t\treturn this.keySortedItems;\n\t}\n\n\tpublic addOrUpdate(newItem: T, update?: (existingItem: T, newItem: T) => void): void {\n\t\tconst position = this.findItemPosition(newItem);\n\t\tif (position.exists) {\n\t\t\tupdate?.(this.keySortedItems[position.index], newItem);\n\t\t} else {\n\t\t\tthis.keySortedItems.splice(position.index, 0, newItem);\n\t\t}\n\t}\n\n\tpublic remove(item: T): boolean {\n\t\tconst position = this.findItemPosition(item);\n\t\tif (position.exists) {\n\t\t\tthis.keySortedItems.splice(position.index, 1);\n\t\t\treturn true;\n\t\t}\n\t\treturn false;\n\t}\n\n\tpublic has(item: T): boolean {\n\t\tconst position = this.findItemPosition(item);\n\t\treturn position.exists;\n\t}\n\n\tprotected findItemPosition(item: T): { exists: boolean; index: number } {\n\t\tif (this.keySortedItems.length === 0) {\n\t\t\treturn { exists: false, index: 0 };\n\t\t}\n\t\tlet start = 0;\n\t\tlet end = this.keySortedItems.length - 1;\n\t\tconst itemKey = this.getKey(item);\n\t\tlet index = -1;\n\n\t\twhile (start <= end) {\n\t\t\tindex = start + Math.floor((end - start) / 2);\n\t\t\tconst indexKey = this.getKey(this.keySortedItems[index]);\n\t\t\tif (indexKey > itemKey) {\n\t\t\t\tif (start === index) {\n\t\t\t\t\treturn { exists: false, index };\n\t\t\t\t}\n\t\t\t\tend = index - 1;\n\t\t\t} else if (indexKey < itemKey) {\n\t\t\t\tif (index === end) {\n\t\t\t\t\treturn { exists: false, index: index + 1 };\n\t\t\t\t}\n\t\t\t\tstart = index + 1;\n\t\t\t} else if (indexKey === itemKey) {\n\t\t\t\treturn { exists: true, index };\n\t\t\t}\n\t\t}\n\t\treturn { exists: false, index };\n\t}\n}\n"]}
@@ -6,8 +6,8 @@ export { createRevertDriver, getStats, MergeTreeStats, specToSegment, TestClient
6
6
  export { checkTextMatchRelative, TestServer } from "./testServer.js";
7
7
  export { countOperations, insertMarker, insertSegments, insertText, loadTextFromFile, loadTextFromFileWithMarkers, markRangeRemoved, nodeOrdinalsHaveIntegrity, validatePartialLengths, useStrictPartialLengthChecks, } from "./testUtils.js";
8
8
  export { annotateRange, applyMessages, doOverRange, generateClientNames, generateOperationMessagesForClients, IConfigRange, IMergeTreeOperationRunnerConfig, insertAtRefPos, removeRange, ReplayGroup, replayResultsPath, runMergeTreeOperationRunner, TestOperation, } from "./mergeTreeOperationRunner.js";
9
- export { LRUSegment, MergeTree } from "../mergeTree.js";
9
+ export { LRUSegment, MergeTree, IMergeTreeOptions, IMergeTreeOptionsInternal, } from "../mergeTree.js";
10
10
  export { MergeTreeTextHelper } from "../MergeTreeTextHelper.js";
11
11
  export { SnapshotLegacy } from "../snapshotlegacy.js";
12
- export { addProperties, appendToMergeTreeDeltaRevertibles, BaseSegment, Client, CollaborationWindow, compareReferencePositions, ConflictAction, createAnnotateRangeOp, createDetachedLocalReferencePosition, createGroupOp, createInsertOp, createInsertSegmentOp, createMap, createRemoveRangeOp, debugMarkerToString, DetachedReferencePosition, discardMergeTreeDeltaRevertible, IJSONMarkerSegment, IJSONSegment, IMarkerDef, IMergeNodeCommon, IMergeTreeAnnotateMsg, IMergeTreeClientSequenceArgs, IMergeTreeDelta, IMergeTreeDeltaCallbackArgs, IMergeTreeDeltaOp, IMergeTreeDeltaOpArgs, IMergeTreeGroupMsg, IMergeTreeInsertMsg, IMergeTreeMaintenanceCallbackArgs, IMergeTreeOp, IMergeTreeRemoveMsg, IMergeTreeSegmentDelta, IMergeTreeTextHelper, IRBAugmentation, IRBMatcher, IRelativePosition, IRemovalInfo, ISegment, ISegmentAction, KeyComparer, LocalReferenceCollection, LocalReferencePosition, MapLike, Marker, matchProperties, maxReferencePosition, MergeNode, MergeTreeDeltaOperationType, MergeTreeDeltaOperationTypes, MergeTreeDeltaRevertible, MergeTreeDeltaType, MergeTreeMaintenanceType, MergeTreeRevertibleDriver, minReferencePosition, PropertiesManager, Property, PropertyAction, PropertySet, RBNode, RBNodeActions, RedBlackTree, ReferencePosition, ReferenceType, refGetTileLabels, refHasTileLabel, refHasTileLabels, refTypeIncludesFlag, reservedMarkerIdKey, reservedMarkerSimpleTypeKey, reservedTileLabelsKey, revertMergeTreeDeltaRevertibles, SegmentGroup, SegmentGroupCollection, SortedSegmentSet, SortedSegmentSetItem, SortedSet, TextSegment, toRemovalInfo, Trackable, TrackingGroup, TrackingGroupCollection, UnassignedSequenceNumber, UniversalSequenceNumber, } from "../index.js";
12
+ export { addProperties, appendToMergeTreeDeltaRevertibles, BaseSegment, Client, CollaborationWindow, compareReferencePositions, ConflictAction, createAnnotateRangeOp, createDetachedLocalReferencePosition, createGroupOp, createInsertOp, createInsertSegmentOp, createMap, createRemoveRangeOp, debugMarkerToString, DetachedReferencePosition, discardMergeTreeDeltaRevertible, IJSONMarkerSegment, IJSONSegment, IMarkerDef, IMergeNodeCommon, IMergeTreeAnnotateMsg, IMergeTreeClientSequenceArgs, IMergeTreeDelta, IMergeTreeDeltaCallbackArgs, IMergeTreeDeltaOp, IMergeTreeDeltaOpArgs, IMergeTreeGroupMsg, IMergeTreeInsertMsg, IMergeTreeMaintenanceCallbackArgs, IMergeTreeOp, IMergeTreeRemoveMsg, IMergeTreeSegmentDelta, IMergeTreeTextHelper, IRBAugmentation, IRBMatcher, IRelativePosition, IRemovalInfo, ISegment, ISegmentAction, KeyComparer, LocalReferenceCollection, LocalReferencePosition, MapLike, Marker, matchProperties, maxReferencePosition, MergeTreeDeltaOperationType, MergeTreeDeltaOperationTypes, MergeTreeDeltaRevertible, MergeTreeDeltaType, MergeTreeMaintenanceType, MergeTreeRevertibleDriver, minReferencePosition, PropertiesManager, Property, PropertyAction, PropertySet, RBNode, RBNodeActions, RedBlackTree, ReferencePosition, ReferenceType, refGetTileLabels, refHasTileLabel, refHasTileLabels, refTypeIncludesFlag, reservedMarkerIdKey, reservedMarkerSimpleTypeKey, reservedTileLabelsKey, revertMergeTreeDeltaRevertibles, SegmentGroup, SortedSegmentSet, SortedSegmentSetItem, SortedSet, TextSegment, toRemovalInfo, Trackable, TrackingGroup, TrackingGroupCollection, UnassignedSequenceNumber, UniversalSequenceNumber, } from "../index.js";
13
13
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/test/index.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EACN,kBAAkB,EAClB,QAAQ,EACR,cAAc,EACd,aAAa,EACb,UAAU,EACV,0BAA0B,GAC1B,MAAM,iBAAiB,CAAC;AACzB,OAAO,EAAE,sBAAsB,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AACrE,OAAO,EACN,eAAe,EACf,YAAY,EACZ,cAAc,EACd,UAAU,EACV,gBAAgB,EAChB,2BAA2B,EAC3B,gBAAgB,EAChB,yBAAyB,EACzB,sBAAsB,EACtB,4BAA4B,GAC5B,MAAM,gBAAgB,CAAC;AACxB,OAAO,EACN,aAAa,EACb,aAAa,EACb,WAAW,EACX,mBAAmB,EACnB,mCAAmC,EACnC,YAAY,EACZ,+BAA+B,EAC/B,cAAc,EACd,WAAW,EACX,WAAW,EACX,iBAAiB,EACjB,2BAA2B,EAC3B,aAAa,GACb,MAAM,+BAA+B,CAAC;AACvC,OAAO,EAAE,UAAU,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AACxD,OAAO,EAAE,mBAAmB,EAAE,MAAM,2BAA2B,CAAC;AAChE,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AACtD,OAAO,EACN,aAAa,EACb,iCAAiC,EACjC,WAAW,EACX,MAAM,EACN,mBAAmB,EACnB,yBAAyB,EACzB,cAAc,EACd,qBAAqB,EACrB,oCAAoC,EACpC,aAAa,EACb,cAAc,EACd,qBAAqB,EACrB,SAAS,EACT,mBAAmB,EACnB,mBAAmB,EACnB,yBAAyB,EACzB,+BAA+B,EAC/B,kBAAkB,EAClB,YAAY,EACZ,UAAU,EACV,gBAAgB,EAChB,qBAAqB,EACrB,4BAA4B,EAC5B,eAAe,EACf,2BAA2B,EAC3B,iBAAiB,EACjB,qBAAqB,EACrB,kBAAkB,EAClB,mBAAmB,EACnB,iCAAiC,EACjC,YAAY,EACZ,mBAAmB,EACnB,sBAAsB,EACtB,oBAAoB,EACpB,eAAe,EACf,UAAU,EACV,iBAAiB,EACjB,YAAY,EACZ,QAAQ,EACR,cAAc,EACd,WAAW,EACX,wBAAwB,EACxB,sBAAsB,EACtB,OAAO,EACP,MAAM,EACN,eAAe,EACf,oBAAoB,EACpB,SAAS,EACT,2BAA2B,EAC3B,4BAA4B,EAC5B,wBAAwB,EACxB,kBAAkB,EAClB,wBAAwB,EACxB,yBAAyB,EACzB,oBAAoB,EACpB,iBAAiB,EACjB,QAAQ,EACR,cAAc,EACd,WAAW,EACX,MAAM,EACN,aAAa,EACb,YAAY,EACZ,iBAAiB,EACjB,aAAa,EACb,gBAAgB,EAChB,eAAe,EACf,gBAAgB,EAChB,mBAAmB,EACnB,mBAAmB,EACnB,2BAA2B,EAC3B,qBAAqB,EACrB,+BAA+B,EAC/B,YAAY,EACZ,sBAAsB,EACtB,gBAAgB,EAChB,oBAAoB,EACpB,SAAS,EACT,WAAW,EACX,aAAa,EACb,SAAS,EACT,aAAa,EACb,uBAAuB,EACvB,wBAAwB,EACxB,uBAAuB,GACvB,MAAM,aAAa,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/test/index.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EACN,kBAAkB,EAClB,QAAQ,EACR,cAAc,EACd,aAAa,EACb,UAAU,EACV,0BAA0B,GAC1B,MAAM,iBAAiB,CAAC;AACzB,OAAO,EAAE,sBAAsB,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AACrE,OAAO,EACN,eAAe,EACf,YAAY,EACZ,cAAc,EACd,UAAU,EACV,gBAAgB,EAChB,2BAA2B,EAC3B,gBAAgB,EAChB,yBAAyB,EACzB,sBAAsB,EACtB,4BAA4B,GAC5B,MAAM,gBAAgB,CAAC;AACxB,OAAO,EACN,aAAa,EACb,aAAa,EACb,WAAW,EACX,mBAAmB,EACnB,mCAAmC,EACnC,YAAY,EACZ,+BAA+B,EAC/B,cAAc,EACd,WAAW,EACX,WAAW,EACX,iBAAiB,EACjB,2BAA2B,EAC3B,aAAa,GACb,MAAM,+BAA+B,CAAC;AACvC,OAAO,EACN,UAAU,EACV,SAAS,EACT,iBAAiB,EACjB,yBAAyB,GACzB,MAAM,iBAAiB,CAAC;AACzB,OAAO,EAAE,mBAAmB,EAAE,MAAM,2BAA2B,CAAC;AAChE,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AACtD,OAAO,EACN,aAAa,EACb,iCAAiC,EACjC,WAAW,EACX,MAAM,EACN,mBAAmB,EACnB,yBAAyB,EACzB,cAAc,EACd,qBAAqB,EACrB,oCAAoC,EACpC,aAAa,EACb,cAAc,EACd,qBAAqB,EACrB,SAAS,EACT,mBAAmB,EACnB,mBAAmB,EACnB,yBAAyB,EACzB,+BAA+B,EAC/B,kBAAkB,EAClB,YAAY,EACZ,UAAU,EACV,gBAAgB,EAChB,qBAAqB,EACrB,4BAA4B,EAC5B,eAAe,EACf,2BAA2B,EAC3B,iBAAiB,EACjB,qBAAqB,EACrB,kBAAkB,EAClB,mBAAmB,EACnB,iCAAiC,EACjC,YAAY,EACZ,mBAAmB,EACnB,sBAAsB,EACtB,oBAAoB,EACpB,eAAe,EACf,UAAU,EACV,iBAAiB,EACjB,YAAY,EACZ,QAAQ,EACR,cAAc,EACd,WAAW,EACX,wBAAwB,EACxB,sBAAsB,EACtB,OAAO,EACP,MAAM,EACN,eAAe,EACf,oBAAoB,EACpB,2BAA2B,EAC3B,4BAA4B,EAC5B,wBAAwB,EACxB,kBAAkB,EAClB,wBAAwB,EACxB,yBAAyB,EACzB,oBAAoB,EACpB,iBAAiB,EACjB,QAAQ,EACR,cAAc,EACd,WAAW,EACX,MAAM,EACN,aAAa,EACb,YAAY,EACZ,iBAAiB,EACjB,aAAa,EACb,gBAAgB,EAChB,eAAe,EACf,gBAAgB,EAChB,mBAAmB,EACnB,mBAAmB,EACnB,2BAA2B,EAC3B,qBAAqB,EACrB,+BAA+B,EAC/B,YAAY,EACZ,gBAAgB,EAChB,oBAAoB,EACpB,SAAS,EACT,WAAW,EACX,aAAa,EACb,SAAS,EACT,aAAa,EACb,uBAAuB,EACvB,wBAAwB,EACxB,uBAAuB,GACvB,MAAM,aAAa,CAAC"}
package/lib/test/index.js CHANGED
@@ -6,8 +6,8 @@ export { createRevertDriver, getStats, specToSegment, TestClient, } from "./test
6
6
  export { checkTextMatchRelative, TestServer } from "./testServer.js";
7
7
  export { countOperations, insertMarker, insertSegments, insertText, loadTextFromFile, loadTextFromFileWithMarkers, markRangeRemoved, nodeOrdinalsHaveIntegrity, validatePartialLengths, useStrictPartialLengthChecks, } from "./testUtils.js";
8
8
  export { annotateRange, applyMessages, doOverRange, generateClientNames, generateOperationMessagesForClients, insertAtRefPos, removeRange, replayResultsPath, runMergeTreeOperationRunner, } from "./mergeTreeOperationRunner.js";
9
- export { MergeTree } from "../mergeTree.js";
9
+ export { MergeTree, } from "../mergeTree.js";
10
10
  export { MergeTreeTextHelper } from "../MergeTreeTextHelper.js";
11
11
  export { SnapshotLegacy } from "../snapshotlegacy.js";
12
- export { addProperties, appendToMergeTreeDeltaRevertibles, BaseSegment, Client, CollaborationWindow, compareReferencePositions, createAnnotateRangeOp, createDetachedLocalReferencePosition, createGroupOp, createInsertOp, createInsertSegmentOp, createMap, createRemoveRangeOp, debugMarkerToString, DetachedReferencePosition, discardMergeTreeDeltaRevertible, LocalReferenceCollection, Marker, matchProperties, maxReferencePosition, MergeNode, MergeTreeDeltaType, MergeTreeMaintenanceType, minReferencePosition, PropertiesManager, RedBlackTree, ReferenceType, refGetTileLabels, refHasTileLabel, refHasTileLabels, refTypeIncludesFlag, reservedMarkerIdKey, reservedMarkerSimpleTypeKey, reservedTileLabelsKey, revertMergeTreeDeltaRevertibles, SegmentGroupCollection, SortedSegmentSet, SortedSet, TextSegment, toRemovalInfo, TrackingGroup, TrackingGroupCollection, UnassignedSequenceNumber, UniversalSequenceNumber, } from "../index.js";
12
+ export { addProperties, appendToMergeTreeDeltaRevertibles, BaseSegment, Client, CollaborationWindow, compareReferencePositions, createAnnotateRangeOp, createDetachedLocalReferencePosition, createGroupOp, createInsertOp, createInsertSegmentOp, createMap, createRemoveRangeOp, debugMarkerToString, DetachedReferencePosition, discardMergeTreeDeltaRevertible, LocalReferenceCollection, Marker, matchProperties, maxReferencePosition, MergeTreeDeltaType, MergeTreeMaintenanceType, minReferencePosition, PropertiesManager, RedBlackTree, ReferenceType, refGetTileLabels, refHasTileLabel, refHasTileLabels, refTypeIncludesFlag, reservedMarkerIdKey, reservedMarkerSimpleTypeKey, reservedTileLabelsKey, revertMergeTreeDeltaRevertibles, SortedSegmentSet, SortedSet, TextSegment, toRemovalInfo, TrackingGroup, TrackingGroupCollection, UnassignedSequenceNumber, UniversalSequenceNumber, } from "../index.js";
13
13
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/test/index.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EACN,kBAAkB,EAClB,QAAQ,EAER,aAAa,EACb,UAAU,GAEV,MAAM,iBAAiB,CAAC;AACzB,OAAO,EAAE,sBAAsB,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AACrE,OAAO,EACN,eAAe,EACf,YAAY,EACZ,cAAc,EACd,UAAU,EACV,gBAAgB,EAChB,2BAA2B,EAC3B,gBAAgB,EAChB,yBAAyB,EACzB,sBAAsB,EACtB,4BAA4B,GAC5B,MAAM,gBAAgB,CAAC;AACxB,OAAO,EACN,aAAa,EACb,aAAa,EACb,WAAW,EACX,mBAAmB,EACnB,mCAAmC,EAGnC,cAAc,EACd,WAAW,EAEX,iBAAiB,EACjB,2BAA2B,GAE3B,MAAM,+BAA+B,CAAC;AACvC,OAAO,EAAc,SAAS,EAAE,MAAM,iBAAiB,CAAC;AACxD,OAAO,EAAE,mBAAmB,EAAE,MAAM,2BAA2B,CAAC;AAChE,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AACtD,OAAO,EACN,aAAa,EACb,iCAAiC,EACjC,WAAW,EACX,MAAM,EACN,mBAAmB,EACnB,yBAAyB,EAEzB,qBAAqB,EACrB,oCAAoC,EACpC,aAAa,EACb,cAAc,EACd,qBAAqB,EACrB,SAAS,EACT,mBAAmB,EACnB,mBAAmB,EACnB,yBAAyB,EACzB,+BAA+B,EAyB/B,wBAAwB,EAGxB,MAAM,EACN,eAAe,EACf,oBAAoB,EACpB,SAAS,EAIT,kBAAkB,EAClB,wBAAwB,EAExB,oBAAoB,EACpB,iBAAiB,EAMjB,YAAY,EAEZ,aAAa,EACb,gBAAgB,EAChB,eAAe,EACf,gBAAgB,EAChB,mBAAmB,EACnB,mBAAmB,EACnB,2BAA2B,EAC3B,qBAAqB,EACrB,+BAA+B,EAE/B,sBAAsB,EACtB,gBAAgB,EAEhB,SAAS,EACT,WAAW,EACX,aAAa,EAEb,aAAa,EACb,uBAAuB,EACvB,wBAAwB,EACxB,uBAAuB,GACvB,MAAM,aAAa,CAAC","sourcesContent":["/*!\n * Copyright (c) Microsoft Corporation and contributors. All rights reserved.\n * Licensed under the MIT License.\n */\n\nexport {\n\tcreateRevertDriver,\n\tgetStats,\n\tMergeTreeStats,\n\tspecToSegment,\n\tTestClient,\n\tTestClientRevertibleDriver,\n} from \"./testClient.js\";\nexport { checkTextMatchRelative, TestServer } from \"./testServer.js\";\nexport {\n\tcountOperations,\n\tinsertMarker,\n\tinsertSegments,\n\tinsertText,\n\tloadTextFromFile,\n\tloadTextFromFileWithMarkers,\n\tmarkRangeRemoved,\n\tnodeOrdinalsHaveIntegrity,\n\tvalidatePartialLengths,\n\tuseStrictPartialLengthChecks,\n} from \"./testUtils.js\";\nexport {\n\tannotateRange,\n\tapplyMessages,\n\tdoOverRange,\n\tgenerateClientNames,\n\tgenerateOperationMessagesForClients,\n\tIConfigRange,\n\tIMergeTreeOperationRunnerConfig,\n\tinsertAtRefPos,\n\tremoveRange,\n\tReplayGroup,\n\treplayResultsPath,\n\trunMergeTreeOperationRunner,\n\tTestOperation,\n} from \"./mergeTreeOperationRunner.js\";\nexport { LRUSegment, MergeTree } from \"../mergeTree.js\";\nexport { MergeTreeTextHelper } from \"../MergeTreeTextHelper.js\";\nexport { SnapshotLegacy } from \"../snapshotlegacy.js\";\nexport {\n\taddProperties,\n\tappendToMergeTreeDeltaRevertibles,\n\tBaseSegment,\n\tClient,\n\tCollaborationWindow,\n\tcompareReferencePositions,\n\tConflictAction,\n\tcreateAnnotateRangeOp,\n\tcreateDetachedLocalReferencePosition,\n\tcreateGroupOp,\n\tcreateInsertOp,\n\tcreateInsertSegmentOp,\n\tcreateMap,\n\tcreateRemoveRangeOp,\n\tdebugMarkerToString,\n\tDetachedReferencePosition,\n\tdiscardMergeTreeDeltaRevertible,\n\tIJSONMarkerSegment,\n\tIJSONSegment,\n\tIMarkerDef,\n\tIMergeNodeCommon,\n\tIMergeTreeAnnotateMsg,\n\tIMergeTreeClientSequenceArgs,\n\tIMergeTreeDelta,\n\tIMergeTreeDeltaCallbackArgs,\n\tIMergeTreeDeltaOp,\n\tIMergeTreeDeltaOpArgs,\n\tIMergeTreeGroupMsg,\n\tIMergeTreeInsertMsg,\n\tIMergeTreeMaintenanceCallbackArgs,\n\tIMergeTreeOp,\n\tIMergeTreeRemoveMsg,\n\tIMergeTreeSegmentDelta,\n\tIMergeTreeTextHelper,\n\tIRBAugmentation,\n\tIRBMatcher,\n\tIRelativePosition,\n\tIRemovalInfo,\n\tISegment,\n\tISegmentAction,\n\tKeyComparer,\n\tLocalReferenceCollection,\n\tLocalReferencePosition,\n\tMapLike,\n\tMarker,\n\tmatchProperties,\n\tmaxReferencePosition,\n\tMergeNode,\n\tMergeTreeDeltaOperationType,\n\tMergeTreeDeltaOperationTypes,\n\tMergeTreeDeltaRevertible,\n\tMergeTreeDeltaType,\n\tMergeTreeMaintenanceType,\n\tMergeTreeRevertibleDriver,\n\tminReferencePosition,\n\tPropertiesManager,\n\tProperty,\n\tPropertyAction,\n\tPropertySet,\n\tRBNode,\n\tRBNodeActions,\n\tRedBlackTree,\n\tReferencePosition,\n\tReferenceType,\n\trefGetTileLabels,\n\trefHasTileLabel,\n\trefHasTileLabels,\n\trefTypeIncludesFlag,\n\treservedMarkerIdKey,\n\treservedMarkerSimpleTypeKey,\n\treservedTileLabelsKey,\n\trevertMergeTreeDeltaRevertibles,\n\tSegmentGroup,\n\tSegmentGroupCollection,\n\tSortedSegmentSet,\n\tSortedSegmentSetItem,\n\tSortedSet,\n\tTextSegment,\n\ttoRemovalInfo,\n\tTrackable,\n\tTrackingGroup,\n\tTrackingGroupCollection,\n\tUnassignedSequenceNumber,\n\tUniversalSequenceNumber,\n} from \"../index.js\";\n"]}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/test/index.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EACN,kBAAkB,EAClB,QAAQ,EAER,aAAa,EACb,UAAU,GAEV,MAAM,iBAAiB,CAAC;AACzB,OAAO,EAAE,sBAAsB,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AACrE,OAAO,EACN,eAAe,EACf,YAAY,EACZ,cAAc,EACd,UAAU,EACV,gBAAgB,EAChB,2BAA2B,EAC3B,gBAAgB,EAChB,yBAAyB,EACzB,sBAAsB,EACtB,4BAA4B,GAC5B,MAAM,gBAAgB,CAAC;AACxB,OAAO,EACN,aAAa,EACb,aAAa,EACb,WAAW,EACX,mBAAmB,EACnB,mCAAmC,EAGnC,cAAc,EACd,WAAW,EAEX,iBAAiB,EACjB,2BAA2B,GAE3B,MAAM,+BAA+B,CAAC;AACvC,OAAO,EAEN,SAAS,GAGT,MAAM,iBAAiB,CAAC;AACzB,OAAO,EAAE,mBAAmB,EAAE,MAAM,2BAA2B,CAAC;AAChE,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AACtD,OAAO,EACN,aAAa,EACb,iCAAiC,EACjC,WAAW,EACX,MAAM,EACN,mBAAmB,EACnB,yBAAyB,EAEzB,qBAAqB,EACrB,oCAAoC,EACpC,aAAa,EACb,cAAc,EACd,qBAAqB,EACrB,SAAS,EACT,mBAAmB,EACnB,mBAAmB,EACnB,yBAAyB,EACzB,+BAA+B,EAyB/B,wBAAwB,EAGxB,MAAM,EACN,eAAe,EACf,oBAAoB,EAIpB,kBAAkB,EAClB,wBAAwB,EAExB,oBAAoB,EACpB,iBAAiB,EAMjB,YAAY,EAEZ,aAAa,EACb,gBAAgB,EAChB,eAAe,EACf,gBAAgB,EAChB,mBAAmB,EACnB,mBAAmB,EACnB,2BAA2B,EAC3B,qBAAqB,EACrB,+BAA+B,EAE/B,gBAAgB,EAEhB,SAAS,EACT,WAAW,EACX,aAAa,EAEb,aAAa,EACb,uBAAuB,EACvB,wBAAwB,EACxB,uBAAuB,GACvB,MAAM,aAAa,CAAC","sourcesContent":["/*!\n * Copyright (c) Microsoft Corporation and contributors. All rights reserved.\n * Licensed under the MIT License.\n */\n\nexport {\n\tcreateRevertDriver,\n\tgetStats,\n\tMergeTreeStats,\n\tspecToSegment,\n\tTestClient,\n\tTestClientRevertibleDriver,\n} from \"./testClient.js\";\nexport { checkTextMatchRelative, TestServer } from \"./testServer.js\";\nexport {\n\tcountOperations,\n\tinsertMarker,\n\tinsertSegments,\n\tinsertText,\n\tloadTextFromFile,\n\tloadTextFromFileWithMarkers,\n\tmarkRangeRemoved,\n\tnodeOrdinalsHaveIntegrity,\n\tvalidatePartialLengths,\n\tuseStrictPartialLengthChecks,\n} from \"./testUtils.js\";\nexport {\n\tannotateRange,\n\tapplyMessages,\n\tdoOverRange,\n\tgenerateClientNames,\n\tgenerateOperationMessagesForClients,\n\tIConfigRange,\n\tIMergeTreeOperationRunnerConfig,\n\tinsertAtRefPos,\n\tremoveRange,\n\tReplayGroup,\n\treplayResultsPath,\n\trunMergeTreeOperationRunner,\n\tTestOperation,\n} from \"./mergeTreeOperationRunner.js\";\nexport {\n\tLRUSegment,\n\tMergeTree,\n\tIMergeTreeOptions,\n\tIMergeTreeOptionsInternal,\n} from \"../mergeTree.js\";\nexport { MergeTreeTextHelper } from \"../MergeTreeTextHelper.js\";\nexport { SnapshotLegacy } from \"../snapshotlegacy.js\";\nexport {\n\taddProperties,\n\tappendToMergeTreeDeltaRevertibles,\n\tBaseSegment,\n\tClient,\n\tCollaborationWindow,\n\tcompareReferencePositions,\n\tConflictAction,\n\tcreateAnnotateRangeOp,\n\tcreateDetachedLocalReferencePosition,\n\tcreateGroupOp,\n\tcreateInsertOp,\n\tcreateInsertSegmentOp,\n\tcreateMap,\n\tcreateRemoveRangeOp,\n\tdebugMarkerToString,\n\tDetachedReferencePosition,\n\tdiscardMergeTreeDeltaRevertible,\n\tIJSONMarkerSegment,\n\tIJSONSegment,\n\tIMarkerDef,\n\tIMergeNodeCommon,\n\tIMergeTreeAnnotateMsg,\n\tIMergeTreeClientSequenceArgs,\n\tIMergeTreeDelta,\n\tIMergeTreeDeltaCallbackArgs,\n\tIMergeTreeDeltaOp,\n\tIMergeTreeDeltaOpArgs,\n\tIMergeTreeGroupMsg,\n\tIMergeTreeInsertMsg,\n\tIMergeTreeMaintenanceCallbackArgs,\n\tIMergeTreeOp,\n\tIMergeTreeRemoveMsg,\n\tIMergeTreeSegmentDelta,\n\tIMergeTreeTextHelper,\n\tIRBAugmentation,\n\tIRBMatcher,\n\tIRelativePosition,\n\tIRemovalInfo,\n\tISegment,\n\tISegmentAction,\n\tKeyComparer,\n\tLocalReferenceCollection,\n\tLocalReferencePosition,\n\tMapLike,\n\tMarker,\n\tmatchProperties,\n\tmaxReferencePosition,\n\tMergeTreeDeltaOperationType,\n\tMergeTreeDeltaOperationTypes,\n\tMergeTreeDeltaRevertible,\n\tMergeTreeDeltaType,\n\tMergeTreeMaintenanceType,\n\tMergeTreeRevertibleDriver,\n\tminReferencePosition,\n\tPropertiesManager,\n\tProperty,\n\tPropertyAction,\n\tPropertySet,\n\tRBNode,\n\tRBNodeActions,\n\tRedBlackTree,\n\tReferencePosition,\n\tReferenceType,\n\trefGetTileLabels,\n\trefHasTileLabel,\n\trefHasTileLabels,\n\trefTypeIncludesFlag,\n\treservedMarkerIdKey,\n\treservedMarkerSimpleTypeKey,\n\treservedTileLabelsKey,\n\trevertMergeTreeDeltaRevertibles,\n\tSegmentGroup,\n\tSortedSegmentSet,\n\tSortedSegmentSetItem,\n\tSortedSet,\n\tTextSegment,\n\ttoRemovalInfo,\n\tTrackable,\n\tTrackingGroup,\n\tTrackingGroupCollection,\n\tUnassignedSequenceNumber,\n\tUniversalSequenceNumber,\n} from \"../index.js\";\n"]}
@@ -324,7 +324,7 @@ describe("MergeTree", () => {
324
324
  remoteProperty: 1,
325
325
  }, currentSequenceNumber, remoteClientId, ++currentSequenceNumber, undefined);
326
326
  const segmentInfo = mergeTree.getContainingSegment(annotateStart, currentSequenceNumber, localClientId);
327
- assert(segmentInfo.segment?.segmentGroups?.empty);
327
+ assert(segmentInfo.segment?.segmentGroups?.size !== 0);
328
328
  });
329
329
  it("remote only", () => {
330
330
  const segmentInfo = mergeTree.getContainingSegment(annotateStart, currentSequenceNumber, localClientId);
@@ -354,9 +354,9 @@ describe("MergeTree", () => {
354
354
  propertySource: "local",
355
355
  };
356
356
  const segmentInfo = mergeTree.getContainingSegment(annotateStart, currentSequenceNumber, localClientId);
357
- assert(segmentInfo.segment?.segmentGroups?.empty);
357
+ assert(segmentInfo.segment?.segmentGroups?.empty !== false);
358
358
  mergeTree.annotateRange(annotateStart, annotateEnd, props, currentSequenceNumber, localClientId, UnassignedSequenceNumber, undefined);
359
- assert.equal(segmentInfo.segment?.segmentGroups.size, 1);
359
+ assert.equal(segmentInfo.segment?.segmentGroups?.size, 1);
360
360
  mergeTree.ackPendingSegment({
361
361
  op: {
362
362
  pos1: annotateStart,
@@ -368,7 +368,7 @@ describe("MergeTree", () => {
368
368
  sequenceNumber: ++currentSequenceNumber,
369
369
  },
370
370
  });
371
- assert(segmentInfo.segment?.segmentGroups.empty);
371
+ assert(segmentInfo.segment?.segmentGroups?.empty);
372
372
  assert.equal(segmentInfo.segment?.properties?.propertySource, "local");
373
373
  assert.equal(segmentInfo.segment?.properties?.remoteProperty, 1);
374
374
  });