@yorkie-js/react 0.7.3 → 0.7.5
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/dist/yorkie-js-react.es.js +1277 -1082
- package/dist/yorkie-js-react.es.js.map +1 -1
- package/dist/yorkie-js-react.js +1258 -1063
- package/dist/yorkie-js-react.js.map +1 -1
- package/package.json +2 -2
|
@@ -102,7 +102,7 @@ function varint64write(lo, hi, bytes) {
|
|
|
102
102
|
}
|
|
103
103
|
bytes.push(hi >>> 31 & 1);
|
|
104
104
|
}
|
|
105
|
-
const TWO_PWR_32_DBL
|
|
105
|
+
const TWO_PWR_32_DBL = 4294967296;
|
|
106
106
|
function int64FromString(dec) {
|
|
107
107
|
const minus = dec[0] === "-";
|
|
108
108
|
if (minus) {
|
|
@@ -115,9 +115,9 @@ function int64FromString(dec) {
|
|
|
115
115
|
const digit1e6 = Number(dec.slice(begin, end));
|
|
116
116
|
highBits *= base;
|
|
117
117
|
lowBits = lowBits * base + digit1e6;
|
|
118
|
-
if (lowBits >= TWO_PWR_32_DBL
|
|
119
|
-
highBits = highBits + (lowBits / TWO_PWR_32_DBL
|
|
120
|
-
lowBits = lowBits % TWO_PWR_32_DBL
|
|
118
|
+
if (lowBits >= TWO_PWR_32_DBL) {
|
|
119
|
+
highBits = highBits + (lowBits / TWO_PWR_32_DBL | 0);
|
|
120
|
+
lowBits = lowBits % TWO_PWR_32_DBL;
|
|
121
121
|
}
|
|
122
122
|
}
|
|
123
123
|
add1e6digit(-24, -18);
|
|
@@ -138,7 +138,7 @@ function int64ToString(lo, hi) {
|
|
|
138
138
|
function uInt64ToString(lo, hi) {
|
|
139
139
|
({ lo, hi } = toUnsigned(lo, hi));
|
|
140
140
|
if (hi <= 2097151) {
|
|
141
|
-
return String(TWO_PWR_32_DBL
|
|
141
|
+
return String(TWO_PWR_32_DBL * hi + lo);
|
|
142
142
|
}
|
|
143
143
|
const low = lo & 16777215;
|
|
144
144
|
const mid = (lo >>> 24 | hi << 8) & 16777215;
|
|
@@ -4385,6 +4385,19 @@ function codeToString(value) {
|
|
|
4385
4385
|
}
|
|
4386
4386
|
return name2[0].toLowerCase() + name2.substring(1).replace(/[A-Z]/g, (c) => "_" + c.toLowerCase());
|
|
4387
4387
|
}
|
|
4388
|
+
let stringToCode;
|
|
4389
|
+
function codeFromString(value) {
|
|
4390
|
+
if (!stringToCode) {
|
|
4391
|
+
stringToCode = {};
|
|
4392
|
+
for (const value2 of Object.values(Code$1)) {
|
|
4393
|
+
if (typeof value2 == "string") {
|
|
4394
|
+
continue;
|
|
4395
|
+
}
|
|
4396
|
+
stringToCode[codeToString(value2)] = value2;
|
|
4397
|
+
}
|
|
4398
|
+
}
|
|
4399
|
+
return stringToCode[value];
|
|
4400
|
+
}
|
|
4388
4401
|
class ConnectError extends Error {
|
|
4389
4402
|
/**
|
|
4390
4403
|
* Create a new ConnectError.
|
|
@@ -4473,6 +4486,15 @@ function decodeBinaryHeader(value, desc, options) {
|
|
|
4473
4486
|
throw ConnectError.from(e, Code$1.DataLoss);
|
|
4474
4487
|
}
|
|
4475
4488
|
}
|
|
4489
|
+
function appendHeaders(...headers) {
|
|
4490
|
+
const h = new Headers();
|
|
4491
|
+
for (const e of headers) {
|
|
4492
|
+
e.forEach((value, key) => {
|
|
4493
|
+
h.append(key, value);
|
|
4494
|
+
});
|
|
4495
|
+
}
|
|
4496
|
+
return h;
|
|
4497
|
+
}
|
|
4476
4498
|
function makeAnyClient(service, createMethod) {
|
|
4477
4499
|
const client = {};
|
|
4478
4500
|
for (const desc of service.methods) {
|
|
@@ -4620,10 +4642,10 @@ var __asyncValues$1 = function(o) {
|
|
|
4620
4642
|
}, reject);
|
|
4621
4643
|
}
|
|
4622
4644
|
};
|
|
4623
|
-
var __await$
|
|
4624
|
-
return this instanceof __await$
|
|
4645
|
+
var __await$3 = function(v) {
|
|
4646
|
+
return this instanceof __await$3 ? (this.v = v, this) : new __await$3(v);
|
|
4625
4647
|
};
|
|
4626
|
-
var __asyncGenerator$
|
|
4648
|
+
var __asyncGenerator$3 = function(thisArg, _arguments, generator) {
|
|
4627
4649
|
if (!Symbol.asyncIterator) throw new TypeError("Symbol.asyncIterator is not defined.");
|
|
4628
4650
|
var g = generator.apply(thisArg, _arguments || []), i, q = [];
|
|
4629
4651
|
return i = Object.create((typeof AsyncIterator === "function" ? AsyncIterator : Object).prototype), verb("next"), verb("throw"), verb("return", awaitReturn), i[Symbol.asyncIterator] = function() {
|
|
@@ -4652,7 +4674,7 @@ var __asyncGenerator$2 = function(thisArg, _arguments, generator) {
|
|
|
4652
4674
|
}
|
|
4653
4675
|
}
|
|
4654
4676
|
function step(r) {
|
|
4655
|
-
r.value instanceof __await$
|
|
4677
|
+
r.value instanceof __await$3 ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r);
|
|
4656
4678
|
}
|
|
4657
4679
|
function fulfill(value) {
|
|
4658
4680
|
resume("next", value);
|
|
@@ -4673,13 +4695,13 @@ var __asyncDelegator$1 = function(o) {
|
|
|
4673
4695
|
}, i;
|
|
4674
4696
|
function verb(n, f) {
|
|
4675
4697
|
i[n] = o[n] ? function(v) {
|
|
4676
|
-
return (p = !p) ? { value: __await$
|
|
4698
|
+
return (p = !p) ? { value: __await$3(o[n](v)), done: false } : f ? f(v) : v;
|
|
4677
4699
|
} : f;
|
|
4678
4700
|
}
|
|
4679
4701
|
};
|
|
4680
4702
|
function createAsyncIterable(items) {
|
|
4681
|
-
return __asyncGenerator$
|
|
4682
|
-
yield __await$
|
|
4703
|
+
return __asyncGenerator$3(this, arguments, function* createAsyncIterable_1() {
|
|
4704
|
+
yield __await$3(yield* __asyncDelegator$1(__asyncValues$1(items)));
|
|
4683
4705
|
});
|
|
4684
4706
|
}
|
|
4685
4707
|
var __asyncValues = function(o) {
|
|
@@ -4701,8 +4723,8 @@ var __asyncValues = function(o) {
|
|
|
4701
4723
|
}, reject);
|
|
4702
4724
|
}
|
|
4703
4725
|
};
|
|
4704
|
-
var __await$
|
|
4705
|
-
return this instanceof __await$
|
|
4726
|
+
var __await$2 = function(v) {
|
|
4727
|
+
return this instanceof __await$2 ? (this.v = v, this) : new __await$2(v);
|
|
4706
4728
|
};
|
|
4707
4729
|
var __asyncDelegator = function(o) {
|
|
4708
4730
|
var i, p;
|
|
@@ -4713,11 +4735,11 @@ var __asyncDelegator = function(o) {
|
|
|
4713
4735
|
}, i;
|
|
4714
4736
|
function verb(n, f) {
|
|
4715
4737
|
i[n] = o[n] ? function(v) {
|
|
4716
|
-
return (p = !p) ? { value: __await$
|
|
4738
|
+
return (p = !p) ? { value: __await$2(o[n](v)), done: false } : f ? f(v) : v;
|
|
4717
4739
|
} : f;
|
|
4718
4740
|
}
|
|
4719
4741
|
};
|
|
4720
|
-
var __asyncGenerator$
|
|
4742
|
+
var __asyncGenerator$2 = function(thisArg, _arguments, generator) {
|
|
4721
4743
|
if (!Symbol.asyncIterator) throw new TypeError("Symbol.asyncIterator is not defined.");
|
|
4722
4744
|
var g = generator.apply(thisArg, _arguments || []), i, q = [];
|
|
4723
4745
|
return i = Object.create((typeof AsyncIterator === "function" ? AsyncIterator : Object).prototype), verb("next"), verb("throw"), verb("return", awaitReturn), i[Symbol.asyncIterator] = function() {
|
|
@@ -4746,7 +4768,7 @@ var __asyncGenerator$1 = function(thisArg, _arguments, generator) {
|
|
|
4746
4768
|
}
|
|
4747
4769
|
}
|
|
4748
4770
|
function step(r) {
|
|
4749
|
-
r.value instanceof __await$
|
|
4771
|
+
r.value instanceof __await$2 ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r);
|
|
4750
4772
|
}
|
|
4751
4773
|
function fulfill(value) {
|
|
4752
4774
|
resume("next", value);
|
|
@@ -4826,11 +4848,11 @@ function createBiDiStreamingFn(transport, method) {
|
|
|
4826
4848
|
}
|
|
4827
4849
|
function handleStreamResponse(stream, options) {
|
|
4828
4850
|
const it = (function() {
|
|
4829
|
-
return __asyncGenerator$
|
|
4851
|
+
return __asyncGenerator$2(this, arguments, function* () {
|
|
4830
4852
|
var _a, _b;
|
|
4831
|
-
const response = yield __await$
|
|
4853
|
+
const response = yield __await$2(stream);
|
|
4832
4854
|
(_a = options === null || options === void 0 ? void 0 : options.onHeader) === null || _a === void 0 ? void 0 : _a.call(options, response.header);
|
|
4833
|
-
yield __await$
|
|
4855
|
+
yield __await$2(yield* __asyncDelegator(__asyncValues(response.message)));
|
|
4834
4856
|
(_b = options === null || options === void 0 ? void 0 : options.onTrailer) === null || _b === void 0 ? void 0 : _b.call(options, response.trailer);
|
|
4835
4857
|
});
|
|
4836
4858
|
})()[Symbol.asyncIterator]();
|
|
@@ -4920,12 +4942,12 @@ function trailerParse(data) {
|
|
|
4920
4942
|
}
|
|
4921
4943
|
return headers;
|
|
4922
4944
|
}
|
|
4923
|
-
const headerContentType = "Content-Type";
|
|
4924
|
-
const headerTimeout = "Grpc-Timeout";
|
|
4945
|
+
const headerContentType$1 = "Content-Type";
|
|
4946
|
+
const headerTimeout$1 = "Grpc-Timeout";
|
|
4925
4947
|
const headerGrpcStatus = "Grpc-Status";
|
|
4926
4948
|
const headerGrpcMessage = "Grpc-Message";
|
|
4927
4949
|
const headerStatusDetailsBin = "Grpc-Status-Details-Bin";
|
|
4928
|
-
const headerUserAgent = "User-Agent";
|
|
4950
|
+
const headerUserAgent$1 = "User-Agent";
|
|
4929
4951
|
const headerXUserAgent = "X-User-Agent";
|
|
4930
4952
|
const headerXGrpcWeb = "X-Grpc-Web";
|
|
4931
4953
|
const contentTypeProto = "application/grpc-web+proto";
|
|
@@ -5063,6 +5085,204 @@ function createJsonSerialization(desc, options) {
|
|
|
5063
5085
|
}
|
|
5064
5086
|
};
|
|
5065
5087
|
}
|
|
5088
|
+
const contentTypeRegExp = /^application\/(connect\+)?(?:(json)(?:; ?charset=utf-?8)?|(proto))$/i;
|
|
5089
|
+
const contentTypeUnaryProto = "application/proto";
|
|
5090
|
+
const contentTypeUnaryJson = "application/json";
|
|
5091
|
+
const contentTypeStreamProto = "application/connect+proto";
|
|
5092
|
+
const contentTypeStreamJson = "application/connect+json";
|
|
5093
|
+
function parseContentType(contentType) {
|
|
5094
|
+
const match = contentType === null || contentType === void 0 ? void 0 : contentType.match(contentTypeRegExp);
|
|
5095
|
+
if (!match) {
|
|
5096
|
+
return void 0;
|
|
5097
|
+
}
|
|
5098
|
+
const stream = !!match[1];
|
|
5099
|
+
const binary = !!match[3];
|
|
5100
|
+
return { stream, binary };
|
|
5101
|
+
}
|
|
5102
|
+
(function(s, e) {
|
|
5103
|
+
var t = {};
|
|
5104
|
+
for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)
|
|
5105
|
+
t[p] = s[p];
|
|
5106
|
+
if (s != null && typeof Object.getOwnPropertySymbols === "function")
|
|
5107
|
+
for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {
|
|
5108
|
+
if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))
|
|
5109
|
+
t[p[i]] = s[p[i]];
|
|
5110
|
+
}
|
|
5111
|
+
return t;
|
|
5112
|
+
});
|
|
5113
|
+
function errorFromJson(jsonValue, metadata, fallback) {
|
|
5114
|
+
var _a;
|
|
5115
|
+
if (metadata) {
|
|
5116
|
+
new Headers(metadata).forEach((value, key) => fallback.metadata.append(key, value));
|
|
5117
|
+
}
|
|
5118
|
+
if (typeof jsonValue !== "object" || jsonValue == null || Array.isArray(jsonValue)) {
|
|
5119
|
+
throw fallback;
|
|
5120
|
+
}
|
|
5121
|
+
let code = fallback.code;
|
|
5122
|
+
if ("code" in jsonValue && typeof jsonValue.code === "string") {
|
|
5123
|
+
code = (_a = codeFromString(jsonValue.code)) !== null && _a !== void 0 ? _a : code;
|
|
5124
|
+
}
|
|
5125
|
+
const message = jsonValue.message;
|
|
5126
|
+
if (message != null && typeof message !== "string") {
|
|
5127
|
+
throw fallback;
|
|
5128
|
+
}
|
|
5129
|
+
const error = new ConnectError(message !== null && message !== void 0 ? message : "", code, metadata);
|
|
5130
|
+
if ("details" in jsonValue && Array.isArray(jsonValue.details)) {
|
|
5131
|
+
for (const detail of jsonValue.details) {
|
|
5132
|
+
if (detail === null || typeof detail != "object" || Array.isArray(detail) || typeof detail.type != "string" || typeof detail.value != "string") {
|
|
5133
|
+
throw fallback;
|
|
5134
|
+
}
|
|
5135
|
+
try {
|
|
5136
|
+
error.details.push({
|
|
5137
|
+
type: detail.type,
|
|
5138
|
+
value: base64Decode(detail.value),
|
|
5139
|
+
debug: detail.debug
|
|
5140
|
+
});
|
|
5141
|
+
} catch (e) {
|
|
5142
|
+
throw fallback;
|
|
5143
|
+
}
|
|
5144
|
+
}
|
|
5145
|
+
}
|
|
5146
|
+
return error;
|
|
5147
|
+
}
|
|
5148
|
+
const endStreamFlag = 2;
|
|
5149
|
+
function endStreamFromJson(data) {
|
|
5150
|
+
const parseErr = new ConnectError("invalid end stream", Code$1.Unknown);
|
|
5151
|
+
let jsonValue;
|
|
5152
|
+
try {
|
|
5153
|
+
jsonValue = JSON.parse(typeof data == "string" ? data : new TextDecoder().decode(data));
|
|
5154
|
+
} catch (e) {
|
|
5155
|
+
throw parseErr;
|
|
5156
|
+
}
|
|
5157
|
+
if (typeof jsonValue != "object" || jsonValue == null || Array.isArray(jsonValue)) {
|
|
5158
|
+
throw parseErr;
|
|
5159
|
+
}
|
|
5160
|
+
const metadata = new Headers();
|
|
5161
|
+
if ("metadata" in jsonValue) {
|
|
5162
|
+
if (typeof jsonValue.metadata != "object" || jsonValue.metadata == null || Array.isArray(jsonValue.metadata)) {
|
|
5163
|
+
throw parseErr;
|
|
5164
|
+
}
|
|
5165
|
+
for (const [key, values] of Object.entries(jsonValue.metadata)) {
|
|
5166
|
+
if (!Array.isArray(values) || values.some((value) => typeof value != "string")) {
|
|
5167
|
+
throw parseErr;
|
|
5168
|
+
}
|
|
5169
|
+
for (const value of values) {
|
|
5170
|
+
metadata.append(key, value);
|
|
5171
|
+
}
|
|
5172
|
+
}
|
|
5173
|
+
}
|
|
5174
|
+
const error = "error" in jsonValue && jsonValue.error != null ? errorFromJson(jsonValue.error, metadata, parseErr) : void 0;
|
|
5175
|
+
return { metadata, error };
|
|
5176
|
+
}
|
|
5177
|
+
const headerContentType = "Content-Type";
|
|
5178
|
+
const headerUnaryContentLength = "Content-Length";
|
|
5179
|
+
const headerUnaryEncoding = "Content-Encoding";
|
|
5180
|
+
const headerUnaryAcceptEncoding = "Accept-Encoding";
|
|
5181
|
+
const headerTimeout = "Connect-Timeout-Ms";
|
|
5182
|
+
const headerProtocolVersion = "Connect-Protocol-Version";
|
|
5183
|
+
const headerUserAgent = "User-Agent";
|
|
5184
|
+
function codeFromHttpStatus$1(httpStatus) {
|
|
5185
|
+
switch (httpStatus) {
|
|
5186
|
+
case 400:
|
|
5187
|
+
return Code$1.Internal;
|
|
5188
|
+
case 401:
|
|
5189
|
+
return Code$1.Unauthenticated;
|
|
5190
|
+
case 403:
|
|
5191
|
+
return Code$1.PermissionDenied;
|
|
5192
|
+
case 404:
|
|
5193
|
+
return Code$1.Unimplemented;
|
|
5194
|
+
case 429:
|
|
5195
|
+
return Code$1.Unavailable;
|
|
5196
|
+
case 502:
|
|
5197
|
+
return Code$1.Unavailable;
|
|
5198
|
+
case 503:
|
|
5199
|
+
return Code$1.Unavailable;
|
|
5200
|
+
case 504:
|
|
5201
|
+
return Code$1.Unavailable;
|
|
5202
|
+
default:
|
|
5203
|
+
return Code$1.Unknown;
|
|
5204
|
+
}
|
|
5205
|
+
}
|
|
5206
|
+
function trailerDemux(header) {
|
|
5207
|
+
const h = new Headers(), t = new Headers();
|
|
5208
|
+
header.forEach((value, key) => {
|
|
5209
|
+
if (key.toLowerCase().startsWith("trailer-")) {
|
|
5210
|
+
t.append(key.substring(8), value);
|
|
5211
|
+
} else {
|
|
5212
|
+
h.append(key, value);
|
|
5213
|
+
}
|
|
5214
|
+
});
|
|
5215
|
+
return [h, t];
|
|
5216
|
+
}
|
|
5217
|
+
const protocolVersion = "1";
|
|
5218
|
+
function requestHeader$1(methodKind, useBinaryFormat, timeoutMs, userProvidedHeaders, setUserAgent) {
|
|
5219
|
+
const result = new Headers(userProvidedHeaders !== null && userProvidedHeaders !== void 0 ? userProvidedHeaders : {});
|
|
5220
|
+
if (timeoutMs !== void 0) {
|
|
5221
|
+
result.set(headerTimeout, `${timeoutMs}`);
|
|
5222
|
+
}
|
|
5223
|
+
result.set(headerContentType, methodKind == "unary" ? useBinaryFormat ? contentTypeUnaryProto : contentTypeUnaryJson : useBinaryFormat ? contentTypeStreamProto : contentTypeStreamJson);
|
|
5224
|
+
result.set(headerProtocolVersion, protocolVersion);
|
|
5225
|
+
if (!result.has(headerUserAgent) && setUserAgent) ;
|
|
5226
|
+
return result;
|
|
5227
|
+
}
|
|
5228
|
+
function validateResponse$1(methodKind, useBinaryFormat, status, headers) {
|
|
5229
|
+
const mimeType = headers.get(headerContentType);
|
|
5230
|
+
const parsedType = parseContentType(mimeType);
|
|
5231
|
+
if (status !== 200) {
|
|
5232
|
+
const errorFromStatus = new ConnectError(`HTTP ${status}`, codeFromHttpStatus$1(status), headers);
|
|
5233
|
+
if (methodKind == "unary" && parsedType && !parsedType.binary) {
|
|
5234
|
+
return { isUnaryError: true, unaryError: errorFromStatus };
|
|
5235
|
+
}
|
|
5236
|
+
throw errorFromStatus;
|
|
5237
|
+
}
|
|
5238
|
+
const allowedContentType = {
|
|
5239
|
+
binary: useBinaryFormat,
|
|
5240
|
+
stream: methodKind !== "unary"
|
|
5241
|
+
};
|
|
5242
|
+
if ((parsedType === null || parsedType === void 0 ? void 0 : parsedType.binary) !== allowedContentType.binary || parsedType.stream !== allowedContentType.stream) {
|
|
5243
|
+
throw new ConnectError(`unsupported content type ${mimeType}`, parsedType === void 0 ? Code$1.Unknown : Code$1.Internal, headers);
|
|
5244
|
+
}
|
|
5245
|
+
return { isUnaryError: false };
|
|
5246
|
+
}
|
|
5247
|
+
const contentTypePrefix = "application/";
|
|
5248
|
+
function encodeMessageForUrl(message, useBase64) {
|
|
5249
|
+
if (useBase64) {
|
|
5250
|
+
return base64Encode(message, "url");
|
|
5251
|
+
}
|
|
5252
|
+
return encodeURIComponent(new TextDecoder().decode(message));
|
|
5253
|
+
}
|
|
5254
|
+
function transformConnectPostToGetRequest(request, message, useBase64) {
|
|
5255
|
+
let query = `?connect=v${protocolVersion}`;
|
|
5256
|
+
const contentType = request.header.get(headerContentType);
|
|
5257
|
+
if ((contentType === null || contentType === void 0 ? void 0 : contentType.indexOf(contentTypePrefix)) === 0) {
|
|
5258
|
+
query += "&encoding=" + encodeURIComponent(contentType.slice(contentTypePrefix.length));
|
|
5259
|
+
}
|
|
5260
|
+
const compression = request.header.get(headerUnaryEncoding);
|
|
5261
|
+
if (compression !== null && compression !== "identity") {
|
|
5262
|
+
query += "&compression=" + encodeURIComponent(compression);
|
|
5263
|
+
useBase64 = true;
|
|
5264
|
+
}
|
|
5265
|
+
if (useBase64) {
|
|
5266
|
+
query += "&base64=1";
|
|
5267
|
+
}
|
|
5268
|
+
query += "&message=" + encodeMessageForUrl(message, useBase64);
|
|
5269
|
+
const url = request.url + query;
|
|
5270
|
+
const header = new Headers(request.header);
|
|
5271
|
+
for (const h of [
|
|
5272
|
+
headerProtocolVersion,
|
|
5273
|
+
headerContentType,
|
|
5274
|
+
headerUnaryContentLength,
|
|
5275
|
+
headerUnaryEncoding,
|
|
5276
|
+
headerUnaryAcceptEncoding
|
|
5277
|
+
]) {
|
|
5278
|
+
header.delete(h);
|
|
5279
|
+
}
|
|
5280
|
+
return Object.assign(Object.assign({}, request), {
|
|
5281
|
+
requestMethod: "GET",
|
|
5282
|
+
url,
|
|
5283
|
+
header
|
|
5284
|
+
});
|
|
5285
|
+
}
|
|
5066
5286
|
function runUnaryCall(opt) {
|
|
5067
5287
|
const next = applyInterceptors(opt.next, opt.interceptors);
|
|
5068
5288
|
const [signal, abort, done] = setupSignal(opt);
|
|
@@ -5131,6 +5351,181 @@ function assertFetchApi() {
|
|
|
5131
5351
|
throw new Error("connect-web requires the fetch API. Are you running on an old version of Node.js? Node.js is not supported in Connect for Web - please stay tuned for Connect for Node.");
|
|
5132
5352
|
}
|
|
5133
5353
|
}
|
|
5354
|
+
var __await$1 = function(v) {
|
|
5355
|
+
return this instanceof __await$1 ? (this.v = v, this) : new __await$1(v);
|
|
5356
|
+
};
|
|
5357
|
+
var __asyncGenerator$1 = function(thisArg, _arguments, generator) {
|
|
5358
|
+
if (!Symbol.asyncIterator) throw new TypeError("Symbol.asyncIterator is not defined.");
|
|
5359
|
+
var g = generator.apply(thisArg, _arguments || []), i, q = [];
|
|
5360
|
+
return i = Object.create((typeof AsyncIterator === "function" ? AsyncIterator : Object).prototype), verb("next"), verb("throw"), verb("return", awaitReturn), i[Symbol.asyncIterator] = function() {
|
|
5361
|
+
return this;
|
|
5362
|
+
}, i;
|
|
5363
|
+
function awaitReturn(f) {
|
|
5364
|
+
return function(v) {
|
|
5365
|
+
return Promise.resolve(v).then(f, reject);
|
|
5366
|
+
};
|
|
5367
|
+
}
|
|
5368
|
+
function verb(n, f) {
|
|
5369
|
+
if (g[n]) {
|
|
5370
|
+
i[n] = function(v) {
|
|
5371
|
+
return new Promise(function(a, b) {
|
|
5372
|
+
q.push([n, v, a, b]) > 1 || resume(n, v);
|
|
5373
|
+
});
|
|
5374
|
+
};
|
|
5375
|
+
if (f) i[n] = f(i[n]);
|
|
5376
|
+
}
|
|
5377
|
+
}
|
|
5378
|
+
function resume(n, v) {
|
|
5379
|
+
try {
|
|
5380
|
+
step(g[n](v));
|
|
5381
|
+
} catch (e) {
|
|
5382
|
+
settle(q[0][3], e);
|
|
5383
|
+
}
|
|
5384
|
+
}
|
|
5385
|
+
function step(r) {
|
|
5386
|
+
r.value instanceof __await$1 ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r);
|
|
5387
|
+
}
|
|
5388
|
+
function fulfill(value) {
|
|
5389
|
+
resume("next", value);
|
|
5390
|
+
}
|
|
5391
|
+
function reject(value) {
|
|
5392
|
+
resume("throw", value);
|
|
5393
|
+
}
|
|
5394
|
+
function settle(f, v) {
|
|
5395
|
+
if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]);
|
|
5396
|
+
}
|
|
5397
|
+
};
|
|
5398
|
+
const fetchOptions$1 = {
|
|
5399
|
+
redirect: "error"
|
|
5400
|
+
};
|
|
5401
|
+
function createConnectTransport(options) {
|
|
5402
|
+
var _a;
|
|
5403
|
+
assertFetchApi();
|
|
5404
|
+
const useBinaryFormat = (_a = options.useBinaryFormat) !== null && _a !== void 0 ? _a : false;
|
|
5405
|
+
return {
|
|
5406
|
+
async unary(method, signal, timeoutMs, header, message, contextValues) {
|
|
5407
|
+
const { serialize, parse: parse2 } = createClientMethodSerializers(method, useBinaryFormat, options.jsonOptions, options.binaryOptions);
|
|
5408
|
+
timeoutMs = timeoutMs === void 0 ? options.defaultTimeoutMs : timeoutMs <= 0 ? void 0 : timeoutMs;
|
|
5409
|
+
return await runUnaryCall({
|
|
5410
|
+
interceptors: options.interceptors,
|
|
5411
|
+
signal,
|
|
5412
|
+
timeoutMs,
|
|
5413
|
+
req: {
|
|
5414
|
+
stream: false,
|
|
5415
|
+
service: method.parent,
|
|
5416
|
+
method,
|
|
5417
|
+
requestMethod: "POST",
|
|
5418
|
+
url: createMethodUrl(options.baseUrl, method),
|
|
5419
|
+
header: requestHeader$1(method.methodKind, useBinaryFormat, timeoutMs, header, false),
|
|
5420
|
+
contextValues: contextValues !== null && contextValues !== void 0 ? contextValues : createContextValues(),
|
|
5421
|
+
message
|
|
5422
|
+
},
|
|
5423
|
+
next: async (req) => {
|
|
5424
|
+
var _a2;
|
|
5425
|
+
const useGet = options.useHttpGet === true && method.idempotency === MethodOptions_IdempotencyLevel.NO_SIDE_EFFECTS;
|
|
5426
|
+
let body = null;
|
|
5427
|
+
if (useGet) {
|
|
5428
|
+
req = transformConnectPostToGetRequest(req, serialize(req.message), useBinaryFormat);
|
|
5429
|
+
} else {
|
|
5430
|
+
body = serialize(req.message);
|
|
5431
|
+
}
|
|
5432
|
+
const fetch2 = (_a2 = options.fetch) !== null && _a2 !== void 0 ? _a2 : globalThis.fetch;
|
|
5433
|
+
const response = await fetch2(req.url, Object.assign(Object.assign({}, fetchOptions$1), { method: req.requestMethod, headers: req.header, signal: req.signal, body }));
|
|
5434
|
+
const { isUnaryError, unaryError } = validateResponse$1(method.methodKind, useBinaryFormat, response.status, response.headers);
|
|
5435
|
+
if (isUnaryError) {
|
|
5436
|
+
throw errorFromJson(await response.json(), appendHeaders(...trailerDemux(response.headers)), unaryError);
|
|
5437
|
+
}
|
|
5438
|
+
const [demuxedHeader, demuxedTrailer] = trailerDemux(response.headers);
|
|
5439
|
+
return {
|
|
5440
|
+
stream: false,
|
|
5441
|
+
service: method.parent,
|
|
5442
|
+
method,
|
|
5443
|
+
header: demuxedHeader,
|
|
5444
|
+
message: useBinaryFormat ? parse2(new Uint8Array(await response.arrayBuffer())) : fromJson(method.output, await response.json(), getJsonOptions(options.jsonOptions)),
|
|
5445
|
+
trailer: demuxedTrailer
|
|
5446
|
+
};
|
|
5447
|
+
}
|
|
5448
|
+
});
|
|
5449
|
+
},
|
|
5450
|
+
async stream(method, signal, timeoutMs, header, input, contextValues) {
|
|
5451
|
+
const { serialize, parse: parse2 } = createClientMethodSerializers(method, useBinaryFormat, options.jsonOptions, options.binaryOptions);
|
|
5452
|
+
function parseResponseBody(body, trailerTarget, header2, signal2) {
|
|
5453
|
+
return __asyncGenerator$1(this, arguments, function* parseResponseBody_1() {
|
|
5454
|
+
const reader = createEnvelopeReadableStream(body).getReader();
|
|
5455
|
+
let endStreamReceived = false;
|
|
5456
|
+
for (; ; ) {
|
|
5457
|
+
const result = yield __await$1(reader.read());
|
|
5458
|
+
if (result.done) {
|
|
5459
|
+
break;
|
|
5460
|
+
}
|
|
5461
|
+
const { flags, data } = result.value;
|
|
5462
|
+
if ((flags & compressedFlag) === compressedFlag) {
|
|
5463
|
+
throw new ConnectError(`protocol error: received unsupported compressed output`, Code$1.Internal);
|
|
5464
|
+
}
|
|
5465
|
+
if ((flags & endStreamFlag) === endStreamFlag) {
|
|
5466
|
+
endStreamReceived = true;
|
|
5467
|
+
const endStream = endStreamFromJson(data);
|
|
5468
|
+
if (endStream.error) {
|
|
5469
|
+
const error = endStream.error;
|
|
5470
|
+
header2.forEach((value, key) => {
|
|
5471
|
+
error.metadata.append(key, value);
|
|
5472
|
+
});
|
|
5473
|
+
throw error;
|
|
5474
|
+
}
|
|
5475
|
+
endStream.metadata.forEach((value, key) => trailerTarget.set(key, value));
|
|
5476
|
+
continue;
|
|
5477
|
+
}
|
|
5478
|
+
yield yield __await$1(parse2(data));
|
|
5479
|
+
}
|
|
5480
|
+
if ("throwIfAborted" in signal2) {
|
|
5481
|
+
signal2.throwIfAborted();
|
|
5482
|
+
}
|
|
5483
|
+
if (!endStreamReceived) {
|
|
5484
|
+
throw "missing EndStreamResponse";
|
|
5485
|
+
}
|
|
5486
|
+
});
|
|
5487
|
+
}
|
|
5488
|
+
async function createRequestBody(input2) {
|
|
5489
|
+
if (method.methodKind != "server_streaming") {
|
|
5490
|
+
throw "The fetch API does not support streaming request bodies";
|
|
5491
|
+
}
|
|
5492
|
+
const r = await input2[Symbol.asyncIterator]().next();
|
|
5493
|
+
if (r.done == true) {
|
|
5494
|
+
throw "missing request message";
|
|
5495
|
+
}
|
|
5496
|
+
return encodeEnvelope(0, serialize(r.value));
|
|
5497
|
+
}
|
|
5498
|
+
timeoutMs = timeoutMs === void 0 ? options.defaultTimeoutMs : timeoutMs <= 0 ? void 0 : timeoutMs;
|
|
5499
|
+
return await runStreamingCall({
|
|
5500
|
+
interceptors: options.interceptors,
|
|
5501
|
+
timeoutMs,
|
|
5502
|
+
signal,
|
|
5503
|
+
req: {
|
|
5504
|
+
stream: true,
|
|
5505
|
+
service: method.parent,
|
|
5506
|
+
method,
|
|
5507
|
+
requestMethod: "POST",
|
|
5508
|
+
url: createMethodUrl(options.baseUrl, method),
|
|
5509
|
+
header: requestHeader$1(method.methodKind, useBinaryFormat, timeoutMs, header, false),
|
|
5510
|
+
contextValues: contextValues !== null && contextValues !== void 0 ? contextValues : createContextValues(),
|
|
5511
|
+
message: input
|
|
5512
|
+
},
|
|
5513
|
+
next: async (req) => {
|
|
5514
|
+
var _a2;
|
|
5515
|
+
const fetch2 = (_a2 = options.fetch) !== null && _a2 !== void 0 ? _a2 : globalThis.fetch;
|
|
5516
|
+
const fRes = await fetch2(req.url, Object.assign(Object.assign({}, fetchOptions$1), { method: req.requestMethod, headers: req.header, signal: req.signal, body: await createRequestBody(req.message) }));
|
|
5517
|
+
validateResponse$1(method.methodKind, useBinaryFormat, fRes.status, fRes.headers);
|
|
5518
|
+
if (fRes.body === null) {
|
|
5519
|
+
throw "missing response body";
|
|
5520
|
+
}
|
|
5521
|
+
const trailer = new Headers();
|
|
5522
|
+
const res = Object.assign(Object.assign({}, req), { header: fRes.headers, trailer, message: parseResponseBody(fRes.body, trailer, fRes.headers, req.signal) });
|
|
5523
|
+
return res;
|
|
5524
|
+
}
|
|
5525
|
+
});
|
|
5526
|
+
}
|
|
5527
|
+
};
|
|
5528
|
+
}
|
|
5134
5529
|
function validateTrailer(trailer, header) {
|
|
5135
5530
|
const err = findTrailerError(trailer);
|
|
5136
5531
|
if (err) {
|
|
@@ -5146,12 +5541,12 @@ function validateTrailer(trailer, header) {
|
|
|
5146
5541
|
function requestHeader(useBinaryFormat, timeoutMs, userProvidedHeaders, setUserAgent) {
|
|
5147
5542
|
var _a, _b;
|
|
5148
5543
|
const result = new Headers(userProvidedHeaders !== null && userProvidedHeaders !== void 0 ? userProvidedHeaders : {});
|
|
5149
|
-
result.set(headerContentType, useBinaryFormat ? contentTypeProto : contentTypeJson);
|
|
5544
|
+
result.set(headerContentType$1, useBinaryFormat ? contentTypeProto : contentTypeJson);
|
|
5150
5545
|
result.set(headerXGrpcWeb, "1");
|
|
5151
|
-
const userAgent = (_b = (_a = result.get(headerUserAgent)) !== null && _a !== void 0 ? _a : result.get(headerXUserAgent)) !== null && _b !== void 0 ? _b : "connect-es/2.1.1";
|
|
5546
|
+
const userAgent = (_b = (_a = result.get(headerUserAgent$1)) !== null && _a !== void 0 ? _a : result.get(headerXUserAgent)) !== null && _b !== void 0 ? _b : "connect-es/2.1.1";
|
|
5152
5547
|
result.set(headerXUserAgent, userAgent);
|
|
5153
5548
|
if (timeoutMs !== void 0) {
|
|
5154
|
-
result.set(headerTimeout, `${timeoutMs}m`);
|
|
5549
|
+
result.set(headerTimeout$1, `${timeoutMs}m`);
|
|
5155
5550
|
}
|
|
5156
5551
|
return result;
|
|
5157
5552
|
}
|
|
@@ -5395,7 +5790,7 @@ function createGrpcWebTransport(options) {
|
|
|
5395
5790
|
}
|
|
5396
5791
|
};
|
|
5397
5792
|
}
|
|
5398
|
-
const file_src_api_yorkie_v1_resources = /* @__PURE__ */ fileDesc("CiFzcmMvYXBpL3lvcmtpZS92MS9yZXNvdXJjZXMucHJvdG8SCXlvcmtpZS52MSKuAQoIU25hcHNob3QSJAoEcm9vdBgBIAEoCzIWLnlvcmtpZS52MS5KU09ORWxlbWVudBI1CglwcmVzZW5jZXMYAiADKAsyIi55b3JraWUudjEuU25hcHNob3QuUHJlc2VuY2VzRW50cnkaRQoOUHJlc2VuY2VzRW50cnkSCwoDa2V5GAEgASgJEiIKBXZhbHVlGAIgASgLMhMueW9ya2llLnYxLlByZXNlbmNlOgI4ASL7AQoKQ2hhbmdlUGFjaxIUCgxkb2N1bWVudF9rZXkYASABKAkSKQoKY2hlY2twb2ludBgCIAEoCzIVLnlvcmtpZS52MS5DaGVja3BvaW50EhAKCHNuYXBzaG90GAMgASgMEiIKB2NoYW5nZXMYBCADKAsyES55b3JraWUudjEuQ2hhbmdlEjAKEW1pbl9zeW5jZWRfdGlja2V0GAUgASgLMhUueW9ya2llLnYxLlRpbWVUaWNrZXQSEgoKaXNfcmVtb3ZlZBgGIAEoCBIwCg52ZXJzaW9uX3ZlY3RvchgHIAEoCzIYLnlvcmtpZS52MS5WZXJzaW9uVmVjdG9yIpgBCgZDaGFuZ2USHwoCaWQYASABKAsyEy55b3JraWUudjEuQ2hhbmdlSUQSDwoHbWVzc2FnZRgCIAEoCRIoCgpvcGVyYXRpb25zGAMgAygLMhQueW9ya2llLnYxLk9wZXJhdGlvbhIyCg9wcmVzZW5jZV9jaGFuZ2UYBCABKAsyGS55b3JraWUudjEuUHJlc2VuY2VDaGFuZ2UihwEKCENoYW5nZUlEEhIKCmNsaWVudF9zZXEYASABKA0SEgoKc2VydmVyX3NlcRgCIAEoAxIPCgdsYW1wb3J0GAMgASgDEhAKCGFjdG9yX2lkGAQgASgMEjAKDnZlcnNpb25fdmVjdG9yGAUgASgLMhgueW9ya2llLnYxLlZlcnNpb25WZWN0b3IidAoNVmVyc2lvblZlY3RvchI0CgZ2ZWN0b3IYASADKAsyJC55b3JraWUudjEuVmVyc2lvblZlY3Rvci5WZWN0b3JFbnRyeRotCgtWZWN0b3JFbnRyeRILCgNrZXkYASABKAkSDQoFdmFsdWUYAiABKAM6AjgBIsoaCglPcGVyYXRpb24SJwoDc2V0GAEgASgLMhgueW9ya2llLnYxLk9wZXJhdGlvbi5TZXRIABInCgNhZGQYAiABKAsyGC55b3JraWUudjEuT3BlcmF0aW9uLkFkZEgAEikKBG1vdmUYAyABKAsyGS55b3JraWUudjEuT3BlcmF0aW9uLk1vdmVIABItCgZyZW1vdmUYBCABKAsyGy55b3JraWUudjEuT3BlcmF0aW9uLlJlbW92ZUgAEikKBGVkaXQYBSABKAsyGS55b3JraWUudjEuT3BlcmF0aW9uLkVkaXRIABIrCgVzdHlsZRgHIAEoCzIaLnlvcmtpZS52MS5PcGVyYXRpb24uU3R5bGVIABIxCghpbmNyZWFzZRgIIAEoCzIdLnlvcmtpZS52MS5PcGVyYXRpb24uSW5jcmVhc2VIABIyCgl0cmVlX2VkaXQYCSABKAsyHS55b3JraWUudjEuT3BlcmF0aW9uLlRyZWVFZGl0SAASNAoKdHJlZV9zdHlsZRgKIAEoCzIeLnlvcmtpZS52MS5PcGVyYXRpb24uVHJlZVN0eWxlSAASMgoJYXJyYXlfc2V0GAsgASgLMh0ueW9ya2llLnYxLk9wZXJhdGlvbi5BcnJheVNldEgAGp0BCgNTZXQSMAoRcGFyZW50X2NyZWF0ZWRfYXQYASABKAsyFS55b3JraWUudjEuVGltZVRpY2tldBILCgNrZXkYAiABKAkSKwoFdmFsdWUYAyABKAsyHC55b3JraWUudjEuSlNPTkVsZW1lbnRTaW1wbGUSKgoLZXhlY3V0ZWRfYXQYBCABKAsyFS55b3JraWUudjEuVGltZVRpY2tldBrAAQoDQWRkEjAKEXBhcmVudF9jcmVhdGVkX2F0GAEgASgLMhUueW9ya2llLnYxLlRpbWVUaWNrZXQSLgoPcHJldl9jcmVhdGVkX2F0GAIgASgLMhUueW9ya2llLnYxLlRpbWVUaWNrZXQSKwoFdmFsdWUYAyABKAsyHC55b3JraWUudjEuSlNPTkVsZW1lbnRTaW1wbGUSKgoLZXhlY3V0ZWRfYXQYBCABKAsyFS55b3JraWUudjEuVGltZVRpY2tldBq/AQoETW92ZRIwChFwYXJlbnRfY3JlYXRlZF9hdBgBIAEoCzIVLnlvcmtpZS52MS5UaW1lVGlja2V0Ei4KD3ByZXZfY3JlYXRlZF9hdBgCIAEoCzIVLnlvcmtpZS52MS5UaW1lVGlja2V0EikKCmNyZWF0ZWRfYXQYAyABKAsyFS55b3JraWUudjEuVGltZVRpY2tldBIqCgtleGVjdXRlZF9hdBgEIAEoCzIVLnlvcmtpZS52MS5UaW1lVGlja2V0GpEBCgZSZW1vdmUSMAoRcGFyZW50X2NyZWF0ZWRfYXQYASABKAsyFS55b3JraWUudjEuVGltZVRpY2tldBIpCgpjcmVhdGVkX2F0GAIgASgLMhUueW9ya2llLnYxLlRpbWVUaWNrZXQSKgoLZXhlY3V0ZWRfYXQYAyABKAsyFS55b3JraWUudjEuVGltZVRpY2tldBrZAwoERWRpdBIwChFwYXJlbnRfY3JlYXRlZF9hdBgBIAEoCzIVLnlvcmtpZS52MS5UaW1lVGlja2V0EiQKBGZyb20YAiABKAsyFi55b3JraWUudjEuVGV4dE5vZGVQb3MSIgoCdG8YAyABKAsyFi55b3JraWUudjEuVGV4dE5vZGVQb3MSUwoXY3JlYXRlZF9hdF9tYXBfYnlfYWN0b3IYBCADKAsyMi55b3JraWUudjEuT3BlcmF0aW9uLkVkaXQuQ3JlYXRlZEF0TWFwQnlBY3RvckVudHJ5Eg8KB2NvbnRlbnQYBSABKAkSKgoLZXhlY3V0ZWRfYXQYBiABKAsyFS55b3JraWUudjEuVGltZVRpY2tldBI9CgphdHRyaWJ1dGVzGAcgAygLMikueW9ya2llLnYxLk9wZXJhdGlvbi5FZGl0LkF0dHJpYnV0ZXNFbnRyeRpRChhDcmVhdGVkQXRNYXBCeUFjdG9yRW50cnkSCwoDa2V5GAEgASgJEiQKBXZhbHVlGAIgASgLMhUueW9ya2llLnYxLlRpbWVUaWNrZXQ6AjgBGjEKD0F0dHJpYnV0ZXNFbnRyeRILCgNrZXkYASABKAkSDQoFdmFsdWUYAiABKAk6AjgBGukDCgVTdHlsZRIwChFwYXJlbnRfY3JlYXRlZF9hdBgBIAEoCzIVLnlvcmtpZS52MS5UaW1lVGlja2V0EiQKBGZyb20YAiABKAsyFi55b3JraWUudjEuVGV4dE5vZGVQb3MSIgoCdG8YAyABKAsyFi55b3JraWUudjEuVGV4dE5vZGVQb3MSPgoKYXR0cmlidXRlcxgEIAMoCzIqLnlvcmtpZS52MS5PcGVyYXRpb24uU3R5bGUuQXR0cmlidXRlc0VudHJ5EioKC2V4ZWN1dGVkX2F0GAUgASgLMhUueW9ya2llLnYxLlRpbWVUaWNrZXQSVAoXY3JlYXRlZF9hdF9tYXBfYnlfYWN0b3IYBiADKAsyMy55b3JraWUudjEuT3BlcmF0aW9uLlN0eWxlLkNyZWF0ZWRBdE1hcEJ5QWN0b3JFbnRyeRIcChRhdHRyaWJ1dGVzX3RvX3JlbW92ZRgHIAMoCRoxCg9BdHRyaWJ1dGVzRW50cnkSCwoDa2V5GAEgASgJEg0KBXZhbHVlGAIgASgJOgI4ARpRChhDcmVhdGVkQXRNYXBCeUFjdG9yRW50cnkSCwoDa2V5GAEgASgJEiQKBXZhbHVlGAIgASgLMhUueW9ya2llLnYxLlRpbWVUaWNrZXQ6AjgBGpUBCghJbmNyZWFzZRIwChFwYXJlbnRfY3JlYXRlZF9hdBgBIAEoCzIVLnlvcmtpZS52MS5UaW1lVGlja2V0EisKBXZhbHVlGAIgASgLMhwueW9ya2llLnYxLkpTT05FbGVtZW50U2ltcGxlEioKC2V4ZWN1dGVkX2F0GAMgASgLMhUueW9ya2llLnYxLlRpbWVUaWNrZXQakwMKCFRyZWVFZGl0EjAKEXBhcmVudF9jcmVhdGVkX2F0GAEgASgLMhUueW9ya2llLnYxLlRpbWVUaWNrZXQSIAoEZnJvbRgCIAEoCzISLnlvcmtpZS52MS5UcmVlUG9zEh4KAnRvGAMgASgLMhIueW9ya2llLnYxLlRyZWVQb3MSVwoXY3JlYXRlZF9hdF9tYXBfYnlfYWN0b3IYBCADKAsyNi55b3JraWUudjEuT3BlcmF0aW9uLlRyZWVFZGl0LkNyZWF0ZWRBdE1hcEJ5QWN0b3JFbnRyeRImCghjb250ZW50cxgFIAMoCzIULnlvcmtpZS52MS5UcmVlTm9kZXMSEwoLc3BsaXRfbGV2ZWwYByABKAUSKgoLZXhlY3V0ZWRfYXQYBiABKAsyFS55b3JraWUudjEuVGltZVRpY2tldBpRChhDcmVhdGVkQXRNYXBCeUFjdG9yRW50cnkSCwoDa2V5GAEgASgJEiQKBXZhbHVlGAIgASgLMhUueW9ya2llLnYxLlRpbWVUaWNrZXQ6AjgBGu0DCglUcmVlU3R5bGUSMAoRcGFyZW50X2NyZWF0ZWRfYXQYASABKAsyFS55b3JraWUudjEuVGltZVRpY2tldBIgCgRmcm9tGAIgASgLMhIueW9ya2llLnYxLlRyZWVQb3MSHgoCdG8YAyABKAsyEi55b3JraWUudjEuVHJlZVBvcxJCCgphdHRyaWJ1dGVzGAQgAygLMi4ueW9ya2llLnYxLk9wZXJhdGlvbi5UcmVlU3R5bGUuQXR0cmlidXRlc0VudHJ5EioKC2V4ZWN1dGVkX2F0GAUgASgLMhUueW9ya2llLnYxLlRpbWVUaWNrZXQSHAoUYXR0cmlidXRlc190b19yZW1vdmUYBiADKAkSWAoXY3JlYXRlZF9hdF9tYXBfYnlfYWN0b3IYByADKAsyNy55b3JraWUudjEuT3BlcmF0aW9uLlRyZWVTdHlsZS5DcmVhdGVkQXRNYXBCeUFjdG9yRW50cnkaMQoPQXR0cmlidXRlc0VudHJ5EgsKA2tleRgBIAEoCRINCgV2YWx1ZRgCIAEoCToCOAEaUQoYQ3JlYXRlZEF0TWFwQnlBY3RvckVudHJ5EgsKA2tleRgBIAEoCRIkCgV2YWx1ZRgCIAEoCzIVLnlvcmtpZS52MS5UaW1lVGlja2V0OgI4ARrAAQoIQXJyYXlTZXQSMAoRcGFyZW50X2NyZWF0ZWRfYXQYASABKAsyFS55b3JraWUudjEuVGltZVRpY2tldBIpCgpjcmVhdGVkX2F0GAIgASgLMhUueW9ya2llLnYxLlRpbWVUaWNrZXQSKwoFdmFsdWUYAyABKAsyHC55b3JraWUudjEuSlNPTkVsZW1lbnRTaW1wbGUSKgoLZXhlY3V0ZWRfYXQYBCABKAsyFS55b3JraWUudjEuVGltZVRpY2tldEIGCgRib2R5IsUBChFKU09ORWxlbWVudFNpbXBsZRIpCgpjcmVhdGVkX2F0GAEgASgLMhUueW9ya2llLnYxLlRpbWVUaWNrZXQSJwoIbW92ZWRfYXQYAiABKAsyFS55b3JraWUudjEuVGltZVRpY2tldBIpCgpyZW1vdmVkX2F0GAMgASgLMhUueW9ya2llLnYxLlRpbWVUaWNrZXQSIgoEdHlwZRgEIAEoDjIULnlvcmtpZS52MS5WYWx1ZVR5cGUSDQoFdmFsdWUYBSABKAwiggsKC0pTT05FbGVtZW50EjgKC2pzb25fb2JqZWN0GAEgASgLMiEueW9ya2llLnYxLkpTT05FbGVtZW50LkpTT05PYmplY3RIABI2Cgpqc29uX2FycmF5GAIgASgLMiAueW9ya2llLnYxLkpTT05FbGVtZW50LkpTT05BcnJheUgAEjUKCXByaW1pdGl2ZRgDIAEoCzIgLnlvcmtpZS52MS5KU09ORWxlbWVudC5QcmltaXRpdmVIABIrCgR0ZXh0GAUgASgLMhsueW9ya2llLnYxLkpTT05FbGVtZW50LlRleHRIABIxCgdjb3VudGVyGAYgASgLMh4ueW9ya2llLnYxLkpTT05FbGVtZW50LkNvdW50ZXJIABIrCgR0cmVlGAcgASgLMhsueW9ya2llLnYxLkpTT05FbGVtZW50LlRyZWVIABquAQoKSlNPTk9iamVjdBIhCgVub2RlcxgBIAMoCzISLnlvcmtpZS52MS5SSFROb2RlEikKCmNyZWF0ZWRfYXQYAiABKAsyFS55b3JraWUudjEuVGltZVRpY2tldBInCghtb3ZlZF9hdBgDIAEoCzIVLnlvcmtpZS52MS5UaW1lVGlja2V0EikKCnJlbW92ZWRfYXQYBCABKAsyFS55b3JraWUudjEuVGltZVRpY2tldBqtAQoJSlNPTkFycmF5EiEKBW5vZGVzGAEgAygLMhIueW9ya2llLnYxLlJHQU5vZGUSKQoKY3JlYXRlZF9hdBgCIAEoCzIVLnlvcmtpZS52MS5UaW1lVGlja2V0EicKCG1vdmVkX2F0GAMgASgLMhUueW9ya2llLnYxLlRpbWVUaWNrZXQSKQoKcmVtb3ZlZF9hdBgEIAEoCzIVLnlvcmtpZS52MS5UaW1lVGlja2V0Gr0BCglQcmltaXRpdmUSIgoEdHlwZRgBIAEoDjIULnlvcmtpZS52MS5WYWx1ZVR5cGUSDQoFdmFsdWUYAiABKAwSKQoKY3JlYXRlZF9hdBgDIAEoCzIVLnlvcmtpZS52MS5UaW1lVGlja2V0EicKCG1vdmVkX2F0GAQgASgLMhUueW9ya2llLnYxLlRpbWVUaWNrZXQSKQoKcmVtb3ZlZF9hdBgFIAEoCzIVLnlvcmtpZS52MS5UaW1lVGlja2V0GqkBCgRUZXh0EiIKBW5vZGVzGAEgAygLMhMueW9ya2llLnYxLlRleHROb2RlEikKCmNyZWF0ZWRfYXQYAiABKAsyFS55b3JraWUudjEuVGltZVRpY2tldBInCghtb3ZlZF9hdBgDIAEoCzIVLnlvcmtpZS52MS5UaW1lVGlja2V0EikKCnJlbW92ZWRfYXQYBCABKAsyFS55b3JraWUudjEuVGltZVRpY2tldBq7AQoHQ291bnRlchIiCgR0eXBlGAEgASgOMhQueW9ya2llLnYxLlZhbHVlVHlwZRINCgV2YWx1ZRgCIAEoDBIpCgpjcmVhdGVkX2F0GAMgASgLMhUueW9ya2llLnYxLlRpbWVUaWNrZXQSJwoIbW92ZWRfYXQYBCABKAsyFS55b3JraWUudjEuVGltZVRpY2tldBIpCgpyZW1vdmVkX2F0GAUgASgLMhUueW9ya2llLnYxLlRpbWVUaWNrZXQaqQEKBFRyZWUSIgoFbm9kZXMYASADKAsyEy55b3JraWUudjEuVHJlZU5vZGUSKQoKY3JlYXRlZF9hdBgCIAEoCzIVLnlvcmtpZS52MS5UaW1lVGlja2V0EicKCG1vdmVkX2F0GAMgASgLMhUueW9ya2llLnYxLlRpbWVUaWNrZXQSKQoKcmVtb3ZlZF9hdBgEIAEoCzIVLnlvcmtpZS52MS5UaW1lVGlja2V0QgYKBGJvZHkiPwoHUkhUTm9kZRILCgNrZXkYASABKAkSJwoHZWxlbWVudBgCIAEoCzIWLnlvcmtpZS52MS5KU09ORWxlbWVudCJUCgdSR0FOb2RlEiAKBG5leHQYASABKAsyEi55b3JraWUudjEuUkdBTm9kZRInCgdlbGVtZW50GAIgASgLMhYueW9ya2llLnYxLkpTT05FbGVtZW50IlgKCE5vZGVBdHRyEg0KBXZhbHVlGAEgASgJEikKCnVwZGF0ZWRfYXQYAiABKAsyFS55b3JraWUudjEuVGltZVRpY2tldBISCgppc19yZW1vdmVkGAMgASgIIpQCCghUZXh0Tm9kZRIhCgJpZBgBIAEoCzIVLnlvcmtpZS52MS5UZXh0Tm9kZUlEEg0KBXZhbHVlGAIgASgJEikKCnJlbW92ZWRfYXQYAyABKAsyFS55b3JraWUudjEuVGltZVRpY2tldBIqCgtpbnNfcHJldl9pZBgEIAEoCzIVLnlvcmtpZS52MS5UZXh0Tm9kZUlEEjcKCmF0dHJpYnV0ZXMYBSADKAsyIy55b3JraWUudjEuVGV4dE5vZGUuQXR0cmlidXRlc0VudHJ5GkYKD0F0dHJpYnV0ZXNFbnRyeRILCgNrZXkYASABKAkSIgoFdmFsdWUYAiABKAsyEy55b3JraWUudjEuTm9kZUF0dHI6AjgBIkcKClRleHROb2RlSUQSKQoKY3JlYXRlZF9hdBgBIAEoCzIVLnlvcmtpZS52MS5UaW1lVGlja2V0Eg4KBm9mZnNldBgCIAEoBSLdAgoIVHJlZU5vZGUSIQoCaWQYASABKAsyFS55b3JraWUudjEuVHJlZU5vZGVJRBIMCgR0eXBlGAIgASgJEg0KBXZhbHVlGAMgASgJEikKCnJlbW92ZWRfYXQYBCABKAsyFS55b3JraWUudjEuVGltZVRpY2tldBIqCgtpbnNfcHJldl9pZBgFIAEoCzIVLnlvcmtpZS52MS5UcmVlTm9kZUlEEioKC2luc19uZXh0X2lkGAYgASgLMhUueW9ya2llLnYxLlRyZWVOb2RlSUQSDQoFZGVwdGgYByABKAUSNwoKYXR0cmlidXRlcxgIIAMoCzIjLnlvcmtpZS52MS5UcmVlTm9kZS5BdHRyaWJ1dGVzRW50cnkaRgoPQXR0cmlidXRlc0VudHJ5EgsKA2tleRgBIAEoCRIiCgV2YWx1ZRgCIAEoCzITLnlvcmtpZS52MS5Ob2RlQXR0cjoCOAEiMQoJVHJlZU5vZGVzEiQKB2NvbnRlbnQYASADKAsyEy55b3JraWUudjEuVHJlZU5vZGUiRwoKVHJlZU5vZGVJRBIpCgpjcmVhdGVkX2F0GAEgASgLMhUueW9ya2llLnYxLlRpbWVUaWNrZXQSDgoGb2Zmc2V0GAIgASgFImMKB1RyZWVQb3MSKAoJcGFyZW50X2lkGAEgASgLMhUueW9ya2llLnYxLlRyZWVOb2RlSUQSLgoPbGVmdF9zaWJsaW5nX2lkGAIgASgLMhUueW9ya2llLnYxLlRyZWVOb2RlSUQiawoEVXNlchIKCgJpZBgBIAEoCRIVCg1hdXRoX3Byb3ZpZGVyGAIgASgJEhAKCHVzZXJuYW1lGAMgASgJEi4KCmNyZWF0ZWRfYXQYBCABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wIokBCgZNZW1iZXISCgoCaWQYASABKAkSEgoKcHJvamVjdF9pZBgCIAEoCRIPCgd1c2VyX2lkGAMgASgJEhAKCHVzZXJuYW1lGAQgASgJEgwKBHJvbGUYBSABKAkSLgoKaW52aXRlZF9hdBgGIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXAi6QYKB1Byb2plY3QSCgoCaWQYASABKAkSDAoEbmFtZRgCIAEoCRISCgpwdWJsaWNfa2V5GAMgASgJEhIKCnNlY3JldF9rZXkYBCABKAkSGAoQYXV0aF93ZWJob29rX3VybBgFIAEoCRIcChRhdXRoX3dlYmhvb2tfbWV0aG9kcxgGIAMoCRIgChhhdXRoX3dlYmhvb2tfbWF4X3JldHJpZXMYESABKAQSJgoeYXV0aF93ZWJob29rX21pbl93YWl0X2ludGVydmFsGBIgASgJEiYKHmF1dGhfd2ViaG9va19tYXhfd2FpdF9pbnRlcnZhbBgTIAEoCRIkChxhdXRoX3dlYmhvb2tfcmVxdWVzdF90aW1lb3V0GBQgASgJEhkKEWV2ZW50X3dlYmhvb2tfdXJsGAcgASgJEhwKFGV2ZW50X3dlYmhvb2tfZXZlbnRzGAggAygJEiEKGWV2ZW50X3dlYmhvb2tfbWF4X3JldHJpZXMYFSABKAQSJwofZXZlbnRfd2ViaG9va19taW5fd2FpdF9pbnRlcnZhbBgWIAEoCRInCh9ldmVudF93ZWJob29rX21heF93YWl0X2ludGVydmFsGBcgASgJEiUKHWV2ZW50X3dlYmhvb2tfcmVxdWVzdF90aW1lb3V0GBggASgJEiMKG2NsaWVudF9kZWFjdGl2YXRlX3RocmVzaG9sZBgJIAEoCRIaChJzbmFwc2hvdF90aHJlc2hvbGQYGSABKAMSGQoRc25hcHNob3RfaW50ZXJ2YWwYGiABKAMSJAocbWF4X3N1YnNjcmliZXJzX3Blcl9kb2N1bWVudBgKIAEoBRIkChxtYXhfYXR0YWNobWVudHNfcGVyX2RvY3VtZW50GAsgASgFEh0KFW1heF9zaXplX3Blcl9kb2N1bWVudBgPIAEoBRIYChByZW1vdmVfb25fZGV0YWNoGBAgASgIEh0KFWF1dG9fcmV2aXNpb25fZW5hYmxlZBgbIAEoCBIXCg9hbGxvd2VkX29yaWdpbnMYDiADKAkSLgoKY3JlYXRlZF9hdBgMIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXASLgoKdXBkYXRlZF9hdBgNIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXAiLwoLTWV0cmljUG9pbnQSEQoJdGltZXN0YW1wGAEgASgDEg0KBXZhbHVlGAIgASgFIqMMChZVcGRhdGFibGVQcm9qZWN0RmllbGRzEioKBG5hbWUYASABKAsyHC5nb29nbGUucHJvdG9idWYuU3RyaW5nVmFsdWUSNgoQYXV0aF93ZWJob29rX3VybBgCIAEoCzIcLmdvb2dsZS5wcm90b2J1Zi5TdHJpbmdWYWx1ZRJSChRhdXRoX3dlYmhvb2tfbWV0aG9kcxgDIAEoCzI0LnlvcmtpZS52MS5VcGRhdGFibGVQcm9qZWN0RmllbGRzLkF1dGhXZWJob29rTWV0aG9kcxI+ChhhdXRoX3dlYmhvb2tfbWF4X3JldHJpZXMYDCABKAsyHC5nb29nbGUucHJvdG9idWYuVUludDY0VmFsdWUSRAoeYXV0aF93ZWJob29rX21pbl93YWl0X2ludGVydmFsGA0gASgLMhwuZ29vZ2xlLnByb3RvYnVmLlN0cmluZ1ZhbHVlEkQKHmF1dGhfd2ViaG9va19tYXhfd2FpdF9pbnRlcnZhbBgOIAEoCzIcLmdvb2dsZS5wcm90b2J1Zi5TdHJpbmdWYWx1ZRJCChxhdXRoX3dlYmhvb2tfcmVxdWVzdF90aW1lb3V0GA8gASgLMhwuZ29vZ2xlLnByb3RvYnVmLlN0cmluZ1ZhbHVlEjcKEWV2ZW50X3dlYmhvb2tfdXJsGAQgASgLMhwuZ29vZ2xlLnByb3RvYnVmLlN0cmluZ1ZhbHVlElIKFGV2ZW50X3dlYmhvb2tfZXZlbnRzGAUgASgLMjQueW9ya2llLnYxLlVwZGF0YWJsZVByb2plY3RGaWVsZHMuRXZlbnRXZWJob29rRXZlbnRzEj8KGWV2ZW50X3dlYmhvb2tfbWF4X3JldHJpZXMYECABKAsyHC5nb29nbGUucHJvdG9idWYuVUludDY0VmFsdWUSRQofZXZlbnRfd2ViaG9va19taW5fd2FpdF9pbnRlcnZhbBgRIAEoCzIcLmdvb2dsZS5wcm90b2J1Zi5TdHJpbmdWYWx1ZRJFCh9ldmVudF93ZWJob29rX21heF93YWl0X2ludGVydmFsGBIgASgLMhwuZ29vZ2xlLnByb3RvYnVmLlN0cmluZ1ZhbHVlEkMKHWV2ZW50X3dlYmhvb2tfcmVxdWVzdF90aW1lb3V0GBMgASgLMhwuZ29vZ2xlLnByb3RvYnVmLlN0cmluZ1ZhbHVlEjcKEnNuYXBzaG90X3RocmVzaG9sZBgUIAEoCzIbLmdvb2dsZS5wcm90b2J1Zi5JbnQ2NFZhbHVlEjYKEXNuYXBzaG90X2ludGVydmFsGBUgASgLMhsuZ29vZ2xlLnByb3RvYnVmLkludDY0VmFsdWUSQQobY2xpZW50X2RlYWN0aXZhdGVfdGhyZXNob2xkGAYgASgLMhwuZ29vZ2xlLnByb3RvYnVmLlN0cmluZ1ZhbHVlEkEKHG1heF9zdWJzY3JpYmVyc19wZXJfZG9jdW1lbnQYByABKAsyGy5nb29nbGUucHJvdG9idWYuSW50MzJWYWx1ZRJBChxtYXhfYXR0YWNobWVudHNfcGVyX2RvY3VtZW50GAggASgLMhsuZ29vZ2xlLnByb3RvYnVmLkludDMyVmFsdWUSOgoVbWF4X3NpemVfcGVyX2RvY3VtZW50GAogASgLMhsuZ29vZ2xlLnByb3RvYnVmLkludDMyVmFsdWUSNAoQcmVtb3ZlX29uX2RldGFjaBgLIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5Cb29sVmFsdWUSOQoVYXV0b19yZXZpc2lvbl9lbmFibGVkGBYgASgLMhouZ29vZ2xlLnByb3RvYnVmLkJvb2xWYWx1ZRJJCg9hbGxvd2VkX29yaWdpbnMYCSABKAsyMC55b3JraWUudjEuVXBkYXRhYmxlUHJvamVjdEZpZWxkcy5BbGxvd2VkT3JpZ2lucxolChJBdXRoV2ViaG9va01ldGhvZHMSDwoHbWV0aG9kcxgBIAMoCRokChJFdmVudFdlYmhvb2tFdmVudHMSDgoGZXZlbnRzGAEgAygJGiEKDkFsbG93ZWRPcmlnaW5zEg8KB29yaWdpbnMYASADKAkipwMKD0RvY3VtZW50U3VtbWFyeRIKCgJpZBgBIAEoCRILCgNrZXkYAiABKAkSDAoEcm9vdBgDIAEoCRIYChBhdHRhY2hlZF9jbGllbnRzGAcgASgFEikKDWRvY3VtZW50X3NpemUYCCABKAsyEi55b3JraWUudjEuRG9jU2l6ZRISCgpzY2hlbWFfa2V5GAkgASgJEjwKCXByZXNlbmNlcxgKIAMoCzIpLnlvcmtpZS52MS5Eb2N1bWVudFN1bW1hcnkuUHJlc2VuY2VzRW50cnkSLgoKY3JlYXRlZF9hdBgEIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXASLwoLYWNjZXNzZWRfYXQYBSABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wEi4KCnVwZGF0ZWRfYXQYBiABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wGkUKDlByZXNlbmNlc0VudHJ5EgsKA2tleRgBIAEoCRIiCgV2YWx1ZRgCIAEoCzITLnlvcmtpZS52MS5QcmVzZW5jZToCOAEi2gEKDlByZXNlbmNlQ2hhbmdlEjIKBHR5cGUYASABKA4yJC55b3JraWUudjEuUHJlc2VuY2VDaGFuZ2UuQ2hhbmdlVHlwZRIlCghwcmVzZW5jZRgCIAEoCzITLnlvcmtpZS52MS5QcmVzZW5jZSJtCgpDaGFuZ2VUeXBlEhsKF0NIQU5HRV9UWVBFX1VOU1BFQ0lGSUVEEAASEwoPQ0hBTkdFX1RZUEVfUFVUEAESFgoSQ0hBTkdFX1RZUEVfREVMRVRFEAISFQoRQ0hBTkdFX1RZUEVfQ0xFQVIQAyJkCghQcmVzZW5jZRIrCgRkYXRhGAEgAygLMh0ueW9ya2llLnYxLlByZXNlbmNlLkRhdGFFbnRyeRorCglEYXRhRW50cnkSCwoDa2V5GAEgASgJEg0KBXZhbHVlGAIgASgJOgI4ASI0Cg5DaGFubmVsU3VtbWFyeRILCgNrZXkYASABKAkSFQoNc2Vzc2lvbl9jb3VudBgCIAEoBSI0CgpDaGVja3BvaW50EhIKCnNlcnZlcl9zZXEYASABKAMSEgoKY2xpZW50X3NlcRgCIAEoDSJhCgtUZXh0Tm9kZVBvcxIpCgpjcmVhdGVkX2F0GAEgASgLMhUueW9ya2llLnYxLlRpbWVUaWNrZXQSDgoGb2Zmc2V0GAIgASgFEhcKD3JlbGF0aXZlX29mZnNldBgDIAEoBSJCCgpUaW1lVGlja2V0Eg8KB2xhbXBvcnQYASABKAMSEQoJZGVsaW1pdGVyGAIgASgNEhAKCGFjdG9yX2lkGAMgASgMIi4KDERvY0V2ZW50Qm9keRINCgV0b3BpYxgBIAEoCRIPCgdwYXlsb2FkGAIgASgMImsKCERvY0V2ZW50EiUKBHR5cGUYASABKA4yFy55b3JraWUudjEuRG9jRXZlbnRUeXBlEhEKCXB1Ymxpc2hlchgCIAEoCRIlCgRib2R5GAMgASgLMhcueW9ya2llLnYxLkRvY0V2ZW50Qm9keSLWAQoMQ2hhbm5lbEV2ZW50EioKBHR5cGUYASABKA4yHC55b3JraWUudjEuQ2hhbm5lbEV2ZW50LlR5cGUSEQoJcHVibGlzaGVyGAIgASgJEhUKDXNlc3Npb25fY291bnQYAyABKAMSCwoDc2VxGAQgASgDEg0KBXRvcGljGAUgASgJEg8KB3BheWxvYWQYBiABKAwiQwoEVHlwZRIUChBUWVBFX1VOU1BFQ0lGSUVEEAASEQoNVFlQRV9QUkVTRU5DRRABEhIKDlRZUEVfQlJPQURDQVNUEAIiJgoIRGF0YVNpemUSDAoEZGF0YRgBIAEoBRIMCgRtZXRhGAIgASgFIk0KB0RvY1NpemUSIQoEbGl2ZRgBIAEoCzITLnlvcmtpZS52MS5EYXRhU2l6ZRIfCgJnYxgCIAEoCzITLnlvcmtpZS52MS5EYXRhU2l6ZSKRAQoGU2NoZW1hEgoKAmlkGAEgASgJEgwKBG5hbWUYAiABKAkSDwoHdmVyc2lvbhgDIAEoBRIMCgRib2R5GAQgASgJEh4KBXJ1bGVzGAUgAygLMg8ueW9ya2llLnYxLlJ1bGUSLgoKY3JlYXRlZF9hdBgGIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXAiUAoMVHJlZU5vZGVSdWxlEhEKCW5vZGVfdHlwZRgBIAEoCRIPCgdjb250ZW50GAIgASgJEg0KBW1hcmtzGAMgASgJEg0KBWdyb3VwGAQgASgJIk8KBFJ1bGUSDAoEcGF0aBgBIAEoCRIMCgR0eXBlGAIgASgJEisKCnRyZWVfbm9kZXMYAyADKAsyFy55b3JraWUudjEuVHJlZU5vZGVSdWxlIoMBCg9SZXZpc2lvblN1bW1hcnkSCgoCaWQYASABKAkSDQoFbGFiZWwYAiABKAkSEwoLZGVzY3JpcHRpb24YAyABKAkSEAoIc25hcHNob3QYBCABKAkSLgoKY3JlYXRlZF9hdBgFIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXAq1AIKCVZhbHVlVHlwZRITCg9WQUxVRV9UWVBFX05VTEwQABIWChJWQUxVRV9UWVBFX0JPT0xFQU4QARIWChJWQUxVRV9UWVBFX0lOVEVHRVIQAhITCg9WQUxVRV9UWVBFX0xPTkcQAxIVChFWQUxVRV9UWVBFX0RPVUJMRRAEEhUKEVZBTFVFX1RZUEVfU1RSSU5HEAUSFAoQVkFMVUVfVFlQRV9CWVRFUxAGEhMKD1ZBTFVFX1RZUEVfREFURRAHEhoKFlZBTFVFX1RZUEVfSlNPTl9PQkpFQ1QQCBIZChVWQUxVRV9UWVBFX0pTT05fQVJSQVkQCRITCg9WQUxVRV9UWVBFX1RFWFQQChIaChZWQUxVRV9UWVBFX0lOVEVHRVJfQ05UEAsSFwoTVkFMVUVfVFlQRV9MT05HX0NOVBAMEhMKD1ZBTFVFX1RZUEVfVFJFRRANKqYBCgxEb2NFdmVudFR5cGUSIwofRE9DX0VWRU5UX1RZUEVfRE9DVU1FTlRfQ0hBTkdFRBAAEiMKH0RPQ19FVkVOVF9UWVBFX0RPQ1VNRU5UX1dBVENIRUQQARIlCiFET0NfRVZFTlRfVFlQRV9ET0NVTUVOVF9VTldBVENIRUQQAhIlCiFET0NfRVZFTlRfVFlQRV9ET0NVTUVOVF9CUk9BRENBU1QQA0JFChFkZXYueW9ya2llLmFwaS52MVABWi5naXRodWIuY29tL3lvcmtpZS10ZWFtL3lvcmtpZS9hcGkveW9ya2llL3YxO3YxYgZwcm90bzM", [file_google_protobuf_timestamp, file_google_protobuf_wrappers]);
|
|
5793
|
+
const file_src_api_yorkie_v1_resources = /* @__PURE__ */ fileDesc("CiFzcmMvYXBpL3lvcmtpZS92MS9yZXNvdXJjZXMucHJvdG8SCXlvcmtpZS52MSKuAQoIU25hcHNob3QSJAoEcm9vdBgBIAEoCzIWLnlvcmtpZS52MS5KU09ORWxlbWVudBI1CglwcmVzZW5jZXMYAiADKAsyIi55b3JraWUudjEuU25hcHNob3QuUHJlc2VuY2VzRW50cnkaRQoOUHJlc2VuY2VzRW50cnkSCwoDa2V5GAEgASgJEiIKBXZhbHVlGAIgASgLMhMueW9ya2llLnYxLlByZXNlbmNlOgI4ASL7AQoKQ2hhbmdlUGFjaxIUCgxkb2N1bWVudF9rZXkYASABKAkSKQoKY2hlY2twb2ludBgCIAEoCzIVLnlvcmtpZS52MS5DaGVja3BvaW50EhAKCHNuYXBzaG90GAMgASgMEiIKB2NoYW5nZXMYBCADKAsyES55b3JraWUudjEuQ2hhbmdlEjAKEW1pbl9zeW5jZWRfdGlja2V0GAUgASgLMhUueW9ya2llLnYxLlRpbWVUaWNrZXQSEgoKaXNfcmVtb3ZlZBgGIAEoCBIwCg52ZXJzaW9uX3ZlY3RvchgHIAEoCzIYLnlvcmtpZS52MS5WZXJzaW9uVmVjdG9yIpgBCgZDaGFuZ2USHwoCaWQYASABKAsyEy55b3JraWUudjEuQ2hhbmdlSUQSDwoHbWVzc2FnZRgCIAEoCRIoCgpvcGVyYXRpb25zGAMgAygLMhQueW9ya2llLnYxLk9wZXJhdGlvbhIyCg9wcmVzZW5jZV9jaGFuZ2UYBCABKAsyGS55b3JraWUudjEuUHJlc2VuY2VDaGFuZ2UihwEKCENoYW5nZUlEEhIKCmNsaWVudF9zZXEYASABKA0SEgoKc2VydmVyX3NlcRgCIAEoAxIPCgdsYW1wb3J0GAMgASgDEhAKCGFjdG9yX2lkGAQgASgMEjAKDnZlcnNpb25fdmVjdG9yGAUgASgLMhgueW9ya2llLnYxLlZlcnNpb25WZWN0b3IidAoNVmVyc2lvblZlY3RvchI0CgZ2ZWN0b3IYASADKAsyJC55b3JraWUudjEuVmVyc2lvblZlY3Rvci5WZWN0b3JFbnRyeRotCgtWZWN0b3JFbnRyeRILCgNrZXkYASABKAkSDQoFdmFsdWUYAiABKAM6AjgBItkaCglPcGVyYXRpb24SJwoDc2V0GAEgASgLMhgueW9ya2llLnYxLk9wZXJhdGlvbi5TZXRIABInCgNhZGQYAiABKAsyGC55b3JraWUudjEuT3BlcmF0aW9uLkFkZEgAEikKBG1vdmUYAyABKAsyGS55b3JraWUudjEuT3BlcmF0aW9uLk1vdmVIABItCgZyZW1vdmUYBCABKAsyGy55b3JraWUudjEuT3BlcmF0aW9uLlJlbW92ZUgAEikKBGVkaXQYBSABKAsyGS55b3JraWUudjEuT3BlcmF0aW9uLkVkaXRIABIrCgVzdHlsZRgHIAEoCzIaLnlvcmtpZS52MS5PcGVyYXRpb24uU3R5bGVIABIxCghpbmNyZWFzZRgIIAEoCzIdLnlvcmtpZS52MS5PcGVyYXRpb24uSW5jcmVhc2VIABIyCgl0cmVlX2VkaXQYCSABKAsyHS55b3JraWUudjEuT3BlcmF0aW9uLlRyZWVFZGl0SAASNAoKdHJlZV9zdHlsZRgKIAEoCzIeLnlvcmtpZS52MS5PcGVyYXRpb24uVHJlZVN0eWxlSAASMgoJYXJyYXlfc2V0GAsgASgLMh0ueW9ya2llLnYxLk9wZXJhdGlvbi5BcnJheVNldEgAGp0BCgNTZXQSMAoRcGFyZW50X2NyZWF0ZWRfYXQYASABKAsyFS55b3JraWUudjEuVGltZVRpY2tldBILCgNrZXkYAiABKAkSKwoFdmFsdWUYAyABKAsyHC55b3JraWUudjEuSlNPTkVsZW1lbnRTaW1wbGUSKgoLZXhlY3V0ZWRfYXQYBCABKAsyFS55b3JraWUudjEuVGltZVRpY2tldBrAAQoDQWRkEjAKEXBhcmVudF9jcmVhdGVkX2F0GAEgASgLMhUueW9ya2llLnYxLlRpbWVUaWNrZXQSLgoPcHJldl9jcmVhdGVkX2F0GAIgASgLMhUueW9ya2llLnYxLlRpbWVUaWNrZXQSKwoFdmFsdWUYAyABKAsyHC55b3JraWUudjEuSlNPTkVsZW1lbnRTaW1wbGUSKgoLZXhlY3V0ZWRfYXQYBCABKAsyFS55b3JraWUudjEuVGltZVRpY2tldBq/AQoETW92ZRIwChFwYXJlbnRfY3JlYXRlZF9hdBgBIAEoCzIVLnlvcmtpZS52MS5UaW1lVGlja2V0Ei4KD3ByZXZfY3JlYXRlZF9hdBgCIAEoCzIVLnlvcmtpZS52MS5UaW1lVGlja2V0EikKCmNyZWF0ZWRfYXQYAyABKAsyFS55b3JraWUudjEuVGltZVRpY2tldBIqCgtleGVjdXRlZF9hdBgEIAEoCzIVLnlvcmtpZS52MS5UaW1lVGlja2V0GpEBCgZSZW1vdmUSMAoRcGFyZW50X2NyZWF0ZWRfYXQYASABKAsyFS55b3JraWUudjEuVGltZVRpY2tldBIpCgpjcmVhdGVkX2F0GAIgASgLMhUueW9ya2llLnYxLlRpbWVUaWNrZXQSKgoLZXhlY3V0ZWRfYXQYAyABKAsyFS55b3JraWUudjEuVGltZVRpY2tldBrZAwoERWRpdBIwChFwYXJlbnRfY3JlYXRlZF9hdBgBIAEoCzIVLnlvcmtpZS52MS5UaW1lVGlja2V0EiQKBGZyb20YAiABKAsyFi55b3JraWUudjEuVGV4dE5vZGVQb3MSIgoCdG8YAyABKAsyFi55b3JraWUudjEuVGV4dE5vZGVQb3MSUwoXY3JlYXRlZF9hdF9tYXBfYnlfYWN0b3IYBCADKAsyMi55b3JraWUudjEuT3BlcmF0aW9uLkVkaXQuQ3JlYXRlZEF0TWFwQnlBY3RvckVudHJ5Eg8KB2NvbnRlbnQYBSABKAkSKgoLZXhlY3V0ZWRfYXQYBiABKAsyFS55b3JraWUudjEuVGltZVRpY2tldBI9CgphdHRyaWJ1dGVzGAcgAygLMikueW9ya2llLnYxLk9wZXJhdGlvbi5FZGl0LkF0dHJpYnV0ZXNFbnRyeRpRChhDcmVhdGVkQXRNYXBCeUFjdG9yRW50cnkSCwoDa2V5GAEgASgJEiQKBXZhbHVlGAIgASgLMhUueW9ya2llLnYxLlRpbWVUaWNrZXQ6AjgBGjEKD0F0dHJpYnV0ZXNFbnRyeRILCgNrZXkYASABKAkSDQoFdmFsdWUYAiABKAk6AjgBGukDCgVTdHlsZRIwChFwYXJlbnRfY3JlYXRlZF9hdBgBIAEoCzIVLnlvcmtpZS52MS5UaW1lVGlja2V0EiQKBGZyb20YAiABKAsyFi55b3JraWUudjEuVGV4dE5vZGVQb3MSIgoCdG8YAyABKAsyFi55b3JraWUudjEuVGV4dE5vZGVQb3MSPgoKYXR0cmlidXRlcxgEIAMoCzIqLnlvcmtpZS52MS5PcGVyYXRpb24uU3R5bGUuQXR0cmlidXRlc0VudHJ5EioKC2V4ZWN1dGVkX2F0GAUgASgLMhUueW9ya2llLnYxLlRpbWVUaWNrZXQSVAoXY3JlYXRlZF9hdF9tYXBfYnlfYWN0b3IYBiADKAsyMy55b3JraWUudjEuT3BlcmF0aW9uLlN0eWxlLkNyZWF0ZWRBdE1hcEJ5QWN0b3JFbnRyeRIcChRhdHRyaWJ1dGVzX3RvX3JlbW92ZRgHIAMoCRoxCg9BdHRyaWJ1dGVzRW50cnkSCwoDa2V5GAEgASgJEg0KBXZhbHVlGAIgASgJOgI4ARpRChhDcmVhdGVkQXRNYXBCeUFjdG9yRW50cnkSCwoDa2V5GAEgASgJEiQKBXZhbHVlGAIgASgLMhUueW9ya2llLnYxLlRpbWVUaWNrZXQ6AjgBGqQBCghJbmNyZWFzZRIwChFwYXJlbnRfY3JlYXRlZF9hdBgBIAEoCzIVLnlvcmtpZS52MS5UaW1lVGlja2V0EisKBXZhbHVlGAIgASgLMhwueW9ya2llLnYxLkpTT05FbGVtZW50U2ltcGxlEioKC2V4ZWN1dGVkX2F0GAMgASgLMhUueW9ya2llLnYxLlRpbWVUaWNrZXQSDQoFYWN0b3IYBCABKAkakwMKCFRyZWVFZGl0EjAKEXBhcmVudF9jcmVhdGVkX2F0GAEgASgLMhUueW9ya2llLnYxLlRpbWVUaWNrZXQSIAoEZnJvbRgCIAEoCzISLnlvcmtpZS52MS5UcmVlUG9zEh4KAnRvGAMgASgLMhIueW9ya2llLnYxLlRyZWVQb3MSVwoXY3JlYXRlZF9hdF9tYXBfYnlfYWN0b3IYBCADKAsyNi55b3JraWUudjEuT3BlcmF0aW9uLlRyZWVFZGl0LkNyZWF0ZWRBdE1hcEJ5QWN0b3JFbnRyeRImCghjb250ZW50cxgFIAMoCzIULnlvcmtpZS52MS5UcmVlTm9kZXMSEwoLc3BsaXRfbGV2ZWwYByABKAUSKgoLZXhlY3V0ZWRfYXQYBiABKAsyFS55b3JraWUudjEuVGltZVRpY2tldBpRChhDcmVhdGVkQXRNYXBCeUFjdG9yRW50cnkSCwoDa2V5GAEgASgJEiQKBXZhbHVlGAIgASgLMhUueW9ya2llLnYxLlRpbWVUaWNrZXQ6AjgBGu0DCglUcmVlU3R5bGUSMAoRcGFyZW50X2NyZWF0ZWRfYXQYASABKAsyFS55b3JraWUudjEuVGltZVRpY2tldBIgCgRmcm9tGAIgASgLMhIueW9ya2llLnYxLlRyZWVQb3MSHgoCdG8YAyABKAsyEi55b3JraWUudjEuVHJlZVBvcxJCCgphdHRyaWJ1dGVzGAQgAygLMi4ueW9ya2llLnYxLk9wZXJhdGlvbi5UcmVlU3R5bGUuQXR0cmlidXRlc0VudHJ5EioKC2V4ZWN1dGVkX2F0GAUgASgLMhUueW9ya2llLnYxLlRpbWVUaWNrZXQSHAoUYXR0cmlidXRlc190b19yZW1vdmUYBiADKAkSWAoXY3JlYXRlZF9hdF9tYXBfYnlfYWN0b3IYByADKAsyNy55b3JraWUudjEuT3BlcmF0aW9uLlRyZWVTdHlsZS5DcmVhdGVkQXRNYXBCeUFjdG9yRW50cnkaMQoPQXR0cmlidXRlc0VudHJ5EgsKA2tleRgBIAEoCRINCgV2YWx1ZRgCIAEoCToCOAEaUQoYQ3JlYXRlZEF0TWFwQnlBY3RvckVudHJ5EgsKA2tleRgBIAEoCRIkCgV2YWx1ZRgCIAEoCzIVLnlvcmtpZS52MS5UaW1lVGlja2V0OgI4ARrAAQoIQXJyYXlTZXQSMAoRcGFyZW50X2NyZWF0ZWRfYXQYASABKAsyFS55b3JraWUudjEuVGltZVRpY2tldBIpCgpjcmVhdGVkX2F0GAIgASgLMhUueW9ya2llLnYxLlRpbWVUaWNrZXQSKwoFdmFsdWUYAyABKAsyHC55b3JraWUudjEuSlNPTkVsZW1lbnRTaW1wbGUSKgoLZXhlY3V0ZWRfYXQYBCABKAsyFS55b3JraWUudjEuVGltZVRpY2tldEIGCgRib2R5IsUBChFKU09ORWxlbWVudFNpbXBsZRIpCgpjcmVhdGVkX2F0GAEgASgLMhUueW9ya2llLnYxLlRpbWVUaWNrZXQSJwoIbW92ZWRfYXQYAiABKAsyFS55b3JraWUudjEuVGltZVRpY2tldBIpCgpyZW1vdmVkX2F0GAMgASgLMhUueW9ya2llLnYxLlRpbWVUaWNrZXQSIgoEdHlwZRgEIAEoDjIULnlvcmtpZS52MS5WYWx1ZVR5cGUSDQoFdmFsdWUYBSABKAwinwsKC0pTT05FbGVtZW50EjgKC2pzb25fb2JqZWN0GAEgASgLMiEueW9ya2llLnYxLkpTT05FbGVtZW50LkpTT05PYmplY3RIABI2Cgpqc29uX2FycmF5GAIgASgLMiAueW9ya2llLnYxLkpTT05FbGVtZW50LkpTT05BcnJheUgAEjUKCXByaW1pdGl2ZRgDIAEoCzIgLnlvcmtpZS52MS5KU09ORWxlbWVudC5QcmltaXRpdmVIABIrCgR0ZXh0GAUgASgLMhsueW9ya2llLnYxLkpTT05FbGVtZW50LlRleHRIABIxCgdjb3VudGVyGAYgASgLMh4ueW9ya2llLnYxLkpTT05FbGVtZW50LkNvdW50ZXJIABIrCgR0cmVlGAcgASgLMhsueW9ya2llLnYxLkpTT05FbGVtZW50LlRyZWVIABquAQoKSlNPTk9iamVjdBIhCgVub2RlcxgBIAMoCzISLnlvcmtpZS52MS5SSFROb2RlEikKCmNyZWF0ZWRfYXQYAiABKAsyFS55b3JraWUudjEuVGltZVRpY2tldBInCghtb3ZlZF9hdBgDIAEoCzIVLnlvcmtpZS52MS5UaW1lVGlja2V0EikKCnJlbW92ZWRfYXQYBCABKAsyFS55b3JraWUudjEuVGltZVRpY2tldBqtAQoJSlNPTkFycmF5EiEKBW5vZGVzGAEgAygLMhIueW9ya2llLnYxLlJHQU5vZGUSKQoKY3JlYXRlZF9hdBgCIAEoCzIVLnlvcmtpZS52MS5UaW1lVGlja2V0EicKCG1vdmVkX2F0GAMgASgLMhUueW9ya2llLnYxLlRpbWVUaWNrZXQSKQoKcmVtb3ZlZF9hdBgEIAEoCzIVLnlvcmtpZS52MS5UaW1lVGlja2V0Gr0BCglQcmltaXRpdmUSIgoEdHlwZRgBIAEoDjIULnlvcmtpZS52MS5WYWx1ZVR5cGUSDQoFdmFsdWUYAiABKAwSKQoKY3JlYXRlZF9hdBgDIAEoCzIVLnlvcmtpZS52MS5UaW1lVGlja2V0EicKCG1vdmVkX2F0GAQgASgLMhUueW9ya2llLnYxLlRpbWVUaWNrZXQSKQoKcmVtb3ZlZF9hdBgFIAEoCzIVLnlvcmtpZS52MS5UaW1lVGlja2V0GqkBCgRUZXh0EiIKBW5vZGVzGAEgAygLMhMueW9ya2llLnYxLlRleHROb2RlEikKCmNyZWF0ZWRfYXQYAiABKAsyFS55b3JraWUudjEuVGltZVRpY2tldBInCghtb3ZlZF9hdBgDIAEoCzIVLnlvcmtpZS52MS5UaW1lVGlja2V0EikKCnJlbW92ZWRfYXQYBCABKAsyFS55b3JraWUudjEuVGltZVRpY2tldBrYAQoHQ291bnRlchIiCgR0eXBlGAEgASgOMhQueW9ya2llLnYxLlZhbHVlVHlwZRINCgV2YWx1ZRgCIAEoDBIpCgpjcmVhdGVkX2F0GAMgASgLMhUueW9ya2llLnYxLlRpbWVUaWNrZXQSJwoIbW92ZWRfYXQYBCABKAsyFS55b3JraWUudjEuVGltZVRpY2tldBIpCgpyZW1vdmVkX2F0GAUgASgLMhUueW9ya2llLnYxLlRpbWVUaWNrZXQSFQoNaGxsX3JlZ2lzdGVycxgHIAEoDEoECAYQBxqpAQoEVHJlZRIiCgVub2RlcxgBIAMoCzITLnlvcmtpZS52MS5UcmVlTm9kZRIpCgpjcmVhdGVkX2F0GAIgASgLMhUueW9ya2llLnYxLlRpbWVUaWNrZXQSJwoIbW92ZWRfYXQYAyABKAsyFS55b3JraWUudjEuVGltZVRpY2tldBIpCgpyZW1vdmVkX2F0GAQgASgLMhUueW9ya2llLnYxLlRpbWVUaWNrZXRCBgoEYm9keSI/CgdSSFROb2RlEgsKA2tleRgBIAEoCRInCgdlbGVtZW50GAIgASgLMhYueW9ya2llLnYxLkpTT05FbGVtZW50IlQKB1JHQU5vZGUSIAoEbmV4dBgBIAEoCzISLnlvcmtpZS52MS5SR0FOb2RlEicKB2VsZW1lbnQYAiABKAsyFi55b3JraWUudjEuSlNPTkVsZW1lbnQiWAoITm9kZUF0dHISDQoFdmFsdWUYASABKAkSKQoKdXBkYXRlZF9hdBgCIAEoCzIVLnlvcmtpZS52MS5UaW1lVGlja2V0EhIKCmlzX3JlbW92ZWQYAyABKAgilAIKCFRleHROb2RlEiEKAmlkGAEgASgLMhUueW9ya2llLnYxLlRleHROb2RlSUQSDQoFdmFsdWUYAiABKAkSKQoKcmVtb3ZlZF9hdBgDIAEoCzIVLnlvcmtpZS52MS5UaW1lVGlja2V0EioKC2luc19wcmV2X2lkGAQgASgLMhUueW9ya2llLnYxLlRleHROb2RlSUQSNwoKYXR0cmlidXRlcxgFIAMoCzIjLnlvcmtpZS52MS5UZXh0Tm9kZS5BdHRyaWJ1dGVzRW50cnkaRgoPQXR0cmlidXRlc0VudHJ5EgsKA2tleRgBIAEoCRIiCgV2YWx1ZRgCIAEoCzITLnlvcmtpZS52MS5Ob2RlQXR0cjoCOAEiRwoKVGV4dE5vZGVJRBIpCgpjcmVhdGVkX2F0GAEgASgLMhUueW9ya2llLnYxLlRpbWVUaWNrZXQSDgoGb2Zmc2V0GAIgASgFIrMDCghUcmVlTm9kZRIhCgJpZBgBIAEoCzIVLnlvcmtpZS52MS5UcmVlTm9kZUlEEgwKBHR5cGUYAiABKAkSDQoFdmFsdWUYAyABKAkSKQoKcmVtb3ZlZF9hdBgEIAEoCzIVLnlvcmtpZS52MS5UaW1lVGlja2V0EioKC2luc19wcmV2X2lkGAUgASgLMhUueW9ya2llLnYxLlRyZWVOb2RlSUQSKgoLaW5zX25leHRfaWQYBiABKAsyFS55b3JraWUudjEuVHJlZU5vZGVJRBINCgVkZXB0aBgHIAEoBRI3CgphdHRyaWJ1dGVzGAggAygLMiMueW9ya2llLnYxLlRyZWVOb2RlLkF0dHJpYnV0ZXNFbnRyeRIqCgttZXJnZWRfZnJvbRgJIAEoCzIVLnlvcmtpZS52MS5UcmVlTm9kZUlEEigKCW1lcmdlZF9hdBgKIAEoCzIVLnlvcmtpZS52MS5UaW1lVGlja2V0GkYKD0F0dHJpYnV0ZXNFbnRyeRILCgNrZXkYASABKAkSIgoFdmFsdWUYAiABKAsyEy55b3JraWUudjEuTm9kZUF0dHI6AjgBIjEKCVRyZWVOb2RlcxIkCgdjb250ZW50GAEgAygLMhMueW9ya2llLnYxLlRyZWVOb2RlIkcKClRyZWVOb2RlSUQSKQoKY3JlYXRlZF9hdBgBIAEoCzIVLnlvcmtpZS52MS5UaW1lVGlja2V0Eg4KBm9mZnNldBgCIAEoBSJjCgdUcmVlUG9zEigKCXBhcmVudF9pZBgBIAEoCzIVLnlvcmtpZS52MS5UcmVlTm9kZUlEEi4KD2xlZnRfc2libGluZ19pZBgCIAEoCzIVLnlvcmtpZS52MS5UcmVlTm9kZUlEImsKBFVzZXISCgoCaWQYASABKAkSFQoNYXV0aF9wcm92aWRlchgCIAEoCRIQCgh1c2VybmFtZRgDIAEoCRIuCgpjcmVhdGVkX2F0GAQgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcCKJAQoGTWVtYmVyEgoKAmlkGAEgASgJEhIKCnByb2plY3RfaWQYAiABKAkSDwoHdXNlcl9pZBgDIAEoCRIQCgh1c2VybmFtZRgEIAEoCRIMCgRyb2xlGAUgASgJEi4KCmludml0ZWRfYXQYBiABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wIukGCgdQcm9qZWN0EgoKAmlkGAEgASgJEgwKBG5hbWUYAiABKAkSEgoKcHVibGljX2tleRgDIAEoCRISCgpzZWNyZXRfa2V5GAQgASgJEhgKEGF1dGhfd2ViaG9va191cmwYBSABKAkSHAoUYXV0aF93ZWJob29rX21ldGhvZHMYBiADKAkSIAoYYXV0aF93ZWJob29rX21heF9yZXRyaWVzGBEgASgEEiYKHmF1dGhfd2ViaG9va19taW5fd2FpdF9pbnRlcnZhbBgSIAEoCRImCh5hdXRoX3dlYmhvb2tfbWF4X3dhaXRfaW50ZXJ2YWwYEyABKAkSJAocYXV0aF93ZWJob29rX3JlcXVlc3RfdGltZW91dBgUIAEoCRIZChFldmVudF93ZWJob29rX3VybBgHIAEoCRIcChRldmVudF93ZWJob29rX2V2ZW50cxgIIAMoCRIhChlldmVudF93ZWJob29rX21heF9yZXRyaWVzGBUgASgEEicKH2V2ZW50X3dlYmhvb2tfbWluX3dhaXRfaW50ZXJ2YWwYFiABKAkSJwofZXZlbnRfd2ViaG9va19tYXhfd2FpdF9pbnRlcnZhbBgXIAEoCRIlCh1ldmVudF93ZWJob29rX3JlcXVlc3RfdGltZW91dBgYIAEoCRIjChtjbGllbnRfZGVhY3RpdmF0ZV90aHJlc2hvbGQYCSABKAkSGgoSc25hcHNob3RfdGhyZXNob2xkGBkgASgDEhkKEXNuYXBzaG90X2ludGVydmFsGBogASgDEiQKHG1heF9zdWJzY3JpYmVyc19wZXJfZG9jdW1lbnQYCiABKAUSJAocbWF4X2F0dGFjaG1lbnRzX3Blcl9kb2N1bWVudBgLIAEoBRIdChVtYXhfc2l6ZV9wZXJfZG9jdW1lbnQYDyABKAUSGAoQcmVtb3ZlX29uX2RldGFjaBgQIAEoCBIdChVhdXRvX3JldmlzaW9uX2VuYWJsZWQYGyABKAgSFwoPYWxsb3dlZF9vcmlnaW5zGA4gAygJEi4KCmNyZWF0ZWRfYXQYDCABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wEi4KCnVwZGF0ZWRfYXQYDSABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wIi8KC01ldHJpY1BvaW50EhEKCXRpbWVzdGFtcBgBIAEoAxINCgV2YWx1ZRgCIAEoBSKjDAoWVXBkYXRhYmxlUHJvamVjdEZpZWxkcxIqCgRuYW1lGAEgASgLMhwuZ29vZ2xlLnByb3RvYnVmLlN0cmluZ1ZhbHVlEjYKEGF1dGhfd2ViaG9va191cmwYAiABKAsyHC5nb29nbGUucHJvdG9idWYuU3RyaW5nVmFsdWUSUgoUYXV0aF93ZWJob29rX21ldGhvZHMYAyABKAsyNC55b3JraWUudjEuVXBkYXRhYmxlUHJvamVjdEZpZWxkcy5BdXRoV2ViaG9va01ldGhvZHMSPgoYYXV0aF93ZWJob29rX21heF9yZXRyaWVzGAwgASgLMhwuZ29vZ2xlLnByb3RvYnVmLlVJbnQ2NFZhbHVlEkQKHmF1dGhfd2ViaG9va19taW5fd2FpdF9pbnRlcnZhbBgNIAEoCzIcLmdvb2dsZS5wcm90b2J1Zi5TdHJpbmdWYWx1ZRJECh5hdXRoX3dlYmhvb2tfbWF4X3dhaXRfaW50ZXJ2YWwYDiABKAsyHC5nb29nbGUucHJvdG9idWYuU3RyaW5nVmFsdWUSQgocYXV0aF93ZWJob29rX3JlcXVlc3RfdGltZW91dBgPIAEoCzIcLmdvb2dsZS5wcm90b2J1Zi5TdHJpbmdWYWx1ZRI3ChFldmVudF93ZWJob29rX3VybBgEIAEoCzIcLmdvb2dsZS5wcm90b2J1Zi5TdHJpbmdWYWx1ZRJSChRldmVudF93ZWJob29rX2V2ZW50cxgFIAEoCzI0LnlvcmtpZS52MS5VcGRhdGFibGVQcm9qZWN0RmllbGRzLkV2ZW50V2ViaG9va0V2ZW50cxI/ChlldmVudF93ZWJob29rX21heF9yZXRyaWVzGBAgASgLMhwuZ29vZ2xlLnByb3RvYnVmLlVJbnQ2NFZhbHVlEkUKH2V2ZW50X3dlYmhvb2tfbWluX3dhaXRfaW50ZXJ2YWwYESABKAsyHC5nb29nbGUucHJvdG9idWYuU3RyaW5nVmFsdWUSRQofZXZlbnRfd2ViaG9va19tYXhfd2FpdF9pbnRlcnZhbBgSIAEoCzIcLmdvb2dsZS5wcm90b2J1Zi5TdHJpbmdWYWx1ZRJDCh1ldmVudF93ZWJob29rX3JlcXVlc3RfdGltZW91dBgTIAEoCzIcLmdvb2dsZS5wcm90b2J1Zi5TdHJpbmdWYWx1ZRI3ChJzbmFwc2hvdF90aHJlc2hvbGQYFCABKAsyGy5nb29nbGUucHJvdG9idWYuSW50NjRWYWx1ZRI2ChFzbmFwc2hvdF9pbnRlcnZhbBgVIAEoCzIbLmdvb2dsZS5wcm90b2J1Zi5JbnQ2NFZhbHVlEkEKG2NsaWVudF9kZWFjdGl2YXRlX3RocmVzaG9sZBgGIAEoCzIcLmdvb2dsZS5wcm90b2J1Zi5TdHJpbmdWYWx1ZRJBChxtYXhfc3Vic2NyaWJlcnNfcGVyX2RvY3VtZW50GAcgASgLMhsuZ29vZ2xlLnByb3RvYnVmLkludDMyVmFsdWUSQQocbWF4X2F0dGFjaG1lbnRzX3Blcl9kb2N1bWVudBgIIAEoCzIbLmdvb2dsZS5wcm90b2J1Zi5JbnQzMlZhbHVlEjoKFW1heF9zaXplX3Blcl9kb2N1bWVudBgKIAEoCzIbLmdvb2dsZS5wcm90b2J1Zi5JbnQzMlZhbHVlEjQKEHJlbW92ZV9vbl9kZXRhY2gYCyABKAsyGi5nb29nbGUucHJvdG9idWYuQm9vbFZhbHVlEjkKFWF1dG9fcmV2aXNpb25fZW5hYmxlZBgWIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5Cb29sVmFsdWUSSQoPYWxsb3dlZF9vcmlnaW5zGAkgASgLMjAueW9ya2llLnYxLlVwZGF0YWJsZVByb2plY3RGaWVsZHMuQWxsb3dlZE9yaWdpbnMaJQoSQXV0aFdlYmhvb2tNZXRob2RzEg8KB21ldGhvZHMYASADKAkaJAoSRXZlbnRXZWJob29rRXZlbnRzEg4KBmV2ZW50cxgBIAMoCRohCg5BbGxvd2VkT3JpZ2lucxIPCgdvcmlnaW5zGAEgAygJIqcDCg9Eb2N1bWVudFN1bW1hcnkSCgoCaWQYASABKAkSCwoDa2V5GAIgASgJEgwKBHJvb3QYAyABKAkSGAoQYXR0YWNoZWRfY2xpZW50cxgHIAEoBRIpCg1kb2N1bWVudF9zaXplGAggASgLMhIueW9ya2llLnYxLkRvY1NpemUSEgoKc2NoZW1hX2tleRgJIAEoCRI8CglwcmVzZW5jZXMYCiADKAsyKS55b3JraWUudjEuRG9jdW1lbnRTdW1tYXJ5LlByZXNlbmNlc0VudHJ5Ei4KCmNyZWF0ZWRfYXQYBCABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wEi8KC2FjY2Vzc2VkX2F0GAUgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcBIuCgp1cGRhdGVkX2F0GAYgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcBpFCg5QcmVzZW5jZXNFbnRyeRILCgNrZXkYASABKAkSIgoFdmFsdWUYAiABKAsyEy55b3JraWUudjEuUHJlc2VuY2U6AjgBItoBCg5QcmVzZW5jZUNoYW5nZRIyCgR0eXBlGAEgASgOMiQueW9ya2llLnYxLlByZXNlbmNlQ2hhbmdlLkNoYW5nZVR5cGUSJQoIcHJlc2VuY2UYAiABKAsyEy55b3JraWUudjEuUHJlc2VuY2UibQoKQ2hhbmdlVHlwZRIbChdDSEFOR0VfVFlQRV9VTlNQRUNJRklFRBAAEhMKD0NIQU5HRV9UWVBFX1BVVBABEhYKEkNIQU5HRV9UWVBFX0RFTEVURRACEhUKEUNIQU5HRV9UWVBFX0NMRUFSEAMiZAoIUHJlc2VuY2USKwoEZGF0YRgBIAMoCzIdLnlvcmtpZS52MS5QcmVzZW5jZS5EYXRhRW50cnkaKwoJRGF0YUVudHJ5EgsKA2tleRgBIAEoCRINCgV2YWx1ZRgCIAEoCToCOAEiNAoOQ2hhbm5lbFN1bW1hcnkSCwoDa2V5GAEgASgJEhUKDXNlc3Npb25fY291bnQYAiABKAUiNAoKQ2hlY2twb2ludBISCgpzZXJ2ZXJfc2VxGAEgASgDEhIKCmNsaWVudF9zZXEYAiABKA0iYQoLVGV4dE5vZGVQb3MSKQoKY3JlYXRlZF9hdBgBIAEoCzIVLnlvcmtpZS52MS5UaW1lVGlja2V0Eg4KBm9mZnNldBgCIAEoBRIXCg9yZWxhdGl2ZV9vZmZzZXQYAyABKAUiQgoKVGltZVRpY2tldBIPCgdsYW1wb3J0GAEgASgDEhEKCWRlbGltaXRlchgCIAEoDRIQCghhY3Rvcl9pZBgDIAEoDCIuCgxEb2NFdmVudEJvZHkSDQoFdG9waWMYASABKAkSDwoHcGF5bG9hZBgCIAEoDCJrCghEb2NFdmVudBIlCgR0eXBlGAEgASgOMhcueW9ya2llLnYxLkRvY0V2ZW50VHlwZRIRCglwdWJsaXNoZXIYAiABKAkSJQoEYm9keRgDIAEoCzIXLnlvcmtpZS52MS5Eb2NFdmVudEJvZHki1gEKDENoYW5uZWxFdmVudBIqCgR0eXBlGAEgASgOMhwueW9ya2llLnYxLkNoYW5uZWxFdmVudC5UeXBlEhEKCXB1Ymxpc2hlchgCIAEoCRIVCg1zZXNzaW9uX2NvdW50GAMgASgDEgsKA3NlcRgEIAEoAxINCgV0b3BpYxgFIAEoCRIPCgdwYXlsb2FkGAYgASgMIkMKBFR5cGUSFAoQVFlQRV9VTlNQRUNJRklFRBAAEhEKDVRZUEVfUFJFU0VOQ0UQARISCg5UWVBFX0JST0FEQ0FTVBACIiYKCERhdGFTaXplEgwKBGRhdGEYASABKAUSDAoEbWV0YRgCIAEoBSJNCgdEb2NTaXplEiEKBGxpdmUYASABKAsyEy55b3JraWUudjEuRGF0YVNpemUSHwoCZ2MYAiABKAsyEy55b3JraWUudjEuRGF0YVNpemUikQEKBlNjaGVtYRIKCgJpZBgBIAEoCRIMCgRuYW1lGAIgASgJEg8KB3ZlcnNpb24YAyABKAUSDAoEYm9keRgEIAEoCRIeCgVydWxlcxgFIAMoCzIPLnlvcmtpZS52MS5SdWxlEi4KCmNyZWF0ZWRfYXQYBiABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wIlAKDFRyZWVOb2RlUnVsZRIRCglub2RlX3R5cGUYASABKAkSDwoHY29udGVudBgCIAEoCRINCgVtYXJrcxgDIAEoCRINCgVncm91cBgEIAEoCSJPCgRSdWxlEgwKBHBhdGgYASABKAkSDAoEdHlwZRgCIAEoCRIrCgp0cmVlX25vZGVzGAMgAygLMhcueW9ya2llLnYxLlRyZWVOb2RlUnVsZSKDAQoPUmV2aXNpb25TdW1tYXJ5EgoKAmlkGAEgASgJEg0KBWxhYmVsGAIgASgJEhMKC2Rlc2NyaXB0aW9uGAMgASgJEhAKCHNuYXBzaG90GAQgASgJEi4KCmNyZWF0ZWRfYXQYBSABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wKvwCCglWYWx1ZVR5cGUSEwoPVkFMVUVfVFlQRV9OVUxMEAASFgoSVkFMVUVfVFlQRV9CT09MRUFOEAESFgoSVkFMVUVfVFlQRV9JTlRFR0VSEAISEwoPVkFMVUVfVFlQRV9MT05HEAMSFQoRVkFMVUVfVFlQRV9ET1VCTEUQBBIVChFWQUxVRV9UWVBFX1NUUklORxAFEhQKEFZBTFVFX1RZUEVfQllURVMQBhITCg9WQUxVRV9UWVBFX0RBVEUQBxIaChZWQUxVRV9UWVBFX0pTT05fT0JKRUNUEAgSGQoVVkFMVUVfVFlQRV9KU09OX0FSUkFZEAkSEwoPVkFMVUVfVFlQRV9URVhUEAoSGgoWVkFMVUVfVFlQRV9JTlRFR0VSX0NOVBALEhcKE1ZBTFVFX1RZUEVfTE9OR19DTlQQDBITCg9WQUxVRV9UWVBFX1RSRUUQDRIgChxWQUxVRV9UWVBFX0lOVEVHRVJfREVEVVBfQ05UEA4iBAgPEA8qpgEKDERvY0V2ZW50VHlwZRIjCh9ET0NfRVZFTlRfVFlQRV9ET0NVTUVOVF9DSEFOR0VEEAASIwofRE9DX0VWRU5UX1RZUEVfRE9DVU1FTlRfV0FUQ0hFRBABEiUKIURPQ19FVkVOVF9UWVBFX0RPQ1VNRU5UX1VOV0FUQ0hFRBACEiUKIURPQ19FVkVOVF9UWVBFX0RPQ1VNRU5UX0JST0FEQ0FTVBADQkUKEWRldi55b3JraWUuYXBpLnYxUAFaLmdpdGh1Yi5jb20veW9ya2llLXRlYW0veW9ya2llL2FwaS95b3JraWUvdjE7djFiBnByb3RvMw", [file_google_protobuf_timestamp, file_google_protobuf_wrappers]);
|
|
5399
5794
|
const SnapshotSchema = /* @__PURE__ */ messageDesc(file_src_api_yorkie_v1_resources, 0);
|
|
5400
5795
|
const ChangePackSchema = /* @__PURE__ */ messageDesc(file_src_api_yorkie_v1_resources, 1);
|
|
5401
5796
|
const ChangeSchema = /* @__PURE__ */ messageDesc(file_src_api_yorkie_v1_resources, 2);
|
|
@@ -5462,6 +5857,7 @@ var ValueType = /* @__PURE__ */ ((ValueType2) => {
|
|
|
5462
5857
|
ValueType2[ValueType2["INTEGER_CNT"] = 11] = "INTEGER_CNT";
|
|
5463
5858
|
ValueType2[ValueType2["LONG_CNT"] = 12] = "LONG_CNT";
|
|
5464
5859
|
ValueType2[ValueType2["TREE"] = 13] = "TREE";
|
|
5860
|
+
ValueType2[ValueType2["INTEGER_DEDUP_CNT"] = 14] = "INTEGER_DEDUP_CNT";
|
|
5465
5861
|
return ValueType2;
|
|
5466
5862
|
})(ValueType || {});
|
|
5467
5863
|
var DocEventType$1 = /* @__PURE__ */ ((DocEventType2) => {
|
|
@@ -5471,7 +5867,7 @@ var DocEventType$1 = /* @__PURE__ */ ((DocEventType2) => {
|
|
|
5471
5867
|
DocEventType2[DocEventType2["DOCUMENT_BROADCAST"] = 3] = "DOCUMENT_BROADCAST";
|
|
5472
5868
|
return DocEventType2;
|
|
5473
5869
|
})(DocEventType$1 || {});
|
|
5474
|
-
const file_src_api_yorkie_v1_yorkie = /* @__PURE__ */ fileDesc("
|
|
5870
|
+
const file_src_api_yorkie_v1_yorkie = /* @__PURE__ */ fileDesc("Ch5zcmMvYXBpL3lvcmtpZS92MS95b3JraWUucHJvdG8SCXlvcmtpZS52MSKeAQoVQWN0aXZhdGVDbGllbnRSZXF1ZXN0EhIKCmNsaWVudF9rZXkYASABKAkSQAoIbWV0YWRhdGEYAiADKAsyLi55b3JraWUudjEuQWN0aXZhdGVDbGllbnRSZXF1ZXN0Lk1ldGFkYXRhRW50cnkaLwoNTWV0YWRhdGFFbnRyeRILCgNrZXkYASABKAkSDQoFdmFsdWUYAiABKAk6AjgBIisKFkFjdGl2YXRlQ2xpZW50UmVzcG9uc2USEQoJY2xpZW50X2lkGAEgASgJIkEKF0RlYWN0aXZhdGVDbGllbnRSZXF1ZXN0EhEKCWNsaWVudF9pZBgBIAEoCRITCgtzeW5jaHJvbm91cxgCIAEoCCIaChhEZWFjdGl2YXRlQ2xpZW50UmVzcG9uc2UiagoVQXR0YWNoRG9jdW1lbnRSZXF1ZXN0EhEKCWNsaWVudF9pZBgBIAEoCRIqCgtjaGFuZ2VfcGFjaxgCIAEoCzIVLnlvcmtpZS52MS5DaGFuZ2VQYWNrEhIKCnNjaGVtYV9rZXkYAyABKAkinwEKFkF0dGFjaERvY3VtZW50UmVzcG9uc2USEwoLZG9jdW1lbnRfaWQYASABKAkSKgoLY2hhbmdlX3BhY2sYAiABKAsyFS55b3JraWUudjEuQ2hhbmdlUGFjaxIdChVtYXhfc2l6ZV9wZXJfZG9jdW1lbnQYAyABKAUSJQoMc2NoZW1hX3J1bGVzGAQgAygLMg8ueW9ya2llLnYxLlJ1bGUiiwEKFURldGFjaERvY3VtZW50UmVxdWVzdBIRCgljbGllbnRfaWQYASABKAkSEwoLZG9jdW1lbnRfaWQYAiABKAkSKgoLY2hhbmdlX3BhY2sYAyABKAsyFS55b3JraWUudjEuQ2hhbmdlUGFjaxIeChZyZW1vdmVfaWZfbm90X2F0dGFjaGVkGAQgASgIIkQKFkRldGFjaERvY3VtZW50UmVzcG9uc2USKgoLY2hhbmdlX3BhY2sYAiABKAsyFS55b3JraWUudjEuQ2hhbmdlUGFjayJTCgxXYXRjaFJlcXVlc3QSEQoJY2xpZW50X2lkGAEgASgJEjAKCXJlc291cmNlcxgCIAMoCzIdLnlvcmtpZS52MS5SZXNvdXJjZURlc2NyaXB0b3IihAEKElJlc291cmNlRGVzY3JpcHRvchIxCghkb2N1bWVudBgBIAEoCzIdLnlvcmtpZS52MS5Eb2N1bWVudERlc2NyaXB0b3JIABIvCgdjaGFubmVsGAIgASgLMhwueW9ya2llLnYxLkNoYW5uZWxEZXNjcmlwdG9ySABCCgoIcmVzb3VyY2UiKQoSRG9jdW1lbnREZXNjcmlwdG9yEhMKC2RvY3VtZW50X2lkGAEgASgJIigKEUNoYW5uZWxEZXNjcmlwdG9yEhMKC2NoYW5uZWxfa2V5GAEgASgJInkKDVdhdGNoUmVzcG9uc2USOAoOaW5pdGlhbGl6YXRpb24YASABKAsyHi55b3JraWUudjEuV2F0Y2hJbml0aWFsaXphdGlvbkgAEiYKBWV2ZW50GAIgASgLMhUueW9ya2llLnYxLldhdGNoRXZlbnRIAEIGCgRib2R5IkYKE1dhdGNoSW5pdGlhbGl6YXRpb24SLwoOcmVzb3VyY2VfaW5pdHMYASADKAsyFy55b3JraWUudjEuUmVzb3VyY2VJbml0IngKDFJlc291cmNlSW5pdBIwCg1kb2N1bWVudF9pbml0GAEgASgLMhcueW9ya2llLnYxLkRvY3VtZW50SW5pdEgAEi4KDGNoYW5uZWxfaW5pdBgCIAEoCzIWLnlvcmtpZS52MS5DaGFubmVsSW5pdEgAQgYKBGluaXQiNwoMRG9jdW1lbnRJbml0EhMKC2RvY3VtZW50X2lkGAEgASgJEhIKCmNsaWVudF9pZHMYAiADKAkiRgoLQ2hhbm5lbEluaXQSEwoLY2hhbm5lbF9rZXkYASABKAkSFQoNc2Vzc2lvbl9jb3VudBgCIAEoAxILCgNzZXEYAyABKAMiewoKV2F0Y2hFdmVudBItCglkb2NfZXZlbnQYASABKAsyGC55b3JraWUudjEuRG9jV2F0Y2hFdmVudEgAEjUKDWNoYW5uZWxfZXZlbnQYAiABKAsyHC55b3JraWUudjEuQ2hhbm5lbFdhdGNoRXZlbnRIAEIHCgVldmVudCJICg1Eb2NXYXRjaEV2ZW50EhMKC2RvY3VtZW50X2lkGAEgASgJEiIKBWV2ZW50GAIgASgLMhMueW9ya2llLnYxLkRvY0V2ZW50IlAKEUNoYW5uZWxXYXRjaEV2ZW50EhMKC2NoYW5uZWxfa2V5GAEgASgJEiYKBWV2ZW50GAIgASgLMhcueW9ya2llLnYxLkNoYW5uZWxFdmVudCI+ChRXYXRjaERvY3VtZW50UmVxdWVzdBIRCgljbGllbnRfaWQYASABKAkSEwoLZG9jdW1lbnRfaWQYAiABKAkitgEKFVdhdGNoRG9jdW1lbnRSZXNwb25zZRJJCg5pbml0aWFsaXphdGlvbhgBIAEoCzIvLnlvcmtpZS52MS5XYXRjaERvY3VtZW50UmVzcG9uc2UuSW5pdGlhbGl6YXRpb25IABIkCgVldmVudBgCIAEoCzITLnlvcmtpZS52MS5Eb2NFdmVudEgAGiQKDkluaXRpYWxpemF0aW9uEhIKCmNsaWVudF9pZHMYASADKAlCBgoEYm9keSI9ChNXYXRjaENoYW5uZWxSZXF1ZXN0EhEKCWNsaWVudF9pZBgBIAEoCRITCgtjaGFubmVsX2tleRgCIAEoCSKDAQoUV2F0Y2hDaGFubmVsUmVzcG9uc2USOQoLaW5pdGlhbGl6ZWQYASABKAsyIi55b3JraWUudjEuV2F0Y2hDaGFubmVsSW5pdGlhbGl6ZWRIABIoCgVldmVudBgCIAEoCzIXLnlvcmtpZS52MS5DaGFubmVsRXZlbnRIAEIGCgRib2R5Ij0KF1dhdGNoQ2hhbm5lbEluaXRpYWxpemVkEhUKDXNlc3Npb25fY291bnQYASABKAMSCwoDc2VxGAIgASgDImsKFVJlbW92ZURvY3VtZW50UmVxdWVzdBIRCgljbGllbnRfaWQYASABKAkSEwoLZG9jdW1lbnRfaWQYAiABKAkSKgoLY2hhbmdlX3BhY2sYAyABKAsyFS55b3JraWUudjEuQ2hhbmdlUGFjayJEChZSZW1vdmVEb2N1bWVudFJlc3BvbnNlEioKC2NoYW5nZV9wYWNrGAEgASgLMhUueW9ya2llLnYxLkNoYW5nZVBhY2sifwoWUHVzaFB1bGxDaGFuZ2VzUmVxdWVzdBIRCgljbGllbnRfaWQYASABKAkSEwoLZG9jdW1lbnRfaWQYAiABKAkSKgoLY2hhbmdlX3BhY2sYAyABKAsyFS55b3JraWUudjEuQ2hhbmdlUGFjaxIRCglwdXNoX29ubHkYBCABKAgiRQoXUHVzaFB1bGxDaGFuZ2VzUmVzcG9uc2USKgoLY2hhbmdlX3BhY2sYASABKAsyFS55b3JraWUudjEuQ2hhbmdlUGFjayJjChVDcmVhdGVSZXZpc2lvblJlcXVlc3QSEQoJY2xpZW50X2lkGAEgASgJEhMKC2RvY3VtZW50X2lkGAIgASgJEg0KBWxhYmVsGAMgASgJEhMKC2Rlc2NyaXB0aW9uGAQgASgJIkYKFkNyZWF0ZVJldmlzaW9uUmVzcG9uc2USLAoIcmV2aXNpb24YASABKAsyGi55b3JraWUudjEuUmV2aXNpb25TdW1tYXJ5IlEKEkdldFJldmlzaW9uUmVxdWVzdBIRCgljbGllbnRfaWQYASABKAkSEwoLZG9jdW1lbnRfaWQYAiABKAkSEwoLcmV2aXNpb25faWQYAyABKAkiQwoTR2V0UmV2aXNpb25SZXNwb25zZRIsCghyZXZpc2lvbhgBIAEoCzIaLnlvcmtpZS52MS5SZXZpc2lvblN1bW1hcnkidQoUTGlzdFJldmlzaW9uc1JlcXVlc3QSEQoJY2xpZW50X2lkGAEgASgJEhMKC2RvY3VtZW50X2lkGAIgASgJEhEKCXBhZ2Vfc2l6ZRgDIAEoBRIOCgZvZmZzZXQYBCABKAUSEgoKaXNfZm9yd2FyZBgFIAEoCCJGChVMaXN0UmV2aXNpb25zUmVzcG9uc2USLQoJcmV2aXNpb25zGAEgAygLMhoueW9ya2llLnYxLlJldmlzaW9uU3VtbWFyeSJVChZSZXN0b3JlUmV2aXNpb25SZXF1ZXN0EhEKCWNsaWVudF9pZBgBIAEoCRITCgtkb2N1bWVudF9pZBgCIAEoCRITCgtyZXZpc2lvbl9pZBgEIAEoCSIZChdSZXN0b3JlUmV2aXNpb25SZXNwb25zZSI+ChRBdHRhY2hDaGFubmVsUmVxdWVzdBIRCgljbGllbnRfaWQYASABKAkSEwoLY2hhbm5lbF9rZXkYAiABKAkiQgoVQXR0YWNoQ2hhbm5lbFJlc3BvbnNlEhIKCnNlc3Npb25faWQYASABKAkSFQoNc2Vzc2lvbl9jb3VudBgCIAEoAyJSChREZXRhY2hDaGFubmVsUmVxdWVzdBIRCgljbGllbnRfaWQYASABKAkSEwoLY2hhbm5lbF9rZXkYAiABKAkSEgoKc2Vzc2lvbl9pZBgDIAEoCSIuChVEZXRhY2hDaGFubmVsUmVzcG9uc2USFQoNc2Vzc2lvbl9jb3VudBgBIAEoAyJTChVSZWZyZXNoQ2hhbm5lbFJlcXVlc3QSEQoJY2xpZW50X2lkGAEgASgJEhMKC2NoYW5uZWxfa2V5GAIgASgJEhIKCnNlc3Npb25faWQYAyABKAkiLwoWUmVmcmVzaENoYW5uZWxSZXNwb25zZRIVCg1zZXNzaW9uX2NvdW50GAEgASgDIloKEEJyb2FkY2FzdFJlcXVlc3QSEQoJY2xpZW50X2lkGAEgASgJEhMKC2NoYW5uZWxfa2V5GAIgASgJEg0KBXRvcGljGAMgASgJEg8KB3BheWxvYWQYBCABKAwiEwoRQnJvYWRjYXN0UmVzcG9uc2UyxQsKDVlvcmtpZVNlcnZpY2USVwoOQWN0aXZhdGVDbGllbnQSIC55b3JraWUudjEuQWN0aXZhdGVDbGllbnRSZXF1ZXN0GiEueW9ya2llLnYxLkFjdGl2YXRlQ2xpZW50UmVzcG9uc2UiABJdChBEZWFjdGl2YXRlQ2xpZW50EiIueW9ya2llLnYxLkRlYWN0aXZhdGVDbGllbnRSZXF1ZXN0GiMueW9ya2llLnYxLkRlYWN0aXZhdGVDbGllbnRSZXNwb25zZSIAElcKDkF0dGFjaERvY3VtZW50EiAueW9ya2llLnYxLkF0dGFjaERvY3VtZW50UmVxdWVzdBohLnlvcmtpZS52MS5BdHRhY2hEb2N1bWVudFJlc3BvbnNlIgASVwoORGV0YWNoRG9jdW1lbnQSIC55b3JraWUudjEuRGV0YWNoRG9jdW1lbnRSZXF1ZXN0GiEueW9ya2llLnYxLkRldGFjaERvY3VtZW50UmVzcG9uc2UiABJXCg5SZW1vdmVEb2N1bWVudBIgLnlvcmtpZS52MS5SZW1vdmVEb2N1bWVudFJlcXVlc3QaIS55b3JraWUudjEuUmVtb3ZlRG9jdW1lbnRSZXNwb25zZSIAEloKD1B1c2hQdWxsQ2hhbmdlcxIhLnlvcmtpZS52MS5QdXNoUHVsbENoYW5nZXNSZXF1ZXN0GiIueW9ya2llLnYxLlB1c2hQdWxsQ2hhbmdlc1Jlc3BvbnNlIgASPgoFV2F0Y2gSFy55b3JraWUudjEuV2F0Y2hSZXF1ZXN0GhgueW9ya2llLnYxLldhdGNoUmVzcG9uc2UiADABElYKDVdhdGNoRG9jdW1lbnQSHy55b3JraWUudjEuV2F0Y2hEb2N1bWVudFJlcXVlc3QaIC55b3JraWUudjEuV2F0Y2hEb2N1bWVudFJlc3BvbnNlIgAwARJTCgxXYXRjaENoYW5uZWwSHi55b3JraWUudjEuV2F0Y2hDaGFubmVsUmVxdWVzdBofLnlvcmtpZS52MS5XYXRjaENoYW5uZWxSZXNwb25zZSIAMAESVwoOQ3JlYXRlUmV2aXNpb24SIC55b3JraWUudjEuQ3JlYXRlUmV2aXNpb25SZXF1ZXN0GiEueW9ya2llLnYxLkNyZWF0ZVJldmlzaW9uUmVzcG9uc2UiABJOCgtHZXRSZXZpc2lvbhIdLnlvcmtpZS52MS5HZXRSZXZpc2lvblJlcXVlc3QaHi55b3JraWUudjEuR2V0UmV2aXNpb25SZXNwb25zZSIAElQKDUxpc3RSZXZpc2lvbnMSHy55b3JraWUudjEuTGlzdFJldmlzaW9uc1JlcXVlc3QaIC55b3JraWUudjEuTGlzdFJldmlzaW9uc1Jlc3BvbnNlIgASWgoPUmVzdG9yZVJldmlzaW9uEiEueW9ya2llLnYxLlJlc3RvcmVSZXZpc2lvblJlcXVlc3QaIi55b3JraWUudjEuUmVzdG9yZVJldmlzaW9uUmVzcG9uc2UiABJUCg1BdHRhY2hDaGFubmVsEh8ueW9ya2llLnYxLkF0dGFjaENoYW5uZWxSZXF1ZXN0GiAueW9ya2llLnYxLkF0dGFjaENoYW5uZWxSZXNwb25zZSIAElQKDURldGFjaENoYW5uZWwSHy55b3JraWUudjEuRGV0YWNoQ2hhbm5lbFJlcXVlc3QaIC55b3JraWUudjEuRGV0YWNoQ2hhbm5lbFJlc3BvbnNlIgASVwoOUmVmcmVzaENoYW5uZWwSIC55b3JraWUudjEuUmVmcmVzaENoYW5uZWxSZXF1ZXN0GiEueW9ya2llLnYxLlJlZnJlc2hDaGFubmVsUmVzcG9uc2UiABJICglCcm9hZGNhc3QSGy55b3JraWUudjEuQnJvYWRjYXN0UmVxdWVzdBocLnlvcmtpZS52MS5Ccm9hZGNhc3RSZXNwb25zZSIAQkUKEWRldi55b3JraWUuYXBpLnYxUAFaLmdpdGh1Yi5jb20veW9ya2llLXRlYW0veW9ya2llL2FwaS95b3JraWUvdjE7djFiBnByb3RvMw", [file_src_api_yorkie_v1_resources]);
|
|
5475
5871
|
const YorkieService = /* @__PURE__ */ serviceDesc(file_src_api_yorkie_v1_yorkie, 0);
|
|
5476
5872
|
const file_google_rpc_error_details = /* @__PURE__ */ fileDesc("Ch5nb29nbGUvcnBjL2Vycm9yX2RldGFpbHMucHJvdG8SCmdvb2dsZS5ycGMikwEKCUVycm9ySW5mbxIOCgZyZWFzb24YASABKAkSDgoGZG9tYWluGAIgASgJEjUKCG1ldGFkYXRhGAMgAygLMiMuZ29vZ2xlLnJwYy5FcnJvckluZm8uTWV0YWRhdGFFbnRyeRovCg1NZXRhZGF0YUVudHJ5EgsKA2tleRgBIAEoCRINCgV2YWx1ZRgCIAEoCToCOAEiOwoJUmV0cnlJbmZvEi4KC3JldHJ5X2RlbGF5GAEgASgLMhkuZ29vZ2xlLnByb3RvYnVmLkR1cmF0aW9uIjIKCURlYnVnSW5mbxIVCg1zdGFja19lbnRyaWVzGAEgAygJEg4KBmRldGFpbBgCIAEoCSKPAwoMUXVvdGFGYWlsdXJlEjYKCnZpb2xhdGlvbnMYASADKAsyIi5nb29nbGUucnBjLlF1b3RhRmFpbHVyZS5WaW9sYXRpb24axgIKCVZpb2xhdGlvbhIPCgdzdWJqZWN0GAEgASgJEhMKC2Rlc2NyaXB0aW9uGAIgASgJEhMKC2FwaV9zZXJ2aWNlGAMgASgJEhQKDHF1b3RhX21ldHJpYxgEIAEoCRIQCghxdW90YV9pZBgFIAEoCRJRChBxdW90YV9kaW1lbnNpb25zGAYgAygLMjcuZ29vZ2xlLnJwYy5RdW90YUZhaWx1cmUuVmlvbGF0aW9uLlF1b3RhRGltZW5zaW9uc0VudHJ5EhMKC3F1b3RhX3ZhbHVlGAcgASgDEh8KEmZ1dHVyZV9xdW90YV92YWx1ZRgIIAEoA0gAiAEBGjYKFFF1b3RhRGltZW5zaW9uc0VudHJ5EgsKA2tleRgBIAEoCRINCgV2YWx1ZRgCIAEoCToCOAFCFQoTX2Z1dHVyZV9xdW90YV92YWx1ZSKVAQoTUHJlY29uZGl0aW9uRmFpbHVyZRI9Cgp2aW9sYXRpb25zGAEgAygLMikuZ29vZ2xlLnJwYy5QcmVjb25kaXRpb25GYWlsdXJlLlZpb2xhdGlvbho/CglWaW9sYXRpb24SDAoEdHlwZRgBIAEoCRIPCgdzdWJqZWN0GAIgASgJEhMKC2Rlc2NyaXB0aW9uGAMgASgJIswBCgpCYWRSZXF1ZXN0Ej8KEGZpZWxkX3Zpb2xhdGlvbnMYASADKAsyJS5nb29nbGUucnBjLkJhZFJlcXVlc3QuRmllbGRWaW9sYXRpb24afQoORmllbGRWaW9sYXRpb24SDQoFZmllbGQYASABKAkSEwoLZGVzY3JpcHRpb24YAiABKAkSDgoGcmVhc29uGAMgASgJEjcKEWxvY2FsaXplZF9tZXNzYWdlGAQgASgLMhwuZ29vZ2xlLnJwYy5Mb2NhbGl6ZWRNZXNzYWdlIjcKC1JlcXVlc3RJbmZvEhIKCnJlcXVlc3RfaWQYASABKAkSFAoMc2VydmluZ19kYXRhGAIgASgJImAKDFJlc291cmNlSW5mbxIVCg1yZXNvdXJjZV90eXBlGAEgASgJEhUKDXJlc291cmNlX25hbWUYAiABKAkSDQoFb3duZXIYAyABKAkSEwoLZGVzY3JpcHRpb24YBCABKAkiVgoESGVscBIkCgVsaW5rcxgBIAMoCzIVLmdvb2dsZS5ycGMuSGVscC5MaW5rGigKBExpbmsSEwoLZGVzY3JpcHRpb24YASABKAkSCwoDdXJsGAIgASgJIjMKEExvY2FsaXplZE1lc3NhZ2USDgoGbG9jYWxlGAEgASgJEg8KB21lc3NhZ2UYAiABKAlCbAoOY29tLmdvb2dsZS5ycGNCEUVycm9yRGV0YWlsc1Byb3RvUAFaP2dvb2dsZS5nb2xhbmcub3JnL2dlbnByb3RvL2dvb2dsZWFwaXMvcnBjL2VycmRldGFpbHM7ZXJyZGV0YWlsc6ICA1JQQ2IGcHJvdG8z", [file_google_protobuf_duration]);
|
|
5477
5873
|
const ErrorInfoSchema = /* @__PURE__ */ messageDesc(file_google_rpc_error_details, 0);
|
|
@@ -5618,9 +6014,9 @@ class TimeTicket {
|
|
|
5618
6014
|
} else if (other.lamport > this.lamport) {
|
|
5619
6015
|
return -1;
|
|
5620
6016
|
}
|
|
5621
|
-
const
|
|
5622
|
-
if (
|
|
5623
|
-
return
|
|
6017
|
+
const compare = this.actorID.localeCompare(other.actorID);
|
|
6018
|
+
if (compare !== 0) {
|
|
6019
|
+
return compare;
|
|
5624
6020
|
}
|
|
5625
6021
|
if (this.delimiter > other.delimiter) {
|
|
5626
6022
|
return 1;
|
|
@@ -6613,923 +7009,32 @@ class SplayTree {
|
|
|
6613
7009
|
return false;
|
|
6614
7010
|
}
|
|
6615
7011
|
}
|
|
6616
|
-
|
|
6617
|
-
|
|
6618
|
-
|
|
6619
|
-
|
|
6620
|
-
|
|
6621
|
-
|
|
6622
|
-
|
|
6623
|
-
97,
|
|
6624
|
-
115,
|
|
6625
|
-
109,
|
|
6626
|
-
// version 1
|
|
6627
|
-
1,
|
|
6628
|
-
0,
|
|
6629
|
-
0,
|
|
6630
|
-
0,
|
|
6631
|
-
// section "type"
|
|
6632
|
-
1,
|
|
6633
|
-
13,
|
|
6634
|
-
2,
|
|
6635
|
-
// 0, () => i32
|
|
6636
|
-
96,
|
|
6637
|
-
0,
|
|
6638
|
-
1,
|
|
6639
|
-
127,
|
|
6640
|
-
// 1, (i32, i32, i32, i32) => i32
|
|
6641
|
-
96,
|
|
6642
|
-
4,
|
|
6643
|
-
127,
|
|
6644
|
-
127,
|
|
6645
|
-
127,
|
|
6646
|
-
127,
|
|
6647
|
-
1,
|
|
6648
|
-
127,
|
|
6649
|
-
// section "function"
|
|
6650
|
-
3,
|
|
6651
|
-
7,
|
|
6652
|
-
6,
|
|
6653
|
-
// 0, type 0
|
|
6654
|
-
0,
|
|
6655
|
-
// 1, type 1
|
|
6656
|
-
1,
|
|
6657
|
-
// 2, type 1
|
|
6658
|
-
1,
|
|
6659
|
-
// 3, type 1
|
|
6660
|
-
1,
|
|
6661
|
-
// 4, type 1
|
|
6662
|
-
1,
|
|
6663
|
-
// 5, type 1
|
|
6664
|
-
1,
|
|
6665
|
-
// section "global"
|
|
6666
|
-
6,
|
|
6667
|
-
6,
|
|
6668
|
-
1,
|
|
6669
|
-
// 0, "high", mutable i32
|
|
6670
|
-
127,
|
|
6671
|
-
1,
|
|
6672
|
-
65,
|
|
6673
|
-
0,
|
|
6674
|
-
11,
|
|
6675
|
-
// section "export"
|
|
6676
|
-
7,
|
|
6677
|
-
50,
|
|
6678
|
-
6,
|
|
6679
|
-
// 0, "mul"
|
|
6680
|
-
3,
|
|
6681
|
-
109,
|
|
6682
|
-
117,
|
|
6683
|
-
108,
|
|
6684
|
-
0,
|
|
6685
|
-
1,
|
|
6686
|
-
// 1, "div_s"
|
|
6687
|
-
5,
|
|
6688
|
-
100,
|
|
6689
|
-
105,
|
|
6690
|
-
118,
|
|
6691
|
-
95,
|
|
6692
|
-
115,
|
|
6693
|
-
0,
|
|
6694
|
-
2,
|
|
6695
|
-
// 2, "div_u"
|
|
6696
|
-
5,
|
|
6697
|
-
100,
|
|
6698
|
-
105,
|
|
6699
|
-
118,
|
|
6700
|
-
95,
|
|
6701
|
-
117,
|
|
6702
|
-
0,
|
|
6703
|
-
3,
|
|
6704
|
-
// 3, "rem_s"
|
|
6705
|
-
5,
|
|
6706
|
-
114,
|
|
6707
|
-
101,
|
|
6708
|
-
109,
|
|
6709
|
-
95,
|
|
6710
|
-
115,
|
|
6711
|
-
0,
|
|
6712
|
-
4,
|
|
6713
|
-
// 4, "rem_u"
|
|
6714
|
-
5,
|
|
6715
|
-
114,
|
|
6716
|
-
101,
|
|
6717
|
-
109,
|
|
6718
|
-
95,
|
|
6719
|
-
117,
|
|
6720
|
-
0,
|
|
6721
|
-
5,
|
|
6722
|
-
// 5, "get_high"
|
|
6723
|
-
8,
|
|
6724
|
-
103,
|
|
6725
|
-
101,
|
|
6726
|
-
116,
|
|
6727
|
-
95,
|
|
6728
|
-
104,
|
|
6729
|
-
105,
|
|
6730
|
-
103,
|
|
6731
|
-
104,
|
|
6732
|
-
0,
|
|
6733
|
-
0,
|
|
6734
|
-
// section "code"
|
|
6735
|
-
10,
|
|
6736
|
-
191,
|
|
6737
|
-
1,
|
|
6738
|
-
6,
|
|
6739
|
-
// 0, "get_high"
|
|
6740
|
-
4,
|
|
6741
|
-
0,
|
|
6742
|
-
35,
|
|
6743
|
-
0,
|
|
6744
|
-
11,
|
|
6745
|
-
// 1, "mul"
|
|
6746
|
-
36,
|
|
6747
|
-
1,
|
|
6748
|
-
1,
|
|
6749
|
-
126,
|
|
6750
|
-
32,
|
|
6751
|
-
0,
|
|
6752
|
-
173,
|
|
6753
|
-
32,
|
|
6754
|
-
1,
|
|
6755
|
-
173,
|
|
6756
|
-
66,
|
|
6757
|
-
32,
|
|
6758
|
-
134,
|
|
6759
|
-
132,
|
|
6760
|
-
32,
|
|
6761
|
-
2,
|
|
6762
|
-
173,
|
|
6763
|
-
32,
|
|
6764
|
-
3,
|
|
6765
|
-
173,
|
|
6766
|
-
66,
|
|
6767
|
-
32,
|
|
6768
|
-
134,
|
|
6769
|
-
132,
|
|
6770
|
-
126,
|
|
6771
|
-
34,
|
|
6772
|
-
4,
|
|
6773
|
-
66,
|
|
6774
|
-
32,
|
|
6775
|
-
135,
|
|
6776
|
-
167,
|
|
6777
|
-
36,
|
|
6778
|
-
0,
|
|
6779
|
-
32,
|
|
6780
|
-
4,
|
|
6781
|
-
167,
|
|
6782
|
-
11,
|
|
6783
|
-
// 2, "div_s"
|
|
6784
|
-
36,
|
|
6785
|
-
1,
|
|
6786
|
-
1,
|
|
6787
|
-
126,
|
|
6788
|
-
32,
|
|
6789
|
-
0,
|
|
6790
|
-
173,
|
|
6791
|
-
32,
|
|
6792
|
-
1,
|
|
6793
|
-
173,
|
|
6794
|
-
66,
|
|
6795
|
-
32,
|
|
6796
|
-
134,
|
|
6797
|
-
132,
|
|
6798
|
-
32,
|
|
6799
|
-
2,
|
|
6800
|
-
173,
|
|
6801
|
-
32,
|
|
6802
|
-
3,
|
|
6803
|
-
173,
|
|
6804
|
-
66,
|
|
6805
|
-
32,
|
|
6806
|
-
134,
|
|
6807
|
-
132,
|
|
6808
|
-
127,
|
|
6809
|
-
34,
|
|
6810
|
-
4,
|
|
6811
|
-
66,
|
|
6812
|
-
32,
|
|
6813
|
-
135,
|
|
6814
|
-
167,
|
|
6815
|
-
36,
|
|
6816
|
-
0,
|
|
6817
|
-
32,
|
|
6818
|
-
4,
|
|
6819
|
-
167,
|
|
6820
|
-
11,
|
|
6821
|
-
// 3, "div_u"
|
|
6822
|
-
36,
|
|
6823
|
-
1,
|
|
6824
|
-
1,
|
|
6825
|
-
126,
|
|
6826
|
-
32,
|
|
6827
|
-
0,
|
|
6828
|
-
173,
|
|
6829
|
-
32,
|
|
6830
|
-
1,
|
|
6831
|
-
173,
|
|
6832
|
-
66,
|
|
6833
|
-
32,
|
|
6834
|
-
134,
|
|
6835
|
-
132,
|
|
6836
|
-
32,
|
|
6837
|
-
2,
|
|
6838
|
-
173,
|
|
6839
|
-
32,
|
|
6840
|
-
3,
|
|
6841
|
-
173,
|
|
6842
|
-
66,
|
|
6843
|
-
32,
|
|
6844
|
-
134,
|
|
6845
|
-
132,
|
|
6846
|
-
128,
|
|
6847
|
-
34,
|
|
6848
|
-
4,
|
|
6849
|
-
66,
|
|
6850
|
-
32,
|
|
6851
|
-
135,
|
|
6852
|
-
167,
|
|
6853
|
-
36,
|
|
6854
|
-
0,
|
|
6855
|
-
32,
|
|
6856
|
-
4,
|
|
6857
|
-
167,
|
|
6858
|
-
11,
|
|
6859
|
-
// 4, "rem_s"
|
|
6860
|
-
36,
|
|
6861
|
-
1,
|
|
6862
|
-
1,
|
|
6863
|
-
126,
|
|
6864
|
-
32,
|
|
6865
|
-
0,
|
|
6866
|
-
173,
|
|
6867
|
-
32,
|
|
6868
|
-
1,
|
|
6869
|
-
173,
|
|
6870
|
-
66,
|
|
6871
|
-
32,
|
|
6872
|
-
134,
|
|
6873
|
-
132,
|
|
6874
|
-
32,
|
|
6875
|
-
2,
|
|
6876
|
-
173,
|
|
6877
|
-
32,
|
|
6878
|
-
3,
|
|
6879
|
-
173,
|
|
6880
|
-
66,
|
|
6881
|
-
32,
|
|
6882
|
-
134,
|
|
6883
|
-
132,
|
|
6884
|
-
129,
|
|
6885
|
-
34,
|
|
6886
|
-
4,
|
|
6887
|
-
66,
|
|
6888
|
-
32,
|
|
6889
|
-
135,
|
|
6890
|
-
167,
|
|
6891
|
-
36,
|
|
6892
|
-
0,
|
|
6893
|
-
32,
|
|
6894
|
-
4,
|
|
6895
|
-
167,
|
|
6896
|
-
11,
|
|
6897
|
-
// 5, "rem_u"
|
|
6898
|
-
36,
|
|
6899
|
-
1,
|
|
6900
|
-
1,
|
|
6901
|
-
126,
|
|
6902
|
-
32,
|
|
6903
|
-
0,
|
|
6904
|
-
173,
|
|
6905
|
-
32,
|
|
6906
|
-
1,
|
|
6907
|
-
173,
|
|
6908
|
-
66,
|
|
6909
|
-
32,
|
|
6910
|
-
134,
|
|
6911
|
-
132,
|
|
6912
|
-
32,
|
|
6913
|
-
2,
|
|
6914
|
-
173,
|
|
6915
|
-
32,
|
|
6916
|
-
3,
|
|
6917
|
-
173,
|
|
6918
|
-
66,
|
|
6919
|
-
32,
|
|
6920
|
-
134,
|
|
6921
|
-
132,
|
|
6922
|
-
130,
|
|
6923
|
-
34,
|
|
6924
|
-
4,
|
|
6925
|
-
66,
|
|
6926
|
-
32,
|
|
6927
|
-
135,
|
|
6928
|
-
167,
|
|
6929
|
-
36,
|
|
6930
|
-
0,
|
|
6931
|
-
32,
|
|
6932
|
-
4,
|
|
6933
|
-
167,
|
|
6934
|
-
11
|
|
6935
|
-
])
|
|
6936
|
-
),
|
|
6937
|
-
{}
|
|
6938
|
-
).exports;
|
|
6939
|
-
} catch {
|
|
6940
|
-
}
|
|
6941
|
-
function Long(low, high, unsigned) {
|
|
6942
|
-
this.low = low | 0;
|
|
6943
|
-
this.high = high | 0;
|
|
6944
|
-
this.unsigned = !!unsigned;
|
|
6945
|
-
}
|
|
6946
|
-
Long.prototype.__isLong__;
|
|
6947
|
-
Object.defineProperty(Long.prototype, "__isLong__", { value: true });
|
|
6948
|
-
function isLong$1(obj) {
|
|
6949
|
-
return (obj && obj["__isLong__"]) === true;
|
|
6950
|
-
}
|
|
6951
|
-
function ctz32(value) {
|
|
6952
|
-
var c = Math.clz32(value & -value);
|
|
6953
|
-
return value ? 31 - c : c;
|
|
6954
|
-
}
|
|
6955
|
-
Long.isLong = isLong$1;
|
|
6956
|
-
var INT_CACHE = {};
|
|
6957
|
-
var UINT_CACHE = {};
|
|
6958
|
-
function fromInt(value, unsigned) {
|
|
6959
|
-
var obj, cachedObj, cache;
|
|
6960
|
-
if (unsigned) {
|
|
6961
|
-
value >>>= 0;
|
|
6962
|
-
if (cache = 0 <= value && value < 256) {
|
|
6963
|
-
cachedObj = UINT_CACHE[value];
|
|
6964
|
-
if (cachedObj) return cachedObj;
|
|
6965
|
-
}
|
|
6966
|
-
obj = fromBits(value, 0, true);
|
|
6967
|
-
if (cache) UINT_CACHE[value] = obj;
|
|
6968
|
-
return obj;
|
|
6969
|
-
} else {
|
|
6970
|
-
value |= 0;
|
|
6971
|
-
if (cache = -128 <= value && value < 128) {
|
|
6972
|
-
cachedObj = INT_CACHE[value];
|
|
6973
|
-
if (cachedObj) return cachedObj;
|
|
6974
|
-
}
|
|
6975
|
-
obj = fromBits(value, value < 0 ? -1 : 0, false);
|
|
6976
|
-
if (cache) INT_CACHE[value] = obj;
|
|
6977
|
-
return obj;
|
|
7012
|
+
const removeDecimal = (number) => number < 0 ? Math.ceil(number) : Math.floor(number);
|
|
7013
|
+
function bigintToBytesLE(value) {
|
|
7014
|
+
const buf = new Uint8Array(8);
|
|
7015
|
+
let v = BigInt.asUintN(64, value);
|
|
7016
|
+
for (let i = 0; i < 8; i++) {
|
|
7017
|
+
buf[i] = Number(v & 0xffn);
|
|
7018
|
+
v >>= 8n;
|
|
6978
7019
|
}
|
|
7020
|
+
return buf;
|
|
6979
7021
|
}
|
|
6980
|
-
|
|
6981
|
-
|
|
6982
|
-
|
|
6983
|
-
|
|
6984
|
-
if (value < 0) return UZERO;
|
|
6985
|
-
if (value >= TWO_PWR_64_DBL) return MAX_UNSIGNED_VALUE;
|
|
6986
|
-
} else {
|
|
6987
|
-
if (value <= -TWO_PWR_63_DBL) return MIN_VALUE;
|
|
6988
|
-
if (value + 1 >= TWO_PWR_63_DBL) return MAX_VALUE;
|
|
6989
|
-
}
|
|
6990
|
-
if (value < 0) return fromNumber(-value, unsigned).neg();
|
|
6991
|
-
return fromBits(
|
|
6992
|
-
value % TWO_PWR_32_DBL | 0,
|
|
6993
|
-
value / TWO_PWR_32_DBL | 0,
|
|
6994
|
-
unsigned
|
|
6995
|
-
);
|
|
6996
|
-
}
|
|
6997
|
-
Long.fromNumber = fromNumber;
|
|
6998
|
-
function fromBits(lowBits, highBits, unsigned) {
|
|
6999
|
-
return new Long(lowBits, highBits, unsigned);
|
|
7000
|
-
}
|
|
7001
|
-
Long.fromBits = fromBits;
|
|
7002
|
-
var pow_dbl = Math.pow;
|
|
7003
|
-
function fromString(str, unsigned, radix) {
|
|
7004
|
-
if (str.length === 0) throw Error("empty string");
|
|
7005
|
-
if (typeof unsigned === "number") {
|
|
7006
|
-
radix = unsigned;
|
|
7007
|
-
unsigned = false;
|
|
7008
|
-
} else {
|
|
7009
|
-
unsigned = !!unsigned;
|
|
7010
|
-
}
|
|
7011
|
-
if (str === "NaN" || str === "Infinity" || str === "+Infinity" || str === "-Infinity")
|
|
7012
|
-
return unsigned ? UZERO : ZERO;
|
|
7013
|
-
radix = radix || 10;
|
|
7014
|
-
if (radix < 2 || 36 < radix) throw RangeError("radix");
|
|
7015
|
-
var p;
|
|
7016
|
-
if ((p = str.indexOf("-")) > 0) throw Error("interior hyphen");
|
|
7017
|
-
else if (p === 0) {
|
|
7018
|
-
return fromString(str.substring(1), unsigned, radix).neg();
|
|
7019
|
-
}
|
|
7020
|
-
var radixToPower = fromNumber(pow_dbl(radix, 8));
|
|
7021
|
-
var result = ZERO;
|
|
7022
|
-
for (var i = 0; i < str.length; i += 8) {
|
|
7023
|
-
var size = Math.min(8, str.length - i), value = parseInt(str.substring(i, i + size), radix);
|
|
7024
|
-
if (size < 8) {
|
|
7025
|
-
var power = fromNumber(pow_dbl(radix, size));
|
|
7026
|
-
result = result.mul(power).add(fromNumber(value));
|
|
7027
|
-
} else {
|
|
7028
|
-
result = result.mul(radixToPower);
|
|
7029
|
-
result = result.add(fromNumber(value));
|
|
7030
|
-
}
|
|
7022
|
+
function bigintFromBytesLE(bytes) {
|
|
7023
|
+
let v = 0n;
|
|
7024
|
+
for (let i = 7; i >= 0; i--) {
|
|
7025
|
+
v = v << 8n | BigInt(bytes[i]);
|
|
7031
7026
|
}
|
|
7032
|
-
|
|
7033
|
-
return result;
|
|
7027
|
+
return BigInt.asIntN(64, v);
|
|
7034
7028
|
}
|
|
7035
|
-
|
|
7036
|
-
|
|
7037
|
-
|
|
7038
|
-
|
|
7039
|
-
return fromBits(
|
|
7040
|
-
val.low,
|
|
7041
|
-
val.high,
|
|
7042
|
-
typeof unsigned === "boolean" ? unsigned : val.unsigned
|
|
7043
|
-
);
|
|
7044
|
-
}
|
|
7045
|
-
Long.fromValue = fromValue;
|
|
7046
|
-
var TWO_PWR_16_DBL = 1 << 16;
|
|
7047
|
-
var TWO_PWR_24_DBL = 1 << 24;
|
|
7048
|
-
var TWO_PWR_32_DBL = TWO_PWR_16_DBL * TWO_PWR_16_DBL;
|
|
7049
|
-
var TWO_PWR_64_DBL = TWO_PWR_32_DBL * TWO_PWR_32_DBL;
|
|
7050
|
-
var TWO_PWR_63_DBL = TWO_PWR_64_DBL / 2;
|
|
7051
|
-
var TWO_PWR_24 = fromInt(TWO_PWR_24_DBL);
|
|
7052
|
-
var ZERO = fromInt(0);
|
|
7053
|
-
Long.ZERO = ZERO;
|
|
7054
|
-
var UZERO = fromInt(0, true);
|
|
7055
|
-
Long.UZERO = UZERO;
|
|
7056
|
-
var ONE = fromInt(1);
|
|
7057
|
-
Long.ONE = ONE;
|
|
7058
|
-
var UONE = fromInt(1, true);
|
|
7059
|
-
Long.UONE = UONE;
|
|
7060
|
-
var NEG_ONE = fromInt(-1);
|
|
7061
|
-
Long.NEG_ONE = NEG_ONE;
|
|
7062
|
-
var MAX_VALUE = fromBits(4294967295 | 0, 2147483647 | 0, false);
|
|
7063
|
-
Long.MAX_VALUE = MAX_VALUE;
|
|
7064
|
-
var MAX_UNSIGNED_VALUE = fromBits(4294967295 | 0, 4294967295 | 0, true);
|
|
7065
|
-
Long.MAX_UNSIGNED_VALUE = MAX_UNSIGNED_VALUE;
|
|
7066
|
-
var MIN_VALUE = fromBits(0, 2147483648 | 0, false);
|
|
7067
|
-
Long.MIN_VALUE = MIN_VALUE;
|
|
7068
|
-
var LongPrototype = Long.prototype;
|
|
7069
|
-
LongPrototype.toInt = function toInt() {
|
|
7070
|
-
return this.unsigned ? this.low >>> 0 : this.low;
|
|
7071
|
-
};
|
|
7072
|
-
LongPrototype.toNumber = function toNumber() {
|
|
7073
|
-
if (this.unsigned)
|
|
7074
|
-
return (this.high >>> 0) * TWO_PWR_32_DBL + (this.low >>> 0);
|
|
7075
|
-
return this.high * TWO_PWR_32_DBL + (this.low >>> 0);
|
|
7076
|
-
};
|
|
7077
|
-
LongPrototype.toString = function toString(radix) {
|
|
7078
|
-
radix = radix || 10;
|
|
7079
|
-
if (radix < 2 || 36 < radix) throw RangeError("radix");
|
|
7080
|
-
if (this.isZero()) return "0";
|
|
7081
|
-
if (this.isNegative()) {
|
|
7082
|
-
if (this.eq(MIN_VALUE)) {
|
|
7083
|
-
var radixLong = fromNumber(radix), div = this.div(radixLong), rem1 = div.mul(radixLong).sub(this);
|
|
7084
|
-
return div.toString(radix) + rem1.toInt().toString(radix);
|
|
7085
|
-
} else return "-" + this.neg().toString(radix);
|
|
7086
|
-
}
|
|
7087
|
-
var radixToPower = fromNumber(pow_dbl(radix, 6), this.unsigned), rem = this;
|
|
7088
|
-
var result = "";
|
|
7089
|
-
while (true) {
|
|
7090
|
-
var remDiv = rem.div(radixToPower), intval = rem.sub(remDiv.mul(radixToPower)).toInt() >>> 0, digits = intval.toString(radix);
|
|
7091
|
-
rem = remDiv;
|
|
7092
|
-
if (rem.isZero()) return digits + result;
|
|
7093
|
-
else {
|
|
7094
|
-
while (digits.length < 6) digits = "0" + digits;
|
|
7095
|
-
result = "" + digits + result;
|
|
7096
|
-
}
|
|
7097
|
-
}
|
|
7098
|
-
};
|
|
7099
|
-
LongPrototype.getHighBits = function getHighBits() {
|
|
7100
|
-
return this.high;
|
|
7101
|
-
};
|
|
7102
|
-
LongPrototype.getHighBitsUnsigned = function getHighBitsUnsigned() {
|
|
7103
|
-
return this.high >>> 0;
|
|
7104
|
-
};
|
|
7105
|
-
LongPrototype.getLowBits = function getLowBits() {
|
|
7106
|
-
return this.low;
|
|
7107
|
-
};
|
|
7108
|
-
LongPrototype.getLowBitsUnsigned = function getLowBitsUnsigned() {
|
|
7109
|
-
return this.low >>> 0;
|
|
7110
|
-
};
|
|
7111
|
-
LongPrototype.getNumBitsAbs = function getNumBitsAbs() {
|
|
7112
|
-
if (this.isNegative())
|
|
7113
|
-
return this.eq(MIN_VALUE) ? 64 : this.neg().getNumBitsAbs();
|
|
7114
|
-
var val = this.high != 0 ? this.high : this.low;
|
|
7115
|
-
for (var bit = 31; bit > 0; bit--) if ((val & 1 << bit) != 0) break;
|
|
7116
|
-
return this.high != 0 ? bit + 33 : bit + 1;
|
|
7117
|
-
};
|
|
7118
|
-
LongPrototype.isSafeInteger = function isSafeInteger() {
|
|
7119
|
-
var top11Bits = this.high >> 21;
|
|
7120
|
-
if (!top11Bits) return true;
|
|
7121
|
-
if (this.unsigned) return false;
|
|
7122
|
-
return top11Bits === -1 && !(this.low === 0 && this.high === -2097152);
|
|
7123
|
-
};
|
|
7124
|
-
LongPrototype.isZero = function isZero() {
|
|
7125
|
-
return this.high === 0 && this.low === 0;
|
|
7126
|
-
};
|
|
7127
|
-
LongPrototype.eqz = LongPrototype.isZero;
|
|
7128
|
-
LongPrototype.isNegative = function isNegative() {
|
|
7129
|
-
return !this.unsigned && this.high < 0;
|
|
7130
|
-
};
|
|
7131
|
-
LongPrototype.isPositive = function isPositive() {
|
|
7132
|
-
return this.unsigned || this.high >= 0;
|
|
7133
|
-
};
|
|
7134
|
-
LongPrototype.isOdd = function isOdd() {
|
|
7135
|
-
return (this.low & 1) === 1;
|
|
7136
|
-
};
|
|
7137
|
-
LongPrototype.isEven = function isEven() {
|
|
7138
|
-
return (this.low & 1) === 0;
|
|
7139
|
-
};
|
|
7140
|
-
LongPrototype.equals = function equals(other) {
|
|
7141
|
-
if (!isLong$1(other)) other = fromValue(other);
|
|
7142
|
-
if (this.unsigned !== other.unsigned && this.high >>> 31 === 1 && other.high >>> 31 === 1)
|
|
7143
|
-
return false;
|
|
7144
|
-
return this.high === other.high && this.low === other.low;
|
|
7145
|
-
};
|
|
7146
|
-
LongPrototype.eq = LongPrototype.equals;
|
|
7147
|
-
LongPrototype.notEquals = function notEquals(other) {
|
|
7148
|
-
return !this.eq(
|
|
7149
|
-
/* validates */
|
|
7150
|
-
other
|
|
7151
|
-
);
|
|
7152
|
-
};
|
|
7153
|
-
LongPrototype.neq = LongPrototype.notEquals;
|
|
7154
|
-
LongPrototype.ne = LongPrototype.notEquals;
|
|
7155
|
-
LongPrototype.lessThan = function lessThan(other) {
|
|
7156
|
-
return this.comp(
|
|
7157
|
-
/* validates */
|
|
7158
|
-
other
|
|
7159
|
-
) < 0;
|
|
7160
|
-
};
|
|
7161
|
-
LongPrototype.lt = LongPrototype.lessThan;
|
|
7162
|
-
LongPrototype.lessThanOrEqual = function lessThanOrEqual(other) {
|
|
7163
|
-
return this.comp(
|
|
7164
|
-
/* validates */
|
|
7165
|
-
other
|
|
7166
|
-
) <= 0;
|
|
7167
|
-
};
|
|
7168
|
-
LongPrototype.lte = LongPrototype.lessThanOrEqual;
|
|
7169
|
-
LongPrototype.le = LongPrototype.lessThanOrEqual;
|
|
7170
|
-
LongPrototype.greaterThan = function greaterThan(other) {
|
|
7171
|
-
return this.comp(
|
|
7172
|
-
/* validates */
|
|
7173
|
-
other
|
|
7174
|
-
) > 0;
|
|
7175
|
-
};
|
|
7176
|
-
LongPrototype.gt = LongPrototype.greaterThan;
|
|
7177
|
-
LongPrototype.greaterThanOrEqual = function greaterThanOrEqual(other) {
|
|
7178
|
-
return this.comp(
|
|
7179
|
-
/* validates */
|
|
7180
|
-
other
|
|
7181
|
-
) >= 0;
|
|
7182
|
-
};
|
|
7183
|
-
LongPrototype.gte = LongPrototype.greaterThanOrEqual;
|
|
7184
|
-
LongPrototype.ge = LongPrototype.greaterThanOrEqual;
|
|
7185
|
-
LongPrototype.compare = function compare(other) {
|
|
7186
|
-
if (!isLong$1(other)) other = fromValue(other);
|
|
7187
|
-
if (this.eq(other)) return 0;
|
|
7188
|
-
var thisNeg = this.isNegative(), otherNeg = other.isNegative();
|
|
7189
|
-
if (thisNeg && !otherNeg) return -1;
|
|
7190
|
-
if (!thisNeg && otherNeg) return 1;
|
|
7191
|
-
if (!this.unsigned) return this.sub(other).isNegative() ? -1 : 1;
|
|
7192
|
-
return other.high >>> 0 > this.high >>> 0 || other.high === this.high && other.low >>> 0 > this.low >>> 0 ? -1 : 1;
|
|
7193
|
-
};
|
|
7194
|
-
LongPrototype.comp = LongPrototype.compare;
|
|
7195
|
-
LongPrototype.negate = function negate2() {
|
|
7196
|
-
if (!this.unsigned && this.eq(MIN_VALUE)) return MIN_VALUE;
|
|
7197
|
-
return this.not().add(ONE);
|
|
7198
|
-
};
|
|
7199
|
-
LongPrototype.neg = LongPrototype.negate;
|
|
7200
|
-
LongPrototype.add = function add(addend) {
|
|
7201
|
-
if (!isLong$1(addend)) addend = fromValue(addend);
|
|
7202
|
-
var a48 = this.high >>> 16;
|
|
7203
|
-
var a32 = this.high & 65535;
|
|
7204
|
-
var a16 = this.low >>> 16;
|
|
7205
|
-
var a00 = this.low & 65535;
|
|
7206
|
-
var b48 = addend.high >>> 16;
|
|
7207
|
-
var b32 = addend.high & 65535;
|
|
7208
|
-
var b16 = addend.low >>> 16;
|
|
7209
|
-
var b00 = addend.low & 65535;
|
|
7210
|
-
var c48 = 0, c32 = 0, c16 = 0, c00 = 0;
|
|
7211
|
-
c00 += a00 + b00;
|
|
7212
|
-
c16 += c00 >>> 16;
|
|
7213
|
-
c00 &= 65535;
|
|
7214
|
-
c16 += a16 + b16;
|
|
7215
|
-
c32 += c16 >>> 16;
|
|
7216
|
-
c16 &= 65535;
|
|
7217
|
-
c32 += a32 + b32;
|
|
7218
|
-
c48 += c32 >>> 16;
|
|
7219
|
-
c32 &= 65535;
|
|
7220
|
-
c48 += a48 + b48;
|
|
7221
|
-
c48 &= 65535;
|
|
7222
|
-
return fromBits(c16 << 16 | c00, c48 << 16 | c32, this.unsigned);
|
|
7223
|
-
};
|
|
7224
|
-
LongPrototype.subtract = function subtract(subtrahend) {
|
|
7225
|
-
if (!isLong$1(subtrahend)) subtrahend = fromValue(subtrahend);
|
|
7226
|
-
return this.add(subtrahend.neg());
|
|
7227
|
-
};
|
|
7228
|
-
LongPrototype.sub = LongPrototype.subtract;
|
|
7229
|
-
LongPrototype.multiply = function multiply(multiplier) {
|
|
7230
|
-
if (this.isZero()) return this;
|
|
7231
|
-
if (!isLong$1(multiplier)) multiplier = fromValue(multiplier);
|
|
7232
|
-
if (wasm) {
|
|
7233
|
-
var low = wasm["mul"](this.low, this.high, multiplier.low, multiplier.high);
|
|
7234
|
-
return fromBits(low, wasm["get_high"](), this.unsigned);
|
|
7235
|
-
}
|
|
7236
|
-
if (multiplier.isZero()) return this.unsigned ? UZERO : ZERO;
|
|
7237
|
-
if (this.eq(MIN_VALUE)) return multiplier.isOdd() ? MIN_VALUE : ZERO;
|
|
7238
|
-
if (multiplier.eq(MIN_VALUE)) return this.isOdd() ? MIN_VALUE : ZERO;
|
|
7239
|
-
if (this.isNegative()) {
|
|
7240
|
-
if (multiplier.isNegative()) return this.neg().mul(multiplier.neg());
|
|
7241
|
-
else return this.neg().mul(multiplier).neg();
|
|
7242
|
-
} else if (multiplier.isNegative()) return this.mul(multiplier.neg()).neg();
|
|
7243
|
-
if (this.lt(TWO_PWR_24) && multiplier.lt(TWO_PWR_24))
|
|
7244
|
-
return fromNumber(this.toNumber() * multiplier.toNumber(), this.unsigned);
|
|
7245
|
-
var a48 = this.high >>> 16;
|
|
7246
|
-
var a32 = this.high & 65535;
|
|
7247
|
-
var a16 = this.low >>> 16;
|
|
7248
|
-
var a00 = this.low & 65535;
|
|
7249
|
-
var b48 = multiplier.high >>> 16;
|
|
7250
|
-
var b32 = multiplier.high & 65535;
|
|
7251
|
-
var b16 = multiplier.low >>> 16;
|
|
7252
|
-
var b00 = multiplier.low & 65535;
|
|
7253
|
-
var c48 = 0, c32 = 0, c16 = 0, c00 = 0;
|
|
7254
|
-
c00 += a00 * b00;
|
|
7255
|
-
c16 += c00 >>> 16;
|
|
7256
|
-
c00 &= 65535;
|
|
7257
|
-
c16 += a16 * b00;
|
|
7258
|
-
c32 += c16 >>> 16;
|
|
7259
|
-
c16 &= 65535;
|
|
7260
|
-
c16 += a00 * b16;
|
|
7261
|
-
c32 += c16 >>> 16;
|
|
7262
|
-
c16 &= 65535;
|
|
7263
|
-
c32 += a32 * b00;
|
|
7264
|
-
c48 += c32 >>> 16;
|
|
7265
|
-
c32 &= 65535;
|
|
7266
|
-
c32 += a16 * b16;
|
|
7267
|
-
c48 += c32 >>> 16;
|
|
7268
|
-
c32 &= 65535;
|
|
7269
|
-
c32 += a00 * b32;
|
|
7270
|
-
c48 += c32 >>> 16;
|
|
7271
|
-
c32 &= 65535;
|
|
7272
|
-
c48 += a48 * b00 + a32 * b16 + a16 * b32 + a00 * b48;
|
|
7273
|
-
c48 &= 65535;
|
|
7274
|
-
return fromBits(c16 << 16 | c00, c48 << 16 | c32, this.unsigned);
|
|
7275
|
-
};
|
|
7276
|
-
LongPrototype.mul = LongPrototype.multiply;
|
|
7277
|
-
LongPrototype.divide = function divide(divisor) {
|
|
7278
|
-
if (!isLong$1(divisor)) divisor = fromValue(divisor);
|
|
7279
|
-
if (divisor.isZero()) throw Error("division by zero");
|
|
7280
|
-
if (wasm) {
|
|
7281
|
-
if (!this.unsigned && this.high === -2147483648 && divisor.low === -1 && divisor.high === -1) {
|
|
7282
|
-
return this;
|
|
7283
|
-
}
|
|
7284
|
-
var low = (this.unsigned ? wasm["div_u"] : wasm["div_s"])(
|
|
7285
|
-
this.low,
|
|
7286
|
-
this.high,
|
|
7287
|
-
divisor.low,
|
|
7288
|
-
divisor.high
|
|
7289
|
-
);
|
|
7290
|
-
return fromBits(low, wasm["get_high"](), this.unsigned);
|
|
7291
|
-
}
|
|
7292
|
-
if (this.isZero()) return this.unsigned ? UZERO : ZERO;
|
|
7293
|
-
var approx, rem, res;
|
|
7294
|
-
if (!this.unsigned) {
|
|
7295
|
-
if (this.eq(MIN_VALUE)) {
|
|
7296
|
-
if (divisor.eq(ONE) || divisor.eq(NEG_ONE))
|
|
7297
|
-
return MIN_VALUE;
|
|
7298
|
-
else if (divisor.eq(MIN_VALUE)) return ONE;
|
|
7299
|
-
else {
|
|
7300
|
-
var halfThis = this.shr(1);
|
|
7301
|
-
approx = halfThis.div(divisor).shl(1);
|
|
7302
|
-
if (approx.eq(ZERO)) {
|
|
7303
|
-
return divisor.isNegative() ? ONE : NEG_ONE;
|
|
7304
|
-
} else {
|
|
7305
|
-
rem = this.sub(divisor.mul(approx));
|
|
7306
|
-
res = approx.add(rem.div(divisor));
|
|
7307
|
-
return res;
|
|
7308
|
-
}
|
|
7309
|
-
}
|
|
7310
|
-
} else if (divisor.eq(MIN_VALUE)) return this.unsigned ? UZERO : ZERO;
|
|
7311
|
-
if (this.isNegative()) {
|
|
7312
|
-
if (divisor.isNegative()) return this.neg().div(divisor.neg());
|
|
7313
|
-
return this.neg().div(divisor).neg();
|
|
7314
|
-
} else if (divisor.isNegative()) return this.div(divisor.neg()).neg();
|
|
7315
|
-
res = ZERO;
|
|
7316
|
-
} else {
|
|
7317
|
-
if (!divisor.unsigned) divisor = divisor.toUnsigned();
|
|
7318
|
-
if (divisor.gt(this)) return UZERO;
|
|
7319
|
-
if (divisor.gt(this.shru(1)))
|
|
7320
|
-
return UONE;
|
|
7321
|
-
res = UZERO;
|
|
7322
|
-
}
|
|
7323
|
-
rem = this;
|
|
7324
|
-
while (rem.gte(divisor)) {
|
|
7325
|
-
approx = Math.max(1, Math.floor(rem.toNumber() / divisor.toNumber()));
|
|
7326
|
-
var log2 = Math.ceil(Math.log(approx) / Math.LN2), delta = log2 <= 48 ? 1 : pow_dbl(2, log2 - 48), approxRes = fromNumber(approx), approxRem = approxRes.mul(divisor);
|
|
7327
|
-
while (approxRem.isNegative() || approxRem.gt(rem)) {
|
|
7328
|
-
approx -= delta;
|
|
7329
|
-
approxRes = fromNumber(approx, this.unsigned);
|
|
7330
|
-
approxRem = approxRes.mul(divisor);
|
|
7331
|
-
}
|
|
7332
|
-
if (approxRes.isZero()) approxRes = ONE;
|
|
7333
|
-
res = res.add(approxRes);
|
|
7334
|
-
rem = rem.sub(approxRem);
|
|
7335
|
-
}
|
|
7336
|
-
return res;
|
|
7337
|
-
};
|
|
7338
|
-
LongPrototype.div = LongPrototype.divide;
|
|
7339
|
-
LongPrototype.modulo = function modulo(divisor) {
|
|
7340
|
-
if (!isLong$1(divisor)) divisor = fromValue(divisor);
|
|
7341
|
-
if (wasm) {
|
|
7342
|
-
var low = (this.unsigned ? wasm["rem_u"] : wasm["rem_s"])(
|
|
7343
|
-
this.low,
|
|
7344
|
-
this.high,
|
|
7345
|
-
divisor.low,
|
|
7346
|
-
divisor.high
|
|
7347
|
-
);
|
|
7348
|
-
return fromBits(low, wasm["get_high"](), this.unsigned);
|
|
7349
|
-
}
|
|
7350
|
-
return this.sub(this.div(divisor).mul(divisor));
|
|
7351
|
-
};
|
|
7352
|
-
LongPrototype.mod = LongPrototype.modulo;
|
|
7353
|
-
LongPrototype.rem = LongPrototype.modulo;
|
|
7354
|
-
LongPrototype.not = function not() {
|
|
7355
|
-
return fromBits(~this.low, ~this.high, this.unsigned);
|
|
7356
|
-
};
|
|
7357
|
-
LongPrototype.countLeadingZeros = function countLeadingZeros() {
|
|
7358
|
-
return this.high ? Math.clz32(this.high) : Math.clz32(this.low) + 32;
|
|
7359
|
-
};
|
|
7360
|
-
LongPrototype.clz = LongPrototype.countLeadingZeros;
|
|
7361
|
-
LongPrototype.countTrailingZeros = function countTrailingZeros() {
|
|
7362
|
-
return this.low ? ctz32(this.low) : ctz32(this.high) + 32;
|
|
7363
|
-
};
|
|
7364
|
-
LongPrototype.ctz = LongPrototype.countTrailingZeros;
|
|
7365
|
-
LongPrototype.and = function and(other) {
|
|
7366
|
-
if (!isLong$1(other)) other = fromValue(other);
|
|
7367
|
-
return fromBits(this.low & other.low, this.high & other.high, this.unsigned);
|
|
7368
|
-
};
|
|
7369
|
-
LongPrototype.or = function or(other) {
|
|
7370
|
-
if (!isLong$1(other)) other = fromValue(other);
|
|
7371
|
-
return fromBits(this.low | other.low, this.high | other.high, this.unsigned);
|
|
7372
|
-
};
|
|
7373
|
-
LongPrototype.xor = function xor(other) {
|
|
7374
|
-
if (!isLong$1(other)) other = fromValue(other);
|
|
7375
|
-
return fromBits(this.low ^ other.low, this.high ^ other.high, this.unsigned);
|
|
7376
|
-
};
|
|
7377
|
-
LongPrototype.shiftLeft = function shiftLeft(numBits) {
|
|
7378
|
-
if (isLong$1(numBits)) numBits = numBits.toInt();
|
|
7379
|
-
if ((numBits &= 63) === 0) return this;
|
|
7380
|
-
else if (numBits < 32)
|
|
7381
|
-
return fromBits(
|
|
7382
|
-
this.low << numBits,
|
|
7383
|
-
this.high << numBits | this.low >>> 32 - numBits,
|
|
7384
|
-
this.unsigned
|
|
7385
|
-
);
|
|
7386
|
-
else return fromBits(0, this.low << numBits - 32, this.unsigned);
|
|
7387
|
-
};
|
|
7388
|
-
LongPrototype.shl = LongPrototype.shiftLeft;
|
|
7389
|
-
LongPrototype.shiftRight = function shiftRight(numBits) {
|
|
7390
|
-
if (isLong$1(numBits)) numBits = numBits.toInt();
|
|
7391
|
-
if ((numBits &= 63) === 0) return this;
|
|
7392
|
-
else if (numBits < 32)
|
|
7393
|
-
return fromBits(
|
|
7394
|
-
this.low >>> numBits | this.high << 32 - numBits,
|
|
7395
|
-
this.high >> numBits,
|
|
7396
|
-
this.unsigned
|
|
7397
|
-
);
|
|
7398
|
-
else
|
|
7399
|
-
return fromBits(
|
|
7400
|
-
this.high >> numBits - 32,
|
|
7401
|
-
this.high >= 0 ? 0 : -1,
|
|
7402
|
-
this.unsigned
|
|
7403
|
-
);
|
|
7404
|
-
};
|
|
7405
|
-
LongPrototype.shr = LongPrototype.shiftRight;
|
|
7406
|
-
LongPrototype.shiftRightUnsigned = function shiftRightUnsigned(numBits) {
|
|
7407
|
-
if (isLong$1(numBits)) numBits = numBits.toInt();
|
|
7408
|
-
if ((numBits &= 63) === 0) return this;
|
|
7409
|
-
if (numBits < 32)
|
|
7410
|
-
return fromBits(
|
|
7411
|
-
this.low >>> numBits | this.high << 32 - numBits,
|
|
7412
|
-
this.high >>> numBits,
|
|
7413
|
-
this.unsigned
|
|
7414
|
-
);
|
|
7415
|
-
if (numBits === 32) return fromBits(this.high, 0, this.unsigned);
|
|
7416
|
-
return fromBits(this.high >>> numBits - 32, 0, this.unsigned);
|
|
7417
|
-
};
|
|
7418
|
-
LongPrototype.shru = LongPrototype.shiftRightUnsigned;
|
|
7419
|
-
LongPrototype.shr_u = LongPrototype.shiftRightUnsigned;
|
|
7420
|
-
LongPrototype.rotateLeft = function rotateLeft(numBits) {
|
|
7421
|
-
var b;
|
|
7422
|
-
if (isLong$1(numBits)) numBits = numBits.toInt();
|
|
7423
|
-
if ((numBits &= 63) === 0) return this;
|
|
7424
|
-
if (numBits === 32) return fromBits(this.high, this.low, this.unsigned);
|
|
7425
|
-
if (numBits < 32) {
|
|
7426
|
-
b = 32 - numBits;
|
|
7427
|
-
return fromBits(
|
|
7428
|
-
this.low << numBits | this.high >>> b,
|
|
7429
|
-
this.high << numBits | this.low >>> b,
|
|
7430
|
-
this.unsigned
|
|
7431
|
-
);
|
|
7432
|
-
}
|
|
7433
|
-
numBits -= 32;
|
|
7434
|
-
b = 32 - numBits;
|
|
7435
|
-
return fromBits(
|
|
7436
|
-
this.high << numBits | this.low >>> b,
|
|
7437
|
-
this.low << numBits | this.high >>> b,
|
|
7438
|
-
this.unsigned
|
|
7439
|
-
);
|
|
7440
|
-
};
|
|
7441
|
-
LongPrototype.rotl = LongPrototype.rotateLeft;
|
|
7442
|
-
LongPrototype.rotateRight = function rotateRight(numBits) {
|
|
7443
|
-
var b;
|
|
7444
|
-
if (isLong$1(numBits)) numBits = numBits.toInt();
|
|
7445
|
-
if ((numBits &= 63) === 0) return this;
|
|
7446
|
-
if (numBits === 32) return fromBits(this.high, this.low, this.unsigned);
|
|
7447
|
-
if (numBits < 32) {
|
|
7448
|
-
b = 32 - numBits;
|
|
7449
|
-
return fromBits(
|
|
7450
|
-
this.high << b | this.low >>> numBits,
|
|
7451
|
-
this.low << b | this.high >>> numBits,
|
|
7452
|
-
this.unsigned
|
|
7453
|
-
);
|
|
7029
|
+
function bigintFromBytesLEUnsigned(bytes) {
|
|
7030
|
+
let v = 0n;
|
|
7031
|
+
for (let i = 7; i >= 0; i--) {
|
|
7032
|
+
v = v << 8n | BigInt(bytes[i]);
|
|
7454
7033
|
}
|
|
7455
|
-
|
|
7456
|
-
|
|
7457
|
-
|
|
7458
|
-
|
|
7459
|
-
this.high << b | this.low >>> numBits,
|
|
7460
|
-
this.unsigned
|
|
7461
|
-
);
|
|
7462
|
-
};
|
|
7463
|
-
LongPrototype.rotr = LongPrototype.rotateRight;
|
|
7464
|
-
LongPrototype.toSigned = function toSigned() {
|
|
7465
|
-
if (!this.unsigned) return this;
|
|
7466
|
-
return fromBits(this.low, this.high, false);
|
|
7467
|
-
};
|
|
7468
|
-
LongPrototype.toUnsigned = function toUnsigned2() {
|
|
7469
|
-
if (this.unsigned) return this;
|
|
7470
|
-
return fromBits(this.low, this.high, true);
|
|
7471
|
-
};
|
|
7472
|
-
LongPrototype.toBytes = function toBytes(le) {
|
|
7473
|
-
return le ? this.toBytesLE() : this.toBytesBE();
|
|
7474
|
-
};
|
|
7475
|
-
LongPrototype.toBytesLE = function toBytesLE() {
|
|
7476
|
-
var hi = this.high, lo = this.low;
|
|
7477
|
-
return [
|
|
7478
|
-
lo & 255,
|
|
7479
|
-
lo >>> 8 & 255,
|
|
7480
|
-
lo >>> 16 & 255,
|
|
7481
|
-
lo >>> 24,
|
|
7482
|
-
hi & 255,
|
|
7483
|
-
hi >>> 8 & 255,
|
|
7484
|
-
hi >>> 16 & 255,
|
|
7485
|
-
hi >>> 24
|
|
7486
|
-
];
|
|
7487
|
-
};
|
|
7488
|
-
LongPrototype.toBytesBE = function toBytesBE() {
|
|
7489
|
-
var hi = this.high, lo = this.low;
|
|
7490
|
-
return [
|
|
7491
|
-
hi >>> 24,
|
|
7492
|
-
hi >>> 16 & 255,
|
|
7493
|
-
hi >>> 8 & 255,
|
|
7494
|
-
hi & 255,
|
|
7495
|
-
lo >>> 24,
|
|
7496
|
-
lo >>> 16 & 255,
|
|
7497
|
-
lo >>> 8 & 255,
|
|
7498
|
-
lo & 255
|
|
7499
|
-
];
|
|
7500
|
-
};
|
|
7501
|
-
Long.fromBytes = function fromBytes(bytes, unsigned, le) {
|
|
7502
|
-
return le ? Long.fromBytesLE(bytes, unsigned) : Long.fromBytesBE(bytes, unsigned);
|
|
7503
|
-
};
|
|
7504
|
-
Long.fromBytesLE = function fromBytesLE(bytes, unsigned) {
|
|
7505
|
-
return new Long(
|
|
7506
|
-
bytes[0] | bytes[1] << 8 | bytes[2] << 16 | bytes[3] << 24,
|
|
7507
|
-
bytes[4] | bytes[5] << 8 | bytes[6] << 16 | bytes[7] << 24,
|
|
7508
|
-
unsigned
|
|
7509
|
-
);
|
|
7510
|
-
};
|
|
7511
|
-
Long.fromBytesBE = function fromBytesBE(bytes, unsigned) {
|
|
7512
|
-
return new Long(
|
|
7513
|
-
bytes[4] << 24 | bytes[5] << 16 | bytes[6] << 8 | bytes[7],
|
|
7514
|
-
bytes[0] << 24 | bytes[1] << 16 | bytes[2] << 8 | bytes[3],
|
|
7515
|
-
unsigned
|
|
7516
|
-
);
|
|
7517
|
-
};
|
|
7518
|
-
if (typeof BigInt === "function") {
|
|
7519
|
-
Long.fromBigInt = function fromBigInt(value, unsigned) {
|
|
7520
|
-
var lowBits = Number(BigInt.asIntN(32, value));
|
|
7521
|
-
var highBits = Number(BigInt.asIntN(32, value >> BigInt(32)));
|
|
7522
|
-
return fromBits(lowBits, highBits, unsigned);
|
|
7523
|
-
};
|
|
7524
|
-
Long.fromValue = function fromValueWithBigInt(value, unsigned) {
|
|
7525
|
-
if (typeof value === "bigint") return Long.fromBigInt(value, unsigned);
|
|
7526
|
-
return fromValue(value, unsigned);
|
|
7527
|
-
};
|
|
7528
|
-
LongPrototype.toBigInt = function toBigInt() {
|
|
7529
|
-
var lowBigInt = BigInt(this.low >>> 0);
|
|
7530
|
-
var highBigInt = BigInt(this.unsigned ? this.high >>> 0 : this.high);
|
|
7531
|
-
return highBigInt << BigInt(32) | lowBigInt;
|
|
7532
|
-
};
|
|
7034
|
+
return v;
|
|
7035
|
+
}
|
|
7036
|
+
function bigintToInt32(value) {
|
|
7037
|
+
return Number(BigInt.asIntN(32, value));
|
|
7533
7038
|
}
|
|
7534
7039
|
var PrimitiveType = /* @__PURE__ */ ((PrimitiveType2) => {
|
|
7535
7040
|
PrimitiveType2[PrimitiveType2["Null"] = 0] = "Null";
|
|
@@ -7577,11 +7082,11 @@ class Primitive extends CRDTElement {
|
|
|
7577
7082
|
case 5:
|
|
7578
7083
|
return new TextDecoder("utf-8").decode(bytes);
|
|
7579
7084
|
case 3:
|
|
7580
|
-
return
|
|
7085
|
+
return bigintFromBytesLE(bytes);
|
|
7581
7086
|
case 6:
|
|
7582
7087
|
return bytes;
|
|
7583
7088
|
case 7:
|
|
7584
|
-
return new Date(
|
|
7089
|
+
return new Date(Number(bigintFromBytesLEUnsigned(bytes)));
|
|
7585
7090
|
default:
|
|
7586
7091
|
throw new YorkieError(
|
|
7587
7092
|
Code.ErrUnimplemented,
|
|
@@ -7682,13 +7187,13 @@ class Primitive extends CRDTElement {
|
|
|
7682
7187
|
} else {
|
|
7683
7188
|
return 4;
|
|
7684
7189
|
}
|
|
7190
|
+
case "bigint":
|
|
7191
|
+
return 3;
|
|
7685
7192
|
case "string":
|
|
7686
7193
|
return 5;
|
|
7687
7194
|
case "object":
|
|
7688
7195
|
if (value === null) {
|
|
7689
7196
|
return 0;
|
|
7690
|
-
} else if (value instanceof Long) {
|
|
7691
|
-
return 3;
|
|
7692
7197
|
} else if (value instanceof Uint8Array) {
|
|
7693
7198
|
return 6;
|
|
7694
7199
|
} else if (value instanceof Date) {
|
|
@@ -7758,9 +7263,7 @@ class Primitive extends CRDTElement {
|
|
|
7758
7263
|
return new TextEncoder().encode(this.value);
|
|
7759
7264
|
}
|
|
7760
7265
|
case 3: {
|
|
7761
|
-
|
|
7762
|
-
const longToBytes = longVal.toBytesLE();
|
|
7763
|
-
return Uint8Array.from(longToBytes);
|
|
7266
|
+
return bigintToBytesLE(this.value);
|
|
7764
7267
|
}
|
|
7765
7268
|
case 6: {
|
|
7766
7269
|
const bytesVal = this.value;
|
|
@@ -7768,11 +7271,7 @@ class Primitive extends CRDTElement {
|
|
|
7768
7271
|
}
|
|
7769
7272
|
case 7: {
|
|
7770
7273
|
const dateVal = this.value;
|
|
7771
|
-
|
|
7772
|
-
dateVal.getTime(),
|
|
7773
|
-
true
|
|
7774
|
-
).toBytesLE();
|
|
7775
|
-
return Uint8Array.from(dateToBytes);
|
|
7274
|
+
return bigintToBytesLE(BigInt(dateVal.getTime()));
|
|
7776
7275
|
}
|
|
7777
7276
|
default:
|
|
7778
7277
|
throw new YorkieError(
|
|
@@ -8845,10 +8344,10 @@ class LLRBTree {
|
|
|
8845
8344
|
let node = this.root;
|
|
8846
8345
|
let result = void 0;
|
|
8847
8346
|
while (node) {
|
|
8848
|
-
const
|
|
8849
|
-
if (
|
|
8347
|
+
const compare = this.comparator(key, node.key);
|
|
8348
|
+
if (compare === 0) {
|
|
8850
8349
|
return node;
|
|
8851
|
-
} else if (
|
|
8350
|
+
} else if (compare < 0) {
|
|
8852
8351
|
node = node.left;
|
|
8853
8352
|
} else {
|
|
8854
8353
|
result = node;
|
|
@@ -8884,12 +8383,12 @@ class LLRBTree {
|
|
|
8884
8383
|
}
|
|
8885
8384
|
getInternal(key, node) {
|
|
8886
8385
|
while (node) {
|
|
8887
|
-
const
|
|
8888
|
-
if (
|
|
8386
|
+
const compare = this.comparator(key, node.key);
|
|
8387
|
+
if (compare === 0) {
|
|
8889
8388
|
return node;
|
|
8890
|
-
} else if (
|
|
8389
|
+
} else if (compare < 0) {
|
|
8891
8390
|
node = node.left;
|
|
8892
|
-
} else if (
|
|
8391
|
+
} else if (compare > 0) {
|
|
8893
8392
|
node = node.right;
|
|
8894
8393
|
}
|
|
8895
8394
|
}
|
|
@@ -8900,10 +8399,10 @@ class LLRBTree {
|
|
|
8900
8399
|
this.counter += 1;
|
|
8901
8400
|
return new LLRBNode(key, value, true);
|
|
8902
8401
|
}
|
|
8903
|
-
const
|
|
8904
|
-
if (
|
|
8402
|
+
const compare = this.comparator(key, node.key);
|
|
8403
|
+
if (compare < 0) {
|
|
8905
8404
|
node.left = this.putInternal(key, value, node.left);
|
|
8906
|
-
} else if (
|
|
8405
|
+
} else if (compare > 0) {
|
|
8907
8406
|
node.right = this.putInternal(key, value, node.right);
|
|
8908
8407
|
} else {
|
|
8909
8408
|
node.value = value;
|
|
@@ -9202,9 +8701,9 @@ class RGATreeSplitNode extends SplayNode {
|
|
|
9202
8701
|
*/
|
|
9203
8702
|
static createComparator() {
|
|
9204
8703
|
return (p1, p2) => {
|
|
9205
|
-
const
|
|
9206
|
-
if (
|
|
9207
|
-
return
|
|
8704
|
+
const compare = p1.getCreatedAt().compare(p2.getCreatedAt());
|
|
8705
|
+
if (compare !== 0) {
|
|
8706
|
+
return compare;
|
|
9208
8707
|
}
|
|
9209
8708
|
if (p1.getOffset() > p2.getOffset()) {
|
|
9210
8709
|
return 1;
|
|
@@ -11253,6 +10752,24 @@ class IndexTreeNode {
|
|
|
11253
10752
|
* In this method, the child is physically removed from the tree.
|
|
11254
10753
|
*/
|
|
11255
10754
|
removeChild(child) {
|
|
10755
|
+
if (this.isText) {
|
|
10756
|
+
throw new YorkieError(Code.ErrRefused, "Text node cannot have children");
|
|
10757
|
+
}
|
|
10758
|
+
const offset = this._children.indexOf(child);
|
|
10759
|
+
if (offset === -1) {
|
|
10760
|
+
return;
|
|
10761
|
+
}
|
|
10762
|
+
this._children.splice(offset, 1);
|
|
10763
|
+
child.updateAncestorsSize(-child.paddedSize(true), true);
|
|
10764
|
+
child.parent = void 0;
|
|
10765
|
+
}
|
|
10766
|
+
/**
|
|
10767
|
+
* `detachChild` removes the given child from this node's children list
|
|
10768
|
+
* and updates both visibleSize and totalSize. Unlike `removeChild` which
|
|
10769
|
+
* is used for GC purge of tombstoned nodes, `detachChild` is used for
|
|
10770
|
+
* moving alive nodes between parents.
|
|
10771
|
+
*/
|
|
10772
|
+
detachChild(child) {
|
|
11256
10773
|
if (this.isText) {
|
|
11257
10774
|
throw new YorkieError(Code.ErrRefused, "Text node cannot have children");
|
|
11258
10775
|
}
|
|
@@ -11261,25 +10778,46 @@ class IndexTreeNode {
|
|
|
11261
10778
|
throw new YorkieError(Code.ErrInvalidArgument, "child not found");
|
|
11262
10779
|
}
|
|
11263
10780
|
this._children.splice(offset, 1);
|
|
10781
|
+
child.updateAncestorsSize(-child.paddedSize());
|
|
11264
10782
|
child.updateAncestorsSize(-child.paddedSize(true), true);
|
|
11265
10783
|
child.parent = void 0;
|
|
11266
10784
|
}
|
|
11267
10785
|
/**
|
|
11268
10786
|
* `splitElement` splits the given element at the given offset.
|
|
11269
10787
|
*/
|
|
11270
|
-
splitElement(offset, issueTimeTicket) {
|
|
10788
|
+
splitElement(offset, issueTimeTicket, versionVector) {
|
|
11271
10789
|
const diff = { data: 0, meta: 0 };
|
|
11272
10790
|
const prvSize = this.getDataSize();
|
|
11273
10791
|
const clone = this.cloneElement(issueTimeTicket);
|
|
11274
10792
|
this.parent.insertAfterInternal(clone, this);
|
|
11275
10793
|
clone.updateAncestorsSize(clone.paddedSize());
|
|
11276
10794
|
clone.updateAncestorsSize(clone.paddedSize(true), true);
|
|
11277
|
-
const
|
|
11278
|
-
const
|
|
11279
|
-
|
|
11280
|
-
|
|
10795
|
+
const left = this._children.slice(0, offset);
|
|
10796
|
+
const right = this._children.slice(offset);
|
|
10797
|
+
const allChildren = [...left, ...right];
|
|
10798
|
+
const actualRight = [];
|
|
10799
|
+
for (const child of right) {
|
|
10800
|
+
if ("mergedFrom" in child && child.mergedFrom != null && "mergedAt" in child && child.mergedAt != null) {
|
|
10801
|
+
if (versionVector) {
|
|
10802
|
+
const mergedAt = child.mergedAt;
|
|
10803
|
+
if (!versionVector.afterOrEqual(mergedAt)) {
|
|
10804
|
+
const mergedFrom = child.mergedFrom;
|
|
10805
|
+
const sourceIsChild = allChildren.some(
|
|
10806
|
+
(sibling) => "id" in sibling && sibling.id.equals(mergedFrom)
|
|
10807
|
+
);
|
|
10808
|
+
if (sourceIsChild) {
|
|
10809
|
+
left.push(child);
|
|
10810
|
+
continue;
|
|
10811
|
+
}
|
|
10812
|
+
}
|
|
10813
|
+
}
|
|
10814
|
+
}
|
|
10815
|
+
actualRight.push(child);
|
|
10816
|
+
}
|
|
10817
|
+
this._children = left;
|
|
10818
|
+
clone._children = actualRight;
|
|
11281
10819
|
this.visibleSize = this._children.reduce(
|
|
11282
|
-
(acc, child) => acc + child.paddedSize(),
|
|
10820
|
+
(acc, child) => acc + (child.isRemoved ? 0 : child.paddedSize()),
|
|
11283
10821
|
0
|
|
11284
10822
|
);
|
|
11285
10823
|
this.totalSize = this._children.reduce(
|
|
@@ -11287,7 +10825,7 @@ class IndexTreeNode {
|
|
|
11287
10825
|
0
|
|
11288
10826
|
);
|
|
11289
10827
|
clone.visibleSize = clone._children.reduce(
|
|
11290
|
-
(acc, child) => acc + child.paddedSize(
|
|
10828
|
+
(acc, child) => acc + (child.isRemoved ? 0 : child.paddedSize()),
|
|
11291
10829
|
0
|
|
11292
10830
|
);
|
|
11293
10831
|
clone.totalSize = clone._children.reduce(
|
|
@@ -11822,9 +11360,9 @@ class CRDTTreeNodeID {
|
|
|
11822
11360
|
*/
|
|
11823
11361
|
static createComparator() {
|
|
11824
11362
|
return (idA, idB) => {
|
|
11825
|
-
const
|
|
11826
|
-
if (
|
|
11827
|
-
return
|
|
11363
|
+
const compare = idA.getCreatedAt().compare(idB.getCreatedAt());
|
|
11364
|
+
if (compare !== 0) {
|
|
11365
|
+
return compare;
|
|
11828
11366
|
}
|
|
11829
11367
|
if (idA.getOffset() > idB.getOffset()) {
|
|
11830
11368
|
return 1;
|
|
@@ -11893,6 +11431,29 @@ class CRDTTreeNode extends IndexTreeNode {
|
|
|
11893
11431
|
* `insNextID` is the previous node id of this node after the node is split.
|
|
11894
11432
|
*/
|
|
11895
11433
|
insNextID;
|
|
11434
|
+
/**
|
|
11435
|
+
* `mergedFrom` records the source parent's ID when this node was moved
|
|
11436
|
+
* by a concurrent merge. Persisted in the snapshot encoding as the
|
|
11437
|
+
* witness of the merge relationship.
|
|
11438
|
+
*/
|
|
11439
|
+
mergedFrom;
|
|
11440
|
+
/**
|
|
11441
|
+
* `mergedAt` records the immutable ticket of the merge operation.
|
|
11442
|
+
* Persisted alongside `mergedFrom` because the source parent's
|
|
11443
|
+
* `removedAt` may be overwritten by later LWW tombstones and thus
|
|
11444
|
+
* cannot serve as the merge-time causal boundary for splitElement's
|
|
11445
|
+
* Fix 8 version-vector check.
|
|
11446
|
+
*/
|
|
11447
|
+
mergedAt;
|
|
11448
|
+
/**
|
|
11449
|
+
* `mergedInto` is a runtime cache set on the source parent pointing
|
|
11450
|
+
* at the merge target. Set locally during merge execution and rebuilt
|
|
11451
|
+
* from `mergedFrom` on snapshot load. Used for the fast
|
|
11452
|
+
* "is this tombstoned parent a merge source?" check in
|
|
11453
|
+
* `FindTreeNodesWithSplitText`; the alternative (scanning
|
|
11454
|
+
* `nodeMapByID` on every position resolution) would be too expensive.
|
|
11455
|
+
*/
|
|
11456
|
+
mergedInto;
|
|
11896
11457
|
_value = "";
|
|
11897
11458
|
constructor(id, type, opts, attributes, removedAt) {
|
|
11898
11459
|
super(type);
|
|
@@ -11942,6 +11503,9 @@ class CRDTTreeNode extends IndexTreeNode {
|
|
|
11942
11503
|
});
|
|
11943
11504
|
clone.insPrevID = this.insPrevID;
|
|
11944
11505
|
clone.insNextID = this.insNextID;
|
|
11506
|
+
clone.mergedFrom = this.mergedFrom;
|
|
11507
|
+
clone.mergedAt = this.mergedAt;
|
|
11508
|
+
clone.mergedInto = this.mergedInto;
|
|
11945
11509
|
return clone;
|
|
11946
11510
|
}
|
|
11947
11511
|
/**
|
|
@@ -11994,13 +11558,16 @@ class CRDTTreeNode extends IndexTreeNode {
|
|
|
11994
11558
|
* `cloneText` clones this text node with the given offset.
|
|
11995
11559
|
*/
|
|
11996
11560
|
cloneText(offset) {
|
|
11997
|
-
|
|
11561
|
+
const clone = new CRDTTreeNode(
|
|
11998
11562
|
CRDTTreeNodeID.of(this.id.getCreatedAt(), offset),
|
|
11999
11563
|
this.type,
|
|
12000
11564
|
void 0,
|
|
12001
11565
|
void 0,
|
|
12002
11566
|
this.removedAt
|
|
12003
11567
|
);
|
|
11568
|
+
clone.mergedFrom = this.mergedFrom;
|
|
11569
|
+
clone.mergedAt = this.mergedAt;
|
|
11570
|
+
return clone;
|
|
12004
11571
|
}
|
|
12005
11572
|
/**
|
|
12006
11573
|
* `cloneElement` clones this element node with the given issueTimeTicket function.
|
|
@@ -12017,8 +11584,8 @@ class CRDTTreeNode extends IndexTreeNode {
|
|
|
12017
11584
|
/**
|
|
12018
11585
|
* `split` splits the given offset of this node.
|
|
12019
11586
|
*/
|
|
12020
|
-
split(tree, offset, issueTimeTicket) {
|
|
12021
|
-
const [split, diff] = this.isText ? this.splitText(offset, this.id.getOffset()) : this.splitElement(offset, issueTimeTicket);
|
|
11587
|
+
split(tree, offset, issueTimeTicket, versionVector) {
|
|
11588
|
+
const [split, diff] = this.isText ? this.splitText(offset, this.id.getOffset()) : this.splitElement(offset, issueTimeTicket, versionVector);
|
|
12022
11589
|
if (split) {
|
|
12023
11590
|
split.insPrevID = this.id;
|
|
12024
11591
|
if (this.insNextID) {
|
|
@@ -12131,6 +11698,13 @@ class CRDTTreeNode extends IndexTreeNode {
|
|
|
12131
11698
|
return pairs;
|
|
12132
11699
|
}
|
|
12133
11700
|
}
|
|
11701
|
+
function ticketKnown(vv, ticket) {
|
|
11702
|
+
if (vv === void 0) {
|
|
11703
|
+
return true;
|
|
11704
|
+
}
|
|
11705
|
+
const l = vv.get(ticket.getActorID());
|
|
11706
|
+
return l !== void 0 && l >= ticket.getLamport();
|
|
11707
|
+
}
|
|
12134
11708
|
function toTreeNode$1(node) {
|
|
12135
11709
|
if (node.isText) {
|
|
12136
11710
|
const currentNode = node;
|
|
@@ -12192,6 +11766,33 @@ class CRDTTree extends CRDTElement {
|
|
|
12192
11766
|
this.indexTree.traverseAll((node) => {
|
|
12193
11767
|
this.nodeMapByID.put(node.id, node);
|
|
12194
11768
|
});
|
|
11769
|
+
this.rebuildMergeState();
|
|
11770
|
+
}
|
|
11771
|
+
/**
|
|
11772
|
+
* `rebuildMergeState` reconstructs the `mergedInto` cache on source
|
|
11773
|
+
* parents from the persisted `mergedFrom` field on moved children.
|
|
11774
|
+
* For snapshots written before `mergedAt` was added to the proto,
|
|
11775
|
+
* it also falls back to the source's `removedAt` — an approximation
|
|
11776
|
+
* that may be wrong if the source was later overwritten by a
|
|
11777
|
+
* concurrent delete, but this is the best we can do without the
|
|
11778
|
+
* persisted merge ticket.
|
|
11779
|
+
*/
|
|
11780
|
+
rebuildMergeState() {
|
|
11781
|
+
this.indexTree.traverseAll((node) => {
|
|
11782
|
+
if (!node.mergedFrom || !node.parent) {
|
|
11783
|
+
return;
|
|
11784
|
+
}
|
|
11785
|
+
const src = this.findFloorNode(node.mergedFrom);
|
|
11786
|
+
if (!src) {
|
|
11787
|
+
return;
|
|
11788
|
+
}
|
|
11789
|
+
if (!node.mergedAt && src.removedAt) {
|
|
11790
|
+
node.mergedAt = src.removedAt;
|
|
11791
|
+
}
|
|
11792
|
+
if (!src.mergedInto) {
|
|
11793
|
+
src.mergedInto = node.parent.id;
|
|
11794
|
+
}
|
|
11795
|
+
});
|
|
12195
11796
|
}
|
|
12196
11797
|
/**
|
|
12197
11798
|
* `create` creates a new instance of `CRDTTree`.
|
|
@@ -12209,6 +11810,51 @@ class CRDTTree extends CRDTElement {
|
|
|
12209
11810
|
}
|
|
12210
11811
|
return entry.value;
|
|
12211
11812
|
}
|
|
11813
|
+
/**
|
|
11814
|
+
* `advancePastUnknownSplitSiblings` follows the insNextID chain of the
|
|
11815
|
+
* given node, advancing past element-type split siblings that the editing
|
|
11816
|
+
* client did not know about (not in versionVector).
|
|
11817
|
+
*/
|
|
11818
|
+
advancePastUnknownSplitSiblings(node, versionVector) {
|
|
11819
|
+
if (!versionVector || !node) {
|
|
11820
|
+
return node;
|
|
11821
|
+
}
|
|
11822
|
+
let current = node;
|
|
11823
|
+
while (current.insNextID) {
|
|
11824
|
+
const next = this.findFloorNode(current.insNextID);
|
|
11825
|
+
if (!next || next.isText) {
|
|
11826
|
+
break;
|
|
11827
|
+
}
|
|
11828
|
+
if (next.parent !== current.parent) {
|
|
11829
|
+
break;
|
|
11830
|
+
}
|
|
11831
|
+
const actorID = next.id.getCreatedAt().getActorID();
|
|
11832
|
+
const knownLamport = versionVector.get(actorID);
|
|
11833
|
+
if (knownLamport !== void 0 && knownLamport >= next.id.getCreatedAt().getLamport()) {
|
|
11834
|
+
break;
|
|
11835
|
+
}
|
|
11836
|
+
current = next;
|
|
11837
|
+
}
|
|
11838
|
+
return current;
|
|
11839
|
+
}
|
|
11840
|
+
/**
|
|
11841
|
+
* `hasUnknownSplitSibling` checks whether the given element node has a
|
|
11842
|
+
* split sibling (via insNextID) whose creation the editor did not know
|
|
11843
|
+
* about. Used to prevent styling via End tokens when a concurrent split
|
|
11844
|
+
* extended the range into the split sibling.
|
|
11845
|
+
*/
|
|
11846
|
+
hasUnknownSplitSibling(node, versionVector) {
|
|
11847
|
+
if (!node.insNextID) {
|
|
11848
|
+
return false;
|
|
11849
|
+
}
|
|
11850
|
+
const next = this.findFloorNode(node.insNextID);
|
|
11851
|
+
if (!next || next.isText) {
|
|
11852
|
+
return false;
|
|
11853
|
+
}
|
|
11854
|
+
const actorID = next.id.getCreatedAt().getActorID();
|
|
11855
|
+
const knownLamport = versionVector.get(actorID);
|
|
11856
|
+
return knownLamport === void 0 || knownLamport < next.id.getCreatedAt().getLamport();
|
|
11857
|
+
}
|
|
12212
11858
|
/**
|
|
12213
11859
|
* `registerNode` registers the given node to the tree.
|
|
12214
11860
|
*/
|
|
@@ -12232,6 +11878,23 @@ class CRDTTree extends CRDTElement {
|
|
|
12232
11878
|
let leftNode = leftSibling;
|
|
12233
11879
|
const isLeftMost = parent === leftNode;
|
|
12234
11880
|
const realParent = leftNode.parent && !isLeftMost ? leftNode.parent : parent;
|
|
11881
|
+
if (realParent.isRemoved && isLeftMost && realParent.mergedInto) {
|
|
11882
|
+
const mergeTarget = this.findFloorNode(realParent.mergedInto);
|
|
11883
|
+
if (mergeTarget && !mergeTarget.isRemoved) {
|
|
11884
|
+
const allCh = mergeTarget.allChildren;
|
|
11885
|
+
for (let i = 0; i < allCh.length; i++) {
|
|
11886
|
+
const targetChild = allCh[i];
|
|
11887
|
+
if (!targetChild.mergedFrom || !targetChild.mergedFrom.equals(realParent.id)) {
|
|
11888
|
+
continue;
|
|
11889
|
+
}
|
|
11890
|
+
if (i === 0) {
|
|
11891
|
+
return [[mergeTarget, mergeTarget], diff];
|
|
11892
|
+
}
|
|
11893
|
+
return [[mergeTarget, allCh[i - 1]], diff];
|
|
11894
|
+
}
|
|
11895
|
+
return [[mergeTarget, mergeTarget], diff];
|
|
11896
|
+
}
|
|
11897
|
+
}
|
|
12235
11898
|
if (leftNode.isText) {
|
|
12236
11899
|
const [, splitedDiff] = leftNode.split(
|
|
12237
11900
|
this,
|
|
@@ -12257,18 +11920,23 @@ class CRDTTree extends CRDTElement {
|
|
|
12257
11920
|
*/
|
|
12258
11921
|
style(range, attributes, editedAt, versionVector) {
|
|
12259
11922
|
const diff = { data: 0, meta: 0 };
|
|
12260
|
-
const [[fromParent,
|
|
11923
|
+
const [[fromParent, fromLeftRaw], diffFrom] = this.findNodesAndSplitText(
|
|
12261
11924
|
range[0],
|
|
12262
11925
|
editedAt
|
|
12263
11926
|
);
|
|
12264
|
-
const [[toParent,
|
|
11927
|
+
const [[toParent, toLeftRaw], diffTo] = this.findNodesAndSplitText(
|
|
12265
11928
|
range[1],
|
|
12266
11929
|
editedAt
|
|
12267
11930
|
);
|
|
12268
11931
|
addDataSizes(diff, diffTo, diffFrom);
|
|
11932
|
+
const fromLeft = fromLeftRaw !== fromParent ? this.advancePastUnknownSplitSiblings(fromLeftRaw, versionVector) : fromLeftRaw;
|
|
11933
|
+
const toLeft = toLeftRaw !== toParent ? this.advancePastUnknownSplitSiblings(toLeftRaw, versionVector) : toLeftRaw;
|
|
12269
11934
|
const changes = [];
|
|
12270
11935
|
const attrs = attributes ? parseObjectValues(attributes) : {};
|
|
12271
11936
|
const pairs = [];
|
|
11937
|
+
const prevAttributes = /* @__PURE__ */ new Map();
|
|
11938
|
+
const newAttrKeys = [];
|
|
11939
|
+
let capturedPrev = false;
|
|
12272
11940
|
this.traverseInPosRange(
|
|
12273
11941
|
fromParent,
|
|
12274
11942
|
fromLeft,
|
|
@@ -12281,6 +11949,19 @@ class CRDTTree extends CRDTElement {
|
|
|
12281
11949
|
clientLamportAtChange = versionVector.get(actorID) ? versionVector.get(actorID) : 0n;
|
|
12282
11950
|
}
|
|
12283
11951
|
if (node.canStyle(editedAt, clientLamportAtChange) && attributes) {
|
|
11952
|
+
if (tokenType === TokenType.End && versionVector !== void 0 && this.hasUnknownSplitSibling(node, versionVector)) {
|
|
11953
|
+
return;
|
|
11954
|
+
}
|
|
11955
|
+
if (!capturedPrev) {
|
|
11956
|
+
for (const key of Object.keys(attributes)) {
|
|
11957
|
+
if (node.attrs?.has(key)) {
|
|
11958
|
+
prevAttributes.set(key, node.attrs.get(key));
|
|
11959
|
+
} else {
|
|
11960
|
+
newAttrKeys.push(key);
|
|
11961
|
+
}
|
|
11962
|
+
}
|
|
11963
|
+
capturedPrev = true;
|
|
11964
|
+
}
|
|
12284
11965
|
const updatedAttrPairs = node.setAttrs(attributes, editedAt);
|
|
12285
11966
|
const affectedAttrs = updatedAttrPairs.reduce(
|
|
12286
11967
|
(acc, [, curr]) => {
|
|
@@ -12319,7 +12000,7 @@ class CRDTTree extends CRDTElement {
|
|
|
12319
12000
|
}
|
|
12320
12001
|
}
|
|
12321
12002
|
);
|
|
12322
|
-
return [pairs, changes, diff];
|
|
12003
|
+
return [pairs, changes, diff, prevAttributes, newAttrKeys];
|
|
12323
12004
|
}
|
|
12324
12005
|
/**
|
|
12325
12006
|
* `removeStyle` removes the given attributes of the given range.
|
|
@@ -12337,21 +12018,34 @@ class CRDTTree extends CRDTElement {
|
|
|
12337
12018
|
addDataSizes(diff, diffTo, diffFrom);
|
|
12338
12019
|
const changes = [];
|
|
12339
12020
|
const pairs = [];
|
|
12021
|
+
const prevAttributes = /* @__PURE__ */ new Map();
|
|
12022
|
+
let capturedPrev = false;
|
|
12340
12023
|
this.traverseInPosRange(
|
|
12341
12024
|
fromParent,
|
|
12342
12025
|
fromLeft,
|
|
12343
12026
|
toParent,
|
|
12344
12027
|
toLeft,
|
|
12345
|
-
([node]) => {
|
|
12028
|
+
([node, tokenType]) => {
|
|
12346
12029
|
const actorID = node.getCreatedAt().getActorID();
|
|
12347
12030
|
let clientLamportAtChange = MaxLamport;
|
|
12348
12031
|
if (versionVector != void 0) {
|
|
12349
12032
|
clientLamportAtChange = versionVector.get(actorID) ? versionVector.get(actorID) : 0n;
|
|
12350
12033
|
}
|
|
12351
12034
|
if (node.canStyle(editedAt, clientLamportAtChange) && attributesToRemove) {
|
|
12035
|
+
if (tokenType === TokenType.End && versionVector !== void 0 && this.hasUnknownSplitSibling(node, versionVector)) {
|
|
12036
|
+
return;
|
|
12037
|
+
}
|
|
12352
12038
|
if (!node.attrs) {
|
|
12353
12039
|
node.attrs = new RHT();
|
|
12354
12040
|
}
|
|
12041
|
+
if (!capturedPrev) {
|
|
12042
|
+
for (const key of attributesToRemove) {
|
|
12043
|
+
if (node.attrs.has(key)) {
|
|
12044
|
+
prevAttributes.set(key, node.attrs.get(key));
|
|
12045
|
+
}
|
|
12046
|
+
}
|
|
12047
|
+
capturedPrev = true;
|
|
12048
|
+
}
|
|
12355
12049
|
for (const value of attributesToRemove) {
|
|
12356
12050
|
const nodesTobeRemoved = node.attrs.remove(value, editedAt);
|
|
12357
12051
|
for (const rhtNode of nodesTobeRemoved) {
|
|
@@ -12372,7 +12066,7 @@ class CRDTTree extends CRDTElement {
|
|
|
12372
12066
|
}
|
|
12373
12067
|
}
|
|
12374
12068
|
);
|
|
12375
|
-
return [pairs, changes, diff];
|
|
12069
|
+
return [pairs, changes, diff, prevAttributes];
|
|
12376
12070
|
}
|
|
12377
12071
|
/**
|
|
12378
12072
|
* `edit` edits the tree with the given range and content.
|
|
@@ -12380,20 +12074,24 @@ class CRDTTree extends CRDTElement {
|
|
|
12380
12074
|
*/
|
|
12381
12075
|
edit(range, contents, splitLevel, editedAt, issueTimeTicket, versionVector) {
|
|
12382
12076
|
const diff = { data: 0, meta: 0 };
|
|
12383
|
-
const [[fromParent,
|
|
12077
|
+
const [[fromParent, fromLeftRaw], diffFrom] = this.findNodesAndSplitText(
|
|
12384
12078
|
range[0],
|
|
12385
12079
|
editedAt
|
|
12386
12080
|
);
|
|
12387
|
-
const [[toParent,
|
|
12081
|
+
const [[toParent, toLeftRaw], diffTo] = this.findNodesAndSplitText(
|
|
12388
12082
|
range[1],
|
|
12389
12083
|
editedAt
|
|
12390
12084
|
);
|
|
12391
12085
|
addDataSizes(diff, diffTo, diffFrom);
|
|
12086
|
+
const fromLeft = fromLeftRaw !== fromParent ? this.advancePastUnknownSplitSiblings(fromLeftRaw, versionVector) : fromLeftRaw;
|
|
12087
|
+
const toLeft = toLeftRaw !== toParent ? this.advancePastUnknownSplitSiblings(toLeftRaw, versionVector) : toLeftRaw;
|
|
12392
12088
|
const fromIdx = this.toIndex(fromParent, fromLeft);
|
|
12393
12089
|
const fromPath = this.toPath(fromParent, fromLeft);
|
|
12394
12090
|
const nodesToBeRemoved = [];
|
|
12395
12091
|
const tokensToBeRemoved = [];
|
|
12396
12092
|
const toBeMovedToFromParents = [];
|
|
12093
|
+
const toBeMergedNodes = [];
|
|
12094
|
+
const preTombstoned = /* @__PURE__ */ new Set();
|
|
12397
12095
|
this.traverseInPosRange(
|
|
12398
12096
|
fromParent,
|
|
12399
12097
|
fromLeft,
|
|
@@ -12401,24 +12099,39 @@ class CRDTTree extends CRDTElement {
|
|
|
12401
12099
|
toLeft,
|
|
12402
12100
|
([node, tokenType], ended) => {
|
|
12403
12101
|
if (tokenType === TokenType.Start && !ended) {
|
|
12404
|
-
|
|
12405
|
-
|
|
12102
|
+
if (ticketKnown(versionVector, node.id.getCreatedAt())) {
|
|
12103
|
+
toBeMergedNodes.push(node);
|
|
12104
|
+
for (const child of node.children) {
|
|
12105
|
+
toBeMovedToFromParents.push(child);
|
|
12106
|
+
}
|
|
12406
12107
|
}
|
|
12407
12108
|
}
|
|
12408
|
-
const
|
|
12409
|
-
|
|
12410
|
-
|
|
12411
|
-
node.id.getCreatedAt().getActorID()
|
|
12109
|
+
const creationKnown = ticketKnown(
|
|
12110
|
+
versionVector,
|
|
12111
|
+
node.id.getCreatedAt()
|
|
12412
12112
|
);
|
|
12413
|
-
|
|
12414
|
-
|
|
12415
|
-
if (node.removedAt) {
|
|
12416
|
-
const removedAtVV = versionVector?.get(node.removedAt.getActorID());
|
|
12417
|
-
tombstoneKnown = isLocal || removedAtVV !== void 0 && removedAtVV >= node.removedAt.getLamport();
|
|
12418
|
-
}
|
|
12419
|
-
if (node.canDelete(editedAt, creationKnown, tombstoneKnown) || nodesToBeRemoved.includes(node.parent)) {
|
|
12113
|
+
const tombstoneKnown = !!node.removedAt && ticketKnown(versionVector, node.removedAt);
|
|
12114
|
+
if (node.canDelete(editedAt, creationKnown, tombstoneKnown) || nodesToBeRemoved.includes(node.parent) && !toBeMergedNodes.includes(node.parent)) {
|
|
12420
12115
|
if (tokenType === TokenType.Text || tokenType === TokenType.Start) {
|
|
12116
|
+
if (node.isRemoved) {
|
|
12117
|
+
preTombstoned.add(node.id.toIDString());
|
|
12118
|
+
}
|
|
12421
12119
|
nodesToBeRemoved.push(node);
|
|
12120
|
+
if (!node.isText && node.insNextID && !toBeMergedNodes.includes(node)) {
|
|
12121
|
+
let next = this.findFloorNode(node.insNextID);
|
|
12122
|
+
while (next) {
|
|
12123
|
+
if (!ticketKnown(versionVector, next.id.getCreatedAt())) {
|
|
12124
|
+
nodesToBeRemoved.push(next);
|
|
12125
|
+
traverseAll(next, (n) => {
|
|
12126
|
+
if (n !== next) {
|
|
12127
|
+
nodesToBeRemoved.push(n);
|
|
12128
|
+
}
|
|
12129
|
+
});
|
|
12130
|
+
}
|
|
12131
|
+
if (!next.insNextID) break;
|
|
12132
|
+
next = this.findFloorNode(next.insNextID);
|
|
12133
|
+
}
|
|
12134
|
+
}
|
|
12422
12135
|
}
|
|
12423
12136
|
tokensToBeRemoved.push([node, tokenType]);
|
|
12424
12137
|
}
|
|
@@ -12431,22 +12144,66 @@ class CRDTTree extends CRDTElement {
|
|
|
12431
12144
|
);
|
|
12432
12145
|
const pairs = [];
|
|
12433
12146
|
for (const node of nodesToBeRemoved) {
|
|
12434
|
-
node.remove(editedAt)
|
|
12435
|
-
if (node.isRemoved) {
|
|
12147
|
+
if (node.remove(editedAt)) {
|
|
12436
12148
|
pairs.push({ parent: this, child: node });
|
|
12437
12149
|
}
|
|
12438
12150
|
}
|
|
12439
12151
|
for (const node of toBeMovedToFromParents) {
|
|
12440
12152
|
if (!node.removedAt) {
|
|
12153
|
+
if (node.parent) {
|
|
12154
|
+
node.mergedFrom = node.parent.id;
|
|
12155
|
+
node.mergedAt = editedAt;
|
|
12156
|
+
}
|
|
12157
|
+
if (node.parent) {
|
|
12158
|
+
try {
|
|
12159
|
+
node.parent.detachChild(node);
|
|
12160
|
+
} catch {
|
|
12161
|
+
}
|
|
12162
|
+
}
|
|
12441
12163
|
fromParent.append(node);
|
|
12442
12164
|
}
|
|
12443
12165
|
}
|
|
12166
|
+
for (const src of toBeMergedNodes) {
|
|
12167
|
+
src.mergedInto = fromParent.id;
|
|
12168
|
+
}
|
|
12169
|
+
for (const node of nodesToBeRemoved) {
|
|
12170
|
+
if (!node.mergedInto || toBeMergedNodes.includes(node) || node.mergedInto.equals(fromParent.id)) {
|
|
12171
|
+
continue;
|
|
12172
|
+
}
|
|
12173
|
+
const mergeTarget = this.findFloorNode(node.mergedInto);
|
|
12174
|
+
if (!mergeTarget) {
|
|
12175
|
+
continue;
|
|
12176
|
+
}
|
|
12177
|
+
for (const targetChild of mergeTarget.allChildren) {
|
|
12178
|
+
if (!targetChild.mergedFrom || !targetChild.mergedFrom.equals(node.id)) {
|
|
12179
|
+
continue;
|
|
12180
|
+
}
|
|
12181
|
+
if (targetChild.removedAt) {
|
|
12182
|
+
continue;
|
|
12183
|
+
}
|
|
12184
|
+
if (targetChild.remove(editedAt)) {
|
|
12185
|
+
pairs.push({ parent: this, child: targetChild });
|
|
12186
|
+
}
|
|
12187
|
+
traverseAll(targetChild, (n) => {
|
|
12188
|
+
if (n !== targetChild && !n.removedAt) {
|
|
12189
|
+
if (n.remove(editedAt)) {
|
|
12190
|
+
pairs.push({ parent: this, child: n });
|
|
12191
|
+
}
|
|
12192
|
+
}
|
|
12193
|
+
});
|
|
12194
|
+
}
|
|
12195
|
+
}
|
|
12444
12196
|
if (splitLevel > 0) {
|
|
12445
12197
|
let splitCount = 0;
|
|
12446
12198
|
let parent = fromParent;
|
|
12447
12199
|
let left = fromLeft;
|
|
12448
12200
|
while (splitCount < splitLevel) {
|
|
12449
|
-
parent.split(
|
|
12201
|
+
parent.split(
|
|
12202
|
+
this,
|
|
12203
|
+
parent.findOffset(left, true) + 1,
|
|
12204
|
+
issueTimeTicket,
|
|
12205
|
+
versionVector
|
|
12206
|
+
);
|
|
12450
12207
|
left = parent;
|
|
12451
12208
|
parent = parent.parent;
|
|
12452
12209
|
splitCount++;
|
|
@@ -12796,6 +12553,9 @@ class CRDTTree extends CRDTElement {
|
|
|
12796
12553
|
traverseInPosRange(fromParent, fromLeft, toParent, toLeft, callback, includeRemoved = false) {
|
|
12797
12554
|
const fromIdx = this.toIndex(fromParent, fromLeft, includeRemoved);
|
|
12798
12555
|
const toIdx = this.toIndex(toParent, toLeft, includeRemoved);
|
|
12556
|
+
if (fromIdx > toIdx) {
|
|
12557
|
+
return;
|
|
12558
|
+
}
|
|
12799
12559
|
this.indexTree.tokensBetween(fromIdx, toIdx, callback, includeRemoved);
|
|
12800
12560
|
}
|
|
12801
12561
|
/**
|
|
@@ -12954,6 +12714,13 @@ class TreeEditOperation extends Operation {
|
|
|
12954
12714
|
toIdx;
|
|
12955
12715
|
lastFromIdx;
|
|
12956
12716
|
lastToIdx;
|
|
12717
|
+
/**
|
|
12718
|
+
* `redoSplitLevel` is set on boundary-deletion undo ops that were generated
|
|
12719
|
+
* to reverse a split. When this op executes (as undo), `toReverseOperation`
|
|
12720
|
+
* uses this value to generate a proper split op for redo, rather than
|
|
12721
|
+
* re-inserting the raw tombstoned boundary nodes as content.
|
|
12722
|
+
*/
|
|
12723
|
+
redoSplitLevel;
|
|
12957
12724
|
constructor(parentCreatedAt, fromPos, toPos, contents, splitLevel, executedAt, isUndoOp, fromIdx, toIdx) {
|
|
12958
12725
|
super(parentCreatedAt, executedAt);
|
|
12959
12726
|
this.fromPos = fromPos;
|
|
@@ -13039,7 +12806,13 @@ class TreeEditOperation extends Operation {
|
|
|
13039
12806
|
0
|
|
13040
12807
|
);
|
|
13041
12808
|
this.lastToIdx = preEditFromIdx + removedSize;
|
|
13042
|
-
|
|
12809
|
+
let reverseOp;
|
|
12810
|
+
const isPureL1Split = this.splitLevel === 1 && !this.contents?.length && removedNodes.length === 0;
|
|
12811
|
+
if (this.splitLevel === 0) {
|
|
12812
|
+
reverseOp = this.toReverseOperation(tree, removedNodes, preEditFromIdx);
|
|
12813
|
+
} else if (isPureL1Split) {
|
|
12814
|
+
reverseOp = this.toSplitReverseOperation(tree, preEditFromIdx);
|
|
12815
|
+
}
|
|
13043
12816
|
root.acc(diff);
|
|
13044
12817
|
for (const pair of pairs) {
|
|
13045
12818
|
root.registerGCPair(pair);
|
|
@@ -13075,6 +12848,24 @@ class TreeEditOperation extends Operation {
|
|
|
13075
12848
|
* @param preEditFromIdx - The from index captured BEFORE the edit
|
|
13076
12849
|
*/
|
|
13077
12850
|
toReverseOperation(tree, removedNodes, preEditFromIdx) {
|
|
12851
|
+
if (this.redoSplitLevel !== void 0 && this.redoSplitLevel > 0) {
|
|
12852
|
+
const splitRedoFromPos = tree.findPos(preEditFromIdx);
|
|
12853
|
+
const splitRedoOp = TreeEditOperation.create(
|
|
12854
|
+
this.getParentCreatedAt(),
|
|
12855
|
+
splitRedoFromPos,
|
|
12856
|
+
splitRedoFromPos,
|
|
12857
|
+
void 0,
|
|
12858
|
+
// no inserted content
|
|
12859
|
+
this.redoSplitLevel,
|
|
12860
|
+
void 0,
|
|
12861
|
+
// executedAt assigned at redo time
|
|
12862
|
+
true,
|
|
12863
|
+
// isUndoOp (treated as undo/redo op)
|
|
12864
|
+
preEditFromIdx,
|
|
12865
|
+
preEditFromIdx
|
|
12866
|
+
);
|
|
12867
|
+
return splitRedoOp;
|
|
12868
|
+
}
|
|
13078
12869
|
const insertedContentSize = this.contents ? this.contents.reduce((sum, node) => sum + node.paddedSize(), 0) : 0;
|
|
13079
12870
|
const maxNeededIdx = preEditFromIdx + insertedContentSize;
|
|
13080
12871
|
if (maxNeededIdx > tree.getSize()) {
|
|
@@ -13112,6 +12903,45 @@ class TreeEditOperation extends Operation {
|
|
|
13112
12903
|
reverseToIdx
|
|
13113
12904
|
);
|
|
13114
12905
|
}
|
|
12906
|
+
/**
|
|
12907
|
+
* `toSplitReverseOperation` creates the reverse operation for a split edit.
|
|
12908
|
+
*
|
|
12909
|
+
* A split creates element boundaries (close + open tags). The reverse
|
|
12910
|
+
* is a boundary deletion: a splitLevel=0 edit that removes those tokens,
|
|
12911
|
+
* merging the split elements back together.
|
|
12912
|
+
*
|
|
12913
|
+
* boundarySize = 2 * splitLevel (each level creates 1 close + 1 open tag)
|
|
12914
|
+
*
|
|
12915
|
+
* @param tree - The CRDTTree after the split has been applied
|
|
12916
|
+
* @param preEditFromIdx - The from index captured BEFORE the split
|
|
12917
|
+
*/
|
|
12918
|
+
toSplitReverseOperation(tree, preEditFromIdx) {
|
|
12919
|
+
const boundarySize = 2 * this.splitLevel;
|
|
12920
|
+
const reverseFromIdx = preEditFromIdx;
|
|
12921
|
+
const reverseToIdx = preEditFromIdx + boundarySize;
|
|
12922
|
+
if (reverseToIdx > tree.getSize()) {
|
|
12923
|
+
return void 0;
|
|
12924
|
+
}
|
|
12925
|
+
const reverseFromPos = tree.findPos(reverseFromIdx);
|
|
12926
|
+
const reverseToPos = tree.findPos(reverseToIdx);
|
|
12927
|
+
const boundaryDeletionOp = TreeEditOperation.create(
|
|
12928
|
+
this.getParentCreatedAt(),
|
|
12929
|
+
reverseFromPos,
|
|
12930
|
+
reverseToPos,
|
|
12931
|
+
void 0,
|
|
12932
|
+
// no content — this is a deletion
|
|
12933
|
+
0,
|
|
12934
|
+
// splitLevel=0: boundary deletion
|
|
12935
|
+
void 0,
|
|
12936
|
+
// executedAt assigned at undo time
|
|
12937
|
+
true,
|
|
12938
|
+
// isUndoOp
|
|
12939
|
+
reverseFromIdx,
|
|
12940
|
+
reverseToIdx
|
|
12941
|
+
);
|
|
12942
|
+
boundaryDeletionOp.redoSplitLevel = this.splitLevel;
|
|
12943
|
+
return boundaryDeletionOp;
|
|
12944
|
+
}
|
|
13115
12945
|
/**
|
|
13116
12946
|
* `normalizePos` returns the visible-index range of this operation.
|
|
13117
12947
|
* For undo ops, returns the stored (possibly reconciled) indices.
|
|
@@ -13817,35 +13647,196 @@ class Checkpoint {
|
|
|
13817
13647
|
}
|
|
13818
13648
|
}
|
|
13819
13649
|
const InitialCheckpoint = new Checkpoint(0n, 0);
|
|
13820
|
-
const
|
|
13650
|
+
const hllPrecision = 14;
|
|
13651
|
+
const hllRegisterCount = 1 << hllPrecision;
|
|
13652
|
+
const prime64x1 = 0x9e3779b185ebca87n;
|
|
13653
|
+
const prime64x2 = 0xc2b2ae3d27d4eb4fn;
|
|
13654
|
+
const prime64x3 = 0x165667b19e3779f9n;
|
|
13655
|
+
const prime64x4 = 0x85ebca77c2b2ae63n;
|
|
13656
|
+
const prime64x5 = 0x27d4eb2f165667c5n;
|
|
13657
|
+
const mask64 = 0xffffffffffffffffn;
|
|
13658
|
+
class HLL {
|
|
13659
|
+
registers;
|
|
13660
|
+
constructor() {
|
|
13661
|
+
this.registers = new Uint8Array(hllRegisterCount);
|
|
13662
|
+
}
|
|
13663
|
+
/**
|
|
13664
|
+
* `add` adds a value to the HLL and returns true if the register was updated.
|
|
13665
|
+
*/
|
|
13666
|
+
add(value) {
|
|
13667
|
+
const hash = xxhash64(value);
|
|
13668
|
+
const idx = Number(hash >> BigInt(64 - hllPrecision));
|
|
13669
|
+
const remaining = hash << BigInt(hllPrecision) & mask64 | 1n << BigInt(hllPrecision - 1);
|
|
13670
|
+
const rho = countLeadingZeros64(remaining) + 1;
|
|
13671
|
+
if (rho > this.registers[idx]) {
|
|
13672
|
+
this.registers[idx] = rho;
|
|
13673
|
+
return true;
|
|
13674
|
+
}
|
|
13675
|
+
return false;
|
|
13676
|
+
}
|
|
13677
|
+
/**
|
|
13678
|
+
* `count` returns the approximate cardinality estimate.
|
|
13679
|
+
*/
|
|
13680
|
+
count() {
|
|
13681
|
+
const m = hllRegisterCount;
|
|
13682
|
+
const alpha = 0.7213 / (1 + 1.079 / m);
|
|
13683
|
+
let sum = 0;
|
|
13684
|
+
let zeros = 0;
|
|
13685
|
+
for (let i = 0; i < m; i++) {
|
|
13686
|
+
sum += Math.pow(2, -this.registers[i]);
|
|
13687
|
+
if (this.registers[i] === 0) zeros++;
|
|
13688
|
+
}
|
|
13689
|
+
let estimate = alpha * m * m / sum;
|
|
13690
|
+
if (estimate <= 2.5 * m && zeros > 0) {
|
|
13691
|
+
estimate = m * Math.log(m / zeros);
|
|
13692
|
+
}
|
|
13693
|
+
return Math.round(estimate);
|
|
13694
|
+
}
|
|
13695
|
+
/**
|
|
13696
|
+
* `merge` merges another HLL into this one by taking the max of each register.
|
|
13697
|
+
* This operation is commutative, associative, and idempotent.
|
|
13698
|
+
*/
|
|
13699
|
+
merge(other) {
|
|
13700
|
+
for (let i = 0; i < hllRegisterCount; i++) {
|
|
13701
|
+
if (other.registers[i] > this.registers[i]) {
|
|
13702
|
+
this.registers[i] = other.registers[i];
|
|
13703
|
+
}
|
|
13704
|
+
}
|
|
13705
|
+
}
|
|
13706
|
+
/**
|
|
13707
|
+
* `toBytes` serializes the HLL registers to a byte array.
|
|
13708
|
+
*/
|
|
13709
|
+
toBytes() {
|
|
13710
|
+
return new Uint8Array(this.registers);
|
|
13711
|
+
}
|
|
13712
|
+
/**
|
|
13713
|
+
* `restore` restores the HLL registers from a byte array.
|
|
13714
|
+
* Throws if the data length does not match the register count.
|
|
13715
|
+
*/
|
|
13716
|
+
restore(data) {
|
|
13717
|
+
if (data.length !== hllRegisterCount) {
|
|
13718
|
+
throw new Error(
|
|
13719
|
+
`invalid HLL register payload: got ${data.length} bytes, want ${hllRegisterCount}`
|
|
13720
|
+
);
|
|
13721
|
+
}
|
|
13722
|
+
this.registers.set(data);
|
|
13723
|
+
}
|
|
13724
|
+
}
|
|
13725
|
+
function xxhash64(input) {
|
|
13726
|
+
const buf = new TextEncoder().encode(input);
|
|
13727
|
+
const len = buf.length;
|
|
13728
|
+
let h64;
|
|
13729
|
+
let offset = 0;
|
|
13730
|
+
const seed = 0n;
|
|
13731
|
+
if (len >= 32) {
|
|
13732
|
+
let v1 = seed + prime64x1 + prime64x2 & mask64;
|
|
13733
|
+
let v2 = seed + prime64x2 & mask64;
|
|
13734
|
+
let v3 = seed;
|
|
13735
|
+
let v4 = seed - prime64x1 & mask64;
|
|
13736
|
+
while (offset <= len - 32) {
|
|
13737
|
+
v1 = xxRound(v1, readU64LE(buf, offset));
|
|
13738
|
+
offset += 8;
|
|
13739
|
+
v2 = xxRound(v2, readU64LE(buf, offset));
|
|
13740
|
+
offset += 8;
|
|
13741
|
+
v3 = xxRound(v3, readU64LE(buf, offset));
|
|
13742
|
+
offset += 8;
|
|
13743
|
+
v4 = xxRound(v4, readU64LE(buf, offset));
|
|
13744
|
+
offset += 8;
|
|
13745
|
+
}
|
|
13746
|
+
h64 = rotl64(v1, 1n) + rotl64(v2, 7n) + rotl64(v3, 12n) + rotl64(v4, 18n) & mask64;
|
|
13747
|
+
h64 = xxMergeRound(h64, v1);
|
|
13748
|
+
h64 = xxMergeRound(h64, v2);
|
|
13749
|
+
h64 = xxMergeRound(h64, v3);
|
|
13750
|
+
h64 = xxMergeRound(h64, v4);
|
|
13751
|
+
} else {
|
|
13752
|
+
h64 = seed + prime64x5 & mask64;
|
|
13753
|
+
}
|
|
13754
|
+
h64 = h64 + BigInt(len) & mask64;
|
|
13755
|
+
while (offset + 8 <= len) {
|
|
13756
|
+
const k1 = xxRound(0n, readU64LE(buf, offset));
|
|
13757
|
+
h64 = rotl64(h64 ^ k1, 27n) * prime64x1 + prime64x4 & mask64;
|
|
13758
|
+
offset += 8;
|
|
13759
|
+
}
|
|
13760
|
+
if (offset + 4 <= len) {
|
|
13761
|
+
h64 = h64 ^ readU32LE(buf, offset) * prime64x1 & mask64;
|
|
13762
|
+
h64 = rotl64(h64, 23n) * prime64x2 + prime64x3 & mask64;
|
|
13763
|
+
offset += 4;
|
|
13764
|
+
}
|
|
13765
|
+
while (offset < len) {
|
|
13766
|
+
h64 = h64 ^ BigInt(buf[offset]) * prime64x5 & mask64;
|
|
13767
|
+
h64 = rotl64(h64, 11n) * prime64x1 & mask64;
|
|
13768
|
+
offset++;
|
|
13769
|
+
}
|
|
13770
|
+
h64 = (h64 ^ h64 >> 33n) * prime64x2 & mask64;
|
|
13771
|
+
h64 = (h64 ^ h64 >> 29n) * prime64x3 & mask64;
|
|
13772
|
+
h64 = (h64 ^ h64 >> 32n) & mask64;
|
|
13773
|
+
return h64;
|
|
13774
|
+
}
|
|
13775
|
+
function rotl64(x, r) {
|
|
13776
|
+
return (x << r | x >> 64n - r) & mask64;
|
|
13777
|
+
}
|
|
13778
|
+
function xxRound(acc, input) {
|
|
13779
|
+
acc = acc + input * prime64x2 & mask64;
|
|
13780
|
+
acc = rotl64(acc, 31n);
|
|
13781
|
+
return acc * prime64x1 & mask64;
|
|
13782
|
+
}
|
|
13783
|
+
function xxMergeRound(acc, val) {
|
|
13784
|
+
val = xxRound(0n, val);
|
|
13785
|
+
acc = (acc ^ val) & mask64;
|
|
13786
|
+
return acc * prime64x1 + prime64x4 & mask64;
|
|
13787
|
+
}
|
|
13788
|
+
function readU64LE(buf, offset) {
|
|
13789
|
+
let val = 0n;
|
|
13790
|
+
for (let i = 7; i >= 0; i--) {
|
|
13791
|
+
val = val << 8n | BigInt(buf[offset + i]);
|
|
13792
|
+
}
|
|
13793
|
+
return val;
|
|
13794
|
+
}
|
|
13795
|
+
function readU32LE(buf, offset) {
|
|
13796
|
+
return BigInt(buf[offset]) | BigInt(buf[offset + 1]) << 8n | BigInt(buf[offset + 2]) << 16n | BigInt(buf[offset + 3]) << 24n;
|
|
13797
|
+
}
|
|
13798
|
+
function countLeadingZeros64(x) {
|
|
13799
|
+
if (x === 0n) return 64;
|
|
13800
|
+
let n = 0;
|
|
13801
|
+
while ((x & 1n << 63n) === 0n) {
|
|
13802
|
+
n++;
|
|
13803
|
+
x <<= 1n;
|
|
13804
|
+
}
|
|
13805
|
+
return n;
|
|
13806
|
+
}
|
|
13821
13807
|
var CounterType = /* @__PURE__ */ ((CounterType2) => {
|
|
13822
13808
|
CounterType2[CounterType2["Int"] = 0] = "Int";
|
|
13823
13809
|
CounterType2[CounterType2["Long"] = 1] = "Long";
|
|
13810
|
+
CounterType2[CounterType2["IntDedup"] = 2] = "IntDedup";
|
|
13824
13811
|
return CounterType2;
|
|
13825
13812
|
})(CounterType || {});
|
|
13826
13813
|
class CRDTCounter extends CRDTElement {
|
|
13827
13814
|
valueType;
|
|
13828
13815
|
value;
|
|
13816
|
+
hll;
|
|
13829
13817
|
constructor(valueType, value, createdAt) {
|
|
13830
13818
|
super(createdAt);
|
|
13831
13819
|
this.valueType = valueType;
|
|
13832
13820
|
switch (valueType) {
|
|
13821
|
+
case 2:
|
|
13822
|
+
this.value = 0;
|
|
13823
|
+
break;
|
|
13833
13824
|
case 0:
|
|
13834
13825
|
if (typeof value === "number") {
|
|
13835
13826
|
if (value > Math.pow(2, 31) - 1 || value < -Math.pow(2, 31)) {
|
|
13836
|
-
this.value =
|
|
13827
|
+
this.value = bigintToInt32(BigInt(value));
|
|
13837
13828
|
} else {
|
|
13838
13829
|
this.value = removeDecimal(value);
|
|
13839
13830
|
}
|
|
13840
13831
|
} else {
|
|
13841
|
-
this.value = value
|
|
13832
|
+
this.value = bigintToInt32(value);
|
|
13842
13833
|
}
|
|
13843
13834
|
break;
|
|
13844
13835
|
case 1:
|
|
13845
13836
|
if (typeof value === "number") {
|
|
13846
|
-
this.value =
|
|
13837
|
+
this.value = BigInt.asIntN(64, BigInt(Math.trunc(value)));
|
|
13847
13838
|
} else {
|
|
13848
|
-
this.value = value;
|
|
13839
|
+
this.value = BigInt.asIntN(64, value);
|
|
13849
13840
|
}
|
|
13850
13841
|
break;
|
|
13851
13842
|
default:
|
|
@@ -13854,6 +13845,9 @@ class CRDTCounter extends CRDTElement {
|
|
|
13854
13845
|
`unimplemented type: ${valueType}`
|
|
13855
13846
|
);
|
|
13856
13847
|
}
|
|
13848
|
+
if (this.isDedup()) {
|
|
13849
|
+
this.hll ??= new HLL();
|
|
13850
|
+
}
|
|
13857
13851
|
}
|
|
13858
13852
|
/**
|
|
13859
13853
|
* `of` creates a new instance of Counter.
|
|
@@ -13867,9 +13861,10 @@ class CRDTCounter extends CRDTElement {
|
|
|
13867
13861
|
static valueFromBytes(counterType, bytes) {
|
|
13868
13862
|
switch (counterType) {
|
|
13869
13863
|
case 0:
|
|
13864
|
+
case 2:
|
|
13870
13865
|
return bytes[0] | bytes[1] << 8 | bytes[2] << 16 | bytes[3] << 24;
|
|
13871
13866
|
case 1:
|
|
13872
|
-
return
|
|
13867
|
+
return bigintFromBytesLE(bytes);
|
|
13873
13868
|
default:
|
|
13874
13869
|
throw new YorkieError(
|
|
13875
13870
|
Code.ErrUnimplemented,
|
|
@@ -13881,7 +13876,10 @@ class CRDTCounter extends CRDTElement {
|
|
|
13881
13876
|
* `getDataSize` returns the data usage of this element.
|
|
13882
13877
|
*/
|
|
13883
13878
|
getDataSize() {
|
|
13884
|
-
|
|
13879
|
+
let data = this.valueType === 0 || this.valueType === 2 ? 4 : 8;
|
|
13880
|
+
if (this.isDedup() && this.hll) {
|
|
13881
|
+
data += this.hll.toBytes().length;
|
|
13882
|
+
}
|
|
13885
13883
|
return {
|
|
13886
13884
|
data,
|
|
13887
13885
|
meta: this.getMetaUsage()
|
|
@@ -13920,6 +13918,9 @@ class CRDTCounter extends CRDTElement {
|
|
|
13920
13918
|
);
|
|
13921
13919
|
clone.setRemovedAt(this.getRemovedAt());
|
|
13922
13920
|
clone.setMovedAt(this.getMovedAt());
|
|
13921
|
+
if (this.isDedup() && this.hll) {
|
|
13922
|
+
clone.restoreHLL(this.hll.toBytes());
|
|
13923
|
+
}
|
|
13923
13924
|
return clone;
|
|
13924
13925
|
}
|
|
13925
13926
|
/**
|
|
@@ -13933,12 +13934,8 @@ class CRDTCounter extends CRDTElement {
|
|
|
13933
13934
|
*/
|
|
13934
13935
|
static getCounterType(value) {
|
|
13935
13936
|
switch (typeof value) {
|
|
13936
|
-
case "
|
|
13937
|
-
|
|
13938
|
-
return 1;
|
|
13939
|
-
} else {
|
|
13940
|
-
return;
|
|
13941
|
-
}
|
|
13937
|
+
case "bigint":
|
|
13938
|
+
return 1;
|
|
13942
13939
|
case "number":
|
|
13943
13940
|
if (value > Math.pow(2, 31) - 1 || value < -Math.pow(2, 31)) {
|
|
13944
13941
|
return 1;
|
|
@@ -13966,7 +13963,7 @@ class CRDTCounter extends CRDTElement {
|
|
|
13966
13963
|
*/
|
|
13967
13964
|
isNumericType() {
|
|
13968
13965
|
const t = this.valueType;
|
|
13969
|
-
return t === 0 || t === 1;
|
|
13966
|
+
return t === 0 || t === 1 || t === 2;
|
|
13970
13967
|
}
|
|
13971
13968
|
/**
|
|
13972
13969
|
* `getValueType` get counter value type.
|
|
@@ -13985,7 +13982,8 @@ class CRDTCounter extends CRDTElement {
|
|
|
13985
13982
|
*/
|
|
13986
13983
|
toBytes() {
|
|
13987
13984
|
switch (this.valueType) {
|
|
13988
|
-
case 0:
|
|
13985
|
+
case 0:
|
|
13986
|
+
case 2: {
|
|
13989
13987
|
const intVal = this.value;
|
|
13990
13988
|
return new Uint8Array([
|
|
13991
13989
|
intVal & 255,
|
|
@@ -13995,9 +13993,7 @@ class CRDTCounter extends CRDTElement {
|
|
|
13995
13993
|
]);
|
|
13996
13994
|
}
|
|
13997
13995
|
case 1: {
|
|
13998
|
-
|
|
13999
|
-
const longToBytes = longVal.toBytesLE();
|
|
14000
|
-
return Uint8Array.from(longToBytes);
|
|
13996
|
+
return bigintToBytesLE(this.value);
|
|
14001
13997
|
}
|
|
14002
13998
|
default:
|
|
14003
13999
|
throw new YorkieError(
|
|
@@ -14006,10 +14002,76 @@ class CRDTCounter extends CRDTElement {
|
|
|
14006
14002
|
);
|
|
14007
14003
|
}
|
|
14008
14004
|
}
|
|
14005
|
+
/**
|
|
14006
|
+
* `isDedup` returns whether dedup mode is enabled (derived from ValueType).
|
|
14007
|
+
*/
|
|
14008
|
+
isDedup() {
|
|
14009
|
+
return this.valueType === 2;
|
|
14010
|
+
}
|
|
14011
|
+
/**
|
|
14012
|
+
* `increaseDedup` increases the counter using HLL-based dedup.
|
|
14013
|
+
* Only updates the value if the actor is new (not seen before).
|
|
14014
|
+
*/
|
|
14015
|
+
increaseDedup(v, actor) {
|
|
14016
|
+
if (!this.isDedup() || !this.hll) {
|
|
14017
|
+
return this.increase(v);
|
|
14018
|
+
}
|
|
14019
|
+
if (!this.isNumericType() || !v.isNumericType()) {
|
|
14020
|
+
throw new TypeError(`Unsupported type of value: ${typeof v.getValue()}`);
|
|
14021
|
+
}
|
|
14022
|
+
if (!actor) {
|
|
14023
|
+
throw new YorkieError(
|
|
14024
|
+
Code.ErrInvalidArgument,
|
|
14025
|
+
"dedup counter requires actor"
|
|
14026
|
+
);
|
|
14027
|
+
}
|
|
14028
|
+
const val = v.getValue();
|
|
14029
|
+
const isUnit = v.getType() === PrimitiveType.Long ? val === 1n : val === 1;
|
|
14030
|
+
if (!isUnit) {
|
|
14031
|
+
throw new YorkieError(
|
|
14032
|
+
Code.ErrInvalidArgument,
|
|
14033
|
+
"dedup counter only supports increment by 1"
|
|
14034
|
+
);
|
|
14035
|
+
}
|
|
14036
|
+
if (this.hll.add(actor)) {
|
|
14037
|
+
this.recomputeValue();
|
|
14038
|
+
}
|
|
14039
|
+
return this;
|
|
14040
|
+
}
|
|
14041
|
+
/**
|
|
14042
|
+
* `hllBytes` returns the HLL register bytes, or undefined if not in dedup mode.
|
|
14043
|
+
*/
|
|
14044
|
+
hllBytes() {
|
|
14045
|
+
return this.hll?.toBytes();
|
|
14046
|
+
}
|
|
14047
|
+
/**
|
|
14048
|
+
* `restoreHLL` restores the HLL state from serialized bytes.
|
|
14049
|
+
*/
|
|
14050
|
+
restoreHLL(data) {
|
|
14051
|
+
if (!this.hll) {
|
|
14052
|
+
this.hll = new HLL();
|
|
14053
|
+
}
|
|
14054
|
+
this.hll.restore(data);
|
|
14055
|
+
this.recomputeValue();
|
|
14056
|
+
}
|
|
14057
|
+
/**
|
|
14058
|
+
* `recomputeValue` updates the counter value from the HLL cardinality estimate.
|
|
14059
|
+
*/
|
|
14060
|
+
recomputeValue() {
|
|
14061
|
+
if (!this.hll) return;
|
|
14062
|
+
this.value = this.hll.count();
|
|
14063
|
+
}
|
|
14009
14064
|
/**
|
|
14010
14065
|
* `increase` increases numeric data.
|
|
14066
|
+
* Dedup counters must use increaseDedup() instead.
|
|
14011
14067
|
*/
|
|
14012
14068
|
increase(v) {
|
|
14069
|
+
if (this.isDedup()) {
|
|
14070
|
+
throw new YorkieError(
|
|
14071
|
+
Code.ErrInvalidArgument,
|
|
14072
|
+
"dedup counter requires actor, use increaseDedup()"
|
|
14073
|
+
);
|
|
14074
|
+
}
|
|
14013
14075
|
function checkNumericType(target) {
|
|
14014
14076
|
if (!target.isNumericType()) {
|
|
14015
14077
|
throw new TypeError(
|
|
@@ -14020,14 +14082,17 @@ class CRDTCounter extends CRDTElement {
|
|
|
14020
14082
|
checkNumericType(this);
|
|
14021
14083
|
checkNumericType(v);
|
|
14022
14084
|
if (this.valueType === 1) {
|
|
14023
|
-
|
|
14085
|
+
const delta = typeof v.getValue() === "bigint" ? v.getValue() : BigInt(Math.trunc(v.getValue()));
|
|
14086
|
+
this.value = BigInt.asIntN(64, this.value + delta);
|
|
14024
14087
|
} else {
|
|
14025
14088
|
if (v.getType() === PrimitiveType.Long) {
|
|
14026
|
-
this.value = this.value + v.getValue()
|
|
14089
|
+
this.value = this.value + bigintToInt32(v.getValue());
|
|
14027
14090
|
} else {
|
|
14028
|
-
this.value =
|
|
14029
|
-
|
|
14030
|
-
|
|
14091
|
+
this.value = bigintToInt32(
|
|
14092
|
+
BigInt(
|
|
14093
|
+
this.value + removeDecimal(v.getValue())
|
|
14094
|
+
)
|
|
14095
|
+
);
|
|
14031
14096
|
}
|
|
14032
14097
|
}
|
|
14033
14098
|
return this;
|
|
@@ -14035,15 +14100,23 @@ class CRDTCounter extends CRDTElement {
|
|
|
14035
14100
|
}
|
|
14036
14101
|
class IncreaseOperation extends Operation {
|
|
14037
14102
|
value;
|
|
14038
|
-
|
|
14103
|
+
actor;
|
|
14104
|
+
constructor(parentCreatedAt, value, executedAt, actor) {
|
|
14039
14105
|
super(parentCreatedAt, executedAt);
|
|
14040
14106
|
this.value = value;
|
|
14107
|
+
this.actor = actor || "";
|
|
14041
14108
|
}
|
|
14042
14109
|
/**
|
|
14043
14110
|
* `create` creates a new instance of IncreaseOperation.
|
|
14044
14111
|
*/
|
|
14045
|
-
static create(parentCreatedAt, value, executedAt) {
|
|
14046
|
-
return new IncreaseOperation(parentCreatedAt, value, executedAt);
|
|
14112
|
+
static create(parentCreatedAt, value, executedAt, actor) {
|
|
14113
|
+
return new IncreaseOperation(parentCreatedAt, value, executedAt, actor);
|
|
14114
|
+
}
|
|
14115
|
+
/**
|
|
14116
|
+
* `getActor` returns the actor ID associated with this operation.
|
|
14117
|
+
*/
|
|
14118
|
+
getActor() {
|
|
14119
|
+
return this.actor;
|
|
14047
14120
|
}
|
|
14048
14121
|
/**
|
|
14049
14122
|
* `execute` executes this operation on the given `CRDTRoot`.
|
|
@@ -14064,7 +14137,17 @@ class IncreaseOperation extends Operation {
|
|
|
14064
14137
|
}
|
|
14065
14138
|
const counter = parentObject;
|
|
14066
14139
|
const value = this.value.deepcopy();
|
|
14067
|
-
counter.
|
|
14140
|
+
if (counter.isDedup()) {
|
|
14141
|
+
if (!this.actor) {
|
|
14142
|
+
throw new YorkieError(
|
|
14143
|
+
Code.ErrInvalidArgument,
|
|
14144
|
+
"dedup counter requires actor"
|
|
14145
|
+
);
|
|
14146
|
+
}
|
|
14147
|
+
counter.increaseDedup(value, this.actor);
|
|
14148
|
+
} else {
|
|
14149
|
+
counter.increase(value);
|
|
14150
|
+
}
|
|
14068
14151
|
return {
|
|
14069
14152
|
opInfos: [
|
|
14070
14153
|
{
|
|
@@ -14073,7 +14156,9 @@ class IncreaseOperation extends Operation {
|
|
|
14073
14156
|
value: value.getValue()
|
|
14074
14157
|
}
|
|
14075
14158
|
],
|
|
14076
|
-
|
|
14159
|
+
// Dedup counters do not support undo/redo because HLL cannot
|
|
14160
|
+
// remove an actor once added.
|
|
14161
|
+
reverseOp: this.actor ? void 0 : this.toReverseOperation()
|
|
14077
14162
|
};
|
|
14078
14163
|
}
|
|
14079
14164
|
/**
|
|
@@ -14082,7 +14167,7 @@ class IncreaseOperation extends Operation {
|
|
|
14082
14167
|
toReverseOperation() {
|
|
14083
14168
|
const primitiveValue = this.value.deepcopy();
|
|
14084
14169
|
const valueType = primitiveValue.getType();
|
|
14085
|
-
const value = valueType === PrimitiveType.Long ? primitiveValue.getValue()
|
|
14170
|
+
const value = valueType === PrimitiveType.Long ? -primitiveValue.getValue() : primitiveValue.getValue() * -1;
|
|
14086
14171
|
const reverseOp = IncreaseOperation.create(
|
|
14087
14172
|
this.getParentCreatedAt(),
|
|
14088
14173
|
Primitive.of(value, primitiveValue.getCreatedAt())
|
|
@@ -14167,28 +14252,67 @@ class TreeStyleOperation extends Operation {
|
|
|
14167
14252
|
let changes;
|
|
14168
14253
|
let pairs;
|
|
14169
14254
|
let diff = { data: 0, meta: 0 };
|
|
14255
|
+
const reversePrevAttributes = /* @__PURE__ */ new Map();
|
|
14256
|
+
const reverseAttrsToRemove = [];
|
|
14170
14257
|
if (this.attributes.size) {
|
|
14171
14258
|
const attributes = {};
|
|
14172
14259
|
[...this.attributes].forEach(([key, value]) => attributes[key] = value);
|
|
14173
|
-
|
|
14260
|
+
let prevAttributes;
|
|
14261
|
+
let newAttrKeys;
|
|
14262
|
+
[pairs, changes, diff, prevAttributes, newAttrKeys] = tree.style(
|
|
14174
14263
|
[this.fromPos, this.toPos],
|
|
14175
14264
|
attributes,
|
|
14176
14265
|
this.getExecutedAt(),
|
|
14177
14266
|
versionVector
|
|
14178
14267
|
);
|
|
14268
|
+
for (const [key, value] of prevAttributes) {
|
|
14269
|
+
reversePrevAttributes.set(key, value);
|
|
14270
|
+
}
|
|
14271
|
+
reverseAttrsToRemove.push(...newAttrKeys);
|
|
14179
14272
|
} else {
|
|
14180
14273
|
const attributesToRemove = this.attributesToRemove;
|
|
14181
|
-
|
|
14274
|
+
let prevAttributes;
|
|
14275
|
+
[pairs, changes, diff, prevAttributes] = tree.removeStyle(
|
|
14182
14276
|
[this.fromPos, this.toPos],
|
|
14183
14277
|
attributesToRemove,
|
|
14184
14278
|
this.getExecutedAt(),
|
|
14185
14279
|
versionVector
|
|
14186
14280
|
);
|
|
14281
|
+
for (const [key, value] of prevAttributes) {
|
|
14282
|
+
reversePrevAttributes.set(key, value);
|
|
14283
|
+
}
|
|
14187
14284
|
}
|
|
14188
14285
|
root.acc(diff);
|
|
14189
14286
|
for (const pair of pairs) {
|
|
14190
14287
|
root.registerGCPair(pair);
|
|
14191
14288
|
}
|
|
14289
|
+
let reverseOp;
|
|
14290
|
+
if (reversePrevAttributes.size > 0 && reverseAttrsToRemove.length > 0) {
|
|
14291
|
+
reverseOp = new TreeStyleOperation(
|
|
14292
|
+
this.getParentCreatedAt(),
|
|
14293
|
+
this.fromPos,
|
|
14294
|
+
this.toPos,
|
|
14295
|
+
reversePrevAttributes,
|
|
14296
|
+
reverseAttrsToRemove,
|
|
14297
|
+
void 0
|
|
14298
|
+
);
|
|
14299
|
+
} else if (reverseAttrsToRemove.length > 0) {
|
|
14300
|
+
reverseOp = TreeStyleOperation.createTreeRemoveStyleOperation(
|
|
14301
|
+
this.getParentCreatedAt(),
|
|
14302
|
+
this.fromPos,
|
|
14303
|
+
this.toPos,
|
|
14304
|
+
reverseAttrsToRemove,
|
|
14305
|
+
void 0
|
|
14306
|
+
);
|
|
14307
|
+
} else if (reversePrevAttributes.size > 0) {
|
|
14308
|
+
reverseOp = TreeStyleOperation.create(
|
|
14309
|
+
this.getParentCreatedAt(),
|
|
14310
|
+
this.fromPos,
|
|
14311
|
+
this.toPos,
|
|
14312
|
+
reversePrevAttributes,
|
|
14313
|
+
void 0
|
|
14314
|
+
);
|
|
14315
|
+
}
|
|
14192
14316
|
return {
|
|
14193
14317
|
opInfos: changes.map(({ from, to, value, fromPath, toPath }) => {
|
|
14194
14318
|
return {
|
|
@@ -14200,7 +14324,8 @@ class TreeStyleOperation extends Operation {
|
|
|
14200
14324
|
toPath,
|
|
14201
14325
|
path: root.createPath(this.getParentCreatedAt())
|
|
14202
14326
|
};
|
|
14203
|
-
})
|
|
14327
|
+
}),
|
|
14328
|
+
reverseOp
|
|
14204
14329
|
};
|
|
14205
14330
|
}
|
|
14206
14331
|
/**
|
|
@@ -14421,6 +14546,8 @@ function toCounterType(valueType) {
|
|
|
14421
14546
|
return ValueType.INTEGER_CNT;
|
|
14422
14547
|
case CounterType.Long:
|
|
14423
14548
|
return ValueType.LONG_CNT;
|
|
14549
|
+
case CounterType.IntDedup:
|
|
14550
|
+
return ValueType.INTEGER_DEDUP_CNT;
|
|
14424
14551
|
default:
|
|
14425
14552
|
throw new YorkieError(
|
|
14426
14553
|
Code.ErrInvalidType,
|
|
@@ -14593,6 +14720,7 @@ function toOperation(operation) {
|
|
|
14593
14720
|
pbIncreaseOperation.executedAt = toTimeTicket(
|
|
14594
14721
|
increaseOperation.getExecutedAt()
|
|
14595
14722
|
);
|
|
14723
|
+
pbIncreaseOperation.actor = increaseOperation.getActor();
|
|
14596
14724
|
pbOperation.body.case = "increase";
|
|
14597
14725
|
pbOperation.body.value = pbIncreaseOperation;
|
|
14598
14726
|
} else if (operation instanceof TreeEditOperation) {
|
|
@@ -14769,6 +14897,12 @@ function toTreeNodes(node) {
|
|
|
14769
14897
|
if (n.insNextID) {
|
|
14770
14898
|
pbTreeNode.insNextId = toTreeNodeID(n.insNextID);
|
|
14771
14899
|
}
|
|
14900
|
+
if (n.mergedFrom) {
|
|
14901
|
+
pbTreeNode.mergedFrom = toTreeNodeID(n.mergedFrom);
|
|
14902
|
+
}
|
|
14903
|
+
if (n.mergedAt) {
|
|
14904
|
+
pbTreeNode.mergedAt = toTimeTicket(n.mergedAt);
|
|
14905
|
+
}
|
|
14772
14906
|
if (n.attrs) {
|
|
14773
14907
|
pbTreeNode.attributes = toRHT(n.attrs);
|
|
14774
14908
|
}
|
|
@@ -14838,7 +14972,8 @@ function toCounter(counter) {
|
|
|
14838
14972
|
value: counter.toBytes(),
|
|
14839
14973
|
createdAt: toTimeTicket(counter.getCreatedAt()),
|
|
14840
14974
|
movedAt: toTimeTicket(counter.getMovedAt()),
|
|
14841
|
-
removedAt: toTimeTicket(counter.getRemovedAt())
|
|
14975
|
+
removedAt: toTimeTicket(counter.getRemovedAt()),
|
|
14976
|
+
hllRegisters: counter.hllBytes() || new Uint8Array()
|
|
14842
14977
|
})
|
|
14843
14978
|
}
|
|
14844
14979
|
});
|
|
@@ -15002,6 +15137,8 @@ function fromCounterType(pbValueType) {
|
|
|
15002
15137
|
return CounterType.Int;
|
|
15003
15138
|
case ValueType.LONG_CNT:
|
|
15004
15139
|
return CounterType.Long;
|
|
15140
|
+
case ValueType.INTEGER_DEDUP_CNT:
|
|
15141
|
+
return CounterType.IntDedup;
|
|
15005
15142
|
}
|
|
15006
15143
|
throw new YorkieError(
|
|
15007
15144
|
Code.ErrUnimplemented,
|
|
@@ -15044,6 +15181,7 @@ function fromElementSimple(pbElementSimple) {
|
|
|
15044
15181
|
);
|
|
15045
15182
|
case ValueType.INTEGER_CNT:
|
|
15046
15183
|
case ValueType.LONG_CNT:
|
|
15184
|
+
case ValueType.INTEGER_DEDUP_CNT:
|
|
15047
15185
|
return CRDTCounter.create(
|
|
15048
15186
|
fromCounterType(pbElementSimple.type),
|
|
15049
15187
|
CRDTCounter.valueFromBytes(
|
|
@@ -15151,6 +15289,12 @@ function fromTreeNode(pbTreeNode) {
|
|
|
15151
15289
|
if (pbTreeNode.insNextId) {
|
|
15152
15290
|
node.insNextID = fromTreeNodeID(pbTreeNode.insNextId);
|
|
15153
15291
|
}
|
|
15292
|
+
if (pbTreeNode.mergedFrom) {
|
|
15293
|
+
node.mergedFrom = fromTreeNodeID(pbTreeNode.mergedFrom);
|
|
15294
|
+
}
|
|
15295
|
+
if (pbTreeNode.mergedAt) {
|
|
15296
|
+
node.mergedAt = fromTimeTicket(pbTreeNode.mergedAt);
|
|
15297
|
+
}
|
|
15154
15298
|
node.removedAt = fromTimeTicket(pbTreeNode.removedAt);
|
|
15155
15299
|
return node;
|
|
15156
15300
|
}
|
|
@@ -15220,7 +15364,8 @@ function fromOperation(pbOperation) {
|
|
|
15220
15364
|
return IncreaseOperation.create(
|
|
15221
15365
|
fromTimeTicket(pbIncreaseOperation.parentCreatedAt),
|
|
15222
15366
|
fromElementSimple(pbIncreaseOperation.value),
|
|
15223
|
-
fromTimeTicket(pbIncreaseOperation.executedAt)
|
|
15367
|
+
fromTimeTicket(pbIncreaseOperation.executedAt),
|
|
15368
|
+
pbIncreaseOperation.actor || void 0
|
|
15224
15369
|
);
|
|
15225
15370
|
} else if (pbOperation.body.case === "treeEdit") {
|
|
15226
15371
|
const pbTreeEditOperation = pbOperation.body.value;
|
|
@@ -15368,6 +15513,9 @@ function fromCounter(pbCounter) {
|
|
|
15368
15513
|
);
|
|
15369
15514
|
counter.setMovedAt(fromTimeTicket(pbCounter.movedAt));
|
|
15370
15515
|
counter.setRemovedAt(fromTimeTicket(pbCounter.removedAt));
|
|
15516
|
+
if (counter.isDedup() && pbCounter.hllRegisters.length > 0) {
|
|
15517
|
+
counter.restoreHLL(pbCounter.hllRegisters);
|
|
15518
|
+
}
|
|
15371
15519
|
return counter;
|
|
15372
15520
|
}
|
|
15373
15521
|
function fromTree(pbTree) {
|
|
@@ -16837,7 +16985,7 @@ class Text {
|
|
|
16837
16985
|
return this.text.indexRangeToPosRange(fromIdx, toIdx);
|
|
16838
16986
|
}
|
|
16839
16987
|
}
|
|
16840
|
-
class
|
|
16988
|
+
class BaseCounter {
|
|
16841
16989
|
valueType;
|
|
16842
16990
|
value;
|
|
16843
16991
|
context;
|
|
@@ -16847,7 +16995,7 @@ class Counter {
|
|
|
16847
16995
|
this.value = value;
|
|
16848
16996
|
}
|
|
16849
16997
|
/**
|
|
16850
|
-
* `initialize`
|
|
16998
|
+
* `initialize` links this proxy to a ChangeContext and CRDTCounter.
|
|
16851
16999
|
*/
|
|
16852
17000
|
initialize(context, counter) {
|
|
16853
17001
|
this.valueType = counter.getValueType();
|
|
@@ -16856,17 +17004,11 @@ class Counter {
|
|
|
16856
17004
|
this.value = counter.getValue();
|
|
16857
17005
|
}
|
|
16858
17006
|
/**
|
|
16859
|
-
* `getID` returns the ID of this
|
|
17007
|
+
* `getID` returns the ID of this counter.
|
|
16860
17008
|
*/
|
|
16861
17009
|
getID() {
|
|
16862
17010
|
return this.counter.getID();
|
|
16863
17011
|
}
|
|
16864
|
-
/**
|
|
16865
|
-
* `getValue` returns the value of this counter;
|
|
16866
|
-
*/
|
|
16867
|
-
getValue() {
|
|
16868
|
-
return this.value;
|
|
16869
|
-
}
|
|
16870
17012
|
/**
|
|
16871
17013
|
* `getValueType` returns the value type of this counter.
|
|
16872
17014
|
*/
|
|
@@ -16874,15 +17016,45 @@ class Counter {
|
|
|
16874
17016
|
return this.valueType;
|
|
16875
17017
|
}
|
|
16876
17018
|
/**
|
|
16877
|
-
* `
|
|
17019
|
+
* `toJSForTest` returns value with meta data for testing.
|
|
16878
17020
|
*/
|
|
16879
|
-
|
|
17021
|
+
toJSForTest() {
|
|
17022
|
+
if (!this.context || !this.counter) {
|
|
17023
|
+
throw new YorkieError(
|
|
17024
|
+
Code.ErrNotInitialized,
|
|
17025
|
+
"Counter is not initialized yet"
|
|
17026
|
+
);
|
|
17027
|
+
}
|
|
17028
|
+
return this.counter.toJSForTest();
|
|
17029
|
+
}
|
|
17030
|
+
/**
|
|
17031
|
+
* `ensureInitialized` throws if this counter has not been initialized.
|
|
17032
|
+
*/
|
|
17033
|
+
ensureInitialized() {
|
|
16880
17034
|
if (!this.context || !this.counter) {
|
|
16881
17035
|
throw new YorkieError(
|
|
16882
17036
|
Code.ErrNotInitialized,
|
|
16883
17037
|
"Counter is not initialized yet"
|
|
16884
17038
|
);
|
|
16885
17039
|
}
|
|
17040
|
+
}
|
|
17041
|
+
}
|
|
17042
|
+
class Counter extends BaseCounter {
|
|
17043
|
+
constructor(value) {
|
|
17044
|
+
const type = typeof value === "bigint" ? CounterType.Long : CounterType.Int;
|
|
17045
|
+
super(type, value);
|
|
17046
|
+
}
|
|
17047
|
+
/**
|
|
17048
|
+
* `getValue` returns the value of this counter.
|
|
17049
|
+
*/
|
|
17050
|
+
getValue() {
|
|
17051
|
+
return this.value;
|
|
17052
|
+
}
|
|
17053
|
+
/**
|
|
17054
|
+
* `increase` increases numeric data.
|
|
17055
|
+
*/
|
|
17056
|
+
increase(v) {
|
|
17057
|
+
this.ensureInitialized();
|
|
16886
17058
|
const ticket = this.context.issueTimeTicket();
|
|
16887
17059
|
const value = Primitive.of(v, ticket);
|
|
16888
17060
|
if (!value.isNumericType()) {
|
|
@@ -16896,19 +17068,44 @@ class Counter {
|
|
|
16896
17068
|
);
|
|
16897
17069
|
return this;
|
|
16898
17070
|
}
|
|
17071
|
+
}
|
|
17072
|
+
class DedupCounter extends BaseCounter {
|
|
17073
|
+
constructor() {
|
|
17074
|
+
super(CounterType.IntDedup, 0);
|
|
17075
|
+
}
|
|
16899
17076
|
/**
|
|
16900
|
-
* `
|
|
17077
|
+
* `getValue` returns the value of this counter. Always a number since
|
|
17078
|
+
* DedupCounter only supports IntDedup.
|
|
16901
17079
|
*/
|
|
16902
|
-
|
|
16903
|
-
|
|
16904
|
-
|
|
16905
|
-
|
|
16906
|
-
|
|
16907
|
-
|
|
17080
|
+
getValue() {
|
|
17081
|
+
return this.value;
|
|
17082
|
+
}
|
|
17083
|
+
/**
|
|
17084
|
+
* `add` records a unique actor in the dedup counter. If the actor has
|
|
17085
|
+
* already been counted, the call is ignored.
|
|
17086
|
+
*/
|
|
17087
|
+
add(actor) {
|
|
17088
|
+
this.ensureInitialized();
|
|
17089
|
+
if (!actor) {
|
|
17090
|
+
throw new YorkieError(Code.ErrInvalidArgument, "actor is required");
|
|
16908
17091
|
}
|
|
16909
|
-
|
|
17092
|
+
const ticket = this.context.issueTimeTicket();
|
|
17093
|
+
const value = Primitive.of(1, ticket);
|
|
17094
|
+
this.counter.increaseDedup(value, actor);
|
|
17095
|
+
this.context.push(
|
|
17096
|
+
IncreaseOperation.create(
|
|
17097
|
+
this.counter.getCreatedAt(),
|
|
17098
|
+
value,
|
|
17099
|
+
ticket,
|
|
17100
|
+
actor
|
|
17101
|
+
)
|
|
17102
|
+
);
|
|
17103
|
+
return this;
|
|
16910
17104
|
}
|
|
16911
17105
|
}
|
|
17106
|
+
function isCounter$1(value) {
|
|
17107
|
+
return value instanceof Counter || value instanceof DedupCounter;
|
|
17108
|
+
}
|
|
16912
17109
|
function toTreeNode(node) {
|
|
16913
17110
|
if (node.isText) {
|
|
16914
17111
|
return {
|
|
@@ -17712,7 +17909,12 @@ function toWrappedElement(context, elem) {
|
|
|
17712
17909
|
} else if (elem instanceof CRDTText) {
|
|
17713
17910
|
return new Text(context, elem);
|
|
17714
17911
|
} else if (elem instanceof CRDTCounter) {
|
|
17715
|
-
|
|
17912
|
+
if (elem.isDedup()) {
|
|
17913
|
+
const counter2 = new DedupCounter();
|
|
17914
|
+
counter2.initialize(context, elem);
|
|
17915
|
+
return counter2;
|
|
17916
|
+
}
|
|
17917
|
+
const counter = new Counter(0);
|
|
17716
17918
|
counter.initialize(context, elem);
|
|
17717
17919
|
return counter;
|
|
17718
17920
|
} else if (elem instanceof CRDTTree) {
|
|
@@ -17742,7 +17944,7 @@ function buildCRDTElement(context, value, createdAt) {
|
|
|
17742
17944
|
if (value instanceof Text) {
|
|
17743
17945
|
element = CRDTText.create(RGATreeSplit.create(), createdAt);
|
|
17744
17946
|
value.initialize(context, element);
|
|
17745
|
-
} else if (value
|
|
17947
|
+
} else if (isCounter$1(value)) {
|
|
17746
17948
|
element = CRDTCounter.create(
|
|
17747
17949
|
value.getValueType(),
|
|
17748
17950
|
value.getValue(),
|
|
@@ -20025,7 +20227,7 @@ function createAuthInterceptor(apiKey, token) {
|
|
|
20025
20227
|
};
|
|
20026
20228
|
}
|
|
20027
20229
|
const name$1 = "@yorkie-js/sdk";
|
|
20028
|
-
const version$1 = "0.7.
|
|
20230
|
+
const version$1 = "0.7.5";
|
|
20029
20231
|
const pkg$1 = {
|
|
20030
20232
|
name: name$1,
|
|
20031
20233
|
version: version$1
|
|
@@ -20369,21 +20571,19 @@ class Client {
|
|
|
20369
20571
|
this.channelHeartbeatInterval = opts.channelHeartbeatInterval ?? DefaultClientOptions.channelHeartbeatInterval;
|
|
20370
20572
|
const { authInterceptor, setToken } = createAuthInterceptor(this.apiKey);
|
|
20371
20573
|
this.setAuthToken = setToken;
|
|
20574
|
+
const transportOptions = {
|
|
20575
|
+
baseUrl: rpcAddr,
|
|
20576
|
+
interceptors: [authInterceptor, createMetricInterceptor(opts?.userAgent)],
|
|
20577
|
+
fetch: (input, init) => {
|
|
20578
|
+
return fetch(input, {
|
|
20579
|
+
...init,
|
|
20580
|
+
keepalive: this.keepalive
|
|
20581
|
+
});
|
|
20582
|
+
}
|
|
20583
|
+
};
|
|
20372
20584
|
this.rpcClient = createClient(
|
|
20373
20585
|
YorkieService,
|
|
20374
|
-
createGrpcWebTransport(
|
|
20375
|
-
baseUrl: rpcAddr,
|
|
20376
|
-
interceptors: [
|
|
20377
|
-
authInterceptor,
|
|
20378
|
-
createMetricInterceptor(opts?.userAgent)
|
|
20379
|
-
],
|
|
20380
|
-
fetch: (input, init) => {
|
|
20381
|
-
return fetch(input, {
|
|
20382
|
-
...init,
|
|
20383
|
-
keepalive: this.keepalive
|
|
20384
|
-
});
|
|
20385
|
-
}
|
|
20386
|
-
})
|
|
20586
|
+
opts.useGrpcWebTransport ? createGrpcWebTransport(transportOptions) : createConnectTransport(transportOptions)
|
|
20387
20587
|
);
|
|
20388
20588
|
this.taskQueue = [];
|
|
20389
20589
|
}
|
|
@@ -21881,10 +22081,6 @@ const YSON = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty
|
|
|
21881
22081
|
textToString,
|
|
21882
22082
|
treeToXML
|
|
21883
22083
|
}, Symbol.toStringTag, { value: "Module" }));
|
|
21884
|
-
({
|
|
21885
|
-
IntType: CounterType.Int,
|
|
21886
|
-
LongType: CounterType.Long
|
|
21887
|
-
});
|
|
21888
22084
|
if (typeof globalThis !== "undefined") {
|
|
21889
22085
|
globalThis.yorkie = {
|
|
21890
22086
|
Client,
|
|
@@ -21892,18 +22088,17 @@ if (typeof globalThis !== "undefined") {
|
|
|
21892
22088
|
Primitive,
|
|
21893
22089
|
Text,
|
|
21894
22090
|
Counter,
|
|
22091
|
+
DedupCounter,
|
|
21895
22092
|
Tree,
|
|
21896
22093
|
Channel: Channel2,
|
|
21897
22094
|
ChannelEventType,
|
|
21898
22095
|
YSON,
|
|
21899
22096
|
LogLevel,
|
|
21900
|
-
setLogLevel
|
|
21901
|
-
IntType: CounterType.Int,
|
|
21902
|
-
LongType: CounterType.Long
|
|
22097
|
+
setLogLevel
|
|
21903
22098
|
};
|
|
21904
22099
|
}
|
|
21905
22100
|
const name = "@yorkie-js/react";
|
|
21906
|
-
const version = "0.7.
|
|
22101
|
+
const version = "0.7.5";
|
|
21907
22102
|
const pkg = {
|
|
21908
22103
|
name,
|
|
21909
22104
|
version
|