@fluidframework/sequence 2.30.0 → 2.31.1

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 (189) hide show
  1. package/CHANGELOG.md +506 -495
  2. package/api-report/sequence.legacy.alpha.api.md +67 -5
  3. package/dist/IntervalCollectionValues.d.ts +3 -51
  4. package/dist/IntervalCollectionValues.d.ts.map +1 -1
  5. package/dist/IntervalCollectionValues.js +6 -49
  6. package/dist/IntervalCollectionValues.js.map +1 -1
  7. package/dist/index.d.ts +4 -4
  8. package/dist/index.d.ts.map +1 -1
  9. package/dist/index.js +1 -8
  10. package/dist/index.js.map +1 -1
  11. package/dist/intervalCollection.d.ts +292 -63
  12. package/dist/intervalCollection.d.ts.map +1 -1
  13. package/dist/intervalCollection.js +111 -193
  14. package/dist/intervalCollection.js.map +1 -1
  15. package/dist/intervalCollectionMap.d.ts +11 -32
  16. package/dist/intervalCollectionMap.d.ts.map +1 -1
  17. package/dist/intervalCollectionMap.js +37 -90
  18. package/dist/intervalCollectionMap.js.map +1 -1
  19. package/dist/intervalCollectionMapInterfaces.d.ts +10 -83
  20. package/dist/intervalCollectionMapInterfaces.d.ts.map +1 -1
  21. package/dist/intervalCollectionMapInterfaces.js.map +1 -1
  22. package/dist/intervalIndex/endpointInRangeIndex.d.ts +10 -11
  23. package/dist/intervalIndex/endpointInRangeIndex.d.ts.map +1 -1
  24. package/dist/intervalIndex/endpointInRangeIndex.js +4 -5
  25. package/dist/intervalIndex/endpointInRangeIndex.js.map +1 -1
  26. package/dist/intervalIndex/endpointIndex.d.ts +12 -13
  27. package/dist/intervalIndex/endpointIndex.d.ts.map +1 -1
  28. package/dist/intervalIndex/endpointIndex.js +4 -5
  29. package/dist/intervalIndex/endpointIndex.js.map +1 -1
  30. package/dist/intervalIndex/idIntervalIndex.d.ts +6 -12
  31. package/dist/intervalIndex/idIntervalIndex.d.ts.map +1 -1
  32. package/dist/intervalIndex/idIntervalIndex.js +0 -3
  33. package/dist/intervalIndex/idIntervalIndex.js.map +1 -1
  34. package/dist/intervalIndex/index.d.ts +2 -2
  35. package/dist/intervalIndex/index.d.ts.map +1 -1
  36. package/dist/intervalIndex/index.js.map +1 -1
  37. package/dist/intervalIndex/intervalIndex.d.ts +28 -1
  38. package/dist/intervalIndex/intervalIndex.d.ts.map +1 -1
  39. package/dist/intervalIndex/intervalIndex.js.map +1 -1
  40. package/dist/intervalIndex/overlappingIntervalsIndex.d.ts +30 -13
  41. package/dist/intervalIndex/overlappingIntervalsIndex.d.ts.map +1 -1
  42. package/dist/intervalIndex/overlappingIntervalsIndex.js +4 -5
  43. package/dist/intervalIndex/overlappingIntervalsIndex.js.map +1 -1
  44. package/dist/intervalIndex/overlappingSequenceIntervalsIndex.d.ts.map +1 -1
  45. package/dist/intervalIndex/overlappingSequenceIntervalsIndex.js +1 -1
  46. package/dist/intervalIndex/overlappingSequenceIntervalsIndex.js.map +1 -1
  47. package/dist/intervalIndex/sequenceIntervalIndexes.d.ts +2 -2
  48. package/dist/intervalIndex/sequenceIntervalIndexes.d.ts.map +1 -1
  49. package/dist/intervalIndex/sequenceIntervalIndexes.js.map +1 -1
  50. package/dist/intervalIndex/startpointInRangeIndex.d.ts +10 -11
  51. package/dist/intervalIndex/startpointInRangeIndex.d.ts.map +1 -1
  52. package/dist/intervalIndex/startpointInRangeIndex.js +4 -5
  53. package/dist/intervalIndex/startpointInRangeIndex.js.map +1 -1
  54. package/dist/intervals/index.d.ts +2 -3
  55. package/dist/intervals/index.d.ts.map +1 -1
  56. package/dist/intervals/index.js +1 -6
  57. package/dist/intervals/index.js.map +1 -1
  58. package/dist/intervals/intervalUtils.d.ts +3 -25
  59. package/dist/intervals/intervalUtils.d.ts.map +1 -1
  60. package/dist/intervals/intervalUtils.js.map +1 -1
  61. package/dist/intervals/sequenceInterval.d.ts +3 -8
  62. package/dist/intervals/sequenceInterval.d.ts.map +1 -1
  63. package/dist/intervals/sequenceInterval.js +1 -9
  64. package/dist/intervals/sequenceInterval.js.map +1 -1
  65. package/dist/legacy.d.ts +4 -0
  66. package/dist/packageVersion.d.ts +1 -1
  67. package/dist/packageVersion.js +1 -1
  68. package/dist/packageVersion.js.map +1 -1
  69. package/dist/sequence.d.ts +4 -6
  70. package/dist/sequence.d.ts.map +1 -1
  71. package/dist/sequence.js +3 -5
  72. package/dist/sequence.js.map +1 -1
  73. package/dist/sharedIntervalCollection.d.ts +2 -63
  74. package/dist/sharedIntervalCollection.d.ts.map +1 -1
  75. package/dist/sharedIntervalCollection.js +0 -113
  76. package/dist/sharedIntervalCollection.js.map +1 -1
  77. package/dist/sharedString.d.ts.map +1 -1
  78. package/dist/sharedString.js +6 -6
  79. package/dist/sharedString.js.map +1 -1
  80. package/lib/IntervalCollectionValues.d.ts +3 -51
  81. package/lib/IntervalCollectionValues.d.ts.map +1 -1
  82. package/lib/IntervalCollectionValues.js +5 -47
  83. package/lib/IntervalCollectionValues.js.map +1 -1
  84. package/lib/index.d.ts +4 -4
  85. package/lib/index.d.ts.map +1 -1
  86. package/lib/index.js +2 -3
  87. package/lib/index.js.map +1 -1
  88. package/lib/intervalCollection.d.ts +292 -63
  89. package/lib/intervalCollection.d.ts.map +1 -1
  90. package/lib/intervalCollection.js +113 -191
  91. package/lib/intervalCollection.js.map +1 -1
  92. package/lib/intervalCollectionMap.d.ts +11 -32
  93. package/lib/intervalCollectionMap.d.ts.map +1 -1
  94. package/lib/intervalCollectionMap.js +39 -92
  95. package/lib/intervalCollectionMap.js.map +1 -1
  96. package/lib/intervalCollectionMapInterfaces.d.ts +10 -83
  97. package/lib/intervalCollectionMapInterfaces.d.ts.map +1 -1
  98. package/lib/intervalCollectionMapInterfaces.js.map +1 -1
  99. package/lib/intervalIndex/endpointInRangeIndex.d.ts +10 -11
  100. package/lib/intervalIndex/endpointInRangeIndex.d.ts.map +1 -1
  101. package/lib/intervalIndex/endpointInRangeIndex.js +5 -6
  102. package/lib/intervalIndex/endpointInRangeIndex.js.map +1 -1
  103. package/lib/intervalIndex/endpointIndex.d.ts +12 -13
  104. package/lib/intervalIndex/endpointIndex.d.ts.map +1 -1
  105. package/lib/intervalIndex/endpointIndex.js +5 -6
  106. package/lib/intervalIndex/endpointIndex.js.map +1 -1
  107. package/lib/intervalIndex/idIntervalIndex.d.ts +6 -12
  108. package/lib/intervalIndex/idIntervalIndex.d.ts.map +1 -1
  109. package/lib/intervalIndex/idIntervalIndex.js +0 -3
  110. package/lib/intervalIndex/idIntervalIndex.js.map +1 -1
  111. package/lib/intervalIndex/index.d.ts +2 -2
  112. package/lib/intervalIndex/index.d.ts.map +1 -1
  113. package/lib/intervalIndex/index.js.map +1 -1
  114. package/lib/intervalIndex/intervalIndex.d.ts +28 -1
  115. package/lib/intervalIndex/intervalIndex.d.ts.map +1 -1
  116. package/lib/intervalIndex/intervalIndex.js.map +1 -1
  117. package/lib/intervalIndex/overlappingIntervalsIndex.d.ts +30 -13
  118. package/lib/intervalIndex/overlappingIntervalsIndex.d.ts.map +1 -1
  119. package/lib/intervalIndex/overlappingIntervalsIndex.js +5 -6
  120. package/lib/intervalIndex/overlappingIntervalsIndex.js.map +1 -1
  121. package/lib/intervalIndex/overlappingSequenceIntervalsIndex.d.ts.map +1 -1
  122. package/lib/intervalIndex/overlappingSequenceIntervalsIndex.js +2 -2
  123. package/lib/intervalIndex/overlappingSequenceIntervalsIndex.js.map +1 -1
  124. package/lib/intervalIndex/sequenceIntervalIndexes.d.ts +2 -2
  125. package/lib/intervalIndex/sequenceIntervalIndexes.d.ts.map +1 -1
  126. package/lib/intervalIndex/sequenceIntervalIndexes.js.map +1 -1
  127. package/lib/intervalIndex/startpointInRangeIndex.d.ts +10 -11
  128. package/lib/intervalIndex/startpointInRangeIndex.d.ts.map +1 -1
  129. package/lib/intervalIndex/startpointInRangeIndex.js +5 -6
  130. package/lib/intervalIndex/startpointInRangeIndex.js.map +1 -1
  131. package/lib/intervals/index.d.ts +2 -3
  132. package/lib/intervals/index.d.ts.map +1 -1
  133. package/lib/intervals/index.js +1 -2
  134. package/lib/intervals/index.js.map +1 -1
  135. package/lib/intervals/intervalUtils.d.ts +3 -25
  136. package/lib/intervals/intervalUtils.d.ts.map +1 -1
  137. package/lib/intervals/intervalUtils.js.map +1 -1
  138. package/lib/intervals/sequenceInterval.d.ts +3 -8
  139. package/lib/intervals/sequenceInterval.d.ts.map +1 -1
  140. package/lib/intervals/sequenceInterval.js +0 -8
  141. package/lib/intervals/sequenceInterval.js.map +1 -1
  142. package/lib/legacy.d.ts +4 -0
  143. package/lib/packageVersion.d.ts +1 -1
  144. package/lib/packageVersion.js +1 -1
  145. package/lib/packageVersion.js.map +1 -1
  146. package/lib/sequence.d.ts +4 -6
  147. package/lib/sequence.d.ts.map +1 -1
  148. package/lib/sequence.js +3 -5
  149. package/lib/sequence.js.map +1 -1
  150. package/lib/sharedIntervalCollection.d.ts +2 -63
  151. package/lib/sharedIntervalCollection.d.ts.map +1 -1
  152. package/lib/sharedIntervalCollection.js +1 -110
  153. package/lib/sharedIntervalCollection.js.map +1 -1
  154. package/lib/sharedString.d.ts.map +1 -1
  155. package/lib/sharedString.js +6 -6
  156. package/lib/sharedString.js.map +1 -1
  157. package/lib/tsdoc-metadata.json +1 -1
  158. package/package.json +19 -22
  159. package/src/IntervalCollectionValues.ts +10 -93
  160. package/src/index.ts +6 -17
  161. package/src/intervalCollection.ts +524 -343
  162. package/src/intervalCollectionMap.ts +72 -140
  163. package/src/intervalCollectionMapInterfaces.ts +13 -104
  164. package/src/intervalIndex/endpointInRangeIndex.ts +17 -29
  165. package/src/intervalIndex/endpointIndex.ts +19 -31
  166. package/src/intervalIndex/idIntervalIndex.ts +15 -25
  167. package/src/intervalIndex/index.ts +2 -1
  168. package/src/intervalIndex/intervalIndex.ts +30 -1
  169. package/src/intervalIndex/overlappingIntervalsIndex.ts +50 -27
  170. package/src/intervalIndex/overlappingSequenceIntervalsIndex.ts +2 -3
  171. package/src/intervalIndex/sequenceIntervalIndexes.ts +2 -2
  172. package/src/intervalIndex/startpointInRangeIndex.ts +17 -29
  173. package/src/intervals/index.ts +0 -3
  174. package/src/intervals/intervalUtils.ts +3 -38
  175. package/src/intervals/sequenceInterval.ts +2 -12
  176. package/src/packageVersion.ts +1 -1
  177. package/src/sequence.ts +8 -20
  178. package/src/sharedIntervalCollection.ts +5 -183
  179. package/src/sharedString.ts +6 -24
  180. package/dist/intervals/interval.d.ts +0 -76
  181. package/dist/intervals/interval.d.ts.map +0 -1
  182. package/dist/intervals/interval.js +0 -167
  183. package/dist/intervals/interval.js.map +0 -1
  184. package/lib/intervals/interval.d.ts +0 -76
  185. package/lib/intervals/interval.d.ts.map +0 -1
  186. package/lib/intervals/interval.js +0 -162
  187. package/lib/intervals/interval.js.map +0 -1
  188. package/prettier.config.cjs +0 -8
  189. package/src/intervals/interval.ts +0 -226
