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