@fluidframework/sequence 2.0.0-internal.7.3.0 → 2.0.0-internal.8.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +168 -0
- package/api-extractor-lint.json +13 -0
- package/api-extractor.json +8 -3
- package/api-report/sequence.api.md +138 -113
- package/dist/defaultMap.d.ts +3 -3
- package/dist/defaultMap.d.ts.map +1 -1
- package/dist/defaultMap.js +7 -2
- package/dist/defaultMap.js.map +1 -1
- package/dist/defaultMapInterfaces.d.ts +12 -11
- package/dist/defaultMapInterfaces.d.ts.map +1 -1
- package/dist/defaultMapInterfaces.js.map +1 -1
- package/dist/index.d.ts +1 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +11 -1
- package/dist/index.js.map +1 -1
- package/dist/intervalCollection.d.ts +70 -16
- package/dist/intervalCollection.d.ts.map +1 -1
- package/dist/intervalCollection.js +50 -45
- package/dist/intervalCollection.js.map +1 -1
- package/dist/intervalIndex/endpointInRangeIndex.d.ts +2 -2
- package/dist/intervalIndex/endpointInRangeIndex.js +1 -1
- package/dist/intervalIndex/endpointInRangeIndex.js.map +1 -1
- package/dist/intervalIndex/endpointIndex.d.ts +2 -2
- package/dist/intervalIndex/endpointIndex.js +1 -1
- package/dist/intervalIndex/endpointIndex.js.map +1 -1
- package/dist/intervalIndex/idIntervalIndex.d.ts +2 -2
- package/dist/intervalIndex/idIntervalIndex.js +1 -1
- package/dist/intervalIndex/idIntervalIndex.js.map +1 -1
- package/dist/intervalIndex/intervalIndex.d.ts +1 -1
- package/dist/intervalIndex/intervalIndex.js.map +1 -1
- package/dist/intervalIndex/overlappingIntervalsIndex.d.ts +2 -2
- package/dist/intervalIndex/overlappingIntervalsIndex.js +1 -1
- package/dist/intervalIndex/overlappingIntervalsIndex.js.map +1 -1
- package/dist/intervalIndex/overlappingSequenceIntervalsIndex.d.ts +1 -1
- package/dist/intervalIndex/overlappingSequenceIntervalsIndex.js +1 -1
- package/dist/intervalIndex/overlappingSequenceIntervalsIndex.js.map +1 -1
- package/dist/intervalIndex/sequenceIntervalIndexes.d.ts +2 -1
- package/dist/intervalIndex/sequenceIntervalIndexes.d.ts.map +1 -1
- package/dist/intervalIndex/sequenceIntervalIndexes.js.map +1 -1
- package/dist/intervalIndex/startpointInRangeIndex.d.ts +2 -2
- package/dist/intervalIndex/startpointInRangeIndex.js +1 -1
- package/dist/intervalIndex/startpointInRangeIndex.js.map +1 -1
- package/dist/intervalTree.d.ts +1 -2
- package/dist/intervalTree.d.ts.map +1 -1
- package/dist/intervalTree.js +1 -3
- package/dist/intervalTree.js.map +1 -1
- package/dist/intervals/interval.d.ts +5 -11
- package/dist/intervals/interval.d.ts.map +1 -1
- package/dist/intervals/interval.js +10 -18
- package/dist/intervals/interval.js.map +1 -1
- package/dist/intervals/intervalUtils.d.ts +15 -18
- package/dist/intervals/intervalUtils.d.ts.map +1 -1
- package/dist/intervals/intervalUtils.js +3 -8
- package/dist/intervals/intervalUtils.js.map +1 -1
- package/dist/intervals/sequenceInterval.d.ts +5 -15
- package/dist/intervals/sequenceInterval.d.ts.map +1 -1
- package/dist/intervals/sequenceInterval.js +12 -28
- package/dist/intervals/sequenceInterval.js.map +1 -1
- package/dist/localValues.d.ts +2 -1
- package/dist/localValues.d.ts.map +1 -1
- package/dist/localValues.js.map +1 -1
- package/dist/packageVersion.d.ts +1 -1
- package/dist/packageVersion.js +1 -1
- package/dist/packageVersion.js.map +1 -1
- package/dist/revertibles.d.ts +9 -15
- package/dist/revertibles.d.ts.map +1 -1
- package/dist/revertibles.js +14 -10
- package/dist/revertibles.js.map +1 -1
- package/dist/sequence-alpha.d.ts +283 -552
- package/dist/sequence-beta.d.ts +139 -1373
- package/dist/sequence-public.d.ts +139 -1373
- package/dist/sequence-untrimmed.d.ts +186 -141
- package/dist/sequence.d.ts +26 -24
- package/dist/sequence.d.ts.map +1 -1
- package/dist/sequence.js +38 -23
- package/dist/sequence.js.map +1 -1
- package/dist/sequenceDeltaEvent.d.ts +4 -4
- package/dist/sequenceDeltaEvent.d.ts.map +1 -1
- package/dist/sequenceDeltaEvent.js +14 -7
- package/dist/sequenceDeltaEvent.js.map +1 -1
- package/dist/sequenceFactory.d.ts +1 -1
- package/dist/sequenceFactory.js +1 -1
- package/dist/sequenceFactory.js.map +1 -1
- package/dist/sharedIntervalCollection.d.ts +3 -3
- package/dist/sharedIntervalCollection.js +2 -2
- package/dist/sharedIntervalCollection.js.map +1 -1
- package/dist/sharedSequence.d.ts +4 -4
- package/dist/sharedSequence.d.ts.map +1 -1
- package/dist/sharedSequence.js +8 -2
- package/dist/sharedSequence.js.map +1 -1
- package/dist/sharedString.d.ts +9 -18
- package/dist/sharedString.d.ts.map +1 -1
- package/dist/sharedString.js +9 -21
- package/dist/sharedString.js.map +1 -1
- package/lib/defaultMap.d.ts +3 -3
- package/lib/defaultMap.d.ts.map +1 -1
- package/lib/defaultMap.js +29 -20
- package/lib/defaultMap.js.map +1 -1
- package/lib/defaultMapInterfaces.d.ts +12 -11
- package/lib/defaultMapInterfaces.d.ts.map +1 -1
- package/lib/defaultMapInterfaces.js +2 -1
- package/lib/defaultMapInterfaces.js.map +1 -1
- package/lib/index.d.ts +1 -0
- package/lib/index.d.ts.map +1 -1
- package/lib/index.js +55 -10
- package/lib/index.js.map +1 -1
- package/lib/intervalCollection.d.ts +70 -16
- package/lib/intervalCollection.d.ts.map +1 -1
- package/lib/intervalCollection.js +174 -156
- package/lib/intervalCollection.js.map +1 -1
- package/lib/intervalIndex/endpointInRangeIndex.d.ts +2 -2
- package/lib/intervalIndex/endpointInRangeIndex.js +18 -13
- package/lib/intervalIndex/endpointInRangeIndex.js.map +1 -1
- package/lib/intervalIndex/endpointIndex.d.ts +2 -2
- package/lib/intervalIndex/endpointIndex.js +14 -9
- package/lib/intervalIndex/endpointIndex.js.map +1 -1
- package/lib/intervalIndex/idIntervalIndex.d.ts +2 -2
- package/lib/intervalIndex/idIntervalIndex.js +9 -5
- package/lib/intervalIndex/idIntervalIndex.js.map +1 -1
- package/lib/intervalIndex/index.js +19 -6
- package/lib/intervalIndex/index.js.map +1 -1
- package/lib/intervalIndex/intervalIndex.d.ts +1 -1
- package/lib/intervalIndex/intervalIndex.js +2 -1
- package/lib/intervalIndex/intervalIndex.js.map +1 -1
- package/lib/intervalIndex/intervalIndexUtils.js +8 -4
- package/lib/intervalIndex/intervalIndexUtils.js.map +1 -1
- package/lib/intervalIndex/overlappingIntervalsIndex.d.ts +2 -2
- package/lib/intervalIndex/overlappingIntervalsIndex.js +16 -11
- package/lib/intervalIndex/overlappingIntervalsIndex.js.map +1 -1
- package/lib/intervalIndex/overlappingSequenceIntervalsIndex.d.ts +1 -1
- package/lib/intervalIndex/overlappingSequenceIntervalsIndex.js +15 -11
- package/lib/intervalIndex/overlappingSequenceIntervalsIndex.js.map +1 -1
- package/lib/intervalIndex/sequenceIntervalIndexes.d.ts +2 -1
- package/lib/intervalIndex/sequenceIntervalIndexes.d.ts.map +1 -1
- package/lib/intervalIndex/sequenceIntervalIndexes.js +2 -1
- package/lib/intervalIndex/sequenceIntervalIndexes.js.map +1 -1
- package/lib/intervalIndex/startpointInRangeIndex.d.ts +2 -2
- package/lib/intervalIndex/startpointInRangeIndex.js +18 -13
- package/lib/intervalIndex/startpointInRangeIndex.js.map +1 -1
- package/lib/intervalTree.d.ts +1 -2
- package/lib/intervalTree.d.ts.map +1 -1
- package/lib/intervalTree.js +7 -4
- package/lib/intervalTree.js.map +1 -1
- package/lib/intervals/index.js +18 -3
- package/lib/intervals/index.js.map +1 -1
- package/lib/intervals/interval.d.ts +5 -11
- package/lib/intervals/interval.d.ts.map +1 -1
- package/lib/intervals/interval.js +26 -29
- package/lib/intervals/interval.js.map +1 -1
- package/lib/intervals/intervalUtils.d.ts +15 -18
- package/lib/intervals/intervalUtils.d.ts.map +1 -1
- package/lib/intervals/intervalUtils.js +21 -21
- package/lib/intervals/intervalUtils.js.map +1 -1
- package/lib/intervals/sequenceInterval.d.ts +5 -15
- package/lib/intervals/sequenceInterval.d.ts.map +1 -1
- package/lib/intervals/sequenceInterval.js +72 -82
- package/lib/intervals/sequenceInterval.js.map +1 -1
- package/lib/localValues.d.ts +2 -1
- package/lib/localValues.d.ts.map +1 -1
- package/lib/localValues.js +9 -4
- package/lib/localValues.js.map +1 -1
- package/lib/packageVersion.d.ts +1 -1
- package/lib/packageVersion.js +5 -2
- package/lib/packageVersion.js.map +1 -1
- package/lib/revertibles.d.ts +9 -15
- package/lib/revertibles.d.ts.map +1 -1
- package/lib/revertibles.js +83 -69
- package/lib/revertibles.js.map +1 -1
- package/lib/sequence-alpha.d.ts +283 -552
- package/lib/sequence-beta.d.ts +139 -1373
- package/lib/sequence-public.d.ts +139 -1373
- package/lib/sequence-untrimmed.d.ts +186 -141
- package/lib/sequence.d.ts +26 -24
- package/lib/sequence.d.ts.map +1 -1
- package/lib/sequence.js +81 -61
- package/lib/sequence.js.map +1 -1
- package/lib/sequenceDeltaEvent.d.ts +4 -4
- package/lib/sequenceDeltaEvent.d.ts.map +1 -1
- package/lib/sequenceDeltaEvent.js +27 -14
- package/lib/sequenceDeltaEvent.js.map +1 -1
- package/lib/sequenceFactory.d.ts +1 -1
- package/lib/sequenceFactory.js +14 -10
- package/lib/sequenceFactory.js.map +1 -1
- package/lib/sharedIntervalCollection.d.ts +3 -3
- package/lib/sharedIntervalCollection.js +20 -15
- package/lib/sharedIntervalCollection.js.map +1 -1
- package/lib/sharedSequence.d.ts +4 -4
- package/lib/sharedSequence.d.ts.map +1 -1
- package/lib/sharedSequence.js +19 -8
- package/lib/sharedSequence.js.map +1 -1
- package/lib/sharedString.d.ts +9 -18
- package/lib/sharedString.d.ts.map +1 -1
- package/lib/sharedString.js +30 -37
- package/lib/sharedString.js.map +1 -1
- package/package.json +44 -22
- package/sequence.test-files.tar +0 -0
- package/src/defaultMap.ts +22 -16
- package/src/defaultMapInterfaces.ts +17 -14
- package/src/index.ts +17 -0
- package/src/intervalCollection.ts +135 -71
- package/src/intervalIndex/endpointInRangeIndex.ts +2 -2
- package/src/intervalIndex/endpointIndex.ts +2 -2
- package/src/intervalIndex/idIntervalIndex.ts +2 -2
- package/src/intervalIndex/intervalIndex.ts +1 -1
- package/src/intervalIndex/overlappingIntervalsIndex.ts +2 -2
- package/src/intervalIndex/overlappingSequenceIntervalsIndex.ts +1 -1
- package/src/intervalIndex/sequenceIntervalIndexes.ts +2 -1
- package/src/intervalIndex/startpointInRangeIndex.ts +2 -2
- package/src/intervalTree.ts +0 -3
- package/src/intervals/interval.ts +7 -26
- package/src/intervals/intervalUtils.ts +17 -20
- package/src/intervals/sequenceInterval.ts +7 -35
- package/src/localValues.ts +2 -1
- package/src/packageVersion.ts +1 -1
- package/src/revertibles.ts +20 -19
- package/src/sequence.ts +61 -43
- package/src/sequenceDeltaEvent.ts +12 -6
- package/src/sequenceFactory.ts +1 -1
- package/src/sharedIntervalCollection.ts +3 -3
- package/src/sharedSequence.ts +12 -6
- package/src/sharedString.ts +21 -48
- package/tsconfig.json +1 -0
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@fluidframework/sequence",
|
|
3
|
-
"version": "2.0.0-internal.
|
|
3
|
+
"version": "2.0.0-internal.8.0.0",
|
|
4
4
|
"description": "Distributed sequence",
|
|
5
5
|
"homepage": "https://fluidframework.com",
|
|
6
6
|
"repository": {
|
|
@@ -35,34 +35,35 @@
|
|
|
35
35
|
"temp-directory": "nyc/.nyc_output"
|
|
36
36
|
},
|
|
37
37
|
"dependencies": {
|
|
38
|
-
"@fluid-internal/client-utils": ">=2.0.0-internal.
|
|
39
|
-
"@fluidframework/core-interfaces": ">=2.0.0-internal.
|
|
40
|
-
"@fluidframework/core-utils": ">=2.0.0-internal.
|
|
41
|
-
"@fluidframework/datastore-definitions": ">=2.0.0-internal.
|
|
42
|
-
"@fluidframework/merge-tree": ">=2.0.0-internal.
|
|
38
|
+
"@fluid-internal/client-utils": ">=2.0.0-internal.8.0.0 <2.0.0-internal.8.1.0",
|
|
39
|
+
"@fluidframework/core-interfaces": ">=2.0.0-internal.8.0.0 <2.0.0-internal.8.1.0",
|
|
40
|
+
"@fluidframework/core-utils": ">=2.0.0-internal.8.0.0 <2.0.0-internal.8.1.0",
|
|
41
|
+
"@fluidframework/datastore-definitions": ">=2.0.0-internal.8.0.0 <2.0.0-internal.8.1.0",
|
|
42
|
+
"@fluidframework/merge-tree": ">=2.0.0-internal.8.0.0 <2.0.0-internal.8.1.0",
|
|
43
43
|
"@fluidframework/protocol-definitions": "^3.0.0",
|
|
44
|
-
"@fluidframework/runtime-definitions": ">=2.0.0-internal.
|
|
45
|
-
"@fluidframework/runtime-utils": ">=2.0.0-internal.
|
|
46
|
-
"@fluidframework/shared-object-base": ">=2.0.0-internal.
|
|
47
|
-
"@fluidframework/telemetry-utils": ">=2.0.0-internal.
|
|
44
|
+
"@fluidframework/runtime-definitions": ">=2.0.0-internal.8.0.0 <2.0.0-internal.8.1.0",
|
|
45
|
+
"@fluidframework/runtime-utils": ">=2.0.0-internal.8.0.0 <2.0.0-internal.8.1.0",
|
|
46
|
+
"@fluidframework/shared-object-base": ">=2.0.0-internal.8.0.0 <2.0.0-internal.8.1.0",
|
|
47
|
+
"@fluidframework/telemetry-utils": ">=2.0.0-internal.8.0.0 <2.0.0-internal.8.1.0",
|
|
48
48
|
"uuid": "^9.0.0"
|
|
49
49
|
},
|
|
50
50
|
"devDependencies": {
|
|
51
|
-
"@
|
|
52
|
-
"@fluid-private/test-
|
|
51
|
+
"@arethetypeswrong/cli": "^0.13.3",
|
|
52
|
+
"@fluid-private/stochastic-test-utils": ">=2.0.0-internal.8.0.0 <2.0.0-internal.8.1.0",
|
|
53
|
+
"@fluid-private/test-dds-utils": ">=2.0.0-internal.8.0.0 <2.0.0-internal.8.1.0",
|
|
53
54
|
"@fluid-tools/benchmark": "^0.48.0",
|
|
54
55
|
"@fluid-tools/build-cli": "^0.28.0",
|
|
55
56
|
"@fluidframework/build-common": "^2.0.3",
|
|
56
57
|
"@fluidframework/build-tools": "^0.28.0",
|
|
57
58
|
"@fluidframework/eslint-config-fluid": "^3.1.0",
|
|
58
|
-
"@fluidframework/mocha-test-setup": ">=2.0.0-internal.
|
|
59
|
+
"@fluidframework/mocha-test-setup": ">=2.0.0-internal.8.0.0 <2.0.0-internal.8.1.0",
|
|
59
60
|
"@fluidframework/sequence-previous": "npm:@fluidframework/sequence@2.0.0-internal.7.2.0",
|
|
60
|
-
"@fluidframework/test-runtime-utils": ">=2.0.0-internal.
|
|
61
|
+
"@fluidframework/test-runtime-utils": ">=2.0.0-internal.8.0.0 <2.0.0-internal.8.1.0",
|
|
61
62
|
"@microsoft/api-extractor": "^7.38.3",
|
|
62
63
|
"@types/diff": "^3.5.1",
|
|
63
64
|
"@types/mocha": "^9.1.1",
|
|
64
|
-
"@types/node": "^
|
|
65
|
-
"@types/
|
|
65
|
+
"@types/node": "^18.19.0",
|
|
66
|
+
"@types/uuid": "^9.0.2",
|
|
66
67
|
"c8": "^7.7.1",
|
|
67
68
|
"copyfiles": "^2.4.1",
|
|
68
69
|
"cross-env": "^7.0.3",
|
|
@@ -73,7 +74,7 @@
|
|
|
73
74
|
"mocha-multi-reporters": "^1.5.1",
|
|
74
75
|
"moment": "^2.21.0",
|
|
75
76
|
"prettier": "~3.0.3",
|
|
76
|
-
"random-js": "^1.0
|
|
77
|
+
"random-js": "^2.1.0",
|
|
77
78
|
"rimraf": "^4.4.0",
|
|
78
79
|
"typescript": "~5.1.6"
|
|
79
80
|
},
|
|
@@ -94,7 +95,27 @@
|
|
|
94
95
|
}
|
|
95
96
|
},
|
|
96
97
|
"typeValidation": {
|
|
97
|
-
"broken": {
|
|
98
|
+
"broken": {
|
|
99
|
+
"InterfaceDeclaration_ISharedString": {
|
|
100
|
+
"forwardCompat": false,
|
|
101
|
+
"backCompat": false
|
|
102
|
+
},
|
|
103
|
+
"ClassDeclaration_SharedSegmentSequence": {
|
|
104
|
+
"forwardCompat": false,
|
|
105
|
+
"backCompat": false
|
|
106
|
+
},
|
|
107
|
+
"ClassDeclaration_SharedSequence": {
|
|
108
|
+
"forwardCompat": false,
|
|
109
|
+
"backCompat": false
|
|
110
|
+
},
|
|
111
|
+
"ClassDeclaration_SharedString": {
|
|
112
|
+
"forwardCompat": false,
|
|
113
|
+
"backCompat": false
|
|
114
|
+
},
|
|
115
|
+
"TypeAliasDeclaration_SharedStringSegment": {
|
|
116
|
+
"backCompat": false
|
|
117
|
+
}
|
|
118
|
+
}
|
|
98
119
|
},
|
|
99
120
|
"scripts": {
|
|
100
121
|
"api": "fluid-build . --task api",
|
|
@@ -107,17 +128,19 @@
|
|
|
107
128
|
"build:esnext": "tsc --project ./tsconfig.esnext.json",
|
|
108
129
|
"build:genver": "gen-version",
|
|
109
130
|
"build:test": "tsc --project ./src/test/tsconfig.json",
|
|
131
|
+
"check:are-the-types-wrong": "attw --pack",
|
|
132
|
+
"check:release-tags": "api-extractor run --local --config ./api-extractor-lint.json",
|
|
110
133
|
"ci:build:docs": "api-extractor run",
|
|
111
134
|
"clean": "rimraf --glob dist lib \"**/*.tsbuildinfo\" \"**/*.build.log\" _api-extractor-temp nyc",
|
|
112
135
|
"eslint": "eslint --format stylish src",
|
|
113
136
|
"eslint:fix": "eslint --format stylish src --fix --fix-type problem,suggestion,layout",
|
|
114
137
|
"format": "npm run prettier:fix",
|
|
115
|
-
"lint": "npm run prettier && npm run eslint",
|
|
138
|
+
"lint": "npm run prettier && npm run check:release-tags && npm run eslint",
|
|
116
139
|
"lint:fix": "npm run prettier:fix && npm run eslint:fix",
|
|
117
140
|
"perf": "cross-env FLUID_TEST_VERBOSE=1 mocha \"dist/**/*.spec.js\" --node-option unhandled-rejections=strict,expose-gc --exit -r node_modules/@fluidframework/mocha-test-setup --perfMode --fgrep @Benchmark --reporter @fluid-tools/benchmark/dist/MochaReporter.js --timeout 30000",
|
|
118
141
|
"perf:measure": "npm run perf -- --fgrep @Measurement",
|
|
119
|
-
"prettier": "prettier --check . --ignore-path ../../../.prettierignore",
|
|
120
|
-
"prettier:fix": "prettier --write . --ignore-path ../../../.prettierignore",
|
|
142
|
+
"prettier": "prettier --check . --cache --ignore-path ../../../.prettierignore",
|
|
143
|
+
"prettier:fix": "prettier --write . --cache --ignore-path ../../../.prettierignore",
|
|
121
144
|
"test": "npm run test:mocha",
|
|
122
145
|
"test:benchmark:report": "mocha \"dist/test/*.perf.spec.js\" --node-option unhandled-rejections=strict,expose-gc --exit --perfMode --fgrep @Benchmark -r @fluidframework/mocha-test-setup --reporter @fluid-tools/benchmark/dist/MochaReporter.js --timeout 60000",
|
|
123
146
|
"test:coverage": "c8 npm test",
|
|
@@ -127,7 +150,6 @@
|
|
|
127
150
|
"test:mocha:verbose": "cross-env FLUID_TEST_VERBOSE=1 npm run test:mocha",
|
|
128
151
|
"test:newsnapfiles": "node dist/test/createSnapshotFiles.js",
|
|
129
152
|
"test:stress": "cross-env FUZZ_TEST_COUNT=100 FUZZ_STRESS_RUN=true mocha --ignore \"dist/test/memory/**/*\" --recursive \"dist/test/**/*.fuzz.spec.js\" -r @fluidframework/mocha-test-setup",
|
|
130
|
-
"testfarm": "node dist/test/testFarm.js",
|
|
131
153
|
"tsc": "tsc",
|
|
132
154
|
"typetests:gen": "fluid-type-test-generator",
|
|
133
155
|
"typetests:prepare": "flub typetests --dir . --reset --previous --normalize"
|
|
Binary file
|
package/src/defaultMap.ts
CHANGED
|
@@ -18,6 +18,7 @@ import {
|
|
|
18
18
|
ISerializableValue,
|
|
19
19
|
ISerializedValue,
|
|
20
20
|
IValueChanged,
|
|
21
|
+
// eslint-disable-next-line import/no-deprecated
|
|
21
22
|
IValueOpEmitter,
|
|
22
23
|
IValueType,
|
|
23
24
|
IValueTypeOperationValue,
|
|
@@ -25,6 +26,7 @@ import {
|
|
|
25
26
|
IMapMessageLocalMetadata,
|
|
26
27
|
SequenceOptions,
|
|
27
28
|
} from "./defaultMapInterfaces";
|
|
29
|
+
import { IntervalOpType, SerializedIntervalDelta } from "./intervals";
|
|
28
30
|
|
|
29
31
|
/**
|
|
30
32
|
* Defines the means to process and submit a given op on a map.
|
|
@@ -131,7 +133,7 @@ export class DefaultMap<T> {
|
|
|
131
133
|
private readonly serializer: IFluidSerializer,
|
|
132
134
|
private readonly handle: IFluidHandle,
|
|
133
135
|
private readonly submitMessage: (
|
|
134
|
-
op:
|
|
136
|
+
op: IMapValueTypeOperation,
|
|
135
137
|
localOpMetadata: IMapMessageLocalMetadata,
|
|
136
138
|
) => void,
|
|
137
139
|
private readonly type: IValueType<T>,
|
|
@@ -292,21 +294,24 @@ export class DefaultMap<T> {
|
|
|
292
294
|
* also sent if we are asked to resubmit the message.
|
|
293
295
|
* @returns True if the operation was submitted, false otherwise.
|
|
294
296
|
*/
|
|
295
|
-
public tryResubmitMessage(
|
|
297
|
+
public tryResubmitMessage(
|
|
298
|
+
op: IMapOperation,
|
|
299
|
+
localOpMetadata: IMapMessageLocalMetadata,
|
|
300
|
+
): boolean {
|
|
296
301
|
const type: string = op.type;
|
|
297
302
|
const handler = this.messageHandlers.get(type);
|
|
298
303
|
if (handler !== undefined) {
|
|
299
|
-
handler.resubmit(op
|
|
304
|
+
handler.resubmit(op, localOpMetadata);
|
|
300
305
|
return true;
|
|
301
306
|
}
|
|
302
307
|
return false;
|
|
303
308
|
}
|
|
304
309
|
|
|
305
|
-
public tryGetStashedOpLocalMetadata(op:
|
|
310
|
+
public tryGetStashedOpLocalMetadata(op: IMapOperation): unknown {
|
|
306
311
|
const type: string = op.type;
|
|
307
312
|
if (this.messageHandlers.has(type)) {
|
|
308
313
|
// eslint-disable-next-line @typescript-eslint/no-non-null-assertion
|
|
309
|
-
return this.messageHandlers.get(type)!.getStashedOpLocalMetadata(op
|
|
314
|
+
return this.messageHandlers.get(type)!.getStashedOpLocalMetadata(op);
|
|
310
315
|
}
|
|
311
316
|
throw new Error("no apply stashed op handler");
|
|
312
317
|
}
|
|
@@ -406,12 +411,11 @@ export class DefaultMap<T> {
|
|
|
406
411
|
assert(localValue !== undefined, 0x3f8 /* Local value expected on resubmission */);
|
|
407
412
|
|
|
408
413
|
const handler = localValue.getOpHandler(op.value.opName);
|
|
409
|
-
const
|
|
410
|
-
|
|
411
|
-
|
|
412
|
-
|
|
413
|
-
|
|
414
|
-
this.submitMessage({ ...op, value: rebasedOp }, rebasedLocalOpMetadata);
|
|
414
|
+
const rebased = handler.rebase(localValue.value, op.value, localOpMetadata);
|
|
415
|
+
if (rebased !== undefined) {
|
|
416
|
+
const { rebasedOp, rebasedLocalOpMetadata } = rebased;
|
|
417
|
+
this.submitMessage({ ...op, value: rebasedOp }, rebasedLocalOpMetadata);
|
|
418
|
+
}
|
|
415
419
|
},
|
|
416
420
|
getStashedOpLocalMetadata: (op: IMapValueTypeOperation) => {
|
|
417
421
|
assert(
|
|
@@ -430,13 +434,15 @@ export class DefaultMap<T> {
|
|
|
430
434
|
* @param key - The key of the map that the value type will be stored on
|
|
431
435
|
* @returns A value op emitter for the given key
|
|
432
436
|
*/
|
|
437
|
+
// eslint-disable-next-line import/no-deprecated
|
|
433
438
|
private makeMapValueOpEmitter(key: string): IValueOpEmitter {
|
|
434
|
-
|
|
435
|
-
|
|
436
|
-
|
|
437
|
-
|
|
439
|
+
// eslint-disable-next-line import/no-deprecated
|
|
440
|
+
const emit: IValueOpEmitter["emit"] = (
|
|
441
|
+
opName: IntervalOpType,
|
|
442
|
+
previousValue: unknown,
|
|
443
|
+
params: SerializedIntervalDelta,
|
|
438
444
|
localOpMetadata: IMapMessageLocalMetadata,
|
|
439
|
-
) => {
|
|
445
|
+
): void => {
|
|
440
446
|
const translatedParams = makeHandlesSerializable(params, this.serializer, this.handle);
|
|
441
447
|
|
|
442
448
|
const op: IMapValueTypeOperation = {
|
|
@@ -6,6 +6,7 @@
|
|
|
6
6
|
import { ISequencedDocumentMessage } from "@fluidframework/protocol-definitions";
|
|
7
7
|
import { ISharedObjectEvents } from "@fluidframework/shared-object-base";
|
|
8
8
|
import { IEventThisPlaceHolder } from "@fluidframework/core-interfaces";
|
|
9
|
+
import { ISerializedInterval, IntervalOpType, SerializedIntervalDelta } from "./intervals";
|
|
9
10
|
|
|
10
11
|
/**
|
|
11
12
|
* Type of "valueChanged" event parameter.
|
|
@@ -25,20 +26,20 @@ export interface IValueChanged {
|
|
|
25
26
|
/**
|
|
26
27
|
* Value types are given an IValueOpEmitter to emit their ops through the container type that holds them.
|
|
27
28
|
* @internal
|
|
29
|
+
* @deprecated - will be remove from public api as there is no public used of this type
|
|
28
30
|
*/
|
|
29
31
|
export interface IValueOpEmitter {
|
|
30
32
|
/**
|
|
31
33
|
* Called by the value type to emit a value type operation through the container type holding it.
|
|
32
34
|
* @param opName - Name of the emitted operation
|
|
33
|
-
* @param previousValue - JSONable previous value as defined by the value type
|
|
35
|
+
* @param previousValue - JSONable previous value as defined by the value type @deprecated unused
|
|
34
36
|
* @param params - JSONable params for the operation as defined by the value type
|
|
35
37
|
* @param localOpMetadata - JSONable local metadata which should be submitted with the op
|
|
36
|
-
* @internal
|
|
37
38
|
*/
|
|
38
39
|
emit(
|
|
39
|
-
opName:
|
|
40
|
-
previousValue:
|
|
41
|
-
params:
|
|
40
|
+
opName: IntervalOpType,
|
|
41
|
+
previousValue: undefined,
|
|
42
|
+
params: SerializedIntervalDelta,
|
|
42
43
|
localOpMetadata: IMapMessageLocalMetadata,
|
|
43
44
|
): void;
|
|
44
45
|
}
|
|
@@ -52,7 +53,7 @@ export interface IMapMessageLocalMetadata {
|
|
|
52
53
|
|
|
53
54
|
/**
|
|
54
55
|
* Optional flags that configure options for sequence DDSs
|
|
55
|
-
* @
|
|
56
|
+
* @internal
|
|
56
57
|
*/
|
|
57
58
|
export interface SequenceOptions {
|
|
58
59
|
/**
|
|
@@ -123,11 +124,11 @@ export interface IValueOperation<T> {
|
|
|
123
124
|
*/
|
|
124
125
|
process(
|
|
125
126
|
value: T,
|
|
126
|
-
params:
|
|
127
|
+
params: ISerializedInterval,
|
|
127
128
|
local: boolean,
|
|
128
129
|
message: ISequencedDocumentMessage | undefined,
|
|
129
130
|
localOpMetadata: IMapMessageLocalMetadata | undefined,
|
|
130
|
-
);
|
|
131
|
+
): void;
|
|
131
132
|
|
|
132
133
|
/**
|
|
133
134
|
* Rebases an `op` on `value` from its original perspective (ref/local seq) to the current
|
|
@@ -141,7 +142,9 @@ export interface IValueOperation<T> {
|
|
|
141
142
|
value: T,
|
|
142
143
|
op: IValueTypeOperationValue,
|
|
143
144
|
localOpMetadata: IMapMessageLocalMetadata,
|
|
144
|
-
):
|
|
145
|
+
):
|
|
146
|
+
| { rebasedOp: IValueTypeOperationValue; rebasedLocalOpMetadata: IMapMessageLocalMetadata }
|
|
147
|
+
| undefined;
|
|
145
148
|
}
|
|
146
149
|
|
|
147
150
|
/**
|
|
@@ -164,14 +167,14 @@ export interface IValueType<T> {
|
|
|
164
167
|
* Operations that can be applied to the value type.
|
|
165
168
|
* @alpha
|
|
166
169
|
*/
|
|
167
|
-
ops: Map<
|
|
170
|
+
ops: Map<IntervalOpType, IValueOperation<T>>;
|
|
168
171
|
}
|
|
169
172
|
|
|
170
173
|
export interface ISharedDefaultMapEvents extends ISharedObjectEvents {
|
|
171
174
|
(
|
|
172
175
|
event: "valueChanged" | "create",
|
|
173
176
|
listener: (changed: IValueChanged, local: boolean, target: IEventThisPlaceHolder) => void,
|
|
174
|
-
);
|
|
177
|
+
): void;
|
|
175
178
|
}
|
|
176
179
|
|
|
177
180
|
/**
|
|
@@ -182,7 +185,7 @@ export interface ISharedDefaultMapEvents extends ISharedObjectEvents {
|
|
|
182
185
|
* JSON.stringify and comes out of JSON.parse. This format is used both for snapshots (loadCore/populate)
|
|
183
186
|
* and ops (set).
|
|
184
187
|
*
|
|
185
|
-
* The DefaultMap
|
|
188
|
+
* The DefaultMap implementation for sequence has been specialized to only support a single ValueType, which serializes
|
|
186
189
|
* and deserializes via .store() and .load().
|
|
187
190
|
*/
|
|
188
191
|
export interface ISerializableValue {
|
|
@@ -222,10 +225,10 @@ export interface IValueTypeOperationValue {
|
|
|
222
225
|
/**
|
|
223
226
|
* The name of the operation.
|
|
224
227
|
*/
|
|
225
|
-
opName:
|
|
228
|
+
opName: IntervalOpType;
|
|
226
229
|
|
|
227
230
|
/**
|
|
228
231
|
* The payload that is submitted along with the operation.
|
|
229
232
|
*/
|
|
230
|
-
value:
|
|
233
|
+
value: SerializedIntervalDelta;
|
|
231
234
|
}
|
package/src/index.ts
CHANGED
|
@@ -85,3 +85,20 @@ export {
|
|
|
85
85
|
SharedIntervalCollectionFactory,
|
|
86
86
|
} from "./sharedIntervalCollection";
|
|
87
87
|
export { IJSONRunSegment, SharedSequence, SubSequence } from "./sharedSequence";
|
|
88
|
+
|
|
89
|
+
export {
|
|
90
|
+
ISegment,
|
|
91
|
+
Marker,
|
|
92
|
+
BaseSegment,
|
|
93
|
+
ReferencePosition,
|
|
94
|
+
ReferenceType,
|
|
95
|
+
PropertySet,
|
|
96
|
+
MapLike,
|
|
97
|
+
TextSegment,
|
|
98
|
+
MergeTreeDeltaType,
|
|
99
|
+
reservedMarkerIdKey,
|
|
100
|
+
reservedTileLabelsKey,
|
|
101
|
+
reservedRangeLabelsKey,
|
|
102
|
+
TrackingGroup,
|
|
103
|
+
LocalReferencePosition,
|
|
104
|
+
} from "@fluidframework/merge-tree";
|