@@ -1,76 +0,0 @@
1
- /*!
2
- * Copyright (c) Microsoft Corporation and contributors. All rights reserved.
3
- * Licensed under the MIT License.
4
- */
5
- import { ISequencedDocumentMessage } from "@fluidframework/driver-definitions/internal";
6
- import { PropertiesManager, PropertySet, SequencePlace } from "@fluidframework/merge-tree/internal";
7
- import { IIntervalHelpers, ISerializableInterval, ISerializedInterval } from "./intervalUtils.js";
8
- /**
9
- * Serializable interval whose endpoints are plain-old numbers.
10
- * @internal
11
- */
12
- export declare class Interval implements ISerializableInterval {
13
- start: number;
14
- end: number;
15
- /**
16
- * {@inheritDoc ISerializableInterval.properties}
17
- */
18
- properties: PropertySet;
19
- /***/
20
- auxProps: PropertySet[] | undefined;
21
- propertyManager?: PropertiesManager;
22
- constructor(start: number, end: number, props?: PropertySet);
23
- /**
24
- * {@inheritDoc ISerializableInterval.getIntervalId}
25
- */
26
- getIntervalId(): string;
27
- /**
28
- * @returns an array containing any auxiliary property sets added with `addPropertySet`.
29
- */
30
- getAdditionalPropertySets(): PropertySet[];
31
- /**
32
- * Adds an auxiliary set of properties to this interval.
33
- * These properties can be recovered using `getAdditionalPropertySets`
34
- * @param props - set of properties to add
35
- * @remarks This gets called as part of the default conflict resolver for `IIntervalCollection<Interval>`
36
- * (i.e. non-sequence-based interval collections). However, the additional properties don't get serialized.
37
- * This functionality seems half-baked.
38
- */
39
- addPropertySet(props: PropertySet): void;
40
- /**
41
- * {@inheritDoc ISerializableInterval.serialize}
42
- */
43
- serialize(): ISerializedInterval;
44
- /**
45
- * {@inheritDoc IInterval.clone}
46
- */
47
- clone(): Interval;
48
- /**
49
- * {@inheritDoc IInterval.compare}
50
- */
51
- compare(b: Interval): number;
52
- /**
53
- * {@inheritDoc IInterval.compareStart}
54
- */
55
- compareStart(b: Interval): number;
56
- /**
57
- * {@inheritDoc IInterval.compareEnd}
58
- */
59
- compareEnd(b: Interval): number;
60
- /**
61
- * {@inheritDoc IInterval.overlaps}
62
- */
63
- overlaps(b: Interval): boolean;
64
- /**
65
- * {@inheritDoc IInterval.union}
66
- */
67
- union(b: Interval): Interval;
68
- getProperties(): PropertySet;
69
- /**
70
- * {@inheritDoc IInterval.modify}
71
- */
72
- modify(label: string, start?: SequencePlace, end?: SequencePlace, op?: ISequencedDocumentMessage): Interval | undefined;
73
- }
74
- export declare function createInterval(label: string, start: SequencePlace, end: SequencePlace): Interval;
75
- export declare const intervalHelpers: IIntervalHelpers<Interval>;
76
- //# sourceMappingURL=interval.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"interval.d.ts","sourceRoot":"","sources":["../../src/intervals/interval.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAKH,OAAO,EAAE,yBAAyB,EAAE,MAAM,6CAA6C,CAAC;AACxF,OAAO,EACN,iBAAiB,EACjB,WAAW,EAGX,aAAa,EAGb,MAAM,qCAAqC,CAAC;AAK7C,OAAO,EACN,gBAAgB,EAChB,qBAAqB,EACrB,mBAAmB,EACnB,MAAM,oBAAoB,CAAC;AAE5B;;;GAGG;AACH,qBAAa,QAAS,YAAW,qBAAqB;IAY7C,KAAK,EAAE,MAAM;IACb,GAAG,EAAE,MAAM;IAZnB;;OAEG;IACI,UAAU,EAAE,WAAW,CAAoB;IAElD,KAAK;IACE,QAAQ,EAAE,WAAW,EAAE,GAAG,SAAS,CAAC;IAEpC,eAAe,CAAC,EAAE,iBAAiB,CAAC;gBAGnC,KAAK,EAAE,MAAM,EACb,GAAG,EAAE,MAAM,EAClB,KAAK,CAAC,EAAE,WAAW;IAOpB;;OAEG;IACI,aAAa,IAAI,MAAM;IAM9B;;OAEG;IACI,yBAAyB,IAAI,WAAW,EAAE;IAIjD;;;;;;;OAOG;IACI,cAAc,CAAC,KAAK,EAAE,WAAW;IAOxC;;OAEG;IACI,SAAS,IAAI,mBAAmB;IAgBvC;;OAEG;IACI,KAAK;IAIZ;;OAEG;IACI,OAAO,CAAC,CAAC,EAAE,QAAQ;IAsB1B;;OAEG;IACI,YAAY,CAAC,CAAC,EAAE,QAAQ;IAI/B;;OAEG;IACI,UAAU,CAAC,CAAC,EAAE,QAAQ;IAI7B;;OAEG;IACI,QAAQ,CAAC,CAAC,EAAE,QAAQ;IAK3B;;OAEG;IACI,KAAK,CAAC,CAAC,EAAE,QAAQ;IAQjB,aAAa;IAIpB;;OAEG;IACI,MAAM,CACZ,KAAK,EAAE,MAAM,EACb,KAAK,CAAC,EAAE,aAAa,EACrB,GAAG,CAAC,EAAE,aAAa,EACnB,EAAE,CAAC,EAAE,yBAAyB;CAmB/B;AAED,wBAAgB,cAAc,CAC7B,KAAK,EAAE,MAAM,EACb,KAAK,EAAE,aAAa,EACpB,GAAG,EAAE,aAAa,GAChB,QAAQ,CAiBV;AAED,eAAO,MAAM,eAAe,EAAE,gBAAgB,CAAC,QAAQ,CAEtD,CAAC"}
@@ -1,162 +0,0 @@
1
- /*!
2
- * Copyright (c) Microsoft Corporation and contributors. All rights reserved.
3
- * Licensed under the MIT License.
4
- */
5
- /* eslint-disable import/no-deprecated */
6
- import { assert } from "@fluidframework/core-utils/internal";
7
- import { createMap, reservedRangeLabelsKey, addProperties, copyPropertiesAndManager, } from "@fluidframework/merge-tree/internal";
8
- import { UsageError } from "@fluidframework/telemetry-utils/internal";
9
- import { reservedIntervalIdKey } from "../intervalCollection.js";
10
- /**
11
- * Serializable interval whose endpoints are plain-old numbers.
12
- * @internal
13
- */
14
- export class Interval {
15
- constructor(start, end, props) {
16
- this.start = start;
17
- this.end = end;
18
- /**
19
- * {@inheritDoc ISerializableInterval.properties}
20
- */
21
- this.properties = createMap();
22
- if (props) {
23
- this.properties = addProperties(this.properties, props);
24
- }
25
- }
26
- /**
27
- * {@inheritDoc ISerializableInterval.getIntervalId}
28
- */
29
- getIntervalId() {
30
- const id = this.properties?.[reservedIntervalIdKey];
31
- assert(id !== undefined, 0x5e1 /* interval ID should not be undefined */);
32
- return `${id}`;
33
- }
34
- /**
35
- * @returns an array containing any auxiliary property sets added with `addPropertySet`.
36
- */
37
- getAdditionalPropertySets() {
38
- return this.auxProps ?? [];
39
- }
40
- /**
41
- * Adds an auxiliary set of properties to this interval.
42
- * These properties can be recovered using `getAdditionalPropertySets`
43
- * @param props - set of properties to add
44
- * @remarks This gets called as part of the default conflict resolver for `IIntervalCollection<Interval>`
45
- * (i.e. non-sequence-based interval collections). However, the additional properties don't get serialized.
46
- * This functionality seems half-baked.
47
- */
48
- addPropertySet(props) {
49
- if (this.auxProps === undefined) {
50
- this.auxProps = [];
51
- }
52
- this.auxProps.push(props);
53
- }
54
- /**
55
- * {@inheritDoc ISerializableInterval.serialize}
56
- */
57
- serialize() {
58
- const serializedInterval = {
59
- end: this.end,
60
- intervalType: 0,
61
- sequenceNumber: 0,
62
- start: this.start,
63
- };
64
- if (this.properties) {
65
- serializedInterval.properties = addProperties(serializedInterval.properties, this.properties);
66
- }
67
- return serializedInterval;
68
- }
69
- /**
70
- * {@inheritDoc IInterval.clone}
71
- */
72
- clone() {
73
- return new Interval(this.start, this.end, this.properties);
74
- }
75
- /**
76
- * {@inheritDoc IInterval.compare}
77
- */
78
- compare(b) {
79
- const startResult = this.compareStart(b);
80
- if (startResult === 0) {
81
- const endResult = this.compareEnd(b);
82
- if (endResult === 0) {
83
- const thisId = this.getIntervalId();
84
- if (thisId) {
85
- const bId = b.getIntervalId();
86
- if (bId) {
87
- return thisId > bId ? 1 : thisId < bId ? -1 : 0;
88
- }
89
- return 0;
90
- }
91
- return 0;
92
- }
93
- else {
94
- return endResult;
95
- }
96
- }
97
- else {
98
- return startResult;
99
- }
100
- }
101
- /**
102
- * {@inheritDoc IInterval.compareStart}
103
- */
104
- compareStart(b) {
105
- return this.start - b.start;
106
- }
107
- /**
108
- * {@inheritDoc IInterval.compareEnd}
109
- */
110
- compareEnd(b) {
111
- return this.end - b.end;
112
- }
113
- /**
114
- * {@inheritDoc IInterval.overlaps}
115
- */
116
- overlaps(b) {
117
- const result = this.start <= b.end && this.end >= b.start;
118
- return result;
119
- }
120
- /**
121
- * {@inheritDoc IInterval.union}
122
- */
123
- union(b) {
124
- return new Interval(Math.min(this.start, b.start), Math.max(this.end, b.end), this.properties);
125
- }
126
- getProperties() {
127
- return this.properties;
128
- }
129
- /**
130
- * {@inheritDoc IInterval.modify}
131
- */
132
- modify(label, start, end, op) {
133
- if (typeof start === "string" || typeof end === "string") {
134
- throw new UsageError("The start and end positions of a plain interval may not be on the special endpoint segments.");
135
- }
136
- const startPos = typeof start === "number" ? start : (start?.pos ?? this.start);
137
- const endPos = typeof end === "number" ? end : (end?.pos ?? this.end);
138
- if (this.start === startPos && this.end === endPos) {
139
- // Return undefined to indicate that no change is necessary.
140
- return;
141
- }
142
- const newInterval = new Interval(startPos, endPos);
143
- copyPropertiesAndManager(this, newInterval);
144
- return newInterval;
145
- }
146
- }
147
- export function createInterval(label, start, end) {
148
- if (typeof start === "string" || typeof end === "string") {
149
- throw new UsageError("The start and end positions of a plain interval may not be on the special endpoint segments.");
150
- }
151
- const rangeProp = {};
152
- if (label && label.length > 0) {
153
- rangeProp[reservedRangeLabelsKey] = [label];
154
- }
155
- const startPos = typeof start === "number" ? start : start.pos;
156
- const endPos = typeof end === "number" ? end : end.pos;
157
- return new Interval(startPos, endPos, rangeProp);
158
- }
159
- export const intervalHelpers = {
160
- create: createInterval,
161
- };
162
- //# sourceMappingURL=interval.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"interval.js","sourceRoot":"","sources":["../../src/intervals/interval.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 import/no-deprecated */\n\nimport { assert } from \"@fluidframework/core-utils/internal\";\nimport { ISequencedDocumentMessage } from \"@fluidframework/driver-definitions/internal\";\nimport {\n\tPropertiesManager,\n\tPropertySet,\n\tcreateMap,\n\treservedRangeLabelsKey,\n\tSequencePlace,\n\taddProperties,\n\tcopyPropertiesAndManager,\n} from \"@fluidframework/merge-tree/internal\";\nimport { UsageError } from \"@fluidframework/telemetry-utils/internal\";\n\nimport { reservedIntervalIdKey } from \"../intervalCollection.js\";\n\nimport {\n\tIIntervalHelpers,\n\tISerializableInterval,\n\tISerializedInterval,\n} from \"./intervalUtils.js\";\n\n/**\n * Serializable interval whose endpoints are plain-old numbers.\n * @internal\n */\nexport class Interval implements ISerializableInterval {\n\t/**\n\t * {@inheritDoc ISerializableInterval.properties}\n\t */\n\tpublic properties: PropertySet = createMap<any>();\n\n\t/***/\n\tpublic auxProps: PropertySet[] | undefined;\n\n\tpublic propertyManager?: PropertiesManager;\n\n\tconstructor(\n\t\tpublic start: number,\n\t\tpublic end: number,\n\t\tprops?: PropertySet,\n\t) {\n\t\tif (props) {\n\t\t\tthis.properties = addProperties(this.properties, props);\n\t\t}\n\t}\n\n\t/**\n\t * {@inheritDoc ISerializableInterval.getIntervalId}\n\t */\n\tpublic getIntervalId(): string {\n\t\tconst id = this.properties?.[reservedIntervalIdKey];\n\t\tassert(id !== undefined, 0x5e1 /* interval ID should not be undefined */);\n\t\treturn `${id}`;\n\t}\n\n\t/**\n\t * @returns an array containing any auxiliary property sets added with `addPropertySet`.\n\t */\n\tpublic getAdditionalPropertySets(): PropertySet[] {\n\t\treturn this.auxProps ?? [];\n\t}\n\n\t/**\n\t * Adds an auxiliary set of properties to this interval.\n\t * These properties can be recovered using `getAdditionalPropertySets`\n\t * @param props - set of properties to add\n\t * @remarks This gets called as part of the default conflict resolver for `IIntervalCollection<Interval>`\n\t * (i.e. non-sequence-based interval collections). However, the additional properties don't get serialized.\n\t * This functionality seems half-baked.\n\t */\n\tpublic addPropertySet(props: PropertySet) {\n\t\tif (this.auxProps === undefined) {\n\t\t\tthis.auxProps = [];\n\t\t}\n\t\tthis.auxProps.push(props);\n\t}\n\n\t/**\n\t * {@inheritDoc ISerializableInterval.serialize}\n\t */\n\tpublic serialize(): ISerializedInterval {\n\t\tconst serializedInterval: ISerializedInterval = {\n\t\t\tend: this.end,\n\t\t\tintervalType: 0,\n\t\t\tsequenceNumber: 0,\n\t\t\tstart: this.start,\n\t\t};\n\t\tif (this.properties) {\n\t\t\tserializedInterval.properties = addProperties(\n\t\t\t\tserializedInterval.properties,\n\t\t\t\tthis.properties,\n\t\t\t);\n\t\t}\n\t\treturn serializedInterval;\n\t}\n\n\t/**\n\t * {@inheritDoc IInterval.clone}\n\t */\n\tpublic clone() {\n\t\treturn new Interval(this.start, this.end, this.properties);\n\t}\n\n\t/**\n\t * {@inheritDoc IInterval.compare}\n\t */\n\tpublic compare(b: Interval) {\n\t\tconst startResult = this.compareStart(b);\n\t\tif (startResult === 0) {\n\t\t\tconst endResult = this.compareEnd(b);\n\t\t\tif (endResult === 0) {\n\t\t\t\tconst thisId = this.getIntervalId();\n\t\t\t\tif (thisId) {\n\t\t\t\t\tconst bId = b.getIntervalId();\n\t\t\t\t\tif (bId) {\n\t\t\t\t\t\treturn thisId > bId ? 1 : thisId < bId ? -1 : 0;\n\t\t\t\t\t}\n\t\t\t\t\treturn 0;\n\t\t\t\t}\n\t\t\t\treturn 0;\n\t\t\t} else {\n\t\t\t\treturn endResult;\n\t\t\t}\n\t\t} else {\n\t\t\treturn startResult;\n\t\t}\n\t}\n\n\t/**\n\t * {@inheritDoc IInterval.compareStart}\n\t */\n\tpublic compareStart(b: Interval) {\n\t\treturn this.start - b.start;\n\t}\n\n\t/**\n\t * {@inheritDoc IInterval.compareEnd}\n\t */\n\tpublic compareEnd(b: Interval) {\n\t\treturn this.end - b.end;\n\t}\n\n\t/**\n\t * {@inheritDoc IInterval.overlaps}\n\t */\n\tpublic overlaps(b: Interval) {\n\t\tconst result = this.start <= b.end && this.end >= b.start;\n\t\treturn result;\n\t}\n\n\t/**\n\t * {@inheritDoc IInterval.union}\n\t */\n\tpublic union(b: Interval) {\n\t\treturn new Interval(\n\t\t\tMath.min(this.start, b.start),\n\t\t\tMath.max(this.end, b.end),\n\t\t\tthis.properties,\n\t\t);\n\t}\n\n\tpublic getProperties() {\n\t\treturn this.properties;\n\t}\n\n\t/**\n\t * {@inheritDoc IInterval.modify}\n\t */\n\tpublic modify(\n\t\tlabel: string,\n\t\tstart?: SequencePlace,\n\t\tend?: SequencePlace,\n\t\top?: ISequencedDocumentMessage,\n\t) {\n\t\tif (typeof start === \"string\" || typeof end === \"string\") {\n\t\t\tthrow new UsageError(\n\t\t\t\t\"The start and end positions of a plain interval may not be on the special endpoint segments.\",\n\t\t\t);\n\t\t}\n\n\t\tconst startPos = typeof start === \"number\" ? start : (start?.pos ?? this.start);\n\t\tconst endPos = typeof end === \"number\" ? end : (end?.pos ?? this.end);\n\n\t\tif (this.start === startPos && this.end === endPos) {\n\t\t\t// Return undefined to indicate that no change is necessary.\n\t\t\treturn;\n\t\t}\n\t\tconst newInterval = new Interval(startPos, endPos);\n\t\tcopyPropertiesAndManager(this, newInterval);\n\t\treturn newInterval;\n\t}\n}\n\nexport function createInterval(\n\tlabel: string,\n\tstart: SequencePlace,\n\tend: SequencePlace,\n): Interval {\n\tif (typeof start === \"string\" || typeof end === \"string\") {\n\t\tthrow new UsageError(\n\t\t\t\"The start and end positions of a plain interval may not be on the special endpoint segments.\",\n\t\t);\n\t}\n\n\tconst rangeProp: PropertySet = {};\n\n\tif (label && label.length > 0) {\n\t\trangeProp[reservedRangeLabelsKey] = [label];\n\t}\n\n\tconst startPos = typeof start === \"number\" ? start : start.pos;\n\tconst endPos = typeof end === \"number\" ? end : end.pos;\n\n\treturn new Interval(startPos, endPos, rangeProp);\n}\n\nexport const intervalHelpers: IIntervalHelpers<Interval> = {\n\tcreate: createInterval,\n};\n"]}
@@ -1,8 +0,0 @@
1
- /*!
2
- * Copyright (c) Microsoft Corporation and contributors. All rights reserved.
3
- * Licensed under the MIT License.
4
- */
5
-
6
- module.exports = {
7
- ...require("@fluidframework/build-common/prettier.config.cjs"),
8
- };
@@ -1,226 +0,0 @@
1
- /*!
2
- * Copyright (c) Microsoft Corporation and contributors. All rights reserved.
3
- * Licensed under the MIT License.
4
- */
5
-
6
- /* eslint-disable import/no-deprecated */
7
-
8
- import { assert } from "@fluidframework/core-utils/internal";
9
- import { ISequencedDocumentMessage } from "@fluidframework/driver-definitions/internal";
10
- import {
11
- PropertiesManager,
12
- PropertySet,
13
- createMap,
14
- reservedRangeLabelsKey,
15
- SequencePlace,
16
- addProperties,
17
- copyPropertiesAndManager,
18
- } from "@fluidframework/merge-tree/internal";
19
- import { UsageError } from "@fluidframework/telemetry-utils/internal";
20
-
21
- import { reservedIntervalIdKey } from "../intervalCollection.js";
22
-
23
- import {
24
- IIntervalHelpers,
25
- ISerializableInterval,
26
- ISerializedInterval,
27
- } from "./intervalUtils.js";
28
-
29
- /**
30
- * Serializable interval whose endpoints are plain-old numbers.
31
- * @internal
32
- */
33
- export class Interval implements ISerializableInterval {
34
- /**
35
- * {@inheritDoc ISerializableInterval.properties}
36
- */
37
- public properties: PropertySet = createMap<any>();
38
-
39
- /***/
40
- public auxProps: PropertySet[] | undefined;
41
-
42
- public propertyManager?: PropertiesManager;
43
-
44
- constructor(
45
- public start: number,
46
- public end: number,
47
- props?: PropertySet,
48
- ) {
49
- if (props) {
50
- this.properties = addProperties(this.properties, props);
51
- }
52
- }
53
-
54
- /**
55
- * {@inheritDoc ISerializableInterval.getIntervalId}
56
- */
57
- public getIntervalId(): string {
58
- const id = this.properties?.[reservedIntervalIdKey];
59
- assert(id !== undefined, 0x5e1 /* interval ID should not be undefined */);
60
- return `${id}`;
61
- }
62
-
63
- /**
64
- * @returns an array containing any auxiliary property sets added with `addPropertySet`.
65
- */
66
- public getAdditionalPropertySets(): PropertySet[] {
67
- return this.auxProps ?? [];
68
- }
69
-
70
- /**
71
- * Adds an auxiliary set of properties to this interval.
72
- * These properties can be recovered using `getAdditionalPropertySets`
73
- * @param props - set of properties to add
74
- * @remarks This gets called as part of the default conflict resolver for `IIntervalCollection<Interval>`
75
- * (i.e. non-sequence-based interval collections). However, the additional properties don't get serialized.
76
- * This functionality seems half-baked.
77
- */
78
- public addPropertySet(props: PropertySet) {
79
- if (this.auxProps === undefined) {
80
- this.auxProps = [];
81
- }
82
- this.auxProps.push(props);
83
- }
84
-
85
- /**
86
- * {@inheritDoc ISerializableInterval.serialize}
87
- */
88
- public serialize(): ISerializedInterval {
89
- const serializedInterval: ISerializedInterval = {
90
- end: this.end,
91
- intervalType: 0,
92
- sequenceNumber: 0,
93
- start: this.start,
94
- };
95
- if (this.properties) {
96
- serializedInterval.properties = addProperties(
97
- serializedInterval.properties,
98
- this.properties,
99
- );
100
- }
101
- return serializedInterval;
102
- }
103
-
104
- /**
105
- * {@inheritDoc IInterval.clone}
106
- */
107
- public clone() {
108
- return new Interval(this.start, this.end, this.properties);
109
- }
110
-
111
- /**
112
- * {@inheritDoc IInterval.compare}
113
- */
114
- public compare(b: Interval) {
115
- const startResult = this.compareStart(b);
116
- if (startResult === 0) {
117
- const endResult = this.compareEnd(b);
118
- if (endResult === 0) {
119
- const thisId = this.getIntervalId();
120
- if (thisId) {
121
- const bId = b.getIntervalId();
122
- if (bId) {
123
- return thisId > bId ? 1 : thisId < bId ? -1 : 0;
124
- }
125
- return 0;
126
- }
127
- return 0;
128
- } else {
129
- return endResult;
130
- }
131
- } else {
132
- return startResult;
133
- }
134
- }
135
-
136
- /**
137
- * {@inheritDoc IInterval.compareStart}
138
- */
139
- public compareStart(b: Interval) {
140
- return this.start - b.start;
141
- }
142
-
143
- /**
144
- * {@inheritDoc IInterval.compareEnd}
145
- */
146
- public compareEnd(b: Interval) {
147
- return this.end - b.end;
148
- }
149
-
150
- /**
151
- * {@inheritDoc IInterval.overlaps}
152
- */
153
- public overlaps(b: Interval) {
154
- const result = this.start <= b.end && this.end >= b.start;
155
- return result;
156
- }
157
-
158
- /**
159
- * {@inheritDoc IInterval.union}
160
- */
161
- public union(b: Interval) {
162
- return new Interval(
163
- Math.min(this.start, b.start),
164
- Math.max(this.end, b.end),
165
- this.properties,
166
- );
167
- }
168
-
169
- public getProperties() {
170
- return this.properties;
171
- }
172
-
173
- /**
174
- * {@inheritDoc IInterval.modify}
175
- */
176
- public modify(
177
- label: string,
178
- start?: SequencePlace,
179
- end?: SequencePlace,
180
- op?: ISequencedDocumentMessage,
181
- ) {
182
- if (typeof start === "string" || typeof end === "string") {
183
- throw new UsageError(
184
- "The start and end positions of a plain interval may not be on the special endpoint segments.",
185
- );
186
- }
187
-
188
- const startPos = typeof start === "number" ? start : (start?.pos ?? this.start);
189
- const endPos = typeof end === "number" ? end : (end?.pos ?? this.end);
190
-
191
- if (this.start === startPos && this.end === endPos) {
192
- // Return undefined to indicate that no change is necessary.
193
- return;
194
- }
195
- const newInterval = new Interval(startPos, endPos);
196
- copyPropertiesAndManager(this, newInterval);
197
- return newInterval;
198
- }
199
- }
200
-
201
- export function createInterval(
202
- label: string,
203
- start: SequencePlace,
204
- end: SequencePlace,
205
- ): Interval {
206
- if (typeof start === "string" || typeof end === "string") {
207
- throw new UsageError(
208
- "The start and end positions of a plain interval may not be on the special endpoint segments.",
209
- );
210
- }
211
-
212
- const rangeProp: PropertySet = {};
213
-
214
- if (label && label.length > 0) {
215
- rangeProp[reservedRangeLabelsKey] = [label];
216
- }
217
-
218
- const startPos = typeof start === "number" ? start : start.pos;
219
- const endPos = typeof end === "number" ? end : end.pos;
220
-
221
- return new Interval(startPos, endPos, rangeProp);
222
- }
223
-
224
- export const intervalHelpers: IIntervalHelpers<Interval> = {
225
- create: createInterval,
226
- };