@yorkie-js/react 0.7.4 → 0.7.5
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/yorkie-js-react.es.js +1006 -1061
- package/dist/yorkie-js-react.es.js.map +1 -1
- package/dist/yorkie-js-react.js +987 -1042
- package/dist/yorkie-js-react.js.map +1 -1
- package/package.json +2 -2
|
@@ -102,7 +102,7 @@ function varint64write(lo, hi, bytes) {
|
|
|
102
102
|
}
|
|
103
103
|
bytes.push(hi >>> 31 & 1);
|
|
104
104
|
}
|
|
105
|
-
const TWO_PWR_32_DBL
|
|
105
|
+
const TWO_PWR_32_DBL = 4294967296;
|
|
106
106
|
function int64FromString(dec) {
|
|
107
107
|
const minus = dec[0] === "-";
|
|
108
108
|
if (minus) {
|
|
@@ -115,9 +115,9 @@ function int64FromString(dec) {
|
|
|
115
115
|
const digit1e6 = Number(dec.slice(begin, end));
|
|
116
116
|
highBits *= base;
|
|
117
117
|
lowBits = lowBits * base + digit1e6;
|
|
118
|
-
if (lowBits >= TWO_PWR_32_DBL
|
|
119
|
-
highBits = highBits + (lowBits / TWO_PWR_32_DBL
|
|
120
|
-
lowBits = lowBits % TWO_PWR_32_DBL
|
|
118
|
+
if (lowBits >= TWO_PWR_32_DBL) {
|
|
119
|
+
highBits = highBits + (lowBits / TWO_PWR_32_DBL | 0);
|
|
120
|
+
lowBits = lowBits % TWO_PWR_32_DBL;
|
|
121
121
|
}
|
|
122
122
|
}
|
|
123
123
|
add1e6digit(-24, -18);
|
|
@@ -138,7 +138,7 @@ function int64ToString(lo, hi) {
|
|
|
138
138
|
function uInt64ToString(lo, hi) {
|
|
139
139
|
({ lo, hi } = toUnsigned(lo, hi));
|
|
140
140
|
if (hi <= 2097151) {
|
|
141
|
-
return String(TWO_PWR_32_DBL
|
|
141
|
+
return String(TWO_PWR_32_DBL * hi + lo);
|
|
142
142
|
}
|
|
143
143
|
const low = lo & 16777215;
|
|
144
144
|
const mid = (lo >>> 24 | hi << 8) & 16777215;
|
|
@@ -4385,6 +4385,19 @@ function codeToString(value) {
|
|
|
4385
4385
|
}
|
|
4386
4386
|
return name2[0].toLowerCase() + name2.substring(1).replace(/[A-Z]/g, (c) => "_" + c.toLowerCase());
|
|
4387
4387
|
}
|
|
4388
|
+
let stringToCode;
|
|
4389
|
+
function codeFromString(value) {
|
|
4390
|
+
if (!stringToCode) {
|
|
4391
|
+
stringToCode = {};
|
|
4392
|
+
for (const value2 of Object.values(Code$1)) {
|
|
4393
|
+
if (typeof value2 == "string") {
|
|
4394
|
+
continue;
|
|
4395
|
+
}
|
|
4396
|
+
stringToCode[codeToString(value2)] = value2;
|
|
4397
|
+
}
|
|
4398
|
+
}
|
|
4399
|
+
return stringToCode[value];
|
|
4400
|
+
}
|
|
4388
4401
|
class ConnectError extends Error {
|
|
4389
4402
|
/**
|
|
4390
4403
|
* Create a new ConnectError.
|
|
@@ -4473,6 +4486,15 @@ function decodeBinaryHeader(value, desc, options) {
|
|
|
4473
4486
|
throw ConnectError.from(e, Code$1.DataLoss);
|
|
4474
4487
|
}
|
|
4475
4488
|
}
|
|
4489
|
+
function appendHeaders(...headers) {
|
|
4490
|
+
const h = new Headers();
|
|
4491
|
+
for (const e of headers) {
|
|
4492
|
+
e.forEach((value, key) => {
|
|
4493
|
+
h.append(key, value);
|
|
4494
|
+
});
|
|
4495
|
+
}
|
|
4496
|
+
return h;
|
|
4497
|
+
}
|
|
4476
4498
|
function makeAnyClient(service, createMethod) {
|
|
4477
4499
|
const client = {};
|
|
4478
4500
|
for (const desc of service.methods) {
|
|
@@ -4620,10 +4642,10 @@ var __asyncValues$1 = function(o) {
|
|
|
4620
4642
|
}, reject);
|
|
4621
4643
|
}
|
|
4622
4644
|
};
|
|
4623
|
-
var __await$
|
|
4624
|
-
return this instanceof __await$
|
|
4645
|
+
var __await$3 = function(v) {
|
|
4646
|
+
return this instanceof __await$3 ? (this.v = v, this) : new __await$3(v);
|
|
4625
4647
|
};
|
|
4626
|
-
var __asyncGenerator$
|
|
4648
|
+
var __asyncGenerator$3 = function(thisArg, _arguments, generator) {
|
|
4627
4649
|
if (!Symbol.asyncIterator) throw new TypeError("Symbol.asyncIterator is not defined.");
|
|
4628
4650
|
var g = generator.apply(thisArg, _arguments || []), i, q = [];
|
|
4629
4651
|
return i = Object.create((typeof AsyncIterator === "function" ? AsyncIterator : Object).prototype), verb("next"), verb("throw"), verb("return", awaitReturn), i[Symbol.asyncIterator] = function() {
|
|
@@ -4652,7 +4674,7 @@ var __asyncGenerator$2 = function(thisArg, _arguments, generator) {
|
|
|
4652
4674
|
}
|
|
4653
4675
|
}
|
|
4654
4676
|
function step(r) {
|
|
4655
|
-
r.value instanceof __await$
|
|
4677
|
+
r.value instanceof __await$3 ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r);
|
|
4656
4678
|
}
|
|
4657
4679
|
function fulfill(value) {
|
|
4658
4680
|
resume("next", value);
|
|
@@ -4673,13 +4695,13 @@ var __asyncDelegator$1 = function(o) {
|
|
|
4673
4695
|
}, i;
|
|
4674
4696
|
function verb(n, f) {
|
|
4675
4697
|
i[n] = o[n] ? function(v) {
|
|
4676
|
-
return (p = !p) ? { value: __await$
|
|
4698
|
+
return (p = !p) ? { value: __await$3(o[n](v)), done: false } : f ? f(v) : v;
|
|
4677
4699
|
} : f;
|
|
4678
4700
|
}
|
|
4679
4701
|
};
|
|
4680
4702
|
function createAsyncIterable(items) {
|
|
4681
|
-
return __asyncGenerator$
|
|
4682
|
-
yield __await$
|
|
4703
|
+
return __asyncGenerator$3(this, arguments, function* createAsyncIterable_1() {
|
|
4704
|
+
yield __await$3(yield* __asyncDelegator$1(__asyncValues$1(items)));
|
|
4683
4705
|
});
|
|
4684
4706
|
}
|
|
4685
4707
|
var __asyncValues = function(o) {
|
|
@@ -4701,8 +4723,8 @@ var __asyncValues = function(o) {
|
|
|
4701
4723
|
}, reject);
|
|
4702
4724
|
}
|
|
4703
4725
|
};
|
|
4704
|
-
var __await$
|
|
4705
|
-
return this instanceof __await$
|
|
4726
|
+
var __await$2 = function(v) {
|
|
4727
|
+
return this instanceof __await$2 ? (this.v = v, this) : new __await$2(v);
|
|
4706
4728
|
};
|
|
4707
4729
|
var __asyncDelegator = function(o) {
|
|
4708
4730
|
var i, p;
|
|
@@ -4713,11 +4735,11 @@ var __asyncDelegator = function(o) {
|
|
|
4713
4735
|
}, i;
|
|
4714
4736
|
function verb(n, f) {
|
|
4715
4737
|
i[n] = o[n] ? function(v) {
|
|
4716
|
-
return (p = !p) ? { value: __await$
|
|
4738
|
+
return (p = !p) ? { value: __await$2(o[n](v)), done: false } : f ? f(v) : v;
|
|
4717
4739
|
} : f;
|
|
4718
4740
|
}
|
|
4719
4741
|
};
|
|
4720
|
-
var __asyncGenerator$
|
|
4742
|
+
var __asyncGenerator$2 = function(thisArg, _arguments, generator) {
|
|
4721
4743
|
if (!Symbol.asyncIterator) throw new TypeError("Symbol.asyncIterator is not defined.");
|
|
4722
4744
|
var g = generator.apply(thisArg, _arguments || []), i, q = [];
|
|
4723
4745
|
return i = Object.create((typeof AsyncIterator === "function" ? AsyncIterator : Object).prototype), verb("next"), verb("throw"), verb("return", awaitReturn), i[Symbol.asyncIterator] = function() {
|
|
@@ -4746,7 +4768,7 @@ var __asyncGenerator$1 = function(thisArg, _arguments, generator) {
|
|
|
4746
4768
|
}
|
|
4747
4769
|
}
|
|
4748
4770
|
function step(r) {
|
|
4749
|
-
r.value instanceof __await$
|
|
4771
|
+
r.value instanceof __await$2 ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r);
|
|
4750
4772
|
}
|
|
4751
4773
|
function fulfill(value) {
|
|
4752
4774
|
resume("next", value);
|
|
@@ -4826,11 +4848,11 @@ function createBiDiStreamingFn(transport, method) {
|
|
|
4826
4848
|
}
|
|
4827
4849
|
function handleStreamResponse(stream, options) {
|
|
4828
4850
|
const it = (function() {
|
|
4829
|
-
return __asyncGenerator$
|
|
4851
|
+
return __asyncGenerator$2(this, arguments, function* () {
|
|
4830
4852
|
var _a, _b;
|
|
4831
|
-
const response = yield __await$
|
|
4853
|
+
const response = yield __await$2(stream);
|
|
4832
4854
|
(_a = options === null || options === void 0 ? void 0 : options.onHeader) === null || _a === void 0 ? void 0 : _a.call(options, response.header);
|
|
4833
|
-
yield __await$
|
|
4855
|
+
yield __await$2(yield* __asyncDelegator(__asyncValues(response.message)));
|
|
4834
4856
|
(_b = options === null || options === void 0 ? void 0 : options.onTrailer) === null || _b === void 0 ? void 0 : _b.call(options, response.trailer);
|
|
4835
4857
|
});
|
|
4836
4858
|
})()[Symbol.asyncIterator]();
|
|
@@ -4920,12 +4942,12 @@ function trailerParse(data) {
|
|
|
4920
4942
|
}
|
|
4921
4943
|
return headers;
|
|
4922
4944
|
}
|
|
4923
|
-
const headerContentType = "Content-Type";
|
|
4924
|
-
const headerTimeout = "Grpc-Timeout";
|
|
4945
|
+
const headerContentType$1 = "Content-Type";
|
|
4946
|
+
const headerTimeout$1 = "Grpc-Timeout";
|
|
4925
4947
|
const headerGrpcStatus = "Grpc-Status";
|
|
4926
4948
|
const headerGrpcMessage = "Grpc-Message";
|
|
4927
4949
|
const headerStatusDetailsBin = "Grpc-Status-Details-Bin";
|
|
4928
|
-
const headerUserAgent = "User-Agent";
|
|
4950
|
+
const headerUserAgent$1 = "User-Agent";
|
|
4929
4951
|
const headerXUserAgent = "X-User-Agent";
|
|
4930
4952
|
const headerXGrpcWeb = "X-Grpc-Web";
|
|
4931
4953
|
const contentTypeProto = "application/grpc-web+proto";
|
|
@@ -5063,6 +5085,204 @@ function createJsonSerialization(desc, options) {
|
|
|
5063
5085
|
}
|
|
5064
5086
|
};
|
|
5065
5087
|
}
|
|
5088
|
+
const contentTypeRegExp = /^application\/(connect\+)?(?:(json)(?:; ?charset=utf-?8)?|(proto))$/i;
|
|
5089
|
+
const contentTypeUnaryProto = "application/proto";
|
|
5090
|
+
const contentTypeUnaryJson = "application/json";
|
|
5091
|
+
const contentTypeStreamProto = "application/connect+proto";
|
|
5092
|
+
const contentTypeStreamJson = "application/connect+json";
|
|
5093
|
+
function parseContentType(contentType) {
|
|
5094
|
+
const match = contentType === null || contentType === void 0 ? void 0 : contentType.match(contentTypeRegExp);
|
|
5095
|
+
if (!match) {
|
|
5096
|
+
return void 0;
|
|
5097
|
+
}
|
|
5098
|
+
const stream = !!match[1];
|
|
5099
|
+
const binary = !!match[3];
|
|
5100
|
+
return { stream, binary };
|
|
5101
|
+
}
|
|
5102
|
+
(function(s, e) {
|
|
5103
|
+
var t = {};
|
|
5104
|
+
for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)
|
|
5105
|
+
t[p] = s[p];
|
|
5106
|
+
if (s != null && typeof Object.getOwnPropertySymbols === "function")
|
|
5107
|
+
for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {
|
|
5108
|
+
if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))
|
|
5109
|
+
t[p[i]] = s[p[i]];
|
|
5110
|
+
}
|
|
5111
|
+
return t;
|
|
5112
|
+
});
|
|
5113
|
+
function errorFromJson(jsonValue, metadata, fallback) {
|
|
5114
|
+
var _a;
|
|
5115
|
+
if (metadata) {
|
|
5116
|
+
new Headers(metadata).forEach((value, key) => fallback.metadata.append(key, value));
|
|
5117
|
+
}
|
|
5118
|
+
if (typeof jsonValue !== "object" || jsonValue == null || Array.isArray(jsonValue)) {
|
|
5119
|
+
throw fallback;
|
|
5120
|
+
}
|
|
5121
|
+
let code = fallback.code;
|
|
5122
|
+
if ("code" in jsonValue && typeof jsonValue.code === "string") {
|
|
5123
|
+
code = (_a = codeFromString(jsonValue.code)) !== null && _a !== void 0 ? _a : code;
|
|
5124
|
+
}
|
|
5125
|
+
const message = jsonValue.message;
|
|
5126
|
+
if (message != null && typeof message !== "string") {
|
|
5127
|
+
throw fallback;
|
|
5128
|
+
}
|
|
5129
|
+
const error = new ConnectError(message !== null && message !== void 0 ? message : "", code, metadata);
|
|
5130
|
+
if ("details" in jsonValue && Array.isArray(jsonValue.details)) {
|
|
5131
|
+
for (const detail of jsonValue.details) {
|
|
5132
|
+
if (detail === null || typeof detail != "object" || Array.isArray(detail) || typeof detail.type != "string" || typeof detail.value != "string") {
|
|
5133
|
+
throw fallback;
|
|
5134
|
+
}
|
|
5135
|
+
try {
|
|
5136
|
+
error.details.push({
|
|
5137
|
+
type: detail.type,
|
|
5138
|
+
value: base64Decode(detail.value),
|
|
5139
|
+
debug: detail.debug
|
|
5140
|
+
});
|
|
5141
|
+
} catch (e) {
|
|
5142
|
+
throw fallback;
|
|
5143
|
+
}
|
|
5144
|
+
}
|
|
5145
|
+
}
|
|
5146
|
+
return error;
|
|
5147
|
+
}
|
|
5148
|
+
const endStreamFlag = 2;
|
|
5149
|
+
function endStreamFromJson(data) {
|
|
5150
|
+
const parseErr = new ConnectError("invalid end stream", Code$1.Unknown);
|
|
5151
|
+
let jsonValue;
|
|
5152
|
+
try {
|
|
5153
|
+
jsonValue = JSON.parse(typeof data == "string" ? data : new TextDecoder().decode(data));
|
|
5154
|
+
} catch (e) {
|
|
5155
|
+
throw parseErr;
|
|
5156
|
+
}
|
|
5157
|
+
if (typeof jsonValue != "object" || jsonValue == null || Array.isArray(jsonValue)) {
|
|
5158
|
+
throw parseErr;
|
|
5159
|
+
}
|
|
5160
|
+
const metadata = new Headers();
|
|
5161
|
+
if ("metadata" in jsonValue) {
|
|
5162
|
+
if (typeof jsonValue.metadata != "object" || jsonValue.metadata == null || Array.isArray(jsonValue.metadata)) {
|
|
5163
|
+
throw parseErr;
|
|
5164
|
+
}
|
|
5165
|
+
for (const [key, values] of Object.entries(jsonValue.metadata)) {
|
|
5166
|
+
if (!Array.isArray(values) || values.some((value) => typeof value != "string")) {
|
|
5167
|
+
throw parseErr;
|
|
5168
|
+
}
|
|
5169
|
+
for (const value of values) {
|
|
5170
|
+
metadata.append(key, value);
|
|
5171
|
+
}
|
|
5172
|
+
}
|
|
5173
|
+
}
|
|
5174
|
+
const error = "error" in jsonValue && jsonValue.error != null ? errorFromJson(jsonValue.error, metadata, parseErr) : void 0;
|
|
5175
|
+
return { metadata, error };
|
|
5176
|
+
}
|
|
5177
|
+
const headerContentType = "Content-Type";
|
|
5178
|
+
const headerUnaryContentLength = "Content-Length";
|
|
5179
|
+
const headerUnaryEncoding = "Content-Encoding";
|
|
5180
|
+
const headerUnaryAcceptEncoding = "Accept-Encoding";
|
|
5181
|
+
const headerTimeout = "Connect-Timeout-Ms";
|
|
5182
|
+
const headerProtocolVersion = "Connect-Protocol-Version";
|
|
5183
|
+
const headerUserAgent = "User-Agent";
|
|
5184
|
+
function codeFromHttpStatus$1(httpStatus) {
|
|
5185
|
+
switch (httpStatus) {
|
|
5186
|
+
case 400:
|
|
5187
|
+
return Code$1.Internal;
|
|
5188
|
+
case 401:
|
|
5189
|
+
return Code$1.Unauthenticated;
|
|
5190
|
+
case 403:
|
|
5191
|
+
return Code$1.PermissionDenied;
|
|
5192
|
+
case 404:
|
|
5193
|
+
return Code$1.Unimplemented;
|
|
5194
|
+
case 429:
|
|
5195
|
+
return Code$1.Unavailable;
|
|
5196
|
+
case 502:
|
|
5197
|
+
return Code$1.Unavailable;
|
|
5198
|
+
case 503:
|
|
5199
|
+
return Code$1.Unavailable;
|
|
5200
|
+
case 504:
|
|
5201
|
+
return Code$1.Unavailable;
|
|
5202
|
+
default:
|
|
5203
|
+
return Code$1.Unknown;
|
|
5204
|
+
}
|
|
5205
|
+
}
|
|
5206
|
+
function trailerDemux(header) {
|
|
5207
|
+
const h = new Headers(), t = new Headers();
|
|
5208
|
+
header.forEach((value, key) => {
|
|
5209
|
+
if (key.toLowerCase().startsWith("trailer-")) {
|
|
5210
|
+
t.append(key.substring(8), value);
|
|
5211
|
+
} else {
|
|
5212
|
+
h.append(key, value);
|
|
5213
|
+
}
|
|
5214
|
+
});
|
|
5215
|
+
return [h, t];
|
|
5216
|
+
}
|
|
5217
|
+
const protocolVersion = "1";
|
|
5218
|
+
function requestHeader$1(methodKind, useBinaryFormat, timeoutMs, userProvidedHeaders, setUserAgent) {
|
|
5219
|
+
const result = new Headers(userProvidedHeaders !== null && userProvidedHeaders !== void 0 ? userProvidedHeaders : {});
|
|
5220
|
+
if (timeoutMs !== void 0) {
|
|
5221
|
+
result.set(headerTimeout, `${timeoutMs}`);
|
|
5222
|
+
}
|
|
5223
|
+
result.set(headerContentType, methodKind == "unary" ? useBinaryFormat ? contentTypeUnaryProto : contentTypeUnaryJson : useBinaryFormat ? contentTypeStreamProto : contentTypeStreamJson);
|
|
5224
|
+
result.set(headerProtocolVersion, protocolVersion);
|
|
5225
|
+
if (!result.has(headerUserAgent) && setUserAgent) ;
|
|
5226
|
+
return result;
|
|
5227
|
+
}
|
|
5228
|
+
function validateResponse$1(methodKind, useBinaryFormat, status, headers) {
|
|
5229
|
+
const mimeType = headers.get(headerContentType);
|
|
5230
|
+
const parsedType = parseContentType(mimeType);
|
|
5231
|
+
if (status !== 200) {
|
|
5232
|
+
const errorFromStatus = new ConnectError(`HTTP ${status}`, codeFromHttpStatus$1(status), headers);
|
|
5233
|
+
if (methodKind == "unary" && parsedType && !parsedType.binary) {
|
|
5234
|
+
return { isUnaryError: true, unaryError: errorFromStatus };
|
|
5235
|
+
}
|
|
5236
|
+
throw errorFromStatus;
|
|
5237
|
+
}
|
|
5238
|
+
const allowedContentType = {
|
|
5239
|
+
binary: useBinaryFormat,
|
|
5240
|
+
stream: methodKind !== "unary"
|
|
5241
|
+
};
|
|
5242
|
+
if ((parsedType === null || parsedType === void 0 ? void 0 : parsedType.binary) !== allowedContentType.binary || parsedType.stream !== allowedContentType.stream) {
|
|
5243
|
+
throw new ConnectError(`unsupported content type ${mimeType}`, parsedType === void 0 ? Code$1.Unknown : Code$1.Internal, headers);
|
|
5244
|
+
}
|
|
5245
|
+
return { isUnaryError: false };
|
|
5246
|
+
}
|
|
5247
|
+
const contentTypePrefix = "application/";
|
|
5248
|
+
function encodeMessageForUrl(message, useBase64) {
|
|
5249
|
+
if (useBase64) {
|
|
5250
|
+
return base64Encode(message, "url");
|
|
5251
|
+
}
|
|
5252
|
+
return encodeURIComponent(new TextDecoder().decode(message));
|
|
5253
|
+
}
|
|
5254
|
+
function transformConnectPostToGetRequest(request, message, useBase64) {
|
|
5255
|
+
let query = `?connect=v${protocolVersion}`;
|
|
5256
|
+
const contentType = request.header.get(headerContentType);
|
|
5257
|
+
if ((contentType === null || contentType === void 0 ? void 0 : contentType.indexOf(contentTypePrefix)) === 0) {
|
|
5258
|
+
query += "&encoding=" + encodeURIComponent(contentType.slice(contentTypePrefix.length));
|
|
5259
|
+
}
|
|
5260
|
+
const compression = request.header.get(headerUnaryEncoding);
|
|
5261
|
+
if (compression !== null && compression !== "identity") {
|
|
5262
|
+
query += "&compression=" + encodeURIComponent(compression);
|
|
5263
|
+
useBase64 = true;
|
|
5264
|
+
}
|
|
5265
|
+
if (useBase64) {
|
|
5266
|
+
query += "&base64=1";
|
|
5267
|
+
}
|
|
5268
|
+
query += "&message=" + encodeMessageForUrl(message, useBase64);
|
|
5269
|
+
const url = request.url + query;
|
|
5270
|
+
const header = new Headers(request.header);
|
|
5271
|
+
for (const h of [
|
|
5272
|
+
headerProtocolVersion,
|
|
5273
|
+
headerContentType,
|
|
5274
|
+
headerUnaryContentLength,
|
|
5275
|
+
headerUnaryEncoding,
|
|
5276
|
+
headerUnaryAcceptEncoding
|
|
5277
|
+
]) {
|
|
5278
|
+
header.delete(h);
|
|
5279
|
+
}
|
|
5280
|
+
return Object.assign(Object.assign({}, request), {
|
|
5281
|
+
requestMethod: "GET",
|
|
5282
|
+
url,
|
|
5283
|
+
header
|
|
5284
|
+
});
|
|
5285
|
+
}
|
|
5066
5286
|
function runUnaryCall(opt) {
|
|
5067
5287
|
const next = applyInterceptors(opt.next, opt.interceptors);
|
|
5068
5288
|
const [signal, abort, done] = setupSignal(opt);
|
|
@@ -5131,6 +5351,181 @@ function assertFetchApi() {
|
|
|
5131
5351
|
throw new Error("connect-web requires the fetch API. Are you running on an old version of Node.js? Node.js is not supported in Connect for Web - please stay tuned for Connect for Node.");
|
|
5132
5352
|
}
|
|
5133
5353
|
}
|
|
5354
|
+
var __await$1 = function(v) {
|
|
5355
|
+
return this instanceof __await$1 ? (this.v = v, this) : new __await$1(v);
|
|
5356
|
+
};
|
|
5357
|
+
var __asyncGenerator$1 = function(thisArg, _arguments, generator) {
|
|
5358
|
+
if (!Symbol.asyncIterator) throw new TypeError("Symbol.asyncIterator is not defined.");
|
|
5359
|
+
var g = generator.apply(thisArg, _arguments || []), i, q = [];
|
|
5360
|
+
return i = Object.create((typeof AsyncIterator === "function" ? AsyncIterator : Object).prototype), verb("next"), verb("throw"), verb("return", awaitReturn), i[Symbol.asyncIterator] = function() {
|
|
5361
|
+
return this;
|
|
5362
|
+
}, i;
|
|
5363
|
+
function awaitReturn(f) {
|
|
5364
|
+
return function(v) {
|
|
5365
|
+
return Promise.resolve(v).then(f, reject);
|
|
5366
|
+
};
|
|
5367
|
+
}
|
|
5368
|
+
function verb(n, f) {
|
|
5369
|
+
if (g[n]) {
|
|
5370
|
+
i[n] = function(v) {
|
|
5371
|
+
return new Promise(function(a, b) {
|
|
5372
|
+
q.push([n, v, a, b]) > 1 || resume(n, v);
|
|
5373
|
+
});
|
|
5374
|
+
};
|
|
5375
|
+
if (f) i[n] = f(i[n]);
|
|
5376
|
+
}
|
|
5377
|
+
}
|
|
5378
|
+
function resume(n, v) {
|
|
5379
|
+
try {
|
|
5380
|
+
step(g[n](v));
|
|
5381
|
+
} catch (e) {
|
|
5382
|
+
settle(q[0][3], e);
|
|
5383
|
+
}
|
|
5384
|
+
}
|
|
5385
|
+
function step(r) {
|
|
5386
|
+
r.value instanceof __await$1 ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r);
|
|
5387
|
+
}
|
|
5388
|
+
function fulfill(value) {
|
|
5389
|
+
resume("next", value);
|
|
5390
|
+
}
|
|
5391
|
+
function reject(value) {
|
|
5392
|
+
resume("throw", value);
|
|
5393
|
+
}
|
|
5394
|
+
function settle(f, v) {
|
|
5395
|
+
if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]);
|
|
5396
|
+
}
|
|
5397
|
+
};
|
|
5398
|
+
const fetchOptions$1 = {
|
|
5399
|
+
redirect: "error"
|
|
5400
|
+
};
|
|
5401
|
+
function createConnectTransport(options) {
|
|
5402
|
+
var _a;
|
|
5403
|
+
assertFetchApi();
|
|
5404
|
+
const useBinaryFormat = (_a = options.useBinaryFormat) !== null && _a !== void 0 ? _a : false;
|
|
5405
|
+
return {
|
|
5406
|
+
async unary(method, signal, timeoutMs, header, message, contextValues) {
|
|
5407
|
+
const { serialize, parse: parse2 } = createClientMethodSerializers(method, useBinaryFormat, options.jsonOptions, options.binaryOptions);
|
|
5408
|
+
timeoutMs = timeoutMs === void 0 ? options.defaultTimeoutMs : timeoutMs <= 0 ? void 0 : timeoutMs;
|
|
5409
|
+
return await runUnaryCall({
|
|
5410
|
+
interceptors: options.interceptors,
|
|
5411
|
+
signal,
|
|
5412
|
+
timeoutMs,
|
|
5413
|
+
req: {
|
|
5414
|
+
stream: false,
|
|
5415
|
+
service: method.parent,
|
|
5416
|
+
method,
|
|
5417
|
+
requestMethod: "POST",
|
|
5418
|
+
url: createMethodUrl(options.baseUrl, method),
|
|
5419
|
+
header: requestHeader$1(method.methodKind, useBinaryFormat, timeoutMs, header, false),
|
|
5420
|
+
contextValues: contextValues !== null && contextValues !== void 0 ? contextValues : createContextValues(),
|
|
5421
|
+
message
|
|
5422
|
+
},
|
|
5423
|
+
next: async (req) => {
|
|
5424
|
+
var _a2;
|
|
5425
|
+
const useGet = options.useHttpGet === true && method.idempotency === MethodOptions_IdempotencyLevel.NO_SIDE_EFFECTS;
|
|
5426
|
+
let body = null;
|
|
5427
|
+
if (useGet) {
|
|
5428
|
+
req = transformConnectPostToGetRequest(req, serialize(req.message), useBinaryFormat);
|
|
5429
|
+
} else {
|
|
5430
|
+
body = serialize(req.message);
|
|
5431
|
+
}
|
|
5432
|
+
const fetch2 = (_a2 = options.fetch) !== null && _a2 !== void 0 ? _a2 : globalThis.fetch;
|
|
5433
|
+
const response = await fetch2(req.url, Object.assign(Object.assign({}, fetchOptions$1), { method: req.requestMethod, headers: req.header, signal: req.signal, body }));
|
|
5434
|
+
const { isUnaryError, unaryError } = validateResponse$1(method.methodKind, useBinaryFormat, response.status, response.headers);
|
|
5435
|
+
if (isUnaryError) {
|
|
5436
|
+
throw errorFromJson(await response.json(), appendHeaders(...trailerDemux(response.headers)), unaryError);
|
|
5437
|
+
}
|
|
5438
|
+
const [demuxedHeader, demuxedTrailer] = trailerDemux(response.headers);
|
|
5439
|
+
return {
|
|
5440
|
+
stream: false,
|
|
5441
|
+
service: method.parent,
|
|
5442
|
+
method,
|
|
5443
|
+
header: demuxedHeader,
|
|
5444
|
+
message: useBinaryFormat ? parse2(new Uint8Array(await response.arrayBuffer())) : fromJson(method.output, await response.json(), getJsonOptions(options.jsonOptions)),
|
|
5445
|
+
trailer: demuxedTrailer
|
|
5446
|
+
};
|
|
5447
|
+
}
|
|
5448
|
+
});
|
|
5449
|
+
},
|
|
5450
|
+
async stream(method, signal, timeoutMs, header, input, contextValues) {
|
|
5451
|
+
const { serialize, parse: parse2 } = createClientMethodSerializers(method, useBinaryFormat, options.jsonOptions, options.binaryOptions);
|
|
5452
|
+
function parseResponseBody(body, trailerTarget, header2, signal2) {
|
|
5453
|
+
return __asyncGenerator$1(this, arguments, function* parseResponseBody_1() {
|
|
5454
|
+
const reader = createEnvelopeReadableStream(body).getReader();
|
|
5455
|
+
let endStreamReceived = false;
|
|
5456
|
+
for (; ; ) {
|
|
5457
|
+
const result = yield __await$1(reader.read());
|
|
5458
|
+
if (result.done) {
|
|
5459
|
+
break;
|
|
5460
|
+
}
|
|
5461
|
+
const { flags, data } = result.value;
|
|
5462
|
+
if ((flags & compressedFlag) === compressedFlag) {
|
|
5463
|
+
throw new ConnectError(`protocol error: received unsupported compressed output`, Code$1.Internal);
|
|
5464
|
+
}
|
|
5465
|
+
if ((flags & endStreamFlag) === endStreamFlag) {
|
|
5466
|
+
endStreamReceived = true;
|
|
5467
|
+
const endStream = endStreamFromJson(data);
|
|
5468
|
+
if (endStream.error) {
|
|
5469
|
+
const error = endStream.error;
|
|
5470
|
+
header2.forEach((value, key) => {
|
|
5471
|
+
error.metadata.append(key, value);
|
|
5472
|
+
});
|
|
5473
|
+
throw error;
|
|
5474
|
+
}
|
|
5475
|
+
endStream.metadata.forEach((value, key) => trailerTarget.set(key, value));
|
|
5476
|
+
continue;
|
|
5477
|
+
}
|
|
5478
|
+
yield yield __await$1(parse2(data));
|
|
5479
|
+
}
|
|
5480
|
+
if ("throwIfAborted" in signal2) {
|
|
5481
|
+
signal2.throwIfAborted();
|
|
5482
|
+
}
|
|
5483
|
+
if (!endStreamReceived) {
|
|
5484
|
+
throw "missing EndStreamResponse";
|
|
5485
|
+
}
|
|
5486
|
+
});
|
|
5487
|
+
}
|
|
5488
|
+
async function createRequestBody(input2) {
|
|
5489
|
+
if (method.methodKind != "server_streaming") {
|
|
5490
|
+
throw "The fetch API does not support streaming request bodies";
|
|
5491
|
+
}
|
|
5492
|
+
const r = await input2[Symbol.asyncIterator]().next();
|
|
5493
|
+
if (r.done == true) {
|
|
5494
|
+
throw "missing request message";
|
|
5495
|
+
}
|
|
5496
|
+
return encodeEnvelope(0, serialize(r.value));
|
|
5497
|
+
}
|
|
5498
|
+
timeoutMs = timeoutMs === void 0 ? options.defaultTimeoutMs : timeoutMs <= 0 ? void 0 : timeoutMs;
|
|
5499
|
+
return await runStreamingCall({
|
|
5500
|
+
interceptors: options.interceptors,
|
|
5501
|
+
timeoutMs,
|
|
5502
|
+
signal,
|
|
5503
|
+
req: {
|
|
5504
|
+
stream: true,
|
|
5505
|
+
service: method.parent,
|
|
5506
|
+
method,
|
|
5507
|
+
requestMethod: "POST",
|
|
5508
|
+
url: createMethodUrl(options.baseUrl, method),
|
|
5509
|
+
header: requestHeader$1(method.methodKind, useBinaryFormat, timeoutMs, header, false),
|
|
5510
|
+
contextValues: contextValues !== null && contextValues !== void 0 ? contextValues : createContextValues(),
|
|
5511
|
+
message: input
|
|
5512
|
+
},
|
|
5513
|
+
next: async (req) => {
|
|
5514
|
+
var _a2;
|
|
5515
|
+
const fetch2 = (_a2 = options.fetch) !== null && _a2 !== void 0 ? _a2 : globalThis.fetch;
|
|
5516
|
+
const fRes = await fetch2(req.url, Object.assign(Object.assign({}, fetchOptions$1), { method: req.requestMethod, headers: req.header, signal: req.signal, body: await createRequestBody(req.message) }));
|
|
5517
|
+
validateResponse$1(method.methodKind, useBinaryFormat, fRes.status, fRes.headers);
|
|
5518
|
+
if (fRes.body === null) {
|
|
5519
|
+
throw "missing response body";
|
|
5520
|
+
}
|
|
5521
|
+
const trailer = new Headers();
|
|
5522
|
+
const res = Object.assign(Object.assign({}, req), { header: fRes.headers, trailer, message: parseResponseBody(fRes.body, trailer, fRes.headers, req.signal) });
|
|
5523
|
+
return res;
|
|
5524
|
+
}
|
|
5525
|
+
});
|
|
5526
|
+
}
|
|
5527
|
+
};
|
|
5528
|
+
}
|
|
5134
5529
|
function validateTrailer(trailer, header) {
|
|
5135
5530
|
const err = findTrailerError(trailer);
|
|
5136
5531
|
if (err) {
|
|
@@ -5146,12 +5541,12 @@ function validateTrailer(trailer, header) {
|
|
|
5146
5541
|
function requestHeader(useBinaryFormat, timeoutMs, userProvidedHeaders, setUserAgent) {
|
|
5147
5542
|
var _a, _b;
|
|
5148
5543
|
const result = new Headers(userProvidedHeaders !== null && userProvidedHeaders !== void 0 ? userProvidedHeaders : {});
|
|
5149
|
-
result.set(headerContentType, useBinaryFormat ? contentTypeProto : contentTypeJson);
|
|
5544
|
+
result.set(headerContentType$1, useBinaryFormat ? contentTypeProto : contentTypeJson);
|
|
5150
5545
|
result.set(headerXGrpcWeb, "1");
|
|
5151
|
-
const userAgent = (_b = (_a = result.get(headerUserAgent)) !== null && _a !== void 0 ? _a : result.get(headerXUserAgent)) !== null && _b !== void 0 ? _b : "connect-es/2.1.1";
|
|
5546
|
+
const userAgent = (_b = (_a = result.get(headerUserAgent$1)) !== null && _a !== void 0 ? _a : result.get(headerXUserAgent)) !== null && _b !== void 0 ? _b : "connect-es/2.1.1";
|
|
5152
5547
|
result.set(headerXUserAgent, userAgent);
|
|
5153
5548
|
if (timeoutMs !== void 0) {
|
|
5154
|
-
result.set(headerTimeout, `${timeoutMs}m`);
|
|
5549
|
+
result.set(headerTimeout$1, `${timeoutMs}m`);
|
|
5155
5550
|
}
|
|
5156
5551
|
return result;
|
|
5157
5552
|
}
|
|
@@ -5395,7 +5790,7 @@ function createGrpcWebTransport(options) {
|
|
|
5395
5790
|
}
|
|
5396
5791
|
};
|
|
5397
5792
|
}
|
|
5398
|
-
const file_src_api_yorkie_v1_resources = /* @__PURE__ */ fileDesc("CiFzcmMvYXBpL3lvcmtpZS92MS9yZXNvdXJjZXMucHJvdG8SCXlvcmtpZS52MSKuAQoIU25hcHNob3QSJAoEcm9vdBgBIAEoCzIWLnlvcmtpZS52MS5KU09ORWxlbWVudBI1CglwcmVzZW5jZXMYAiADKAsyIi55b3JraWUudjEuU25hcHNob3QuUHJlc2VuY2VzRW50cnkaRQoOUHJlc2VuY2VzRW50cnkSCwoDa2V5GAEgASgJEiIKBXZhbHVlGAIgASgLMhMueW9ya2llLnYxLlByZXNlbmNlOgI4ASL7AQoKQ2hhbmdlUGFjaxIUCgxkb2N1bWVudF9rZXkYASABKAkSKQoKY2hlY2twb2ludBgCIAEoCzIVLnlvcmtpZS52MS5DaGVja3BvaW50EhAKCHNuYXBzaG90GAMgASgMEiIKB2NoYW5nZXMYBCADKAsyES55b3JraWUudjEuQ2hhbmdlEjAKEW1pbl9zeW5jZWRfdGlja2V0GAUgASgLMhUueW9ya2llLnYxLlRpbWVUaWNrZXQSEgoKaXNfcmVtb3ZlZBgGIAEoCBIwCg52ZXJzaW9uX3ZlY3RvchgHIAEoCzIYLnlvcmtpZS52MS5WZXJzaW9uVmVjdG9yIpgBCgZDaGFuZ2USHwoCaWQYASABKAsyEy55b3JraWUudjEuQ2hhbmdlSUQSDwoHbWVzc2FnZRgCIAEoCRIoCgpvcGVyYXRpb25zGAMgAygLMhQueW9ya2llLnYxLk9wZXJhdGlvbhIyCg9wcmVzZW5jZV9jaGFuZ2UYBCABKAsyGS55b3JraWUudjEuUHJlc2VuY2VDaGFuZ2UihwEKCENoYW5nZUlEEhIKCmNsaWVudF9zZXEYASABKA0SEgoKc2VydmVyX3NlcRgCIAEoAxIPCgdsYW1wb3J0GAMgASgDEhAKCGFjdG9yX2lkGAQgASgMEjAKDnZlcnNpb25fdmVjdG9yGAUgASgLMhgueW9ya2llLnYxLlZlcnNpb25WZWN0b3IidAoNVmVyc2lvblZlY3RvchI0CgZ2ZWN0b3IYASADKAsyJC55b3JraWUudjEuVmVyc2lvblZlY3Rvci5WZWN0b3JFbnRyeRotCgtWZWN0b3JFbnRyeRILCgNrZXkYASABKAkSDQoFdmFsdWUYAiABKAM6AjgBIsoaCglPcGVyYXRpb24SJwoDc2V0GAEgASgLMhgueW9ya2llLnYxLk9wZXJhdGlvbi5TZXRIABInCgNhZGQYAiABKAsyGC55b3JraWUudjEuT3BlcmF0aW9uLkFkZEgAEikKBG1vdmUYAyABKAsyGS55b3JraWUudjEuT3BlcmF0aW9uLk1vdmVIABItCgZyZW1vdmUYBCABKAsyGy55b3JraWUudjEuT3BlcmF0aW9uLlJlbW92ZUgAEikKBGVkaXQYBSABKAsyGS55b3JraWUudjEuT3BlcmF0aW9uLkVkaXRIABIrCgVzdHlsZRgHIAEoCzIaLnlvcmtpZS52MS5PcGVyYXRpb24uU3R5bGVIABIxCghpbmNyZWFzZRgIIAEoCzIdLnlvcmtpZS52MS5PcGVyYXRpb24uSW5jcmVhc2VIABIyCgl0cmVlX2VkaXQYCSABKAsyHS55b3JraWUudjEuT3BlcmF0aW9uLlRyZWVFZGl0SAASNAoKdHJlZV9zdHlsZRgKIAEoCzIeLnlvcmtpZS52MS5PcGVyYXRpb24uVHJlZVN0eWxlSAASMgoJYXJyYXlfc2V0GAsgASgLMh0ueW9ya2llLnYxLk9wZXJhdGlvbi5BcnJheVNldEgAGp0BCgNTZXQSMAoRcGFyZW50X2NyZWF0ZWRfYXQYASABKAsyFS55b3JraWUudjEuVGltZVRpY2tldBILCgNrZXkYAiABKAkSKwoFdmFsdWUYAyABKAsyHC55b3JraWUudjEuSlNPTkVsZW1lbnRTaW1wbGUSKgoLZXhlY3V0ZWRfYXQYBCABKAsyFS55b3JraWUudjEuVGltZVRpY2tldBrAAQoDQWRkEjAKEXBhcmVudF9jcmVhdGVkX2F0GAEgASgLMhUueW9ya2llLnYxLlRpbWVUaWNrZXQSLgoPcHJldl9jcmVhdGVkX2F0GAIgASgLMhUueW9ya2llLnYxLlRpbWVUaWNrZXQSKwoFdmFsdWUYAyABKAsyHC55b3JraWUudjEuSlNPTkVsZW1lbnRTaW1wbGUSKgoLZXhlY3V0ZWRfYXQYBCABKAsyFS55b3JraWUudjEuVGltZVRpY2tldBq/AQoETW92ZRIwChFwYXJlbnRfY3JlYXRlZF9hdBgBIAEoCzIVLnlvcmtpZS52MS5UaW1lVGlja2V0Ei4KD3ByZXZfY3JlYXRlZF9hdBgCIAEoCzIVLnlvcmtpZS52MS5UaW1lVGlja2V0EikKCmNyZWF0ZWRfYXQYAyABKAsyFS55b3JraWUudjEuVGltZVRpY2tldBIqCgtleGVjdXRlZF9hdBgEIAEoCzIVLnlvcmtpZS52MS5UaW1lVGlja2V0GpEBCgZSZW1vdmUSMAoRcGFyZW50X2NyZWF0ZWRfYXQYASABKAsyFS55b3JraWUudjEuVGltZVRpY2tldBIpCgpjcmVhdGVkX2F0GAIgASgLMhUueW9ya2llLnYxLlRpbWVUaWNrZXQSKgoLZXhlY3V0ZWRfYXQYAyABKAsyFS55b3JraWUudjEuVGltZVRpY2tldBrZAwoERWRpdBIwChFwYXJlbnRfY3JlYXRlZF9hdBgBIAEoCzIVLnlvcmtpZS52MS5UaW1lVGlja2V0EiQKBGZyb20YAiABKAsyFi55b3JraWUudjEuVGV4dE5vZGVQb3MSIgoCdG8YAyABKAsyFi55b3JraWUudjEuVGV4dE5vZGVQb3MSUwoXY3JlYXRlZF9hdF9tYXBfYnlfYWN0b3IYBCADKAsyMi55b3JraWUudjEuT3BlcmF0aW9uLkVkaXQuQ3JlYXRlZEF0TWFwQnlBY3RvckVudHJ5Eg8KB2NvbnRlbnQYBSABKAkSKgoLZXhlY3V0ZWRfYXQYBiABKAsyFS55b3JraWUudjEuVGltZVRpY2tldBI9CgphdHRyaWJ1dGVzGAcgAygLMikueW9ya2llLnYxLk9wZXJhdGlvbi5FZGl0LkF0dHJpYnV0ZXNFbnRyeRpRChhDcmVhdGVkQXRNYXBCeUFjdG9yRW50cnkSCwoDa2V5GAEgASgJEiQKBXZhbHVlGAIgASgLMhUueW9ya2llLnYxLlRpbWVUaWNrZXQ6AjgBGjEKD0F0dHJpYnV0ZXNFbnRyeRILCgNrZXkYASABKAkSDQoFdmFsdWUYAiABKAk6AjgBGukDCgVTdHlsZRIwChFwYXJlbnRfY3JlYXRlZF9hdBgBIAEoCzIVLnlvcmtpZS52MS5UaW1lVGlja2V0EiQKBGZyb20YAiABKAsyFi55b3JraWUudjEuVGV4dE5vZGVQb3MSIgoCdG8YAyABKAsyFi55b3JraWUudjEuVGV4dE5vZGVQb3MSPgoKYXR0cmlidXRlcxgEIAMoCzIqLnlvcmtpZS52MS5PcGVyYXRpb24uU3R5bGUuQXR0cmlidXRlc0VudHJ5EioKC2V4ZWN1dGVkX2F0GAUgASgLMhUueW9ya2llLnYxLlRpbWVUaWNrZXQSVAoXY3JlYXRlZF9hdF9tYXBfYnlfYWN0b3IYBiADKAsyMy55b3JraWUudjEuT3BlcmF0aW9uLlN0eWxlLkNyZWF0ZWRBdE1hcEJ5QWN0b3JFbnRyeRIcChRhdHRyaWJ1dGVzX3RvX3JlbW92ZRgHIAMoCRoxCg9BdHRyaWJ1dGVzRW50cnkSCwoDa2V5GAEgASgJEg0KBXZhbHVlGAIgASgJOgI4ARpRChhDcmVhdGVkQXRNYXBCeUFjdG9yRW50cnkSCwoDa2V5GAEgASgJEiQKBXZhbHVlGAIgASgLMhUueW9ya2llLnYxLlRpbWVUaWNrZXQ6AjgBGpUBCghJbmNyZWFzZRIwChFwYXJlbnRfY3JlYXRlZF9hdBgBIAEoCzIVLnlvcmtpZS52MS5UaW1lVGlja2V0EisKBXZhbHVlGAIgASgLMhwueW9ya2llLnYxLkpTT05FbGVtZW50U2ltcGxlEioKC2V4ZWN1dGVkX2F0GAMgASgLMhUueW9ya2llLnYxLlRpbWVUaWNrZXQakwMKCFRyZWVFZGl0EjAKEXBhcmVudF9jcmVhdGVkX2F0GAEgASgLMhUueW9ya2llLnYxLlRpbWVUaWNrZXQSIAoEZnJvbRgCIAEoCzISLnlvcmtpZS52MS5UcmVlUG9zEh4KAnRvGAMgASgLMhIueW9ya2llLnYxLlRyZWVQb3MSVwoXY3JlYXRlZF9hdF9tYXBfYnlfYWN0b3IYBCADKAsyNi55b3JraWUudjEuT3BlcmF0aW9uLlRyZWVFZGl0LkNyZWF0ZWRBdE1hcEJ5QWN0b3JFbnRyeRImCghjb250ZW50cxgFIAMoCzIULnlvcmtpZS52MS5UcmVlTm9kZXMSEwoLc3BsaXRfbGV2ZWwYByABKAUSKgoLZXhlY3V0ZWRfYXQYBiABKAsyFS55b3JraWUudjEuVGltZVRpY2tldBpRChhDcmVhdGVkQXRNYXBCeUFjdG9yRW50cnkSCwoDa2V5GAEgASgJEiQKBXZhbHVlGAIgASgLMhUueW9ya2llLnYxLlRpbWVUaWNrZXQ6AjgBGu0DCglUcmVlU3R5bGUSMAoRcGFyZW50X2NyZWF0ZWRfYXQYASABKAsyFS55b3JraWUudjEuVGltZVRpY2tldBIgCgRmcm9tGAIgASgLMhIueW9ya2llLnYxLlRyZWVQb3MSHgoCdG8YAyABKAsyEi55b3JraWUudjEuVHJlZVBvcxJCCgphdHRyaWJ1dGVzGAQgAygLMi4ueW9ya2llLnYxLk9wZXJhdGlvbi5UcmVlU3R5bGUuQXR0cmlidXRlc0VudHJ5EioKC2V4ZWN1dGVkX2F0GAUgASgLMhUueW9ya2llLnYxLlRpbWVUaWNrZXQSHAoUYXR0cmlidXRlc190b19yZW1vdmUYBiADKAkSWAoXY3JlYXRlZF9hdF9tYXBfYnlfYWN0b3IYByADKAsyNy55b3JraWUudjEuT3BlcmF0aW9uLlRyZWVTdHlsZS5DcmVhdGVkQXRNYXBCeUFjdG9yRW50cnkaMQoPQXR0cmlidXRlc0VudHJ5EgsKA2tleRgBIAEoCRINCgV2YWx1ZRgCIAEoCToCOAEaUQoYQ3JlYXRlZEF0TWFwQnlBY3RvckVudHJ5EgsKA2tleRgBIAEoCRIkCgV2YWx1ZRgCIAEoCzIVLnlvcmtpZS52MS5UaW1lVGlja2V0OgI4ARrAAQoIQXJyYXlTZXQSMAoRcGFyZW50X2NyZWF0ZWRfYXQYASABKAsyFS55b3JraWUudjEuVGltZVRpY2tldBIpCgpjcmVhdGVkX2F0GAIgASgLMhUueW9ya2llLnYxLlRpbWVUaWNrZXQSKwoFdmFsdWUYAyABKAsyHC55b3JraWUudjEuSlNPTkVsZW1lbnRTaW1wbGUSKgoLZXhlY3V0ZWRfYXQYBCABKAsyFS55b3JraWUudjEuVGltZVRpY2tldEIGCgRib2R5IsUBChFKU09ORWxlbWVudFNpbXBsZRIpCgpjcmVhdGVkX2F0GAEgASgLMhUueW9ya2llLnYxLlRpbWVUaWNrZXQSJwoIbW92ZWRfYXQYAiABKAsyFS55b3JraWUudjEuVGltZVRpY2tldBIpCgpyZW1vdmVkX2F0GAMgASgLMhUueW9ya2llLnYxLlRpbWVUaWNrZXQSIgoEdHlwZRgEIAEoDjIULnlvcmtpZS52MS5WYWx1ZVR5cGUSDQoFdmFsdWUYBSABKAwiggsKC0pTT05FbGVtZW50EjgKC2pzb25fb2JqZWN0GAEgASgLMiEueW9ya2llLnYxLkpTT05FbGVtZW50LkpTT05PYmplY3RIABI2Cgpqc29uX2FycmF5GAIgASgLMiAueW9ya2llLnYxLkpTT05FbGVtZW50LkpTT05BcnJheUgAEjUKCXByaW1pdGl2ZRgDIAEoCzIgLnlvcmtpZS52MS5KU09ORWxlbWVudC5QcmltaXRpdmVIABIrCgR0ZXh0GAUgASgLMhsueW9ya2llLnYxLkpTT05FbGVtZW50LlRleHRIABIxCgdjb3VudGVyGAYgASgLMh4ueW9ya2llLnYxLkpTT05FbGVtZW50LkNvdW50ZXJIABIrCgR0cmVlGAcgASgLMhsueW9ya2llLnYxLkpTT05FbGVtZW50LlRyZWVIABquAQoKSlNPTk9iamVjdBIhCgVub2RlcxgBIAMoCzISLnlvcmtpZS52MS5SSFROb2RlEikKCmNyZWF0ZWRfYXQYAiABKAsyFS55b3JraWUudjEuVGltZVRpY2tldBInCghtb3ZlZF9hdBgDIAEoCzIVLnlvcmtpZS52MS5UaW1lVGlja2V0EikKCnJlbW92ZWRfYXQYBCABKAsyFS55b3JraWUudjEuVGltZVRpY2tldBqtAQoJSlNPTkFycmF5EiEKBW5vZGVzGAEgAygLMhIueW9ya2llLnYxLlJHQU5vZGUSKQoKY3JlYXRlZF9hdBgCIAEoCzIVLnlvcmtpZS52MS5UaW1lVGlja2V0EicKCG1vdmVkX2F0GAMgASgLMhUueW9ya2llLnYxLlRpbWVUaWNrZXQSKQoKcmVtb3ZlZF9hdBgEIAEoCzIVLnlvcmtpZS52MS5UaW1lVGlja2V0Gr0BCglQcmltaXRpdmUSIgoEdHlwZRgBIAEoDjIULnlvcmtpZS52MS5WYWx1ZVR5cGUSDQoFdmFsdWUYAiABKAwSKQoKY3JlYXRlZF9hdBgDIAEoCzIVLnlvcmtpZS52MS5UaW1lVGlja2V0EicKCG1vdmVkX2F0GAQgASgLMhUueW9ya2llLnYxLlRpbWVUaWNrZXQSKQoKcmVtb3ZlZF9hdBgFIAEoCzIVLnlvcmtpZS52MS5UaW1lVGlja2V0GqkBCgRUZXh0EiIKBW5vZGVzGAEgAygLMhMueW9ya2llLnYxLlRleHROb2RlEikKCmNyZWF0ZWRfYXQYAiABKAsyFS55b3JraWUudjEuVGltZVRpY2tldBInCghtb3ZlZF9hdBgDIAEoCzIVLnlvcmtpZS52MS5UaW1lVGlja2V0EikKCnJlbW92ZWRfYXQYBCABKAsyFS55b3JraWUudjEuVGltZVRpY2tldBq7AQoHQ291bnRlchIiCgR0eXBlGAEgASgOMhQueW9ya2llLnYxLlZhbHVlVHlwZRINCgV2YWx1ZRgCIAEoDBIpCgpjcmVhdGVkX2F0GAMgASgLMhUueW9ya2llLnYxLlRpbWVUaWNrZXQSJwoIbW92ZWRfYXQYBCABKAsyFS55b3JraWUudjEuVGltZVRpY2tldBIpCgpyZW1vdmVkX2F0GAUgASgLMhUueW9ya2llLnYxLlRpbWVUaWNrZXQaqQEKBFRyZWUSIgoFbm9kZXMYASADKAsyEy55b3JraWUudjEuVHJlZU5vZGUSKQoKY3JlYXRlZF9hdBgCIAEoCzIVLnlvcmtpZS52MS5UaW1lVGlja2V0EicKCG1vdmVkX2F0GAMgASgLMhUueW9ya2llLnYxLlRpbWVUaWNrZXQSKQoKcmVtb3ZlZF9hdBgEIAEoCzIVLnlvcmtpZS52MS5UaW1lVGlja2V0QgYKBGJvZHkiPwoHUkhUTm9kZRILCgNrZXkYASABKAkSJwoHZWxlbWVudBgCIAEoCzIWLnlvcmtpZS52MS5KU09ORWxlbWVudCJUCgdSR0FOb2RlEiAKBG5leHQYASABKAsyEi55b3JraWUudjEuUkdBTm9kZRInCgdlbGVtZW50GAIgASgLMhYueW9ya2llLnYxLkpTT05FbGVtZW50IlgKCE5vZGVBdHRyEg0KBXZhbHVlGAEgASgJEikKCnVwZGF0ZWRfYXQYAiABKAsyFS55b3JraWUudjEuVGltZVRpY2tldBISCgppc19yZW1vdmVkGAMgASgIIpQCCghUZXh0Tm9kZRIhCgJpZBgBIAEoCzIVLnlvcmtpZS52MS5UZXh0Tm9kZUlEEg0KBXZhbHVlGAIgASgJEikKCnJlbW92ZWRfYXQYAyABKAsyFS55b3JraWUudjEuVGltZVRpY2tldBIqCgtpbnNfcHJldl9pZBgEIAEoCzIVLnlvcmtpZS52MS5UZXh0Tm9kZUlEEjcKCmF0dHJpYnV0ZXMYBSADKAsyIy55b3JraWUudjEuVGV4dE5vZGUuQXR0cmlidXRlc0VudHJ5GkYKD0F0dHJpYnV0ZXNFbnRyeRILCgNrZXkYASABKAkSIgoFdmFsdWUYAiABKAsyEy55b3JraWUudjEuTm9kZUF0dHI6AjgBIkcKClRleHROb2RlSUQSKQoKY3JlYXRlZF9hdBgBIAEoCzIVLnlvcmtpZS52MS5UaW1lVGlja2V0Eg4KBm9mZnNldBgCIAEoBSKzAwoIVHJlZU5vZGUSIQoCaWQYASABKAsyFS55b3JraWUudjEuVHJlZU5vZGVJRBIMCgR0eXBlGAIgASgJEg0KBXZhbHVlGAMgASgJEikKCnJlbW92ZWRfYXQYBCABKAsyFS55b3JraWUudjEuVGltZVRpY2tldBIqCgtpbnNfcHJldl9pZBgFIAEoCzIVLnlvcmtpZS52MS5UcmVlTm9kZUlEEioKC2luc19uZXh0X2lkGAYgASgLMhUueW9ya2llLnYxLlRyZWVOb2RlSUQSDQoFZGVwdGgYByABKAUSNwoKYXR0cmlidXRlcxgIIAMoCzIjLnlvcmtpZS52MS5UcmVlTm9kZS5BdHRyaWJ1dGVzRW50cnkSKgoLbWVyZ2VkX2Zyb20YCSABKAsyFS55b3JraWUudjEuVHJlZU5vZGVJRBIoCgltZXJnZWRfYXQYCiABKAsyFS55b3JraWUudjEuVGltZVRpY2tldBpGCg9BdHRyaWJ1dGVzRW50cnkSCwoDa2V5GAEgASgJEiIKBXZhbHVlGAIgASgLMhMueW9ya2llLnYxLk5vZGVBdHRyOgI4ASIxCglUcmVlTm9kZXMSJAoHY29udGVudBgBIAMoCzITLnlvcmtpZS52MS5UcmVlTm9kZSJHCgpUcmVlTm9kZUlEEikKCmNyZWF0ZWRfYXQYASABKAsyFS55b3JraWUudjEuVGltZVRpY2tldBIOCgZvZmZzZXQYAiABKAUiYwoHVHJlZVBvcxIoCglwYXJlbnRfaWQYASABKAsyFS55b3JraWUudjEuVHJlZU5vZGVJRBIuCg9sZWZ0X3NpYmxpbmdfaWQYAiABKAsyFS55b3JraWUudjEuVHJlZU5vZGVJRCJrCgRVc2VyEgoKAmlkGAEgASgJEhUKDWF1dGhfcHJvdmlkZXIYAiABKAkSEAoIdXNlcm5hbWUYAyABKAkSLgoKY3JlYXRlZF9hdBgEIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXAiiQEKBk1lbWJlchIKCgJpZBgBIAEoCRISCgpwcm9qZWN0X2lkGAIgASgJEg8KB3VzZXJfaWQYAyABKAkSEAoIdXNlcm5hbWUYBCABKAkSDAoEcm9sZRgFIAEoCRIuCgppbnZpdGVkX2F0GAYgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcCLpBgoHUHJvamVjdBIKCgJpZBgBIAEoCRIMCgRuYW1lGAIgASgJEhIKCnB1YmxpY19rZXkYAyABKAkSEgoKc2VjcmV0X2tleRgEIAEoCRIYChBhdXRoX3dlYmhvb2tfdXJsGAUgASgJEhwKFGF1dGhfd2ViaG9va19tZXRob2RzGAYgAygJEiAKGGF1dGhfd2ViaG9va19tYXhfcmV0cmllcxgRIAEoBBImCh5hdXRoX3dlYmhvb2tfbWluX3dhaXRfaW50ZXJ2YWwYEiABKAkSJgoeYXV0aF93ZWJob29rX21heF93YWl0X2ludGVydmFsGBMgASgJEiQKHGF1dGhfd2ViaG9va19yZXF1ZXN0X3RpbWVvdXQYFCABKAkSGQoRZXZlbnRfd2ViaG9va191cmwYByABKAkSHAoUZXZlbnRfd2ViaG9va19ldmVudHMYCCADKAkSIQoZZXZlbnRfd2ViaG9va19tYXhfcmV0cmllcxgVIAEoBBInCh9ldmVudF93ZWJob29rX21pbl93YWl0X2ludGVydmFsGBYgASgJEicKH2V2ZW50X3dlYmhvb2tfbWF4X3dhaXRfaW50ZXJ2YWwYFyABKAkSJQodZXZlbnRfd2ViaG9va19yZXF1ZXN0X3RpbWVvdXQYGCABKAkSIwobY2xpZW50X2RlYWN0aXZhdGVfdGhyZXNob2xkGAkgASgJEhoKEnNuYXBzaG90X3RocmVzaG9sZBgZIAEoAxIZChFzbmFwc2hvdF9pbnRlcnZhbBgaIAEoAxIkChxtYXhfc3Vic2NyaWJlcnNfcGVyX2RvY3VtZW50GAogASgFEiQKHG1heF9hdHRhY2htZW50c19wZXJfZG9jdW1lbnQYCyABKAUSHQoVbWF4X3NpemVfcGVyX2RvY3VtZW50GA8gASgFEhgKEHJlbW92ZV9vbl9kZXRhY2gYECABKAgSHQoVYXV0b19yZXZpc2lvbl9lbmFibGVkGBsgASgIEhcKD2FsbG93ZWRfb3JpZ2lucxgOIAMoCRIuCgpjcmVhdGVkX2F0GAwgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcBIuCgp1cGRhdGVkX2F0GA0gASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcCIvCgtNZXRyaWNQb2ludBIRCgl0aW1lc3RhbXAYASABKAMSDQoFdmFsdWUYAiABKAUiowwKFlVwZGF0YWJsZVByb2plY3RGaWVsZHMSKgoEbmFtZRgBIAEoCzIcLmdvb2dsZS5wcm90b2J1Zi5TdHJpbmdWYWx1ZRI2ChBhdXRoX3dlYmhvb2tfdXJsGAIgASgLMhwuZ29vZ2xlLnByb3RvYnVmLlN0cmluZ1ZhbHVlElIKFGF1dGhfd2ViaG9va19tZXRob2RzGAMgASgLMjQueW9ya2llLnYxLlVwZGF0YWJsZVByb2plY3RGaWVsZHMuQXV0aFdlYmhvb2tNZXRob2RzEj4KGGF1dGhfd2ViaG9va19tYXhfcmV0cmllcxgMIAEoCzIcLmdvb2dsZS5wcm90b2J1Zi5VSW50NjRWYWx1ZRJECh5hdXRoX3dlYmhvb2tfbWluX3dhaXRfaW50ZXJ2YWwYDSABKAsyHC5nb29nbGUucHJvdG9idWYuU3RyaW5nVmFsdWUSRAoeYXV0aF93ZWJob29rX21heF93YWl0X2ludGVydmFsGA4gASgLMhwuZ29vZ2xlLnByb3RvYnVmLlN0cmluZ1ZhbHVlEkIKHGF1dGhfd2ViaG9va19yZXF1ZXN0X3RpbWVvdXQYDyABKAsyHC5nb29nbGUucHJvdG9idWYuU3RyaW5nVmFsdWUSNwoRZXZlbnRfd2ViaG9va191cmwYBCABKAsyHC5nb29nbGUucHJvdG9idWYuU3RyaW5nVmFsdWUSUgoUZXZlbnRfd2ViaG9va19ldmVudHMYBSABKAsyNC55b3JraWUudjEuVXBkYXRhYmxlUHJvamVjdEZpZWxkcy5FdmVudFdlYmhvb2tFdmVudHMSPwoZZXZlbnRfd2ViaG9va19tYXhfcmV0cmllcxgQIAEoCzIcLmdvb2dsZS5wcm90b2J1Zi5VSW50NjRWYWx1ZRJFCh9ldmVudF93ZWJob29rX21pbl93YWl0X2ludGVydmFsGBEgASgLMhwuZ29vZ2xlLnByb3RvYnVmLlN0cmluZ1ZhbHVlEkUKH2V2ZW50X3dlYmhvb2tfbWF4X3dhaXRfaW50ZXJ2YWwYEiABKAsyHC5nb29nbGUucHJvdG9idWYuU3RyaW5nVmFsdWUSQwodZXZlbnRfd2ViaG9va19yZXF1ZXN0X3RpbWVvdXQYEyABKAsyHC5nb29nbGUucHJvdG9idWYuU3RyaW5nVmFsdWUSNwoSc25hcHNob3RfdGhyZXNob2xkGBQgASgLMhsuZ29vZ2xlLnByb3RvYnVmLkludDY0VmFsdWUSNgoRc25hcHNob3RfaW50ZXJ2YWwYFSABKAsyGy5nb29nbGUucHJvdG9idWYuSW50NjRWYWx1ZRJBChtjbGllbnRfZGVhY3RpdmF0ZV90aHJlc2hvbGQYBiABKAsyHC5nb29nbGUucHJvdG9idWYuU3RyaW5nVmFsdWUSQQocbWF4X3N1YnNjcmliZXJzX3Blcl9kb2N1bWVudBgHIAEoCzIbLmdvb2dsZS5wcm90b2J1Zi5JbnQzMlZhbHVlEkEKHG1heF9hdHRhY2htZW50c19wZXJfZG9jdW1lbnQYCCABKAsyGy5nb29nbGUucHJvdG9idWYuSW50MzJWYWx1ZRI6ChVtYXhfc2l6ZV9wZXJfZG9jdW1lbnQYCiABKAsyGy5nb29nbGUucHJvdG9idWYuSW50MzJWYWx1ZRI0ChByZW1vdmVfb25fZGV0YWNoGAsgASgLMhouZ29vZ2xlLnByb3RvYnVmLkJvb2xWYWx1ZRI5ChVhdXRvX3JldmlzaW9uX2VuYWJsZWQYFiABKAsyGi5nb29nbGUucHJvdG9idWYuQm9vbFZhbHVlEkkKD2FsbG93ZWRfb3JpZ2lucxgJIAEoCzIwLnlvcmtpZS52MS5VcGRhdGFibGVQcm9qZWN0RmllbGRzLkFsbG93ZWRPcmlnaW5zGiUKEkF1dGhXZWJob29rTWV0aG9kcxIPCgdtZXRob2RzGAEgAygJGiQKEkV2ZW50V2ViaG9va0V2ZW50cxIOCgZldmVudHMYASADKAkaIQoOQWxsb3dlZE9yaWdpbnMSDwoHb3JpZ2lucxgBIAMoCSKnAwoPRG9jdW1lbnRTdW1tYXJ5EgoKAmlkGAEgASgJEgsKA2tleRgCIAEoCRIMCgRyb290GAMgASgJEhgKEGF0dGFjaGVkX2NsaWVudHMYByABKAUSKQoNZG9jdW1lbnRfc2l6ZRgIIAEoCzISLnlvcmtpZS52MS5Eb2NTaXplEhIKCnNjaGVtYV9rZXkYCSABKAkSPAoJcHJlc2VuY2VzGAogAygLMikueW9ya2llLnYxLkRvY3VtZW50U3VtbWFyeS5QcmVzZW5jZXNFbnRyeRIuCgpjcmVhdGVkX2F0GAQgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcBIvCgthY2Nlc3NlZF9hdBgFIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXASLgoKdXBkYXRlZF9hdBgGIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXAaRQoOUHJlc2VuY2VzRW50cnkSCwoDa2V5GAEgASgJEiIKBXZhbHVlGAIgASgLMhMueW9ya2llLnYxLlByZXNlbmNlOgI4ASLaAQoOUHJlc2VuY2VDaGFuZ2USMgoEdHlwZRgBIAEoDjIkLnlvcmtpZS52MS5QcmVzZW5jZUNoYW5nZS5DaGFuZ2VUeXBlEiUKCHByZXNlbmNlGAIgASgLMhMueW9ya2llLnYxLlByZXNlbmNlIm0KCkNoYW5nZVR5cGUSGwoXQ0hBTkdFX1RZUEVfVU5TUEVDSUZJRUQQABITCg9DSEFOR0VfVFlQRV9QVVQQARIWChJDSEFOR0VfVFlQRV9ERUxFVEUQAhIVChFDSEFOR0VfVFlQRV9DTEVBUhADImQKCFByZXNlbmNlEisKBGRhdGEYASADKAsyHS55b3JraWUudjEuUHJlc2VuY2UuRGF0YUVudHJ5GisKCURhdGFFbnRyeRILCgNrZXkYASABKAkSDQoFdmFsdWUYAiABKAk6AjgBIjQKDkNoYW5uZWxTdW1tYXJ5EgsKA2tleRgBIAEoCRIVCg1zZXNzaW9uX2NvdW50GAIgASgFIjQKCkNoZWNrcG9pbnQSEgoKc2VydmVyX3NlcRgBIAEoAxISCgpjbGllbnRfc2VxGAIgASgNImEKC1RleHROb2RlUG9zEikKCmNyZWF0ZWRfYXQYASABKAsyFS55b3JraWUudjEuVGltZVRpY2tldBIOCgZvZmZzZXQYAiABKAUSFwoPcmVsYXRpdmVfb2Zmc2V0GAMgASgFIkIKClRpbWVUaWNrZXQSDwoHbGFtcG9ydBgBIAEoAxIRCglkZWxpbWl0ZXIYAiABKA0SEAoIYWN0b3JfaWQYAyABKAwiLgoMRG9jRXZlbnRCb2R5Eg0KBXRvcGljGAEgASgJEg8KB3BheWxvYWQYAiABKAwiawoIRG9jRXZlbnQSJQoEdHlwZRgBIAEoDjIXLnlvcmtpZS52MS5Eb2NFdmVudFR5cGUSEQoJcHVibGlzaGVyGAIgASgJEiUKBGJvZHkYAyABKAsyFy55b3JraWUudjEuRG9jRXZlbnRCb2R5ItYBCgxDaGFubmVsRXZlbnQSKgoEdHlwZRgBIAEoDjIcLnlvcmtpZS52MS5DaGFubmVsRXZlbnQuVHlwZRIRCglwdWJsaXNoZXIYAiABKAkSFQoNc2Vzc2lvbl9jb3VudBgDIAEoAxILCgNzZXEYBCABKAMSDQoFdG9waWMYBSABKAkSDwoHcGF5bG9hZBgGIAEoDCJDCgRUeXBlEhQKEFRZUEVfVU5TUEVDSUZJRUQQABIRCg1UWVBFX1BSRVNFTkNFEAESEgoOVFlQRV9CUk9BRENBU1QQAiImCghEYXRhU2l6ZRIMCgRkYXRhGAEgASgFEgwKBG1ldGEYAiABKAUiTQoHRG9jU2l6ZRIhCgRsaXZlGAEgASgLMhMueW9ya2llLnYxLkRhdGFTaXplEh8KAmdjGAIgASgLMhMueW9ya2llLnYxLkRhdGFTaXplIpEBCgZTY2hlbWESCgoCaWQYASABKAkSDAoEbmFtZRgCIAEoCRIPCgd2ZXJzaW9uGAMgASgFEgwKBGJvZHkYBCABKAkSHgoFcnVsZXMYBSADKAsyDy55b3JraWUudjEuUnVsZRIuCgpjcmVhdGVkX2F0GAYgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcCJQCgxUcmVlTm9kZVJ1bGUSEQoJbm9kZV90eXBlGAEgASgJEg8KB2NvbnRlbnQYAiABKAkSDQoFbWFya3MYAyABKAkSDQoFZ3JvdXAYBCABKAkiTwoEUnVsZRIMCgRwYXRoGAEgASgJEgwKBHR5cGUYAiABKAkSKwoKdHJlZV9ub2RlcxgDIAMoCzIXLnlvcmtpZS52MS5UcmVlTm9kZVJ1bGUigwEKD1JldmlzaW9uU3VtbWFyeRIKCgJpZBgBIAEoCRINCgVsYWJlbBgCIAEoCRITCgtkZXNjcmlwdGlvbhgDIAEoCRIQCghzbmFwc2hvdBgEIAEoCRIuCgpjcmVhdGVkX2F0GAUgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcCrUAgoJVmFsdWVUeXBlEhMKD1ZBTFVFX1RZUEVfTlVMTBAAEhYKElZBTFVFX1RZUEVfQk9PTEVBThABEhYKElZBTFVFX1RZUEVfSU5URUdFUhACEhMKD1ZBTFVFX1RZUEVfTE9ORxADEhUKEVZBTFVFX1RZUEVfRE9VQkxFEAQSFQoRVkFMVUVfVFlQRV9TVFJJTkcQBRIUChBWQUxVRV9UWVBFX0JZVEVTEAYSEwoPVkFMVUVfVFlQRV9EQVRFEAcSGgoWVkFMVUVfVFlQRV9KU09OX09CSkVDVBAIEhkKFVZBTFVFX1RZUEVfSlNPTl9BUlJBWRAJEhMKD1ZBTFVFX1RZUEVfVEVYVBAKEhoKFlZBTFVFX1RZUEVfSU5URUdFUl9DTlQQCxIXChNWQUxVRV9UWVBFX0xPTkdfQ05UEAwSEwoPVkFMVUVfVFlQRV9UUkVFEA0qpgEKDERvY0V2ZW50VHlwZRIjCh9ET0NfRVZFTlRfVFlQRV9ET0NVTUVOVF9DSEFOR0VEEAASIwofRE9DX0VWRU5UX1RZUEVfRE9DVU1FTlRfV0FUQ0hFRBABEiUKIURPQ19FVkVOVF9UWVBFX0RPQ1VNRU5UX1VOV0FUQ0hFRBACEiUKIURPQ19FVkVOVF9UWVBFX0RPQ1VNRU5UX0JST0FEQ0FTVBADQkUKEWRldi55b3JraWUuYXBpLnYxUAFaLmdpdGh1Yi5jb20veW9ya2llLXRlYW0veW9ya2llL2FwaS95b3JraWUvdjE7djFiBnByb3RvMw", [file_google_protobuf_timestamp, file_google_protobuf_wrappers]);
|
|
5793
|
+
const file_src_api_yorkie_v1_resources = /* @__PURE__ */ fileDesc("CiFzcmMvYXBpL3lvcmtpZS92MS9yZXNvdXJjZXMucHJvdG8SCXlvcmtpZS52MSKuAQoIU25hcHNob3QSJAoEcm9vdBgBIAEoCzIWLnlvcmtpZS52MS5KU09ORWxlbWVudBI1CglwcmVzZW5jZXMYAiADKAsyIi55b3JraWUudjEuU25hcHNob3QuUHJlc2VuY2VzRW50cnkaRQoOUHJlc2VuY2VzRW50cnkSCwoDa2V5GAEgASgJEiIKBXZhbHVlGAIgASgLMhMueW9ya2llLnYxLlByZXNlbmNlOgI4ASL7AQoKQ2hhbmdlUGFjaxIUCgxkb2N1bWVudF9rZXkYASABKAkSKQoKY2hlY2twb2ludBgCIAEoCzIVLnlvcmtpZS52MS5DaGVja3BvaW50EhAKCHNuYXBzaG90GAMgASgMEiIKB2NoYW5nZXMYBCADKAsyES55b3JraWUudjEuQ2hhbmdlEjAKEW1pbl9zeW5jZWRfdGlja2V0GAUgASgLMhUueW9ya2llLnYxLlRpbWVUaWNrZXQSEgoKaXNfcmVtb3ZlZBgGIAEoCBIwCg52ZXJzaW9uX3ZlY3RvchgHIAEoCzIYLnlvcmtpZS52MS5WZXJzaW9uVmVjdG9yIpgBCgZDaGFuZ2USHwoCaWQYASABKAsyEy55b3JraWUudjEuQ2hhbmdlSUQSDwoHbWVzc2FnZRgCIAEoCRIoCgpvcGVyYXRpb25zGAMgAygLMhQueW9ya2llLnYxLk9wZXJhdGlvbhIyCg9wcmVzZW5jZV9jaGFuZ2UYBCABKAsyGS55b3JraWUudjEuUHJlc2VuY2VDaGFuZ2UihwEKCENoYW5nZUlEEhIKCmNsaWVudF9zZXEYASABKA0SEgoKc2VydmVyX3NlcRgCIAEoAxIPCgdsYW1wb3J0GAMgASgDEhAKCGFjdG9yX2lkGAQgASgMEjAKDnZlcnNpb25fdmVjdG9yGAUgASgLMhgueW9ya2llLnYxLlZlcnNpb25WZWN0b3IidAoNVmVyc2lvblZlY3RvchI0CgZ2ZWN0b3IYASADKAsyJC55b3JraWUudjEuVmVyc2lvblZlY3Rvci5WZWN0b3JFbnRyeRotCgtWZWN0b3JFbnRyeRILCgNrZXkYASABKAkSDQoFdmFsdWUYAiABKAM6AjgBItkaCglPcGVyYXRpb24SJwoDc2V0GAEgASgLMhgueW9ya2llLnYxLk9wZXJhdGlvbi5TZXRIABInCgNhZGQYAiABKAsyGC55b3JraWUudjEuT3BlcmF0aW9uLkFkZEgAEikKBG1vdmUYAyABKAsyGS55b3JraWUudjEuT3BlcmF0aW9uLk1vdmVIABItCgZyZW1vdmUYBCABKAsyGy55b3JraWUudjEuT3BlcmF0aW9uLlJlbW92ZUgAEikKBGVkaXQYBSABKAsyGS55b3JraWUudjEuT3BlcmF0aW9uLkVkaXRIABIrCgVzdHlsZRgHIAEoCzIaLnlvcmtpZS52MS5PcGVyYXRpb24uU3R5bGVIABIxCghpbmNyZWFzZRgIIAEoCzIdLnlvcmtpZS52MS5PcGVyYXRpb24uSW5jcmVhc2VIABIyCgl0cmVlX2VkaXQYCSABKAsyHS55b3JraWUudjEuT3BlcmF0aW9uLlRyZWVFZGl0SAASNAoKdHJlZV9zdHlsZRgKIAEoCzIeLnlvcmtpZS52MS5PcGVyYXRpb24uVHJlZVN0eWxlSAASMgoJYXJyYXlfc2V0GAsgASgLMh0ueW9ya2llLnYxLk9wZXJhdGlvbi5BcnJheVNldEgAGp0BCgNTZXQSMAoRcGFyZW50X2NyZWF0ZWRfYXQYASABKAsyFS55b3JraWUudjEuVGltZVRpY2tldBILCgNrZXkYAiABKAkSKwoFdmFsdWUYAyABKAsyHC55b3JraWUudjEuSlNPTkVsZW1lbnRTaW1wbGUSKgoLZXhlY3V0ZWRfYXQYBCABKAsyFS55b3JraWUudjEuVGltZVRpY2tldBrAAQoDQWRkEjAKEXBhcmVudF9jcmVhdGVkX2F0GAEgASgLMhUueW9ya2llLnYxLlRpbWVUaWNrZXQSLgoPcHJldl9jcmVhdGVkX2F0GAIgASgLMhUueW9ya2llLnYxLlRpbWVUaWNrZXQSKwoFdmFsdWUYAyABKAsyHC55b3JraWUudjEuSlNPTkVsZW1lbnRTaW1wbGUSKgoLZXhlY3V0ZWRfYXQYBCABKAsyFS55b3JraWUudjEuVGltZVRpY2tldBq/AQoETW92ZRIwChFwYXJlbnRfY3JlYXRlZF9hdBgBIAEoCzIVLnlvcmtpZS52MS5UaW1lVGlja2V0Ei4KD3ByZXZfY3JlYXRlZF9hdBgCIAEoCzIVLnlvcmtpZS52MS5UaW1lVGlja2V0EikKCmNyZWF0ZWRfYXQYAyABKAsyFS55b3JraWUudjEuVGltZVRpY2tldBIqCgtleGVjdXRlZF9hdBgEIAEoCzIVLnlvcmtpZS52MS5UaW1lVGlja2V0GpEBCgZSZW1vdmUSMAoRcGFyZW50X2NyZWF0ZWRfYXQYASABKAsyFS55b3JraWUudjEuVGltZVRpY2tldBIpCgpjcmVhdGVkX2F0GAIgASgLMhUueW9ya2llLnYxLlRpbWVUaWNrZXQSKgoLZXhlY3V0ZWRfYXQYAyABKAsyFS55b3JraWUudjEuVGltZVRpY2tldBrZAwoERWRpdBIwChFwYXJlbnRfY3JlYXRlZF9hdBgBIAEoCzIVLnlvcmtpZS52MS5UaW1lVGlja2V0EiQKBGZyb20YAiABKAsyFi55b3JraWUudjEuVGV4dE5vZGVQb3MSIgoCdG8YAyABKAsyFi55b3JraWUudjEuVGV4dE5vZGVQb3MSUwoXY3JlYXRlZF9hdF9tYXBfYnlfYWN0b3IYBCADKAsyMi55b3JraWUudjEuT3BlcmF0aW9uLkVkaXQuQ3JlYXRlZEF0TWFwQnlBY3RvckVudHJ5Eg8KB2NvbnRlbnQYBSABKAkSKgoLZXhlY3V0ZWRfYXQYBiABKAsyFS55b3JraWUudjEuVGltZVRpY2tldBI9CgphdHRyaWJ1dGVzGAcgAygLMikueW9ya2llLnYxLk9wZXJhdGlvbi5FZGl0LkF0dHJpYnV0ZXNFbnRyeRpRChhDcmVhdGVkQXRNYXBCeUFjdG9yRW50cnkSCwoDa2V5GAEgASgJEiQKBXZhbHVlGAIgASgLMhUueW9ya2llLnYxLlRpbWVUaWNrZXQ6AjgBGjEKD0F0dHJpYnV0ZXNFbnRyeRILCgNrZXkYASABKAkSDQoFdmFsdWUYAiABKAk6AjgBGukDCgVTdHlsZRIwChFwYXJlbnRfY3JlYXRlZF9hdBgBIAEoCzIVLnlvcmtpZS52MS5UaW1lVGlja2V0EiQKBGZyb20YAiABKAsyFi55b3JraWUudjEuVGV4dE5vZGVQb3MSIgoCdG8YAyABKAsyFi55b3JraWUudjEuVGV4dE5vZGVQb3MSPgoKYXR0cmlidXRlcxgEIAMoCzIqLnlvcmtpZS52MS5PcGVyYXRpb24uU3R5bGUuQXR0cmlidXRlc0VudHJ5EioKC2V4ZWN1dGVkX2F0GAUgASgLMhUueW9ya2llLnYxLlRpbWVUaWNrZXQSVAoXY3JlYXRlZF9hdF9tYXBfYnlfYWN0b3IYBiADKAsyMy55b3JraWUudjEuT3BlcmF0aW9uLlN0eWxlLkNyZWF0ZWRBdE1hcEJ5QWN0b3JFbnRyeRIcChRhdHRyaWJ1dGVzX3RvX3JlbW92ZRgHIAMoCRoxCg9BdHRyaWJ1dGVzRW50cnkSCwoDa2V5GAEgASgJEg0KBXZhbHVlGAIgASgJOgI4ARpRChhDcmVhdGVkQXRNYXBCeUFjdG9yRW50cnkSCwoDa2V5GAEgASgJEiQKBXZhbHVlGAIgASgLMhUueW9ya2llLnYxLlRpbWVUaWNrZXQ6AjgBGqQBCghJbmNyZWFzZRIwChFwYXJlbnRfY3JlYXRlZF9hdBgBIAEoCzIVLnlvcmtpZS52MS5UaW1lVGlja2V0EisKBXZhbHVlGAIgASgLMhwueW9ya2llLnYxLkpTT05FbGVtZW50U2ltcGxlEioKC2V4ZWN1dGVkX2F0GAMgASgLMhUueW9ya2llLnYxLlRpbWVUaWNrZXQSDQoFYWN0b3IYBCABKAkakwMKCFRyZWVFZGl0EjAKEXBhcmVudF9jcmVhdGVkX2F0GAEgASgLMhUueW9ya2llLnYxLlRpbWVUaWNrZXQSIAoEZnJvbRgCIAEoCzISLnlvcmtpZS52MS5UcmVlUG9zEh4KAnRvGAMgASgLMhIueW9ya2llLnYxLlRyZWVQb3MSVwoXY3JlYXRlZF9hdF9tYXBfYnlfYWN0b3IYBCADKAsyNi55b3JraWUudjEuT3BlcmF0aW9uLlRyZWVFZGl0LkNyZWF0ZWRBdE1hcEJ5QWN0b3JFbnRyeRImCghjb250ZW50cxgFIAMoCzIULnlvcmtpZS52MS5UcmVlTm9kZXMSEwoLc3BsaXRfbGV2ZWwYByABKAUSKgoLZXhlY3V0ZWRfYXQYBiABKAsyFS55b3JraWUudjEuVGltZVRpY2tldBpRChhDcmVhdGVkQXRNYXBCeUFjdG9yRW50cnkSCwoDa2V5GAEgASgJEiQKBXZhbHVlGAIgASgLMhUueW9ya2llLnYxLlRpbWVUaWNrZXQ6AjgBGu0DCglUcmVlU3R5bGUSMAoRcGFyZW50X2NyZWF0ZWRfYXQYASABKAsyFS55b3JraWUudjEuVGltZVRpY2tldBIgCgRmcm9tGAIgASgLMhIueW9ya2llLnYxLlRyZWVQb3MSHgoCdG8YAyABKAsyEi55b3JraWUudjEuVHJlZVBvcxJCCgphdHRyaWJ1dGVzGAQgAygLMi4ueW9ya2llLnYxLk9wZXJhdGlvbi5UcmVlU3R5bGUuQXR0cmlidXRlc0VudHJ5EioKC2V4ZWN1dGVkX2F0GAUgASgLMhUueW9ya2llLnYxLlRpbWVUaWNrZXQSHAoUYXR0cmlidXRlc190b19yZW1vdmUYBiADKAkSWAoXY3JlYXRlZF9hdF9tYXBfYnlfYWN0b3IYByADKAsyNy55b3JraWUudjEuT3BlcmF0aW9uLlRyZWVTdHlsZS5DcmVhdGVkQXRNYXBCeUFjdG9yRW50cnkaMQoPQXR0cmlidXRlc0VudHJ5EgsKA2tleRgBIAEoCRINCgV2YWx1ZRgCIAEoCToCOAEaUQoYQ3JlYXRlZEF0TWFwQnlBY3RvckVudHJ5EgsKA2tleRgBIAEoCRIkCgV2YWx1ZRgCIAEoCzIVLnlvcmtpZS52MS5UaW1lVGlja2V0OgI4ARrAAQoIQXJyYXlTZXQSMAoRcGFyZW50X2NyZWF0ZWRfYXQYASABKAsyFS55b3JraWUudjEuVGltZVRpY2tldBIpCgpjcmVhdGVkX2F0GAIgASgLMhUueW9ya2llLnYxLlRpbWVUaWNrZXQSKwoFdmFsdWUYAyABKAsyHC55b3JraWUudjEuSlNPTkVsZW1lbnRTaW1wbGUSKgoLZXhlY3V0ZWRfYXQYBCABKAsyFS55b3JraWUudjEuVGltZVRpY2tldEIGCgRib2R5IsUBChFKU09ORWxlbWVudFNpbXBsZRIpCgpjcmVhdGVkX2F0GAEgASgLMhUueW9ya2llLnYxLlRpbWVUaWNrZXQSJwoIbW92ZWRfYXQYAiABKAsyFS55b3JraWUudjEuVGltZVRpY2tldBIpCgpyZW1vdmVkX2F0GAMgASgLMhUueW9ya2llLnYxLlRpbWVUaWNrZXQSIgoEdHlwZRgEIAEoDjIULnlvcmtpZS52MS5WYWx1ZVR5cGUSDQoFdmFsdWUYBSABKAwinwsKC0pTT05FbGVtZW50EjgKC2pzb25fb2JqZWN0GAEgASgLMiEueW9ya2llLnYxLkpTT05FbGVtZW50LkpTT05PYmplY3RIABI2Cgpqc29uX2FycmF5GAIgASgLMiAueW9ya2llLnYxLkpTT05FbGVtZW50LkpTT05BcnJheUgAEjUKCXByaW1pdGl2ZRgDIAEoCzIgLnlvcmtpZS52MS5KU09ORWxlbWVudC5QcmltaXRpdmVIABIrCgR0ZXh0GAUgASgLMhsueW9ya2llLnYxLkpTT05FbGVtZW50LlRleHRIABIxCgdjb3VudGVyGAYgASgLMh4ueW9ya2llLnYxLkpTT05FbGVtZW50LkNvdW50ZXJIABIrCgR0cmVlGAcgASgLMhsueW9ya2llLnYxLkpTT05FbGVtZW50LlRyZWVIABquAQoKSlNPTk9iamVjdBIhCgVub2RlcxgBIAMoCzISLnlvcmtpZS52MS5SSFROb2RlEikKCmNyZWF0ZWRfYXQYAiABKAsyFS55b3JraWUudjEuVGltZVRpY2tldBInCghtb3ZlZF9hdBgDIAEoCzIVLnlvcmtpZS52MS5UaW1lVGlja2V0EikKCnJlbW92ZWRfYXQYBCABKAsyFS55b3JraWUudjEuVGltZVRpY2tldBqtAQoJSlNPTkFycmF5EiEKBW5vZGVzGAEgAygLMhIueW9ya2llLnYxLlJHQU5vZGUSKQoKY3JlYXRlZF9hdBgCIAEoCzIVLnlvcmtpZS52MS5UaW1lVGlja2V0EicKCG1vdmVkX2F0GAMgASgLMhUueW9ya2llLnYxLlRpbWVUaWNrZXQSKQoKcmVtb3ZlZF9hdBgEIAEoCzIVLnlvcmtpZS52MS5UaW1lVGlja2V0Gr0BCglQcmltaXRpdmUSIgoEdHlwZRgBIAEoDjIULnlvcmtpZS52MS5WYWx1ZVR5cGUSDQoFdmFsdWUYAiABKAwSKQoKY3JlYXRlZF9hdBgDIAEoCzIVLnlvcmtpZS52MS5UaW1lVGlja2V0EicKCG1vdmVkX2F0GAQgASgLMhUueW9ya2llLnYxLlRpbWVUaWNrZXQSKQoKcmVtb3ZlZF9hdBgFIAEoCzIVLnlvcmtpZS52MS5UaW1lVGlja2V0GqkBCgRUZXh0EiIKBW5vZGVzGAEgAygLMhMueW9ya2llLnYxLlRleHROb2RlEikKCmNyZWF0ZWRfYXQYAiABKAsyFS55b3JraWUudjEuVGltZVRpY2tldBInCghtb3ZlZF9hdBgDIAEoCzIVLnlvcmtpZS52MS5UaW1lVGlja2V0EikKCnJlbW92ZWRfYXQYBCABKAsyFS55b3JraWUudjEuVGltZVRpY2tldBrYAQoHQ291bnRlchIiCgR0eXBlGAEgASgOMhQueW9ya2llLnYxLlZhbHVlVHlwZRINCgV2YWx1ZRgCIAEoDBIpCgpjcmVhdGVkX2F0GAMgASgLMhUueW9ya2llLnYxLlRpbWVUaWNrZXQSJwoIbW92ZWRfYXQYBCABKAsyFS55b3JraWUudjEuVGltZVRpY2tldBIpCgpyZW1vdmVkX2F0GAUgASgLMhUueW9ya2llLnYxLlRpbWVUaWNrZXQSFQoNaGxsX3JlZ2lzdGVycxgHIAEoDEoECAYQBxqpAQoEVHJlZRIiCgVub2RlcxgBIAMoCzITLnlvcmtpZS52MS5UcmVlTm9kZRIpCgpjcmVhdGVkX2F0GAIgASgLMhUueW9ya2llLnYxLlRpbWVUaWNrZXQSJwoIbW92ZWRfYXQYAyABKAsyFS55b3JraWUudjEuVGltZVRpY2tldBIpCgpyZW1vdmVkX2F0GAQgASgLMhUueW9ya2llLnYxLlRpbWVUaWNrZXRCBgoEYm9keSI/CgdSSFROb2RlEgsKA2tleRgBIAEoCRInCgdlbGVtZW50GAIgASgLMhYueW9ya2llLnYxLkpTT05FbGVtZW50IlQKB1JHQU5vZGUSIAoEbmV4dBgBIAEoCzISLnlvcmtpZS52MS5SR0FOb2RlEicKB2VsZW1lbnQYAiABKAsyFi55b3JraWUudjEuSlNPTkVsZW1lbnQiWAoITm9kZUF0dHISDQoFdmFsdWUYASABKAkSKQoKdXBkYXRlZF9hdBgCIAEoCzIVLnlvcmtpZS52MS5UaW1lVGlja2V0EhIKCmlzX3JlbW92ZWQYAyABKAgilAIKCFRleHROb2RlEiEKAmlkGAEgASgLMhUueW9ya2llLnYxLlRleHROb2RlSUQSDQoFdmFsdWUYAiABKAkSKQoKcmVtb3ZlZF9hdBgDIAEoCzIVLnlvcmtpZS52MS5UaW1lVGlja2V0EioKC2luc19wcmV2X2lkGAQgASgLMhUueW9ya2llLnYxLlRleHROb2RlSUQSNwoKYXR0cmlidXRlcxgFIAMoCzIjLnlvcmtpZS52MS5UZXh0Tm9kZS5BdHRyaWJ1dGVzRW50cnkaRgoPQXR0cmlidXRlc0VudHJ5EgsKA2tleRgBIAEoCRIiCgV2YWx1ZRgCIAEoCzITLnlvcmtpZS52MS5Ob2RlQXR0cjoCOAEiRwoKVGV4dE5vZGVJRBIpCgpjcmVhdGVkX2F0GAEgASgLMhUueW9ya2llLnYxLlRpbWVUaWNrZXQSDgoGb2Zmc2V0GAIgASgFIrMDCghUcmVlTm9kZRIhCgJpZBgBIAEoCzIVLnlvcmtpZS52MS5UcmVlTm9kZUlEEgwKBHR5cGUYAiABKAkSDQoFdmFsdWUYAyABKAkSKQoKcmVtb3ZlZF9hdBgEIAEoCzIVLnlvcmtpZS52MS5UaW1lVGlja2V0EioKC2luc19wcmV2X2lkGAUgASgLMhUueW9ya2llLnYxLlRyZWVOb2RlSUQSKgoLaW5zX25leHRfaWQYBiABKAsyFS55b3JraWUudjEuVHJlZU5vZGVJRBINCgVkZXB0aBgHIAEoBRI3CgphdHRyaWJ1dGVzGAggAygLMiMueW9ya2llLnYxLlRyZWVOb2RlLkF0dHJpYnV0ZXNFbnRyeRIqCgttZXJnZWRfZnJvbRgJIAEoCzIVLnlvcmtpZS52MS5UcmVlTm9kZUlEEigKCW1lcmdlZF9hdBgKIAEoCzIVLnlvcmtpZS52MS5UaW1lVGlja2V0GkYKD0F0dHJpYnV0ZXNFbnRyeRILCgNrZXkYASABKAkSIgoFdmFsdWUYAiABKAsyEy55b3JraWUudjEuTm9kZUF0dHI6AjgBIjEKCVRyZWVOb2RlcxIkCgdjb250ZW50GAEgAygLMhMueW9ya2llLnYxLlRyZWVOb2RlIkcKClRyZWVOb2RlSUQSKQoKY3JlYXRlZF9hdBgBIAEoCzIVLnlvcmtpZS52MS5UaW1lVGlja2V0Eg4KBm9mZnNldBgCIAEoBSJjCgdUcmVlUG9zEigKCXBhcmVudF9pZBgBIAEoCzIVLnlvcmtpZS52MS5UcmVlTm9kZUlEEi4KD2xlZnRfc2libGluZ19pZBgCIAEoCzIVLnlvcmtpZS52MS5UcmVlTm9kZUlEImsKBFVzZXISCgoCaWQYASABKAkSFQoNYXV0aF9wcm92aWRlchgCIAEoCRIQCgh1c2VybmFtZRgDIAEoCRIuCgpjcmVhdGVkX2F0GAQgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcCKJAQoGTWVtYmVyEgoKAmlkGAEgASgJEhIKCnByb2plY3RfaWQYAiABKAkSDwoHdXNlcl9pZBgDIAEoCRIQCgh1c2VybmFtZRgEIAEoCRIMCgRyb2xlGAUgASgJEi4KCmludml0ZWRfYXQYBiABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wIukGCgdQcm9qZWN0EgoKAmlkGAEgASgJEgwKBG5hbWUYAiABKAkSEgoKcHVibGljX2tleRgDIAEoCRISCgpzZWNyZXRfa2V5GAQgASgJEhgKEGF1dGhfd2ViaG9va191cmwYBSABKAkSHAoUYXV0aF93ZWJob29rX21ldGhvZHMYBiADKAkSIAoYYXV0aF93ZWJob29rX21heF9yZXRyaWVzGBEgASgEEiYKHmF1dGhfd2ViaG9va19taW5fd2FpdF9pbnRlcnZhbBgSIAEoCRImCh5hdXRoX3dlYmhvb2tfbWF4X3dhaXRfaW50ZXJ2YWwYEyABKAkSJAocYXV0aF93ZWJob29rX3JlcXVlc3RfdGltZW91dBgUIAEoCRIZChFldmVudF93ZWJob29rX3VybBgHIAEoCRIcChRldmVudF93ZWJob29rX2V2ZW50cxgIIAMoCRIhChlldmVudF93ZWJob29rX21heF9yZXRyaWVzGBUgASgEEicKH2V2ZW50X3dlYmhvb2tfbWluX3dhaXRfaW50ZXJ2YWwYFiABKAkSJwofZXZlbnRfd2ViaG9va19tYXhfd2FpdF9pbnRlcnZhbBgXIAEoCRIlCh1ldmVudF93ZWJob29rX3JlcXVlc3RfdGltZW91dBgYIAEoCRIjChtjbGllbnRfZGVhY3RpdmF0ZV90aHJlc2hvbGQYCSABKAkSGgoSc25hcHNob3RfdGhyZXNob2xkGBkgASgDEhkKEXNuYXBzaG90X2ludGVydmFsGBogASgDEiQKHG1heF9zdWJzY3JpYmVyc19wZXJfZG9jdW1lbnQYCiABKAUSJAocbWF4X2F0dGFjaG1lbnRzX3Blcl9kb2N1bWVudBgLIAEoBRIdChVtYXhfc2l6ZV9wZXJfZG9jdW1lbnQYDyABKAUSGAoQcmVtb3ZlX29uX2RldGFjaBgQIAEoCBIdChVhdXRvX3JldmlzaW9uX2VuYWJsZWQYGyABKAgSFwoPYWxsb3dlZF9vcmlnaW5zGA4gAygJEi4KCmNyZWF0ZWRfYXQYDCABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wEi4KCnVwZGF0ZWRfYXQYDSABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wIi8KC01ldHJpY1BvaW50EhEKCXRpbWVzdGFtcBgBIAEoAxINCgV2YWx1ZRgCIAEoBSKjDAoWVXBkYXRhYmxlUHJvamVjdEZpZWxkcxIqCgRuYW1lGAEgASgLMhwuZ29vZ2xlLnByb3RvYnVmLlN0cmluZ1ZhbHVlEjYKEGF1dGhfd2ViaG9va191cmwYAiABKAsyHC5nb29nbGUucHJvdG9idWYuU3RyaW5nVmFsdWUSUgoUYXV0aF93ZWJob29rX21ldGhvZHMYAyABKAsyNC55b3JraWUudjEuVXBkYXRhYmxlUHJvamVjdEZpZWxkcy5BdXRoV2ViaG9va01ldGhvZHMSPgoYYXV0aF93ZWJob29rX21heF9yZXRyaWVzGAwgASgLMhwuZ29vZ2xlLnByb3RvYnVmLlVJbnQ2NFZhbHVlEkQKHmF1dGhfd2ViaG9va19taW5fd2FpdF9pbnRlcnZhbBgNIAEoCzIcLmdvb2dsZS5wcm90b2J1Zi5TdHJpbmdWYWx1ZRJECh5hdXRoX3dlYmhvb2tfbWF4X3dhaXRfaW50ZXJ2YWwYDiABKAsyHC5nb29nbGUucHJvdG9idWYuU3RyaW5nVmFsdWUSQgocYXV0aF93ZWJob29rX3JlcXVlc3RfdGltZW91dBgPIAEoCzIcLmdvb2dsZS5wcm90b2J1Zi5TdHJpbmdWYWx1ZRI3ChFldmVudF93ZWJob29rX3VybBgEIAEoCzIcLmdvb2dsZS5wcm90b2J1Zi5TdHJpbmdWYWx1ZRJSChRldmVudF93ZWJob29rX2V2ZW50cxgFIAEoCzI0LnlvcmtpZS52MS5VcGRhdGFibGVQcm9qZWN0RmllbGRzLkV2ZW50V2ViaG9va0V2ZW50cxI/ChlldmVudF93ZWJob29rX21heF9yZXRyaWVzGBAgASgLMhwuZ29vZ2xlLnByb3RvYnVmLlVJbnQ2NFZhbHVlEkUKH2V2ZW50X3dlYmhvb2tfbWluX3dhaXRfaW50ZXJ2YWwYESABKAsyHC5nb29nbGUucHJvdG9idWYuU3RyaW5nVmFsdWUSRQofZXZlbnRfd2ViaG9va19tYXhfd2FpdF9pbnRlcnZhbBgSIAEoCzIcLmdvb2dsZS5wcm90b2J1Zi5TdHJpbmdWYWx1ZRJDCh1ldmVudF93ZWJob29rX3JlcXVlc3RfdGltZW91dBgTIAEoCzIcLmdvb2dsZS5wcm90b2J1Zi5TdHJpbmdWYWx1ZRI3ChJzbmFwc2hvdF90aHJlc2hvbGQYFCABKAsyGy5nb29nbGUucHJvdG9idWYuSW50NjRWYWx1ZRI2ChFzbmFwc2hvdF9pbnRlcnZhbBgVIAEoCzIbLmdvb2dsZS5wcm90b2J1Zi5JbnQ2NFZhbHVlEkEKG2NsaWVudF9kZWFjdGl2YXRlX3RocmVzaG9sZBgGIAEoCzIcLmdvb2dsZS5wcm90b2J1Zi5TdHJpbmdWYWx1ZRJBChxtYXhfc3Vic2NyaWJlcnNfcGVyX2RvY3VtZW50GAcgASgLMhsuZ29vZ2xlLnByb3RvYnVmLkludDMyVmFsdWUSQQocbWF4X2F0dGFjaG1lbnRzX3Blcl9kb2N1bWVudBgIIAEoCzIbLmdvb2dsZS5wcm90b2J1Zi5JbnQzMlZhbHVlEjoKFW1heF9zaXplX3Blcl9kb2N1bWVudBgKIAEoCzIbLmdvb2dsZS5wcm90b2J1Zi5JbnQzMlZhbHVlEjQKEHJlbW92ZV9vbl9kZXRhY2gYCyABKAsyGi5nb29nbGUucHJvdG9idWYuQm9vbFZhbHVlEjkKFWF1dG9fcmV2aXNpb25fZW5hYmxlZBgWIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5Cb29sVmFsdWUSSQoPYWxsb3dlZF9vcmlnaW5zGAkgASgLMjAueW9ya2llLnYxLlVwZGF0YWJsZVByb2plY3RGaWVsZHMuQWxsb3dlZE9yaWdpbnMaJQoSQXV0aFdlYmhvb2tNZXRob2RzEg8KB21ldGhvZHMYASADKAkaJAoSRXZlbnRXZWJob29rRXZlbnRzEg4KBmV2ZW50cxgBIAMoCRohCg5BbGxvd2VkT3JpZ2lucxIPCgdvcmlnaW5zGAEgAygJIqcDCg9Eb2N1bWVudFN1bW1hcnkSCgoCaWQYASABKAkSCwoDa2V5GAIgASgJEgwKBHJvb3QYAyABKAkSGAoQYXR0YWNoZWRfY2xpZW50cxgHIAEoBRIpCg1kb2N1bWVudF9zaXplGAggASgLMhIueW9ya2llLnYxLkRvY1NpemUSEgoKc2NoZW1hX2tleRgJIAEoCRI8CglwcmVzZW5jZXMYCiADKAsyKS55b3JraWUudjEuRG9jdW1lbnRTdW1tYXJ5LlByZXNlbmNlc0VudHJ5Ei4KCmNyZWF0ZWRfYXQYBCABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wEi8KC2FjY2Vzc2VkX2F0GAUgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcBIuCgp1cGRhdGVkX2F0GAYgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcBpFCg5QcmVzZW5jZXNFbnRyeRILCgNrZXkYASABKAkSIgoFdmFsdWUYAiABKAsyEy55b3JraWUudjEuUHJlc2VuY2U6AjgBItoBCg5QcmVzZW5jZUNoYW5nZRIyCgR0eXBlGAEgASgOMiQueW9ya2llLnYxLlByZXNlbmNlQ2hhbmdlLkNoYW5nZVR5cGUSJQoIcHJlc2VuY2UYAiABKAsyEy55b3JraWUudjEuUHJlc2VuY2UibQoKQ2hhbmdlVHlwZRIbChdDSEFOR0VfVFlQRV9VTlNQRUNJRklFRBAAEhMKD0NIQU5HRV9UWVBFX1BVVBABEhYKEkNIQU5HRV9UWVBFX0RFTEVURRACEhUKEUNIQU5HRV9UWVBFX0NMRUFSEAMiZAoIUHJlc2VuY2USKwoEZGF0YRgBIAMoCzIdLnlvcmtpZS52MS5QcmVzZW5jZS5EYXRhRW50cnkaKwoJRGF0YUVudHJ5EgsKA2tleRgBIAEoCRINCgV2YWx1ZRgCIAEoCToCOAEiNAoOQ2hhbm5lbFN1bW1hcnkSCwoDa2V5GAEgASgJEhUKDXNlc3Npb25fY291bnQYAiABKAUiNAoKQ2hlY2twb2ludBISCgpzZXJ2ZXJfc2VxGAEgASgDEhIKCmNsaWVudF9zZXEYAiABKA0iYQoLVGV4dE5vZGVQb3MSKQoKY3JlYXRlZF9hdBgBIAEoCzIVLnlvcmtpZS52MS5UaW1lVGlja2V0Eg4KBm9mZnNldBgCIAEoBRIXCg9yZWxhdGl2ZV9vZmZzZXQYAyABKAUiQgoKVGltZVRpY2tldBIPCgdsYW1wb3J0GAEgASgDEhEKCWRlbGltaXRlchgCIAEoDRIQCghhY3Rvcl9pZBgDIAEoDCIuCgxEb2NFdmVudEJvZHkSDQoFdG9waWMYASABKAkSDwoHcGF5bG9hZBgCIAEoDCJrCghEb2NFdmVudBIlCgR0eXBlGAEgASgOMhcueW9ya2llLnYxLkRvY0V2ZW50VHlwZRIRCglwdWJsaXNoZXIYAiABKAkSJQoEYm9keRgDIAEoCzIXLnlvcmtpZS52MS5Eb2NFdmVudEJvZHki1gEKDENoYW5uZWxFdmVudBIqCgR0eXBlGAEgASgOMhwueW9ya2llLnYxLkNoYW5uZWxFdmVudC5UeXBlEhEKCXB1Ymxpc2hlchgCIAEoCRIVCg1zZXNzaW9uX2NvdW50GAMgASgDEgsKA3NlcRgEIAEoAxINCgV0b3BpYxgFIAEoCRIPCgdwYXlsb2FkGAYgASgMIkMKBFR5cGUSFAoQVFlQRV9VTlNQRUNJRklFRBAAEhEKDVRZUEVfUFJFU0VOQ0UQARISCg5UWVBFX0JST0FEQ0FTVBACIiYKCERhdGFTaXplEgwKBGRhdGEYASABKAUSDAoEbWV0YRgCIAEoBSJNCgdEb2NTaXplEiEKBGxpdmUYASABKAsyEy55b3JraWUudjEuRGF0YVNpemUSHwoCZ2MYAiABKAsyEy55b3JraWUudjEuRGF0YVNpemUikQEKBlNjaGVtYRIKCgJpZBgBIAEoCRIMCgRuYW1lGAIgASgJEg8KB3ZlcnNpb24YAyABKAUSDAoEYm9keRgEIAEoCRIeCgVydWxlcxgFIAMoCzIPLnlvcmtpZS52MS5SdWxlEi4KCmNyZWF0ZWRfYXQYBiABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wIlAKDFRyZWVOb2RlUnVsZRIRCglub2RlX3R5cGUYASABKAkSDwoHY29udGVudBgCIAEoCRINCgVtYXJrcxgDIAEoCRINCgVncm91cBgEIAEoCSJPCgRSdWxlEgwKBHBhdGgYASABKAkSDAoEdHlwZRgCIAEoCRIrCgp0cmVlX25vZGVzGAMgAygLMhcueW9ya2llLnYxLlRyZWVOb2RlUnVsZSKDAQoPUmV2aXNpb25TdW1tYXJ5EgoKAmlkGAEgASgJEg0KBWxhYmVsGAIgASgJEhMKC2Rlc2NyaXB0aW9uGAMgASgJEhAKCHNuYXBzaG90GAQgASgJEi4KCmNyZWF0ZWRfYXQYBSABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wKvwCCglWYWx1ZVR5cGUSEwoPVkFMVUVfVFlQRV9OVUxMEAASFgoSVkFMVUVfVFlQRV9CT09MRUFOEAESFgoSVkFMVUVfVFlQRV9JTlRFR0VSEAISEwoPVkFMVUVfVFlQRV9MT05HEAMSFQoRVkFMVUVfVFlQRV9ET1VCTEUQBBIVChFWQUxVRV9UWVBFX1NUUklORxAFEhQKEFZBTFVFX1RZUEVfQllURVMQBhITCg9WQUxVRV9UWVBFX0RBVEUQBxIaChZWQUxVRV9UWVBFX0pTT05fT0JKRUNUEAgSGQoVVkFMVUVfVFlQRV9KU09OX0FSUkFZEAkSEwoPVkFMVUVfVFlQRV9URVhUEAoSGgoWVkFMVUVfVFlQRV9JTlRFR0VSX0NOVBALEhcKE1ZBTFVFX1RZUEVfTE9OR19DTlQQDBITCg9WQUxVRV9UWVBFX1RSRUUQDRIgChxWQUxVRV9UWVBFX0lOVEVHRVJfREVEVVBfQ05UEA4iBAgPEA8qpgEKDERvY0V2ZW50VHlwZRIjCh9ET0NfRVZFTlRfVFlQRV9ET0NVTUVOVF9DSEFOR0VEEAASIwofRE9DX0VWRU5UX1RZUEVfRE9DVU1FTlRfV0FUQ0hFRBABEiUKIURPQ19FVkVOVF9UWVBFX0RPQ1VNRU5UX1VOV0FUQ0hFRBACEiUKIURPQ19FVkVOVF9UWVBFX0RPQ1VNRU5UX0JST0FEQ0FTVBADQkUKEWRldi55b3JraWUuYXBpLnYxUAFaLmdpdGh1Yi5jb20veW9ya2llLXRlYW0veW9ya2llL2FwaS95b3JraWUvdjE7djFiBnByb3RvMw", [file_google_protobuf_timestamp, file_google_protobuf_wrappers]);
|
|
5399
5794
|
const SnapshotSchema = /* @__PURE__ */ messageDesc(file_src_api_yorkie_v1_resources, 0);
|
|
5400
5795
|
const ChangePackSchema = /* @__PURE__ */ messageDesc(file_src_api_yorkie_v1_resources, 1);
|
|
5401
5796
|
const ChangeSchema = /* @__PURE__ */ messageDesc(file_src_api_yorkie_v1_resources, 2);
|
|
@@ -5462,6 +5857,7 @@ var ValueType = /* @__PURE__ */ ((ValueType2) => {
|
|
|
5462
5857
|
ValueType2[ValueType2["INTEGER_CNT"] = 11] = "INTEGER_CNT";
|
|
5463
5858
|
ValueType2[ValueType2["LONG_CNT"] = 12] = "LONG_CNT";
|
|
5464
5859
|
ValueType2[ValueType2["TREE"] = 13] = "TREE";
|
|
5860
|
+
ValueType2[ValueType2["INTEGER_DEDUP_CNT"] = 14] = "INTEGER_DEDUP_CNT";
|
|
5465
5861
|
return ValueType2;
|
|
5466
5862
|
})(ValueType || {});
|
|
5467
5863
|
var DocEventType$1 = /* @__PURE__ */ ((DocEventType2) => {
|
|
@@ -5618,9 +6014,9 @@ class TimeTicket {
|
|
|
5618
6014
|
} else if (other.lamport > this.lamport) {
|
|
5619
6015
|
return -1;
|
|
5620
6016
|
}
|
|
5621
|
-
const
|
|
5622
|
-
if (
|
|
5623
|
-
return
|
|
6017
|
+
const compare = this.actorID.localeCompare(other.actorID);
|
|
6018
|
+
if (compare !== 0) {
|
|
6019
|
+
return compare;
|
|
5624
6020
|
}
|
|
5625
6021
|
if (this.delimiter > other.delimiter) {
|
|
5626
6022
|
return 1;
|
|
@@ -6608,928 +7004,37 @@ class SplayTree {
|
|
|
6608
7004
|
}
|
|
6609
7005
|
isRightChild(node) {
|
|
6610
7006
|
if (node && node.hasParent()) {
|
|
6611
|
-
return node.getParent().getRight() === node;
|
|
6612
|
-
}
|
|
6613
|
-
return false;
|
|
6614
|
-
}
|
|
6615
|
-
}
|
|
6616
|
-
var wasm = null;
|
|
6617
|
-
try {
|
|
6618
|
-
wasm = new WebAssembly.Instance(
|
|
6619
|
-
new WebAssembly.Module(
|
|
6620
|
-
new Uint8Array([
|
|
6621
|
-
// \0asm
|
|
6622
|
-
0,
|
|
6623
|
-
97,
|
|
6624
|
-
115,
|
|
6625
|
-
109,
|
|
6626
|
-
// version 1
|
|
6627
|
-
1,
|
|
6628
|
-
0,
|
|
6629
|
-
0,
|
|
6630
|
-
0,
|
|
6631
|
-
// section "type"
|
|
6632
|
-
1,
|
|
6633
|
-
13,
|
|
6634
|
-
2,
|
|
6635
|
-
// 0, () => i32
|
|
6636
|
-
96,
|
|
6637
|
-
0,
|
|
6638
|
-
1,
|
|
6639
|
-
127,
|
|
6640
|
-
// 1, (i32, i32, i32, i32) => i32
|
|
6641
|
-
96,
|
|
6642
|
-
4,
|
|
6643
|
-
127,
|
|
6644
|
-
127,
|
|
6645
|
-
127,
|
|
6646
|
-
127,
|
|
6647
|
-
1,
|
|
6648
|
-
127,
|
|
6649
|
-
// section "function"
|
|
6650
|
-
3,
|
|
6651
|
-
7,
|
|
6652
|
-
6,
|
|
6653
|
-
// 0, type 0
|
|
6654
|
-
0,
|
|
6655
|
-
// 1, type 1
|
|
6656
|
-
1,
|
|
6657
|
-
// 2, type 1
|
|
6658
|
-
1,
|
|
6659
|
-
// 3, type 1
|
|
6660
|
-
1,
|
|
6661
|
-
// 4, type 1
|
|
6662
|
-
1,
|
|
6663
|
-
// 5, type 1
|
|
6664
|
-
1,
|
|
6665
|
-
// section "global"
|
|
6666
|
-
6,
|
|
6667
|
-
6,
|
|
6668
|
-
1,
|
|
6669
|
-
// 0, "high", mutable i32
|
|
6670
|
-
127,
|
|
6671
|
-
1,
|
|
6672
|
-
65,
|
|
6673
|
-
0,
|
|
6674
|
-
11,
|
|
6675
|
-
// section "export"
|
|
6676
|
-
7,
|
|
6677
|
-
50,
|
|
6678
|
-
6,
|
|
6679
|
-
// 0, "mul"
|
|
6680
|
-
3,
|
|
6681
|
-
109,
|
|
6682
|
-
117,
|
|
6683
|
-
108,
|
|
6684
|
-
0,
|
|
6685
|
-
1,
|
|
6686
|
-
// 1, "div_s"
|
|
6687
|
-
5,
|
|
6688
|
-
100,
|
|
6689
|
-
105,
|
|
6690
|
-
118,
|
|
6691
|
-
95,
|
|
6692
|
-
115,
|
|
6693
|
-
0,
|
|
6694
|
-
2,
|
|
6695
|
-
// 2, "div_u"
|
|
6696
|
-
5,
|
|
6697
|
-
100,
|
|
6698
|
-
105,
|
|
6699
|
-
118,
|
|
6700
|
-
95,
|
|
6701
|
-
117,
|
|
6702
|
-
0,
|
|
6703
|
-
3,
|
|
6704
|
-
// 3, "rem_s"
|
|
6705
|
-
5,
|
|
6706
|
-
114,
|
|
6707
|
-
101,
|
|
6708
|
-
109,
|
|
6709
|
-
95,
|
|
6710
|
-
115,
|
|
6711
|
-
0,
|
|
6712
|
-
4,
|
|
6713
|
-
// 4, "rem_u"
|
|
6714
|
-
5,
|
|
6715
|
-
114,
|
|
6716
|
-
101,
|
|
6717
|
-
109,
|
|
6718
|
-
95,
|
|
6719
|
-
117,
|
|
6720
|
-
0,
|
|
6721
|
-
5,
|
|
6722
|
-
// 5, "get_high"
|
|
6723
|
-
8,
|
|
6724
|
-
103,
|
|
6725
|
-
101,
|
|
6726
|
-
116,
|
|
6727
|
-
95,
|
|
6728
|
-
104,
|
|
6729
|
-
105,
|
|
6730
|
-
103,
|
|
6731
|
-
104,
|
|
6732
|
-
0,
|
|
6733
|
-
0,
|
|
6734
|
-
// section "code"
|
|
6735
|
-
10,
|
|
6736
|
-
191,
|
|
6737
|
-
1,
|
|
6738
|
-
6,
|
|
6739
|
-
// 0, "get_high"
|
|
6740
|
-
4,
|
|
6741
|
-
0,
|
|
6742
|
-
35,
|
|
6743
|
-
0,
|
|
6744
|
-
11,
|
|
6745
|
-
// 1, "mul"
|
|
6746
|
-
36,
|
|
6747
|
-
1,
|
|
6748
|
-
1,
|
|
6749
|
-
126,
|
|
6750
|
-
32,
|
|
6751
|
-
0,
|
|
6752
|
-
173,
|
|
6753
|
-
32,
|
|
6754
|
-
1,
|
|
6755
|
-
173,
|
|
6756
|
-
66,
|
|
6757
|
-
32,
|
|
6758
|
-
134,
|
|
6759
|
-
132,
|
|
6760
|
-
32,
|
|
6761
|
-
2,
|
|
6762
|
-
173,
|
|
6763
|
-
32,
|
|
6764
|
-
3,
|
|
6765
|
-
173,
|
|
6766
|
-
66,
|
|
6767
|
-
32,
|
|
6768
|
-
134,
|
|
6769
|
-
132,
|
|
6770
|
-
126,
|
|
6771
|
-
34,
|
|
6772
|
-
4,
|
|
6773
|
-
66,
|
|
6774
|
-
32,
|
|
6775
|
-
135,
|
|
6776
|
-
167,
|
|
6777
|
-
36,
|
|
6778
|
-
0,
|
|
6779
|
-
32,
|
|
6780
|
-
4,
|
|
6781
|
-
167,
|
|
6782
|
-
11,
|
|
6783
|
-
// 2, "div_s"
|
|
6784
|
-
36,
|
|
6785
|
-
1,
|
|
6786
|
-
1,
|
|
6787
|
-
126,
|
|
6788
|
-
32,
|
|
6789
|
-
0,
|
|
6790
|
-
173,
|
|
6791
|
-
32,
|
|
6792
|
-
1,
|
|
6793
|
-
173,
|
|
6794
|
-
66,
|
|
6795
|
-
32,
|
|
6796
|
-
134,
|
|
6797
|
-
132,
|
|
6798
|
-
32,
|
|
6799
|
-
2,
|
|
6800
|
-
173,
|
|
6801
|
-
32,
|
|
6802
|
-
3,
|
|
6803
|
-
173,
|
|
6804
|
-
66,
|
|
6805
|
-
32,
|
|
6806
|
-
134,
|
|
6807
|
-
132,
|
|
6808
|
-
127,
|
|
6809
|
-
34,
|
|
6810
|
-
4,
|
|
6811
|
-
66,
|
|
6812
|
-
32,
|
|
6813
|
-
135,
|
|
6814
|
-
167,
|
|
6815
|
-
36,
|
|
6816
|
-
0,
|
|
6817
|
-
32,
|
|
6818
|
-
4,
|
|
6819
|
-
167,
|
|
6820
|
-
11,
|
|
6821
|
-
// 3, "div_u"
|
|
6822
|
-
36,
|
|
6823
|
-
1,
|
|
6824
|
-
1,
|
|
6825
|
-
126,
|
|
6826
|
-
32,
|
|
6827
|
-
0,
|
|
6828
|
-
173,
|
|
6829
|
-
32,
|
|
6830
|
-
1,
|
|
6831
|
-
173,
|
|
6832
|
-
66,
|
|
6833
|
-
32,
|
|
6834
|
-
134,
|
|
6835
|
-
132,
|
|
6836
|
-
32,
|
|
6837
|
-
2,
|
|
6838
|
-
173,
|
|
6839
|
-
32,
|
|
6840
|
-
3,
|
|
6841
|
-
173,
|
|
6842
|
-
66,
|
|
6843
|
-
32,
|
|
6844
|
-
134,
|
|
6845
|
-
132,
|
|
6846
|
-
128,
|
|
6847
|
-
34,
|
|
6848
|
-
4,
|
|
6849
|
-
66,
|
|
6850
|
-
32,
|
|
6851
|
-
135,
|
|
6852
|
-
167,
|
|
6853
|
-
36,
|
|
6854
|
-
0,
|
|
6855
|
-
32,
|
|
6856
|
-
4,
|
|
6857
|
-
167,
|
|
6858
|
-
11,
|
|
6859
|
-
// 4, "rem_s"
|
|
6860
|
-
36,
|
|
6861
|
-
1,
|
|
6862
|
-
1,
|
|
6863
|
-
126,
|
|
6864
|
-
32,
|
|
6865
|
-
0,
|
|
6866
|
-
173,
|
|
6867
|
-
32,
|
|
6868
|
-
1,
|
|
6869
|
-
173,
|
|
6870
|
-
66,
|
|
6871
|
-
32,
|
|
6872
|
-
134,
|
|
6873
|
-
132,
|
|
6874
|
-
32,
|
|
6875
|
-
2,
|
|
6876
|
-
173,
|
|
6877
|
-
32,
|
|
6878
|
-
3,
|
|
6879
|
-
173,
|
|
6880
|
-
66,
|
|
6881
|
-
32,
|
|
6882
|
-
134,
|
|
6883
|
-
132,
|
|
6884
|
-
129,
|
|
6885
|
-
34,
|
|
6886
|
-
4,
|
|
6887
|
-
66,
|
|
6888
|
-
32,
|
|
6889
|
-
135,
|
|
6890
|
-
167,
|
|
6891
|
-
36,
|
|
6892
|
-
0,
|
|
6893
|
-
32,
|
|
6894
|
-
4,
|
|
6895
|
-
167,
|
|
6896
|
-
11,
|
|
6897
|
-
// 5, "rem_u"
|
|
6898
|
-
36,
|
|
6899
|
-
1,
|
|
6900
|
-
1,
|
|
6901
|
-
126,
|
|
6902
|
-
32,
|
|
6903
|
-
0,
|
|
6904
|
-
173,
|
|
6905
|
-
32,
|
|
6906
|
-
1,
|
|
6907
|
-
173,
|
|
6908
|
-
66,
|
|
6909
|
-
32,
|
|
6910
|
-
134,
|
|
6911
|
-
132,
|
|
6912
|
-
32,
|
|
6913
|
-
2,
|
|
6914
|
-
173,
|
|
6915
|
-
32,
|
|
6916
|
-
3,
|
|
6917
|
-
173,
|
|
6918
|
-
66,
|
|
6919
|
-
32,
|
|
6920
|
-
134,
|
|
6921
|
-
132,
|
|
6922
|
-
130,
|
|
6923
|
-
34,
|
|
6924
|
-
4,
|
|
6925
|
-
66,
|
|
6926
|
-
32,
|
|
6927
|
-
135,
|
|
6928
|
-
167,
|
|
6929
|
-
36,
|
|
6930
|
-
0,
|
|
6931
|
-
32,
|
|
6932
|
-
4,
|
|
6933
|
-
167,
|
|
6934
|
-
11
|
|
6935
|
-
])
|
|
6936
|
-
),
|
|
6937
|
-
{}
|
|
6938
|
-
).exports;
|
|
6939
|
-
} catch {
|
|
6940
|
-
}
|
|
6941
|
-
function Long(low, high, unsigned) {
|
|
6942
|
-
this.low = low | 0;
|
|
6943
|
-
this.high = high | 0;
|
|
6944
|
-
this.unsigned = !!unsigned;
|
|
6945
|
-
}
|
|
6946
|
-
Long.prototype.__isLong__;
|
|
6947
|
-
Object.defineProperty(Long.prototype, "__isLong__", { value: true });
|
|
6948
|
-
function isLong$1(obj) {
|
|
6949
|
-
return (obj && obj["__isLong__"]) === true;
|
|
6950
|
-
}
|
|
6951
|
-
function ctz32(value) {
|
|
6952
|
-
var c = Math.clz32(value & -value);
|
|
6953
|
-
return value ? 31 - c : c;
|
|
6954
|
-
}
|
|
6955
|
-
Long.isLong = isLong$1;
|
|
6956
|
-
var INT_CACHE = {};
|
|
6957
|
-
var UINT_CACHE = {};
|
|
6958
|
-
function fromInt(value, unsigned) {
|
|
6959
|
-
var obj, cachedObj, cache;
|
|
6960
|
-
if (unsigned) {
|
|
6961
|
-
value >>>= 0;
|
|
6962
|
-
if (cache = 0 <= value && value < 256) {
|
|
6963
|
-
cachedObj = UINT_CACHE[value];
|
|
6964
|
-
if (cachedObj) return cachedObj;
|
|
6965
|
-
}
|
|
6966
|
-
obj = fromBits(value, 0, true);
|
|
6967
|
-
if (cache) UINT_CACHE[value] = obj;
|
|
6968
|
-
return obj;
|
|
6969
|
-
} else {
|
|
6970
|
-
value |= 0;
|
|
6971
|
-
if (cache = -128 <= value && value < 128) {
|
|
6972
|
-
cachedObj = INT_CACHE[value];
|
|
6973
|
-
if (cachedObj) return cachedObj;
|
|
6974
|
-
}
|
|
6975
|
-
obj = fromBits(value, value < 0 ? -1 : 0, false);
|
|
6976
|
-
if (cache) INT_CACHE[value] = obj;
|
|
6977
|
-
return obj;
|
|
6978
|
-
}
|
|
6979
|
-
}
|
|
6980
|
-
Long.fromInt = fromInt;
|
|
6981
|
-
function fromNumber(value, unsigned) {
|
|
6982
|
-
if (isNaN(value)) return unsigned ? UZERO : ZERO;
|
|
6983
|
-
if (unsigned) {
|
|
6984
|
-
if (value < 0) return UZERO;
|
|
6985
|
-
if (value >= TWO_PWR_64_DBL) return MAX_UNSIGNED_VALUE;
|
|
6986
|
-
} else {
|
|
6987
|
-
if (value <= -TWO_PWR_63_DBL) return MIN_VALUE;
|
|
6988
|
-
if (value + 1 >= TWO_PWR_63_DBL) return MAX_VALUE;
|
|
6989
|
-
}
|
|
6990
|
-
if (value < 0) return fromNumber(-value, unsigned).neg();
|
|
6991
|
-
return fromBits(
|
|
6992
|
-
value % TWO_PWR_32_DBL | 0,
|
|
6993
|
-
value / TWO_PWR_32_DBL | 0,
|
|
6994
|
-
unsigned
|
|
6995
|
-
);
|
|
6996
|
-
}
|
|
6997
|
-
Long.fromNumber = fromNumber;
|
|
6998
|
-
function fromBits(lowBits, highBits, unsigned) {
|
|
6999
|
-
return new Long(lowBits, highBits, unsigned);
|
|
7000
|
-
}
|
|
7001
|
-
Long.fromBits = fromBits;
|
|
7002
|
-
var pow_dbl = Math.pow;
|
|
7003
|
-
function fromString(str, unsigned, radix) {
|
|
7004
|
-
if (str.length === 0) throw Error("empty string");
|
|
7005
|
-
if (typeof unsigned === "number") {
|
|
7006
|
-
radix = unsigned;
|
|
7007
|
-
unsigned = false;
|
|
7008
|
-
} else {
|
|
7009
|
-
unsigned = !!unsigned;
|
|
7010
|
-
}
|
|
7011
|
-
if (str === "NaN" || str === "Infinity" || str === "+Infinity" || str === "-Infinity")
|
|
7012
|
-
return unsigned ? UZERO : ZERO;
|
|
7013
|
-
radix = radix || 10;
|
|
7014
|
-
if (radix < 2 || 36 < radix) throw RangeError("radix");
|
|
7015
|
-
var p;
|
|
7016
|
-
if ((p = str.indexOf("-")) > 0) throw Error("interior hyphen");
|
|
7017
|
-
else if (p === 0) {
|
|
7018
|
-
return fromString(str.substring(1), unsigned, radix).neg();
|
|
7019
|
-
}
|
|
7020
|
-
var radixToPower = fromNumber(pow_dbl(radix, 8));
|
|
7021
|
-
var result = ZERO;
|
|
7022
|
-
for (var i = 0; i < str.length; i += 8) {
|
|
7023
|
-
var size = Math.min(8, str.length - i), value = parseInt(str.substring(i, i + size), radix);
|
|
7024
|
-
if (size < 8) {
|
|
7025
|
-
var power = fromNumber(pow_dbl(radix, size));
|
|
7026
|
-
result = result.mul(power).add(fromNumber(value));
|
|
7027
|
-
} else {
|
|
7028
|
-
result = result.mul(radixToPower);
|
|
7029
|
-
result = result.add(fromNumber(value));
|
|
7030
|
-
}
|
|
7031
|
-
}
|
|
7032
|
-
result.unsigned = unsigned;
|
|
7033
|
-
return result;
|
|
7034
|
-
}
|
|
7035
|
-
Long.fromString = fromString;
|
|
7036
|
-
function fromValue(val, unsigned) {
|
|
7037
|
-
if (typeof val === "number") return fromNumber(val, unsigned);
|
|
7038
|
-
if (typeof val === "string") return fromString(val, unsigned);
|
|
7039
|
-
return fromBits(
|
|
7040
|
-
val.low,
|
|
7041
|
-
val.high,
|
|
7042
|
-
typeof unsigned === "boolean" ? unsigned : val.unsigned
|
|
7043
|
-
);
|
|
7044
|
-
}
|
|
7045
|
-
Long.fromValue = fromValue;
|
|
7046
|
-
var TWO_PWR_16_DBL = 1 << 16;
|
|
7047
|
-
var TWO_PWR_24_DBL = 1 << 24;
|
|
7048
|
-
var TWO_PWR_32_DBL = TWO_PWR_16_DBL * TWO_PWR_16_DBL;
|
|
7049
|
-
var TWO_PWR_64_DBL = TWO_PWR_32_DBL * TWO_PWR_32_DBL;
|
|
7050
|
-
var TWO_PWR_63_DBL = TWO_PWR_64_DBL / 2;
|
|
7051
|
-
var TWO_PWR_24 = fromInt(TWO_PWR_24_DBL);
|
|
7052
|
-
var ZERO = fromInt(0);
|
|
7053
|
-
Long.ZERO = ZERO;
|
|
7054
|
-
var UZERO = fromInt(0, true);
|
|
7055
|
-
Long.UZERO = UZERO;
|
|
7056
|
-
var ONE = fromInt(1);
|
|
7057
|
-
Long.ONE = ONE;
|
|
7058
|
-
var UONE = fromInt(1, true);
|
|
7059
|
-
Long.UONE = UONE;
|
|
7060
|
-
var NEG_ONE = fromInt(-1);
|
|
7061
|
-
Long.NEG_ONE = NEG_ONE;
|
|
7062
|
-
var MAX_VALUE = fromBits(4294967295 | 0, 2147483647 | 0, false);
|
|
7063
|
-
Long.MAX_VALUE = MAX_VALUE;
|
|
7064
|
-
var MAX_UNSIGNED_VALUE = fromBits(4294967295 | 0, 4294967295 | 0, true);
|
|
7065
|
-
Long.MAX_UNSIGNED_VALUE = MAX_UNSIGNED_VALUE;
|
|
7066
|
-
var MIN_VALUE = fromBits(0, 2147483648 | 0, false);
|
|
7067
|
-
Long.MIN_VALUE = MIN_VALUE;
|
|
7068
|
-
var LongPrototype = Long.prototype;
|
|
7069
|
-
LongPrototype.toInt = function toInt() {
|
|
7070
|
-
return this.unsigned ? this.low >>> 0 : this.low;
|
|
7071
|
-
};
|
|
7072
|
-
LongPrototype.toNumber = function toNumber() {
|
|
7073
|
-
if (this.unsigned)
|
|
7074
|
-
return (this.high >>> 0) * TWO_PWR_32_DBL + (this.low >>> 0);
|
|
7075
|
-
return this.high * TWO_PWR_32_DBL + (this.low >>> 0);
|
|
7076
|
-
};
|
|
7077
|
-
LongPrototype.toString = function toString(radix) {
|
|
7078
|
-
radix = radix || 10;
|
|
7079
|
-
if (radix < 2 || 36 < radix) throw RangeError("radix");
|
|
7080
|
-
if (this.isZero()) return "0";
|
|
7081
|
-
if (this.isNegative()) {
|
|
7082
|
-
if (this.eq(MIN_VALUE)) {
|
|
7083
|
-
var radixLong = fromNumber(radix), div = this.div(radixLong), rem1 = div.mul(radixLong).sub(this);
|
|
7084
|
-
return div.toString(radix) + rem1.toInt().toString(radix);
|
|
7085
|
-
} else return "-" + this.neg().toString(radix);
|
|
7086
|
-
}
|
|
7087
|
-
var radixToPower = fromNumber(pow_dbl(radix, 6), this.unsigned), rem = this;
|
|
7088
|
-
var result = "";
|
|
7089
|
-
while (true) {
|
|
7090
|
-
var remDiv = rem.div(radixToPower), intval = rem.sub(remDiv.mul(radixToPower)).toInt() >>> 0, digits = intval.toString(radix);
|
|
7091
|
-
rem = remDiv;
|
|
7092
|
-
if (rem.isZero()) return digits + result;
|
|
7093
|
-
else {
|
|
7094
|
-
while (digits.length < 6) digits = "0" + digits;
|
|
7095
|
-
result = "" + digits + result;
|
|
7096
|
-
}
|
|
7097
|
-
}
|
|
7098
|
-
};
|
|
7099
|
-
LongPrototype.getHighBits = function getHighBits() {
|
|
7100
|
-
return this.high;
|
|
7101
|
-
};
|
|
7102
|
-
LongPrototype.getHighBitsUnsigned = function getHighBitsUnsigned() {
|
|
7103
|
-
return this.high >>> 0;
|
|
7104
|
-
};
|
|
7105
|
-
LongPrototype.getLowBits = function getLowBits() {
|
|
7106
|
-
return this.low;
|
|
7107
|
-
};
|
|
7108
|
-
LongPrototype.getLowBitsUnsigned = function getLowBitsUnsigned() {
|
|
7109
|
-
return this.low >>> 0;
|
|
7110
|
-
};
|
|
7111
|
-
LongPrototype.getNumBitsAbs = function getNumBitsAbs() {
|
|
7112
|
-
if (this.isNegative())
|
|
7113
|
-
return this.eq(MIN_VALUE) ? 64 : this.neg().getNumBitsAbs();
|
|
7114
|
-
var val = this.high != 0 ? this.high : this.low;
|
|
7115
|
-
for (var bit = 31; bit > 0; bit--) if ((val & 1 << bit) != 0) break;
|
|
7116
|
-
return this.high != 0 ? bit + 33 : bit + 1;
|
|
7117
|
-
};
|
|
7118
|
-
LongPrototype.isSafeInteger = function isSafeInteger() {
|
|
7119
|
-
var top11Bits = this.high >> 21;
|
|
7120
|
-
if (!top11Bits) return true;
|
|
7121
|
-
if (this.unsigned) return false;
|
|
7122
|
-
return top11Bits === -1 && !(this.low === 0 && this.high === -2097152);
|
|
7123
|
-
};
|
|
7124
|
-
LongPrototype.isZero = function isZero() {
|
|
7125
|
-
return this.high === 0 && this.low === 0;
|
|
7126
|
-
};
|
|
7127
|
-
LongPrototype.eqz = LongPrototype.isZero;
|
|
7128
|
-
LongPrototype.isNegative = function isNegative() {
|
|
7129
|
-
return !this.unsigned && this.high < 0;
|
|
7130
|
-
};
|
|
7131
|
-
LongPrototype.isPositive = function isPositive() {
|
|
7132
|
-
return this.unsigned || this.high >= 0;
|
|
7133
|
-
};
|
|
7134
|
-
LongPrototype.isOdd = function isOdd() {
|
|
7135
|
-
return (this.low & 1) === 1;
|
|
7136
|
-
};
|
|
7137
|
-
LongPrototype.isEven = function isEven() {
|
|
7138
|
-
return (this.low & 1) === 0;
|
|
7139
|
-
};
|
|
7140
|
-
LongPrototype.equals = function equals(other) {
|
|
7141
|
-
if (!isLong$1(other)) other = fromValue(other);
|
|
7142
|
-
if (this.unsigned !== other.unsigned && this.high >>> 31 === 1 && other.high >>> 31 === 1)
|
|
7143
|
-
return false;
|
|
7144
|
-
return this.high === other.high && this.low === other.low;
|
|
7145
|
-
};
|
|
7146
|
-
LongPrototype.eq = LongPrototype.equals;
|
|
7147
|
-
LongPrototype.notEquals = function notEquals(other) {
|
|
7148
|
-
return !this.eq(
|
|
7149
|
-
/* validates */
|
|
7150
|
-
other
|
|
7151
|
-
);
|
|
7152
|
-
};
|
|
7153
|
-
LongPrototype.neq = LongPrototype.notEquals;
|
|
7154
|
-
LongPrototype.ne = LongPrototype.notEquals;
|
|
7155
|
-
LongPrototype.lessThan = function lessThan(other) {
|
|
7156
|
-
return this.comp(
|
|
7157
|
-
/* validates */
|
|
7158
|
-
other
|
|
7159
|
-
) < 0;
|
|
7160
|
-
};
|
|
7161
|
-
LongPrototype.lt = LongPrototype.lessThan;
|
|
7162
|
-
LongPrototype.lessThanOrEqual = function lessThanOrEqual(other) {
|
|
7163
|
-
return this.comp(
|
|
7164
|
-
/* validates */
|
|
7165
|
-
other
|
|
7166
|
-
) <= 0;
|
|
7167
|
-
};
|
|
7168
|
-
LongPrototype.lte = LongPrototype.lessThanOrEqual;
|
|
7169
|
-
LongPrototype.le = LongPrototype.lessThanOrEqual;
|
|
7170
|
-
LongPrototype.greaterThan = function greaterThan(other) {
|
|
7171
|
-
return this.comp(
|
|
7172
|
-
/* validates */
|
|
7173
|
-
other
|
|
7174
|
-
) > 0;
|
|
7175
|
-
};
|
|
7176
|
-
LongPrototype.gt = LongPrototype.greaterThan;
|
|
7177
|
-
LongPrototype.greaterThanOrEqual = function greaterThanOrEqual(other) {
|
|
7178
|
-
return this.comp(
|
|
7179
|
-
/* validates */
|
|
7180
|
-
other
|
|
7181
|
-
) >= 0;
|
|
7182
|
-
};
|
|
7183
|
-
LongPrototype.gte = LongPrototype.greaterThanOrEqual;
|
|
7184
|
-
LongPrototype.ge = LongPrototype.greaterThanOrEqual;
|
|
7185
|
-
LongPrototype.compare = function compare(other) {
|
|
7186
|
-
if (!isLong$1(other)) other = fromValue(other);
|
|
7187
|
-
if (this.eq(other)) return 0;
|
|
7188
|
-
var thisNeg = this.isNegative(), otherNeg = other.isNegative();
|
|
7189
|
-
if (thisNeg && !otherNeg) return -1;
|
|
7190
|
-
if (!thisNeg && otherNeg) return 1;
|
|
7191
|
-
if (!this.unsigned) return this.sub(other).isNegative() ? -1 : 1;
|
|
7192
|
-
return other.high >>> 0 > this.high >>> 0 || other.high === this.high && other.low >>> 0 > this.low >>> 0 ? -1 : 1;
|
|
7193
|
-
};
|
|
7194
|
-
LongPrototype.comp = LongPrototype.compare;
|
|
7195
|
-
LongPrototype.negate = function negate2() {
|
|
7196
|
-
if (!this.unsigned && this.eq(MIN_VALUE)) return MIN_VALUE;
|
|
7197
|
-
return this.not().add(ONE);
|
|
7198
|
-
};
|
|
7199
|
-
LongPrototype.neg = LongPrototype.negate;
|
|
7200
|
-
LongPrototype.add = function add(addend) {
|
|
7201
|
-
if (!isLong$1(addend)) addend = fromValue(addend);
|
|
7202
|
-
var a48 = this.high >>> 16;
|
|
7203
|
-
var a32 = this.high & 65535;
|
|
7204
|
-
var a16 = this.low >>> 16;
|
|
7205
|
-
var a00 = this.low & 65535;
|
|
7206
|
-
var b48 = addend.high >>> 16;
|
|
7207
|
-
var b32 = addend.high & 65535;
|
|
7208
|
-
var b16 = addend.low >>> 16;
|
|
7209
|
-
var b00 = addend.low & 65535;
|
|
7210
|
-
var c48 = 0, c32 = 0, c16 = 0, c00 = 0;
|
|
7211
|
-
c00 += a00 + b00;
|
|
7212
|
-
c16 += c00 >>> 16;
|
|
7213
|
-
c00 &= 65535;
|
|
7214
|
-
c16 += a16 + b16;
|
|
7215
|
-
c32 += c16 >>> 16;
|
|
7216
|
-
c16 &= 65535;
|
|
7217
|
-
c32 += a32 + b32;
|
|
7218
|
-
c48 += c32 >>> 16;
|
|
7219
|
-
c32 &= 65535;
|
|
7220
|
-
c48 += a48 + b48;
|
|
7221
|
-
c48 &= 65535;
|
|
7222
|
-
return fromBits(c16 << 16 | c00, c48 << 16 | c32, this.unsigned);
|
|
7223
|
-
};
|
|
7224
|
-
LongPrototype.subtract = function subtract(subtrahend) {
|
|
7225
|
-
if (!isLong$1(subtrahend)) subtrahend = fromValue(subtrahend);
|
|
7226
|
-
return this.add(subtrahend.neg());
|
|
7227
|
-
};
|
|
7228
|
-
LongPrototype.sub = LongPrototype.subtract;
|
|
7229
|
-
LongPrototype.multiply = function multiply(multiplier) {
|
|
7230
|
-
if (this.isZero()) return this;
|
|
7231
|
-
if (!isLong$1(multiplier)) multiplier = fromValue(multiplier);
|
|
7232
|
-
if (wasm) {
|
|
7233
|
-
var low = wasm["mul"](this.low, this.high, multiplier.low, multiplier.high);
|
|
7234
|
-
return fromBits(low, wasm["get_high"](), this.unsigned);
|
|
7235
|
-
}
|
|
7236
|
-
if (multiplier.isZero()) return this.unsigned ? UZERO : ZERO;
|
|
7237
|
-
if (this.eq(MIN_VALUE)) return multiplier.isOdd() ? MIN_VALUE : ZERO;
|
|
7238
|
-
if (multiplier.eq(MIN_VALUE)) return this.isOdd() ? MIN_VALUE : ZERO;
|
|
7239
|
-
if (this.isNegative()) {
|
|
7240
|
-
if (multiplier.isNegative()) return this.neg().mul(multiplier.neg());
|
|
7241
|
-
else return this.neg().mul(multiplier).neg();
|
|
7242
|
-
} else if (multiplier.isNegative()) return this.mul(multiplier.neg()).neg();
|
|
7243
|
-
if (this.lt(TWO_PWR_24) && multiplier.lt(TWO_PWR_24))
|
|
7244
|
-
return fromNumber(this.toNumber() * multiplier.toNumber(), this.unsigned);
|
|
7245
|
-
var a48 = this.high >>> 16;
|
|
7246
|
-
var a32 = this.high & 65535;
|
|
7247
|
-
var a16 = this.low >>> 16;
|
|
7248
|
-
var a00 = this.low & 65535;
|
|
7249
|
-
var b48 = multiplier.high >>> 16;
|
|
7250
|
-
var b32 = multiplier.high & 65535;
|
|
7251
|
-
var b16 = multiplier.low >>> 16;
|
|
7252
|
-
var b00 = multiplier.low & 65535;
|
|
7253
|
-
var c48 = 0, c32 = 0, c16 = 0, c00 = 0;
|
|
7254
|
-
c00 += a00 * b00;
|
|
7255
|
-
c16 += c00 >>> 16;
|
|
7256
|
-
c00 &= 65535;
|
|
7257
|
-
c16 += a16 * b00;
|
|
7258
|
-
c32 += c16 >>> 16;
|
|
7259
|
-
c16 &= 65535;
|
|
7260
|
-
c16 += a00 * b16;
|
|
7261
|
-
c32 += c16 >>> 16;
|
|
7262
|
-
c16 &= 65535;
|
|
7263
|
-
c32 += a32 * b00;
|
|
7264
|
-
c48 += c32 >>> 16;
|
|
7265
|
-
c32 &= 65535;
|
|
7266
|
-
c32 += a16 * b16;
|
|
7267
|
-
c48 += c32 >>> 16;
|
|
7268
|
-
c32 &= 65535;
|
|
7269
|
-
c32 += a00 * b32;
|
|
7270
|
-
c48 += c32 >>> 16;
|
|
7271
|
-
c32 &= 65535;
|
|
7272
|
-
c48 += a48 * b00 + a32 * b16 + a16 * b32 + a00 * b48;
|
|
7273
|
-
c48 &= 65535;
|
|
7274
|
-
return fromBits(c16 << 16 | c00, c48 << 16 | c32, this.unsigned);
|
|
7275
|
-
};
|
|
7276
|
-
LongPrototype.mul = LongPrototype.multiply;
|
|
7277
|
-
LongPrototype.divide = function divide(divisor) {
|
|
7278
|
-
if (!isLong$1(divisor)) divisor = fromValue(divisor);
|
|
7279
|
-
if (divisor.isZero()) throw Error("division by zero");
|
|
7280
|
-
if (wasm) {
|
|
7281
|
-
if (!this.unsigned && this.high === -2147483648 && divisor.low === -1 && divisor.high === -1) {
|
|
7282
|
-
return this;
|
|
7283
|
-
}
|
|
7284
|
-
var low = (this.unsigned ? wasm["div_u"] : wasm["div_s"])(
|
|
7285
|
-
this.low,
|
|
7286
|
-
this.high,
|
|
7287
|
-
divisor.low,
|
|
7288
|
-
divisor.high
|
|
7289
|
-
);
|
|
7290
|
-
return fromBits(low, wasm["get_high"](), this.unsigned);
|
|
7291
|
-
}
|
|
7292
|
-
if (this.isZero()) return this.unsigned ? UZERO : ZERO;
|
|
7293
|
-
var approx, rem, res;
|
|
7294
|
-
if (!this.unsigned) {
|
|
7295
|
-
if (this.eq(MIN_VALUE)) {
|
|
7296
|
-
if (divisor.eq(ONE) || divisor.eq(NEG_ONE))
|
|
7297
|
-
return MIN_VALUE;
|
|
7298
|
-
else if (divisor.eq(MIN_VALUE)) return ONE;
|
|
7299
|
-
else {
|
|
7300
|
-
var halfThis = this.shr(1);
|
|
7301
|
-
approx = halfThis.div(divisor).shl(1);
|
|
7302
|
-
if (approx.eq(ZERO)) {
|
|
7303
|
-
return divisor.isNegative() ? ONE : NEG_ONE;
|
|
7304
|
-
} else {
|
|
7305
|
-
rem = this.sub(divisor.mul(approx));
|
|
7306
|
-
res = approx.add(rem.div(divisor));
|
|
7307
|
-
return res;
|
|
7308
|
-
}
|
|
7309
|
-
}
|
|
7310
|
-
} else if (divisor.eq(MIN_VALUE)) return this.unsigned ? UZERO : ZERO;
|
|
7311
|
-
if (this.isNegative()) {
|
|
7312
|
-
if (divisor.isNegative()) return this.neg().div(divisor.neg());
|
|
7313
|
-
return this.neg().div(divisor).neg();
|
|
7314
|
-
} else if (divisor.isNegative()) return this.div(divisor.neg()).neg();
|
|
7315
|
-
res = ZERO;
|
|
7316
|
-
} else {
|
|
7317
|
-
if (!divisor.unsigned) divisor = divisor.toUnsigned();
|
|
7318
|
-
if (divisor.gt(this)) return UZERO;
|
|
7319
|
-
if (divisor.gt(this.shru(1)))
|
|
7320
|
-
return UONE;
|
|
7321
|
-
res = UZERO;
|
|
7322
|
-
}
|
|
7323
|
-
rem = this;
|
|
7324
|
-
while (rem.gte(divisor)) {
|
|
7325
|
-
approx = Math.max(1, Math.floor(rem.toNumber() / divisor.toNumber()));
|
|
7326
|
-
var log2 = Math.ceil(Math.log(approx) / Math.LN2), delta = log2 <= 48 ? 1 : pow_dbl(2, log2 - 48), approxRes = fromNumber(approx), approxRem = approxRes.mul(divisor);
|
|
7327
|
-
while (approxRem.isNegative() || approxRem.gt(rem)) {
|
|
7328
|
-
approx -= delta;
|
|
7329
|
-
approxRes = fromNumber(approx, this.unsigned);
|
|
7330
|
-
approxRem = approxRes.mul(divisor);
|
|
7331
|
-
}
|
|
7332
|
-
if (approxRes.isZero()) approxRes = ONE;
|
|
7333
|
-
res = res.add(approxRes);
|
|
7334
|
-
rem = rem.sub(approxRem);
|
|
7335
|
-
}
|
|
7336
|
-
return res;
|
|
7337
|
-
};
|
|
7338
|
-
LongPrototype.div = LongPrototype.divide;
|
|
7339
|
-
LongPrototype.modulo = function modulo(divisor) {
|
|
7340
|
-
if (!isLong$1(divisor)) divisor = fromValue(divisor);
|
|
7341
|
-
if (wasm) {
|
|
7342
|
-
var low = (this.unsigned ? wasm["rem_u"] : wasm["rem_s"])(
|
|
7343
|
-
this.low,
|
|
7344
|
-
this.high,
|
|
7345
|
-
divisor.low,
|
|
7346
|
-
divisor.high
|
|
7347
|
-
);
|
|
7348
|
-
return fromBits(low, wasm["get_high"](), this.unsigned);
|
|
7349
|
-
}
|
|
7350
|
-
return this.sub(this.div(divisor).mul(divisor));
|
|
7351
|
-
};
|
|
7352
|
-
LongPrototype.mod = LongPrototype.modulo;
|
|
7353
|
-
LongPrototype.rem = LongPrototype.modulo;
|
|
7354
|
-
LongPrototype.not = function not() {
|
|
7355
|
-
return fromBits(~this.low, ~this.high, this.unsigned);
|
|
7356
|
-
};
|
|
7357
|
-
LongPrototype.countLeadingZeros = function countLeadingZeros() {
|
|
7358
|
-
return this.high ? Math.clz32(this.high) : Math.clz32(this.low) + 32;
|
|
7359
|
-
};
|
|
7360
|
-
LongPrototype.clz = LongPrototype.countLeadingZeros;
|
|
7361
|
-
LongPrototype.countTrailingZeros = function countTrailingZeros() {
|
|
7362
|
-
return this.low ? ctz32(this.low) : ctz32(this.high) + 32;
|
|
7363
|
-
};
|
|
7364
|
-
LongPrototype.ctz = LongPrototype.countTrailingZeros;
|
|
7365
|
-
LongPrototype.and = function and(other) {
|
|
7366
|
-
if (!isLong$1(other)) other = fromValue(other);
|
|
7367
|
-
return fromBits(this.low & other.low, this.high & other.high, this.unsigned);
|
|
7368
|
-
};
|
|
7369
|
-
LongPrototype.or = function or(other) {
|
|
7370
|
-
if (!isLong$1(other)) other = fromValue(other);
|
|
7371
|
-
return fromBits(this.low | other.low, this.high | other.high, this.unsigned);
|
|
7372
|
-
};
|
|
7373
|
-
LongPrototype.xor = function xor(other) {
|
|
7374
|
-
if (!isLong$1(other)) other = fromValue(other);
|
|
7375
|
-
return fromBits(this.low ^ other.low, this.high ^ other.high, this.unsigned);
|
|
7376
|
-
};
|
|
7377
|
-
LongPrototype.shiftLeft = function shiftLeft(numBits) {
|
|
7378
|
-
if (isLong$1(numBits)) numBits = numBits.toInt();
|
|
7379
|
-
if ((numBits &= 63) === 0) return this;
|
|
7380
|
-
else if (numBits < 32)
|
|
7381
|
-
return fromBits(
|
|
7382
|
-
this.low << numBits,
|
|
7383
|
-
this.high << numBits | this.low >>> 32 - numBits,
|
|
7384
|
-
this.unsigned
|
|
7385
|
-
);
|
|
7386
|
-
else return fromBits(0, this.low << numBits - 32, this.unsigned);
|
|
7387
|
-
};
|
|
7388
|
-
LongPrototype.shl = LongPrototype.shiftLeft;
|
|
7389
|
-
LongPrototype.shiftRight = function shiftRight(numBits) {
|
|
7390
|
-
if (isLong$1(numBits)) numBits = numBits.toInt();
|
|
7391
|
-
if ((numBits &= 63) === 0) return this;
|
|
7392
|
-
else if (numBits < 32)
|
|
7393
|
-
return fromBits(
|
|
7394
|
-
this.low >>> numBits | this.high << 32 - numBits,
|
|
7395
|
-
this.high >> numBits,
|
|
7396
|
-
this.unsigned
|
|
7397
|
-
);
|
|
7398
|
-
else
|
|
7399
|
-
return fromBits(
|
|
7400
|
-
this.high >> numBits - 32,
|
|
7401
|
-
this.high >= 0 ? 0 : -1,
|
|
7402
|
-
this.unsigned
|
|
7403
|
-
);
|
|
7404
|
-
};
|
|
7405
|
-
LongPrototype.shr = LongPrototype.shiftRight;
|
|
7406
|
-
LongPrototype.shiftRightUnsigned = function shiftRightUnsigned(numBits) {
|
|
7407
|
-
if (isLong$1(numBits)) numBits = numBits.toInt();
|
|
7408
|
-
if ((numBits &= 63) === 0) return this;
|
|
7409
|
-
if (numBits < 32)
|
|
7410
|
-
return fromBits(
|
|
7411
|
-
this.low >>> numBits | this.high << 32 - numBits,
|
|
7412
|
-
this.high >>> numBits,
|
|
7413
|
-
this.unsigned
|
|
7414
|
-
);
|
|
7415
|
-
if (numBits === 32) return fromBits(this.high, 0, this.unsigned);
|
|
7416
|
-
return fromBits(this.high >>> numBits - 32, 0, this.unsigned);
|
|
7417
|
-
};
|
|
7418
|
-
LongPrototype.shru = LongPrototype.shiftRightUnsigned;
|
|
7419
|
-
LongPrototype.shr_u = LongPrototype.shiftRightUnsigned;
|
|
7420
|
-
LongPrototype.rotateLeft = function rotateLeft(numBits) {
|
|
7421
|
-
var b;
|
|
7422
|
-
if (isLong$1(numBits)) numBits = numBits.toInt();
|
|
7423
|
-
if ((numBits &= 63) === 0) return this;
|
|
7424
|
-
if (numBits === 32) return fromBits(this.high, this.low, this.unsigned);
|
|
7425
|
-
if (numBits < 32) {
|
|
7426
|
-
b = 32 - numBits;
|
|
7427
|
-
return fromBits(
|
|
7428
|
-
this.low << numBits | this.high >>> b,
|
|
7429
|
-
this.high << numBits | this.low >>> b,
|
|
7430
|
-
this.unsigned
|
|
7431
|
-
);
|
|
7007
|
+
return node.getParent().getRight() === node;
|
|
7008
|
+
}
|
|
7009
|
+
return false;
|
|
7432
7010
|
}
|
|
7433
|
-
|
|
7434
|
-
|
|
7435
|
-
|
|
7436
|
-
|
|
7437
|
-
|
|
7438
|
-
|
|
7439
|
-
|
|
7440
|
-
|
|
7441
|
-
LongPrototype.rotl = LongPrototype.rotateLeft;
|
|
7442
|
-
LongPrototype.rotateRight = function rotateRight(numBits) {
|
|
7443
|
-
var b;
|
|
7444
|
-
if (isLong$1(numBits)) numBits = numBits.toInt();
|
|
7445
|
-
if ((numBits &= 63) === 0) return this;
|
|
7446
|
-
if (numBits === 32) return fromBits(this.high, this.low, this.unsigned);
|
|
7447
|
-
if (numBits < 32) {
|
|
7448
|
-
b = 32 - numBits;
|
|
7449
|
-
return fromBits(
|
|
7450
|
-
this.high << b | this.low >>> numBits,
|
|
7451
|
-
this.low << b | this.high >>> numBits,
|
|
7452
|
-
this.unsigned
|
|
7453
|
-
);
|
|
7011
|
+
}
|
|
7012
|
+
const removeDecimal = (number) => number < 0 ? Math.ceil(number) : Math.floor(number);
|
|
7013
|
+
function bigintToBytesLE(value) {
|
|
7014
|
+
const buf = new Uint8Array(8);
|
|
7015
|
+
let v = BigInt.asUintN(64, value);
|
|
7016
|
+
for (let i = 0; i < 8; i++) {
|
|
7017
|
+
buf[i] = Number(v & 0xffn);
|
|
7018
|
+
v >>= 8n;
|
|
7454
7019
|
}
|
|
7455
|
-
|
|
7456
|
-
|
|
7457
|
-
|
|
7458
|
-
|
|
7459
|
-
|
|
7460
|
-
|
|
7461
|
-
|
|
7462
|
-
|
|
7463
|
-
|
|
7464
|
-
|
|
7465
|
-
|
|
7466
|
-
|
|
7467
|
-
|
|
7468
|
-
|
|
7469
|
-
|
|
7470
|
-
|
|
7471
|
-
|
|
7472
|
-
|
|
7473
|
-
return le ? this.toBytesLE() : this.toBytesBE();
|
|
7474
|
-
};
|
|
7475
|
-
LongPrototype.toBytesLE = function toBytesLE() {
|
|
7476
|
-
var hi = this.high, lo = this.low;
|
|
7477
|
-
return [
|
|
7478
|
-
lo & 255,
|
|
7479
|
-
lo >>> 8 & 255,
|
|
7480
|
-
lo >>> 16 & 255,
|
|
7481
|
-
lo >>> 24,
|
|
7482
|
-
hi & 255,
|
|
7483
|
-
hi >>> 8 & 255,
|
|
7484
|
-
hi >>> 16 & 255,
|
|
7485
|
-
hi >>> 24
|
|
7486
|
-
];
|
|
7487
|
-
};
|
|
7488
|
-
LongPrototype.toBytesBE = function toBytesBE() {
|
|
7489
|
-
var hi = this.high, lo = this.low;
|
|
7490
|
-
return [
|
|
7491
|
-
hi >>> 24,
|
|
7492
|
-
hi >>> 16 & 255,
|
|
7493
|
-
hi >>> 8 & 255,
|
|
7494
|
-
hi & 255,
|
|
7495
|
-
lo >>> 24,
|
|
7496
|
-
lo >>> 16 & 255,
|
|
7497
|
-
lo >>> 8 & 255,
|
|
7498
|
-
lo & 255
|
|
7499
|
-
];
|
|
7500
|
-
};
|
|
7501
|
-
Long.fromBytes = function fromBytes(bytes, unsigned, le) {
|
|
7502
|
-
return le ? Long.fromBytesLE(bytes, unsigned) : Long.fromBytesBE(bytes, unsigned);
|
|
7503
|
-
};
|
|
7504
|
-
Long.fromBytesLE = function fromBytesLE(bytes, unsigned) {
|
|
7505
|
-
return new Long(
|
|
7506
|
-
bytes[0] | bytes[1] << 8 | bytes[2] << 16 | bytes[3] << 24,
|
|
7507
|
-
bytes[4] | bytes[5] << 8 | bytes[6] << 16 | bytes[7] << 24,
|
|
7508
|
-
unsigned
|
|
7509
|
-
);
|
|
7510
|
-
};
|
|
7511
|
-
Long.fromBytesBE = function fromBytesBE(bytes, unsigned) {
|
|
7512
|
-
return new Long(
|
|
7513
|
-
bytes[4] << 24 | bytes[5] << 16 | bytes[6] << 8 | bytes[7],
|
|
7514
|
-
bytes[0] << 24 | bytes[1] << 16 | bytes[2] << 8 | bytes[3],
|
|
7515
|
-
unsigned
|
|
7516
|
-
);
|
|
7517
|
-
};
|
|
7518
|
-
if (typeof BigInt === "function") {
|
|
7519
|
-
Long.fromBigInt = function fromBigInt(value, unsigned) {
|
|
7520
|
-
var lowBits = Number(BigInt.asIntN(32, value));
|
|
7521
|
-
var highBits = Number(BigInt.asIntN(32, value >> BigInt(32)));
|
|
7522
|
-
return fromBits(lowBits, highBits, unsigned);
|
|
7523
|
-
};
|
|
7524
|
-
Long.fromValue = function fromValueWithBigInt(value, unsigned) {
|
|
7525
|
-
if (typeof value === "bigint") return Long.fromBigInt(value, unsigned);
|
|
7526
|
-
return fromValue(value, unsigned);
|
|
7527
|
-
};
|
|
7528
|
-
LongPrototype.toBigInt = function toBigInt() {
|
|
7529
|
-
var lowBigInt = BigInt(this.low >>> 0);
|
|
7530
|
-
var highBigInt = BigInt(this.unsigned ? this.high >>> 0 : this.high);
|
|
7531
|
-
return highBigInt << BigInt(32) | lowBigInt;
|
|
7532
|
-
};
|
|
7020
|
+
return buf;
|
|
7021
|
+
}
|
|
7022
|
+
function bigintFromBytesLE(bytes) {
|
|
7023
|
+
let v = 0n;
|
|
7024
|
+
for (let i = 7; i >= 0; i--) {
|
|
7025
|
+
v = v << 8n | BigInt(bytes[i]);
|
|
7026
|
+
}
|
|
7027
|
+
return BigInt.asIntN(64, v);
|
|
7028
|
+
}
|
|
7029
|
+
function bigintFromBytesLEUnsigned(bytes) {
|
|
7030
|
+
let v = 0n;
|
|
7031
|
+
for (let i = 7; i >= 0; i--) {
|
|
7032
|
+
v = v << 8n | BigInt(bytes[i]);
|
|
7033
|
+
}
|
|
7034
|
+
return v;
|
|
7035
|
+
}
|
|
7036
|
+
function bigintToInt32(value) {
|
|
7037
|
+
return Number(BigInt.asIntN(32, value));
|
|
7533
7038
|
}
|
|
7534
7039
|
var PrimitiveType = /* @__PURE__ */ ((PrimitiveType2) => {
|
|
7535
7040
|
PrimitiveType2[PrimitiveType2["Null"] = 0] = "Null";
|
|
@@ -7577,11 +7082,11 @@ class Primitive extends CRDTElement {
|
|
|
7577
7082
|
case 5:
|
|
7578
7083
|
return new TextDecoder("utf-8").decode(bytes);
|
|
7579
7084
|
case 3:
|
|
7580
|
-
return
|
|
7085
|
+
return bigintFromBytesLE(bytes);
|
|
7581
7086
|
case 6:
|
|
7582
7087
|
return bytes;
|
|
7583
7088
|
case 7:
|
|
7584
|
-
return new Date(
|
|
7089
|
+
return new Date(Number(bigintFromBytesLEUnsigned(bytes)));
|
|
7585
7090
|
default:
|
|
7586
7091
|
throw new YorkieError(
|
|
7587
7092
|
Code.ErrUnimplemented,
|
|
@@ -7682,13 +7187,13 @@ class Primitive extends CRDTElement {
|
|
|
7682
7187
|
} else {
|
|
7683
7188
|
return 4;
|
|
7684
7189
|
}
|
|
7190
|
+
case "bigint":
|
|
7191
|
+
return 3;
|
|
7685
7192
|
case "string":
|
|
7686
7193
|
return 5;
|
|
7687
7194
|
case "object":
|
|
7688
7195
|
if (value === null) {
|
|
7689
7196
|
return 0;
|
|
7690
|
-
} else if (value instanceof Long) {
|
|
7691
|
-
return 3;
|
|
7692
7197
|
} else if (value instanceof Uint8Array) {
|
|
7693
7198
|
return 6;
|
|
7694
7199
|
} else if (value instanceof Date) {
|
|
@@ -7758,9 +7263,7 @@ class Primitive extends CRDTElement {
|
|
|
7758
7263
|
return new TextEncoder().encode(this.value);
|
|
7759
7264
|
}
|
|
7760
7265
|
case 3: {
|
|
7761
|
-
|
|
7762
|
-
const longToBytes = longVal.toBytesLE();
|
|
7763
|
-
return Uint8Array.from(longToBytes);
|
|
7266
|
+
return bigintToBytesLE(this.value);
|
|
7764
7267
|
}
|
|
7765
7268
|
case 6: {
|
|
7766
7269
|
const bytesVal = this.value;
|
|
@@ -7768,11 +7271,7 @@ class Primitive extends CRDTElement {
|
|
|
7768
7271
|
}
|
|
7769
7272
|
case 7: {
|
|
7770
7273
|
const dateVal = this.value;
|
|
7771
|
-
|
|
7772
|
-
dateVal.getTime(),
|
|
7773
|
-
true
|
|
7774
|
-
).toBytesLE();
|
|
7775
|
-
return Uint8Array.from(dateToBytes);
|
|
7274
|
+
return bigintToBytesLE(BigInt(dateVal.getTime()));
|
|
7776
7275
|
}
|
|
7777
7276
|
default:
|
|
7778
7277
|
throw new YorkieError(
|
|
@@ -8845,10 +8344,10 @@ class LLRBTree {
|
|
|
8845
8344
|
let node = this.root;
|
|
8846
8345
|
let result = void 0;
|
|
8847
8346
|
while (node) {
|
|
8848
|
-
const
|
|
8849
|
-
if (
|
|
8347
|
+
const compare = this.comparator(key, node.key);
|
|
8348
|
+
if (compare === 0) {
|
|
8850
8349
|
return node;
|
|
8851
|
-
} else if (
|
|
8350
|
+
} else if (compare < 0) {
|
|
8852
8351
|
node = node.left;
|
|
8853
8352
|
} else {
|
|
8854
8353
|
result = node;
|
|
@@ -8884,12 +8383,12 @@ class LLRBTree {
|
|
|
8884
8383
|
}
|
|
8885
8384
|
getInternal(key, node) {
|
|
8886
8385
|
while (node) {
|
|
8887
|
-
const
|
|
8888
|
-
if (
|
|
8386
|
+
const compare = this.comparator(key, node.key);
|
|
8387
|
+
if (compare === 0) {
|
|
8889
8388
|
return node;
|
|
8890
|
-
} else if (
|
|
8389
|
+
} else if (compare < 0) {
|
|
8891
8390
|
node = node.left;
|
|
8892
|
-
} else if (
|
|
8391
|
+
} else if (compare > 0) {
|
|
8893
8392
|
node = node.right;
|
|
8894
8393
|
}
|
|
8895
8394
|
}
|
|
@@ -8900,10 +8399,10 @@ class LLRBTree {
|
|
|
8900
8399
|
this.counter += 1;
|
|
8901
8400
|
return new LLRBNode(key, value, true);
|
|
8902
8401
|
}
|
|
8903
|
-
const
|
|
8904
|
-
if (
|
|
8402
|
+
const compare = this.comparator(key, node.key);
|
|
8403
|
+
if (compare < 0) {
|
|
8905
8404
|
node.left = this.putInternal(key, value, node.left);
|
|
8906
|
-
} else if (
|
|
8405
|
+
} else if (compare > 0) {
|
|
8907
8406
|
node.right = this.putInternal(key, value, node.right);
|
|
8908
8407
|
} else {
|
|
8909
8408
|
node.value = value;
|
|
@@ -9202,9 +8701,9 @@ class RGATreeSplitNode extends SplayNode {
|
|
|
9202
8701
|
*/
|
|
9203
8702
|
static createComparator() {
|
|
9204
8703
|
return (p1, p2) => {
|
|
9205
|
-
const
|
|
9206
|
-
if (
|
|
9207
|
-
return
|
|
8704
|
+
const compare = p1.getCreatedAt().compare(p2.getCreatedAt());
|
|
8705
|
+
if (compare !== 0) {
|
|
8706
|
+
return compare;
|
|
9208
8707
|
}
|
|
9209
8708
|
if (p1.getOffset() > p2.getOffset()) {
|
|
9210
8709
|
return 1;
|
|
@@ -11318,7 +10817,7 @@ class IndexTreeNode {
|
|
|
11318
10817
|
this._children = left;
|
|
11319
10818
|
clone._children = actualRight;
|
|
11320
10819
|
this.visibleSize = this._children.reduce(
|
|
11321
|
-
(acc, child) => acc + child.paddedSize(),
|
|
10820
|
+
(acc, child) => acc + (child.isRemoved ? 0 : child.paddedSize()),
|
|
11322
10821
|
0
|
|
11323
10822
|
);
|
|
11324
10823
|
this.totalSize = this._children.reduce(
|
|
@@ -11326,7 +10825,7 @@ class IndexTreeNode {
|
|
|
11326
10825
|
0
|
|
11327
10826
|
);
|
|
11328
10827
|
clone.visibleSize = clone._children.reduce(
|
|
11329
|
-
(acc, child) => acc + child.paddedSize(),
|
|
10828
|
+
(acc, child) => acc + (child.isRemoved ? 0 : child.paddedSize()),
|
|
11330
10829
|
0
|
|
11331
10830
|
);
|
|
11332
10831
|
clone.totalSize = clone._children.reduce(
|
|
@@ -11861,9 +11360,9 @@ class CRDTTreeNodeID {
|
|
|
11861
11360
|
*/
|
|
11862
11361
|
static createComparator() {
|
|
11863
11362
|
return (idA, idB) => {
|
|
11864
|
-
const
|
|
11865
|
-
if (
|
|
11866
|
-
return
|
|
11363
|
+
const compare = idA.getCreatedAt().compare(idB.getCreatedAt());
|
|
11364
|
+
if (compare !== 0) {
|
|
11365
|
+
return compare;
|
|
11867
11366
|
}
|
|
11868
11367
|
if (idA.getOffset() > idB.getOffset()) {
|
|
11869
11368
|
return 1;
|
|
@@ -12435,6 +11934,9 @@ class CRDTTree extends CRDTElement {
|
|
|
12435
11934
|
const changes = [];
|
|
12436
11935
|
const attrs = attributes ? parseObjectValues(attributes) : {};
|
|
12437
11936
|
const pairs = [];
|
|
11937
|
+
const prevAttributes = /* @__PURE__ */ new Map();
|
|
11938
|
+
const newAttrKeys = [];
|
|
11939
|
+
let capturedPrev = false;
|
|
12438
11940
|
this.traverseInPosRange(
|
|
12439
11941
|
fromParent,
|
|
12440
11942
|
fromLeft,
|
|
@@ -12450,6 +11952,16 @@ class CRDTTree extends CRDTElement {
|
|
|
12450
11952
|
if (tokenType === TokenType.End && versionVector !== void 0 && this.hasUnknownSplitSibling(node, versionVector)) {
|
|
12451
11953
|
return;
|
|
12452
11954
|
}
|
|
11955
|
+
if (!capturedPrev) {
|
|
11956
|
+
for (const key of Object.keys(attributes)) {
|
|
11957
|
+
if (node.attrs?.has(key)) {
|
|
11958
|
+
prevAttributes.set(key, node.attrs.get(key));
|
|
11959
|
+
} else {
|
|
11960
|
+
newAttrKeys.push(key);
|
|
11961
|
+
}
|
|
11962
|
+
}
|
|
11963
|
+
capturedPrev = true;
|
|
11964
|
+
}
|
|
12453
11965
|
const updatedAttrPairs = node.setAttrs(attributes, editedAt);
|
|
12454
11966
|
const affectedAttrs = updatedAttrPairs.reduce(
|
|
12455
11967
|
(acc, [, curr]) => {
|
|
@@ -12488,7 +12000,7 @@ class CRDTTree extends CRDTElement {
|
|
|
12488
12000
|
}
|
|
12489
12001
|
}
|
|
12490
12002
|
);
|
|
12491
|
-
return [pairs, changes, diff];
|
|
12003
|
+
return [pairs, changes, diff, prevAttributes, newAttrKeys];
|
|
12492
12004
|
}
|
|
12493
12005
|
/**
|
|
12494
12006
|
* `removeStyle` removes the given attributes of the given range.
|
|
@@ -12506,6 +12018,8 @@ class CRDTTree extends CRDTElement {
|
|
|
12506
12018
|
addDataSizes(diff, diffTo, diffFrom);
|
|
12507
12019
|
const changes = [];
|
|
12508
12020
|
const pairs = [];
|
|
12021
|
+
const prevAttributes = /* @__PURE__ */ new Map();
|
|
12022
|
+
let capturedPrev = false;
|
|
12509
12023
|
this.traverseInPosRange(
|
|
12510
12024
|
fromParent,
|
|
12511
12025
|
fromLeft,
|
|
@@ -12524,6 +12038,14 @@ class CRDTTree extends CRDTElement {
|
|
|
12524
12038
|
if (!node.attrs) {
|
|
12525
12039
|
node.attrs = new RHT();
|
|
12526
12040
|
}
|
|
12041
|
+
if (!capturedPrev) {
|
|
12042
|
+
for (const key of attributesToRemove) {
|
|
12043
|
+
if (node.attrs.has(key)) {
|
|
12044
|
+
prevAttributes.set(key, node.attrs.get(key));
|
|
12045
|
+
}
|
|
12046
|
+
}
|
|
12047
|
+
capturedPrev = true;
|
|
12048
|
+
}
|
|
12527
12049
|
for (const value of attributesToRemove) {
|
|
12528
12050
|
const nodesTobeRemoved = node.attrs.remove(value, editedAt);
|
|
12529
12051
|
for (const rhtNode of nodesTobeRemoved) {
|
|
@@ -12544,7 +12066,7 @@ class CRDTTree extends CRDTElement {
|
|
|
12544
12066
|
}
|
|
12545
12067
|
}
|
|
12546
12068
|
);
|
|
12547
|
-
return [pairs, changes, diff];
|
|
12069
|
+
return [pairs, changes, diff, prevAttributes];
|
|
12548
12070
|
}
|
|
12549
12071
|
/**
|
|
12550
12072
|
* `edit` edits the tree with the given range and content.
|
|
@@ -12678,7 +12200,7 @@ class CRDTTree extends CRDTElement {
|
|
|
12678
12200
|
while (splitCount < splitLevel) {
|
|
12679
12201
|
parent.split(
|
|
12680
12202
|
this,
|
|
12681
|
-
parent.findOffset(left) + 1,
|
|
12203
|
+
parent.findOffset(left, true) + 1,
|
|
12682
12204
|
issueTimeTicket,
|
|
12683
12205
|
versionVector
|
|
12684
12206
|
);
|
|
@@ -13192,6 +12714,13 @@ class TreeEditOperation extends Operation {
|
|
|
13192
12714
|
toIdx;
|
|
13193
12715
|
lastFromIdx;
|
|
13194
12716
|
lastToIdx;
|
|
12717
|
+
/**
|
|
12718
|
+
* `redoSplitLevel` is set on boundary-deletion undo ops that were generated
|
|
12719
|
+
* to reverse a split. When this op executes (as undo), `toReverseOperation`
|
|
12720
|
+
* uses this value to generate a proper split op for redo, rather than
|
|
12721
|
+
* re-inserting the raw tombstoned boundary nodes as content.
|
|
12722
|
+
*/
|
|
12723
|
+
redoSplitLevel;
|
|
13195
12724
|
constructor(parentCreatedAt, fromPos, toPos, contents, splitLevel, executedAt, isUndoOp, fromIdx, toIdx) {
|
|
13196
12725
|
super(parentCreatedAt, executedAt);
|
|
13197
12726
|
this.fromPos = fromPos;
|
|
@@ -13277,7 +12806,13 @@ class TreeEditOperation extends Operation {
|
|
|
13277
12806
|
0
|
|
13278
12807
|
);
|
|
13279
12808
|
this.lastToIdx = preEditFromIdx + removedSize;
|
|
13280
|
-
|
|
12809
|
+
let reverseOp;
|
|
12810
|
+
const isPureL1Split = this.splitLevel === 1 && !this.contents?.length && removedNodes.length === 0;
|
|
12811
|
+
if (this.splitLevel === 0) {
|
|
12812
|
+
reverseOp = this.toReverseOperation(tree, removedNodes, preEditFromIdx);
|
|
12813
|
+
} else if (isPureL1Split) {
|
|
12814
|
+
reverseOp = this.toSplitReverseOperation(tree, preEditFromIdx);
|
|
12815
|
+
}
|
|
13281
12816
|
root.acc(diff);
|
|
13282
12817
|
for (const pair of pairs) {
|
|
13283
12818
|
root.registerGCPair(pair);
|
|
@@ -13313,6 +12848,24 @@ class TreeEditOperation extends Operation {
|
|
|
13313
12848
|
* @param preEditFromIdx - The from index captured BEFORE the edit
|
|
13314
12849
|
*/
|
|
13315
12850
|
toReverseOperation(tree, removedNodes, preEditFromIdx) {
|
|
12851
|
+
if (this.redoSplitLevel !== void 0 && this.redoSplitLevel > 0) {
|
|
12852
|
+
const splitRedoFromPos = tree.findPos(preEditFromIdx);
|
|
12853
|
+
const splitRedoOp = TreeEditOperation.create(
|
|
12854
|
+
this.getParentCreatedAt(),
|
|
12855
|
+
splitRedoFromPos,
|
|
12856
|
+
splitRedoFromPos,
|
|
12857
|
+
void 0,
|
|
12858
|
+
// no inserted content
|
|
12859
|
+
this.redoSplitLevel,
|
|
12860
|
+
void 0,
|
|
12861
|
+
// executedAt assigned at redo time
|
|
12862
|
+
true,
|
|
12863
|
+
// isUndoOp (treated as undo/redo op)
|
|
12864
|
+
preEditFromIdx,
|
|
12865
|
+
preEditFromIdx
|
|
12866
|
+
);
|
|
12867
|
+
return splitRedoOp;
|
|
12868
|
+
}
|
|
13316
12869
|
const insertedContentSize = this.contents ? this.contents.reduce((sum, node) => sum + node.paddedSize(), 0) : 0;
|
|
13317
12870
|
const maxNeededIdx = preEditFromIdx + insertedContentSize;
|
|
13318
12871
|
if (maxNeededIdx > tree.getSize()) {
|
|
@@ -13350,6 +12903,45 @@ class TreeEditOperation extends Operation {
|
|
|
13350
12903
|
reverseToIdx
|
|
13351
12904
|
);
|
|
13352
12905
|
}
|
|
12906
|
+
/**
|
|
12907
|
+
* `toSplitReverseOperation` creates the reverse operation for a split edit.
|
|
12908
|
+
*
|
|
12909
|
+
* A split creates element boundaries (close + open tags). The reverse
|
|
12910
|
+
* is a boundary deletion: a splitLevel=0 edit that removes those tokens,
|
|
12911
|
+
* merging the split elements back together.
|
|
12912
|
+
*
|
|
12913
|
+
* boundarySize = 2 * splitLevel (each level creates 1 close + 1 open tag)
|
|
12914
|
+
*
|
|
12915
|
+
* @param tree - The CRDTTree after the split has been applied
|
|
12916
|
+
* @param preEditFromIdx - The from index captured BEFORE the split
|
|
12917
|
+
*/
|
|
12918
|
+
toSplitReverseOperation(tree, preEditFromIdx) {
|
|
12919
|
+
const boundarySize = 2 * this.splitLevel;
|
|
12920
|
+
const reverseFromIdx = preEditFromIdx;
|
|
12921
|
+
const reverseToIdx = preEditFromIdx + boundarySize;
|
|
12922
|
+
if (reverseToIdx > tree.getSize()) {
|
|
12923
|
+
return void 0;
|
|
12924
|
+
}
|
|
12925
|
+
const reverseFromPos = tree.findPos(reverseFromIdx);
|
|
12926
|
+
const reverseToPos = tree.findPos(reverseToIdx);
|
|
12927
|
+
const boundaryDeletionOp = TreeEditOperation.create(
|
|
12928
|
+
this.getParentCreatedAt(),
|
|
12929
|
+
reverseFromPos,
|
|
12930
|
+
reverseToPos,
|
|
12931
|
+
void 0,
|
|
12932
|
+
// no content — this is a deletion
|
|
12933
|
+
0,
|
|
12934
|
+
// splitLevel=0: boundary deletion
|
|
12935
|
+
void 0,
|
|
12936
|
+
// executedAt assigned at undo time
|
|
12937
|
+
true,
|
|
12938
|
+
// isUndoOp
|
|
12939
|
+
reverseFromIdx,
|
|
12940
|
+
reverseToIdx
|
|
12941
|
+
);
|
|
12942
|
+
boundaryDeletionOp.redoSplitLevel = this.splitLevel;
|
|
12943
|
+
return boundaryDeletionOp;
|
|
12944
|
+
}
|
|
13353
12945
|
/**
|
|
13354
12946
|
* `normalizePos` returns the visible-index range of this operation.
|
|
13355
12947
|
* For undo ops, returns the stored (possibly reconciled) indices.
|
|
@@ -14055,35 +13647,196 @@ class Checkpoint {
|
|
|
14055
13647
|
}
|
|
14056
13648
|
}
|
|
14057
13649
|
const InitialCheckpoint = new Checkpoint(0n, 0);
|
|
14058
|
-
const
|
|
13650
|
+
const hllPrecision = 14;
|
|
13651
|
+
const hllRegisterCount = 1 << hllPrecision;
|
|
13652
|
+
const prime64x1 = 0x9e3779b185ebca87n;
|
|
13653
|
+
const prime64x2 = 0xc2b2ae3d27d4eb4fn;
|
|
13654
|
+
const prime64x3 = 0x165667b19e3779f9n;
|
|
13655
|
+
const prime64x4 = 0x85ebca77c2b2ae63n;
|
|
13656
|
+
const prime64x5 = 0x27d4eb2f165667c5n;
|
|
13657
|
+
const mask64 = 0xffffffffffffffffn;
|
|
13658
|
+
class HLL {
|
|
13659
|
+
registers;
|
|
13660
|
+
constructor() {
|
|
13661
|
+
this.registers = new Uint8Array(hllRegisterCount);
|
|
13662
|
+
}
|
|
13663
|
+
/**
|
|
13664
|
+
* `add` adds a value to the HLL and returns true if the register was updated.
|
|
13665
|
+
*/
|
|
13666
|
+
add(value) {
|
|
13667
|
+
const hash = xxhash64(value);
|
|
13668
|
+
const idx = Number(hash >> BigInt(64 - hllPrecision));
|
|
13669
|
+
const remaining = hash << BigInt(hllPrecision) & mask64 | 1n << BigInt(hllPrecision - 1);
|
|
13670
|
+
const rho = countLeadingZeros64(remaining) + 1;
|
|
13671
|
+
if (rho > this.registers[idx]) {
|
|
13672
|
+
this.registers[idx] = rho;
|
|
13673
|
+
return true;
|
|
13674
|
+
}
|
|
13675
|
+
return false;
|
|
13676
|
+
}
|
|
13677
|
+
/**
|
|
13678
|
+
* `count` returns the approximate cardinality estimate.
|
|
13679
|
+
*/
|
|
13680
|
+
count() {
|
|
13681
|
+
const m = hllRegisterCount;
|
|
13682
|
+
const alpha = 0.7213 / (1 + 1.079 / m);
|
|
13683
|
+
let sum = 0;
|
|
13684
|
+
let zeros = 0;
|
|
13685
|
+
for (let i = 0; i < m; i++) {
|
|
13686
|
+
sum += Math.pow(2, -this.registers[i]);
|
|
13687
|
+
if (this.registers[i] === 0) zeros++;
|
|
13688
|
+
}
|
|
13689
|
+
let estimate = alpha * m * m / sum;
|
|
13690
|
+
if (estimate <= 2.5 * m && zeros > 0) {
|
|
13691
|
+
estimate = m * Math.log(m / zeros);
|
|
13692
|
+
}
|
|
13693
|
+
return Math.round(estimate);
|
|
13694
|
+
}
|
|
13695
|
+
/**
|
|
13696
|
+
* `merge` merges another HLL into this one by taking the max of each register.
|
|
13697
|
+
* This operation is commutative, associative, and idempotent.
|
|
13698
|
+
*/
|
|
13699
|
+
merge(other) {
|
|
13700
|
+
for (let i = 0; i < hllRegisterCount; i++) {
|
|
13701
|
+
if (other.registers[i] > this.registers[i]) {
|
|
13702
|
+
this.registers[i] = other.registers[i];
|
|
13703
|
+
}
|
|
13704
|
+
}
|
|
13705
|
+
}
|
|
13706
|
+
/**
|
|
13707
|
+
* `toBytes` serializes the HLL registers to a byte array.
|
|
13708
|
+
*/
|
|
13709
|
+
toBytes() {
|
|
13710
|
+
return new Uint8Array(this.registers);
|
|
13711
|
+
}
|
|
13712
|
+
/**
|
|
13713
|
+
* `restore` restores the HLL registers from a byte array.
|
|
13714
|
+
* Throws if the data length does not match the register count.
|
|
13715
|
+
*/
|
|
13716
|
+
restore(data) {
|
|
13717
|
+
if (data.length !== hllRegisterCount) {
|
|
13718
|
+
throw new Error(
|
|
13719
|
+
`invalid HLL register payload: got ${data.length} bytes, want ${hllRegisterCount}`
|
|
13720
|
+
);
|
|
13721
|
+
}
|
|
13722
|
+
this.registers.set(data);
|
|
13723
|
+
}
|
|
13724
|
+
}
|
|
13725
|
+
function xxhash64(input) {
|
|
13726
|
+
const buf = new TextEncoder().encode(input);
|
|
13727
|
+
const len = buf.length;
|
|
13728
|
+
let h64;
|
|
13729
|
+
let offset = 0;
|
|
13730
|
+
const seed = 0n;
|
|
13731
|
+
if (len >= 32) {
|
|
13732
|
+
let v1 = seed + prime64x1 + prime64x2 & mask64;
|
|
13733
|
+
let v2 = seed + prime64x2 & mask64;
|
|
13734
|
+
let v3 = seed;
|
|
13735
|
+
let v4 = seed - prime64x1 & mask64;
|
|
13736
|
+
while (offset <= len - 32) {
|
|
13737
|
+
v1 = xxRound(v1, readU64LE(buf, offset));
|
|
13738
|
+
offset += 8;
|
|
13739
|
+
v2 = xxRound(v2, readU64LE(buf, offset));
|
|
13740
|
+
offset += 8;
|
|
13741
|
+
v3 = xxRound(v3, readU64LE(buf, offset));
|
|
13742
|
+
offset += 8;
|
|
13743
|
+
v4 = xxRound(v4, readU64LE(buf, offset));
|
|
13744
|
+
offset += 8;
|
|
13745
|
+
}
|
|
13746
|
+
h64 = rotl64(v1, 1n) + rotl64(v2, 7n) + rotl64(v3, 12n) + rotl64(v4, 18n) & mask64;
|
|
13747
|
+
h64 = xxMergeRound(h64, v1);
|
|
13748
|
+
h64 = xxMergeRound(h64, v2);
|
|
13749
|
+
h64 = xxMergeRound(h64, v3);
|
|
13750
|
+
h64 = xxMergeRound(h64, v4);
|
|
13751
|
+
} else {
|
|
13752
|
+
h64 = seed + prime64x5 & mask64;
|
|
13753
|
+
}
|
|
13754
|
+
h64 = h64 + BigInt(len) & mask64;
|
|
13755
|
+
while (offset + 8 <= len) {
|
|
13756
|
+
const k1 = xxRound(0n, readU64LE(buf, offset));
|
|
13757
|
+
h64 = rotl64(h64 ^ k1, 27n) * prime64x1 + prime64x4 & mask64;
|
|
13758
|
+
offset += 8;
|
|
13759
|
+
}
|
|
13760
|
+
if (offset + 4 <= len) {
|
|
13761
|
+
h64 = h64 ^ readU32LE(buf, offset) * prime64x1 & mask64;
|
|
13762
|
+
h64 = rotl64(h64, 23n) * prime64x2 + prime64x3 & mask64;
|
|
13763
|
+
offset += 4;
|
|
13764
|
+
}
|
|
13765
|
+
while (offset < len) {
|
|
13766
|
+
h64 = h64 ^ BigInt(buf[offset]) * prime64x5 & mask64;
|
|
13767
|
+
h64 = rotl64(h64, 11n) * prime64x1 & mask64;
|
|
13768
|
+
offset++;
|
|
13769
|
+
}
|
|
13770
|
+
h64 = (h64 ^ h64 >> 33n) * prime64x2 & mask64;
|
|
13771
|
+
h64 = (h64 ^ h64 >> 29n) * prime64x3 & mask64;
|
|
13772
|
+
h64 = (h64 ^ h64 >> 32n) & mask64;
|
|
13773
|
+
return h64;
|
|
13774
|
+
}
|
|
13775
|
+
function rotl64(x, r) {
|
|
13776
|
+
return (x << r | x >> 64n - r) & mask64;
|
|
13777
|
+
}
|
|
13778
|
+
function xxRound(acc, input) {
|
|
13779
|
+
acc = acc + input * prime64x2 & mask64;
|
|
13780
|
+
acc = rotl64(acc, 31n);
|
|
13781
|
+
return acc * prime64x1 & mask64;
|
|
13782
|
+
}
|
|
13783
|
+
function xxMergeRound(acc, val) {
|
|
13784
|
+
val = xxRound(0n, val);
|
|
13785
|
+
acc = (acc ^ val) & mask64;
|
|
13786
|
+
return acc * prime64x1 + prime64x4 & mask64;
|
|
13787
|
+
}
|
|
13788
|
+
function readU64LE(buf, offset) {
|
|
13789
|
+
let val = 0n;
|
|
13790
|
+
for (let i = 7; i >= 0; i--) {
|
|
13791
|
+
val = val << 8n | BigInt(buf[offset + i]);
|
|
13792
|
+
}
|
|
13793
|
+
return val;
|
|
13794
|
+
}
|
|
13795
|
+
function readU32LE(buf, offset) {
|
|
13796
|
+
return BigInt(buf[offset]) | BigInt(buf[offset + 1]) << 8n | BigInt(buf[offset + 2]) << 16n | BigInt(buf[offset + 3]) << 24n;
|
|
13797
|
+
}
|
|
13798
|
+
function countLeadingZeros64(x) {
|
|
13799
|
+
if (x === 0n) return 64;
|
|
13800
|
+
let n = 0;
|
|
13801
|
+
while ((x & 1n << 63n) === 0n) {
|
|
13802
|
+
n++;
|
|
13803
|
+
x <<= 1n;
|
|
13804
|
+
}
|
|
13805
|
+
return n;
|
|
13806
|
+
}
|
|
14059
13807
|
var CounterType = /* @__PURE__ */ ((CounterType2) => {
|
|
14060
13808
|
CounterType2[CounterType2["Int"] = 0] = "Int";
|
|
14061
13809
|
CounterType2[CounterType2["Long"] = 1] = "Long";
|
|
13810
|
+
CounterType2[CounterType2["IntDedup"] = 2] = "IntDedup";
|
|
14062
13811
|
return CounterType2;
|
|
14063
13812
|
})(CounterType || {});
|
|
14064
13813
|
class CRDTCounter extends CRDTElement {
|
|
14065
13814
|
valueType;
|
|
14066
13815
|
value;
|
|
13816
|
+
hll;
|
|
14067
13817
|
constructor(valueType, value, createdAt) {
|
|
14068
13818
|
super(createdAt);
|
|
14069
13819
|
this.valueType = valueType;
|
|
14070
13820
|
switch (valueType) {
|
|
13821
|
+
case 2:
|
|
13822
|
+
this.value = 0;
|
|
13823
|
+
break;
|
|
14071
13824
|
case 0:
|
|
14072
13825
|
if (typeof value === "number") {
|
|
14073
13826
|
if (value > Math.pow(2, 31) - 1 || value < -Math.pow(2, 31)) {
|
|
14074
|
-
this.value =
|
|
13827
|
+
this.value = bigintToInt32(BigInt(value));
|
|
14075
13828
|
} else {
|
|
14076
13829
|
this.value = removeDecimal(value);
|
|
14077
13830
|
}
|
|
14078
13831
|
} else {
|
|
14079
|
-
this.value = value
|
|
13832
|
+
this.value = bigintToInt32(value);
|
|
14080
13833
|
}
|
|
14081
13834
|
break;
|
|
14082
13835
|
case 1:
|
|
14083
13836
|
if (typeof value === "number") {
|
|
14084
|
-
this.value =
|
|
13837
|
+
this.value = BigInt.asIntN(64, BigInt(Math.trunc(value)));
|
|
14085
13838
|
} else {
|
|
14086
|
-
this.value = value;
|
|
13839
|
+
this.value = BigInt.asIntN(64, value);
|
|
14087
13840
|
}
|
|
14088
13841
|
break;
|
|
14089
13842
|
default:
|
|
@@ -14092,6 +13845,9 @@ class CRDTCounter extends CRDTElement {
|
|
|
14092
13845
|
`unimplemented type: ${valueType}`
|
|
14093
13846
|
);
|
|
14094
13847
|
}
|
|
13848
|
+
if (this.isDedup()) {
|
|
13849
|
+
this.hll ??= new HLL();
|
|
13850
|
+
}
|
|
14095
13851
|
}
|
|
14096
13852
|
/**
|
|
14097
13853
|
* `of` creates a new instance of Counter.
|
|
@@ -14105,9 +13861,10 @@ class CRDTCounter extends CRDTElement {
|
|
|
14105
13861
|
static valueFromBytes(counterType, bytes) {
|
|
14106
13862
|
switch (counterType) {
|
|
14107
13863
|
case 0:
|
|
13864
|
+
case 2:
|
|
14108
13865
|
return bytes[0] | bytes[1] << 8 | bytes[2] << 16 | bytes[3] << 24;
|
|
14109
13866
|
case 1:
|
|
14110
|
-
return
|
|
13867
|
+
return bigintFromBytesLE(bytes);
|
|
14111
13868
|
default:
|
|
14112
13869
|
throw new YorkieError(
|
|
14113
13870
|
Code.ErrUnimplemented,
|
|
@@ -14119,7 +13876,10 @@ class CRDTCounter extends CRDTElement {
|
|
|
14119
13876
|
* `getDataSize` returns the data usage of this element.
|
|
14120
13877
|
*/
|
|
14121
13878
|
getDataSize() {
|
|
14122
|
-
|
|
13879
|
+
let data = this.valueType === 0 || this.valueType === 2 ? 4 : 8;
|
|
13880
|
+
if (this.isDedup() && this.hll) {
|
|
13881
|
+
data += this.hll.toBytes().length;
|
|
13882
|
+
}
|
|
14123
13883
|
return {
|
|
14124
13884
|
data,
|
|
14125
13885
|
meta: this.getMetaUsage()
|
|
@@ -14158,6 +13918,9 @@ class CRDTCounter extends CRDTElement {
|
|
|
14158
13918
|
);
|
|
14159
13919
|
clone.setRemovedAt(this.getRemovedAt());
|
|
14160
13920
|
clone.setMovedAt(this.getMovedAt());
|
|
13921
|
+
if (this.isDedup() && this.hll) {
|
|
13922
|
+
clone.restoreHLL(this.hll.toBytes());
|
|
13923
|
+
}
|
|
14161
13924
|
return clone;
|
|
14162
13925
|
}
|
|
14163
13926
|
/**
|
|
@@ -14171,12 +13934,8 @@ class CRDTCounter extends CRDTElement {
|
|
|
14171
13934
|
*/
|
|
14172
13935
|
static getCounterType(value) {
|
|
14173
13936
|
switch (typeof value) {
|
|
14174
|
-
case "
|
|
14175
|
-
|
|
14176
|
-
return 1;
|
|
14177
|
-
} else {
|
|
14178
|
-
return;
|
|
14179
|
-
}
|
|
13937
|
+
case "bigint":
|
|
13938
|
+
return 1;
|
|
14180
13939
|
case "number":
|
|
14181
13940
|
if (value > Math.pow(2, 31) - 1 || value < -Math.pow(2, 31)) {
|
|
14182
13941
|
return 1;
|
|
@@ -14204,7 +13963,7 @@ class CRDTCounter extends CRDTElement {
|
|
|
14204
13963
|
*/
|
|
14205
13964
|
isNumericType() {
|
|
14206
13965
|
const t = this.valueType;
|
|
14207
|
-
return t === 0 || t === 1;
|
|
13966
|
+
return t === 0 || t === 1 || t === 2;
|
|
14208
13967
|
}
|
|
14209
13968
|
/**
|
|
14210
13969
|
* `getValueType` get counter value type.
|
|
@@ -14223,7 +13982,8 @@ class CRDTCounter extends CRDTElement {
|
|
|
14223
13982
|
*/
|
|
14224
13983
|
toBytes() {
|
|
14225
13984
|
switch (this.valueType) {
|
|
14226
|
-
case 0:
|
|
13985
|
+
case 0:
|
|
13986
|
+
case 2: {
|
|
14227
13987
|
const intVal = this.value;
|
|
14228
13988
|
return new Uint8Array([
|
|
14229
13989
|
intVal & 255,
|
|
@@ -14233,9 +13993,7 @@ class CRDTCounter extends CRDTElement {
|
|
|
14233
13993
|
]);
|
|
14234
13994
|
}
|
|
14235
13995
|
case 1: {
|
|
14236
|
-
|
|
14237
|
-
const longToBytes = longVal.toBytesLE();
|
|
14238
|
-
return Uint8Array.from(longToBytes);
|
|
13996
|
+
return bigintToBytesLE(this.value);
|
|
14239
13997
|
}
|
|
14240
13998
|
default:
|
|
14241
13999
|
throw new YorkieError(
|
|
@@ -14244,10 +14002,76 @@ class CRDTCounter extends CRDTElement {
|
|
|
14244
14002
|
);
|
|
14245
14003
|
}
|
|
14246
14004
|
}
|
|
14005
|
+
/**
|
|
14006
|
+
* `isDedup` returns whether dedup mode is enabled (derived from ValueType).
|
|
14007
|
+
*/
|
|
14008
|
+
isDedup() {
|
|
14009
|
+
return this.valueType === 2;
|
|
14010
|
+
}
|
|
14011
|
+
/**
|
|
14012
|
+
* `increaseDedup` increases the counter using HLL-based dedup.
|
|
14013
|
+
* Only updates the value if the actor is new (not seen before).
|
|
14014
|
+
*/
|
|
14015
|
+
increaseDedup(v, actor) {
|
|
14016
|
+
if (!this.isDedup() || !this.hll) {
|
|
14017
|
+
return this.increase(v);
|
|
14018
|
+
}
|
|
14019
|
+
if (!this.isNumericType() || !v.isNumericType()) {
|
|
14020
|
+
throw new TypeError(`Unsupported type of value: ${typeof v.getValue()}`);
|
|
14021
|
+
}
|
|
14022
|
+
if (!actor) {
|
|
14023
|
+
throw new YorkieError(
|
|
14024
|
+
Code.ErrInvalidArgument,
|
|
14025
|
+
"dedup counter requires actor"
|
|
14026
|
+
);
|
|
14027
|
+
}
|
|
14028
|
+
const val = v.getValue();
|
|
14029
|
+
const isUnit = v.getType() === PrimitiveType.Long ? val === 1n : val === 1;
|
|
14030
|
+
if (!isUnit) {
|
|
14031
|
+
throw new YorkieError(
|
|
14032
|
+
Code.ErrInvalidArgument,
|
|
14033
|
+
"dedup counter only supports increment by 1"
|
|
14034
|
+
);
|
|
14035
|
+
}
|
|
14036
|
+
if (this.hll.add(actor)) {
|
|
14037
|
+
this.recomputeValue();
|
|
14038
|
+
}
|
|
14039
|
+
return this;
|
|
14040
|
+
}
|
|
14041
|
+
/**
|
|
14042
|
+
* `hllBytes` returns the HLL register bytes, or undefined if not in dedup mode.
|
|
14043
|
+
*/
|
|
14044
|
+
hllBytes() {
|
|
14045
|
+
return this.hll?.toBytes();
|
|
14046
|
+
}
|
|
14047
|
+
/**
|
|
14048
|
+
* `restoreHLL` restores the HLL state from serialized bytes.
|
|
14049
|
+
*/
|
|
14050
|
+
restoreHLL(data) {
|
|
14051
|
+
if (!this.hll) {
|
|
14052
|
+
this.hll = new HLL();
|
|
14053
|
+
}
|
|
14054
|
+
this.hll.restore(data);
|
|
14055
|
+
this.recomputeValue();
|
|
14056
|
+
}
|
|
14057
|
+
/**
|
|
14058
|
+
* `recomputeValue` updates the counter value from the HLL cardinality estimate.
|
|
14059
|
+
*/
|
|
14060
|
+
recomputeValue() {
|
|
14061
|
+
if (!this.hll) return;
|
|
14062
|
+
this.value = this.hll.count();
|
|
14063
|
+
}
|
|
14247
14064
|
/**
|
|
14248
14065
|
* `increase` increases numeric data.
|
|
14066
|
+
* Dedup counters must use increaseDedup() instead.
|
|
14249
14067
|
*/
|
|
14250
14068
|
increase(v) {
|
|
14069
|
+
if (this.isDedup()) {
|
|
14070
|
+
throw new YorkieError(
|
|
14071
|
+
Code.ErrInvalidArgument,
|
|
14072
|
+
"dedup counter requires actor, use increaseDedup()"
|
|
14073
|
+
);
|
|
14074
|
+
}
|
|
14251
14075
|
function checkNumericType(target) {
|
|
14252
14076
|
if (!target.isNumericType()) {
|
|
14253
14077
|
throw new TypeError(
|
|
@@ -14258,14 +14082,17 @@ class CRDTCounter extends CRDTElement {
|
|
|
14258
14082
|
checkNumericType(this);
|
|
14259
14083
|
checkNumericType(v);
|
|
14260
14084
|
if (this.valueType === 1) {
|
|
14261
|
-
|
|
14085
|
+
const delta = typeof v.getValue() === "bigint" ? v.getValue() : BigInt(Math.trunc(v.getValue()));
|
|
14086
|
+
this.value = BigInt.asIntN(64, this.value + delta);
|
|
14262
14087
|
} else {
|
|
14263
14088
|
if (v.getType() === PrimitiveType.Long) {
|
|
14264
|
-
this.value = this.value + v.getValue()
|
|
14089
|
+
this.value = this.value + bigintToInt32(v.getValue());
|
|
14265
14090
|
} else {
|
|
14266
|
-
this.value =
|
|
14267
|
-
|
|
14268
|
-
|
|
14091
|
+
this.value = bigintToInt32(
|
|
14092
|
+
BigInt(
|
|
14093
|
+
this.value + removeDecimal(v.getValue())
|
|
14094
|
+
)
|
|
14095
|
+
);
|
|
14269
14096
|
}
|
|
14270
14097
|
}
|
|
14271
14098
|
return this;
|
|
@@ -14273,15 +14100,23 @@ class CRDTCounter extends CRDTElement {
|
|
|
14273
14100
|
}
|
|
14274
14101
|
class IncreaseOperation extends Operation {
|
|
14275
14102
|
value;
|
|
14276
|
-
|
|
14103
|
+
actor;
|
|
14104
|
+
constructor(parentCreatedAt, value, executedAt, actor) {
|
|
14277
14105
|
super(parentCreatedAt, executedAt);
|
|
14278
14106
|
this.value = value;
|
|
14107
|
+
this.actor = actor || "";
|
|
14279
14108
|
}
|
|
14280
14109
|
/**
|
|
14281
14110
|
* `create` creates a new instance of IncreaseOperation.
|
|
14282
14111
|
*/
|
|
14283
|
-
static create(parentCreatedAt, value, executedAt) {
|
|
14284
|
-
return new IncreaseOperation(parentCreatedAt, value, executedAt);
|
|
14112
|
+
static create(parentCreatedAt, value, executedAt, actor) {
|
|
14113
|
+
return new IncreaseOperation(parentCreatedAt, value, executedAt, actor);
|
|
14114
|
+
}
|
|
14115
|
+
/**
|
|
14116
|
+
* `getActor` returns the actor ID associated with this operation.
|
|
14117
|
+
*/
|
|
14118
|
+
getActor() {
|
|
14119
|
+
return this.actor;
|
|
14285
14120
|
}
|
|
14286
14121
|
/**
|
|
14287
14122
|
* `execute` executes this operation on the given `CRDTRoot`.
|
|
@@ -14302,7 +14137,17 @@ class IncreaseOperation extends Operation {
|
|
|
14302
14137
|
}
|
|
14303
14138
|
const counter = parentObject;
|
|
14304
14139
|
const value = this.value.deepcopy();
|
|
14305
|
-
counter.
|
|
14140
|
+
if (counter.isDedup()) {
|
|
14141
|
+
if (!this.actor) {
|
|
14142
|
+
throw new YorkieError(
|
|
14143
|
+
Code.ErrInvalidArgument,
|
|
14144
|
+
"dedup counter requires actor"
|
|
14145
|
+
);
|
|
14146
|
+
}
|
|
14147
|
+
counter.increaseDedup(value, this.actor);
|
|
14148
|
+
} else {
|
|
14149
|
+
counter.increase(value);
|
|
14150
|
+
}
|
|
14306
14151
|
return {
|
|
14307
14152
|
opInfos: [
|
|
14308
14153
|
{
|
|
@@ -14311,7 +14156,9 @@ class IncreaseOperation extends Operation {
|
|
|
14311
14156
|
value: value.getValue()
|
|
14312
14157
|
}
|
|
14313
14158
|
],
|
|
14314
|
-
|
|
14159
|
+
// Dedup counters do not support undo/redo because HLL cannot
|
|
14160
|
+
// remove an actor once added.
|
|
14161
|
+
reverseOp: this.actor ? void 0 : this.toReverseOperation()
|
|
14315
14162
|
};
|
|
14316
14163
|
}
|
|
14317
14164
|
/**
|
|
@@ -14320,7 +14167,7 @@ class IncreaseOperation extends Operation {
|
|
|
14320
14167
|
toReverseOperation() {
|
|
14321
14168
|
const primitiveValue = this.value.deepcopy();
|
|
14322
14169
|
const valueType = primitiveValue.getType();
|
|
14323
|
-
const value = valueType === PrimitiveType.Long ? primitiveValue.getValue()
|
|
14170
|
+
const value = valueType === PrimitiveType.Long ? -primitiveValue.getValue() : primitiveValue.getValue() * -1;
|
|
14324
14171
|
const reverseOp = IncreaseOperation.create(
|
|
14325
14172
|
this.getParentCreatedAt(),
|
|
14326
14173
|
Primitive.of(value, primitiveValue.getCreatedAt())
|
|
@@ -14405,28 +14252,67 @@ class TreeStyleOperation extends Operation {
|
|
|
14405
14252
|
let changes;
|
|
14406
14253
|
let pairs;
|
|
14407
14254
|
let diff = { data: 0, meta: 0 };
|
|
14255
|
+
const reversePrevAttributes = /* @__PURE__ */ new Map();
|
|
14256
|
+
const reverseAttrsToRemove = [];
|
|
14408
14257
|
if (this.attributes.size) {
|
|
14409
14258
|
const attributes = {};
|
|
14410
14259
|
[...this.attributes].forEach(([key, value]) => attributes[key] = value);
|
|
14411
|
-
|
|
14260
|
+
let prevAttributes;
|
|
14261
|
+
let newAttrKeys;
|
|
14262
|
+
[pairs, changes, diff, prevAttributes, newAttrKeys] = tree.style(
|
|
14412
14263
|
[this.fromPos, this.toPos],
|
|
14413
14264
|
attributes,
|
|
14414
14265
|
this.getExecutedAt(),
|
|
14415
14266
|
versionVector
|
|
14416
14267
|
);
|
|
14268
|
+
for (const [key, value] of prevAttributes) {
|
|
14269
|
+
reversePrevAttributes.set(key, value);
|
|
14270
|
+
}
|
|
14271
|
+
reverseAttrsToRemove.push(...newAttrKeys);
|
|
14417
14272
|
} else {
|
|
14418
14273
|
const attributesToRemove = this.attributesToRemove;
|
|
14419
|
-
|
|
14274
|
+
let prevAttributes;
|
|
14275
|
+
[pairs, changes, diff, prevAttributes] = tree.removeStyle(
|
|
14420
14276
|
[this.fromPos, this.toPos],
|
|
14421
14277
|
attributesToRemove,
|
|
14422
14278
|
this.getExecutedAt(),
|
|
14423
14279
|
versionVector
|
|
14424
14280
|
);
|
|
14281
|
+
for (const [key, value] of prevAttributes) {
|
|
14282
|
+
reversePrevAttributes.set(key, value);
|
|
14283
|
+
}
|
|
14425
14284
|
}
|
|
14426
14285
|
root.acc(diff);
|
|
14427
14286
|
for (const pair of pairs) {
|
|
14428
14287
|
root.registerGCPair(pair);
|
|
14429
14288
|
}
|
|
14289
|
+
let reverseOp;
|
|
14290
|
+
if (reversePrevAttributes.size > 0 && reverseAttrsToRemove.length > 0) {
|
|
14291
|
+
reverseOp = new TreeStyleOperation(
|
|
14292
|
+
this.getParentCreatedAt(),
|
|
14293
|
+
this.fromPos,
|
|
14294
|
+
this.toPos,
|
|
14295
|
+
reversePrevAttributes,
|
|
14296
|
+
reverseAttrsToRemove,
|
|
14297
|
+
void 0
|
|
14298
|
+
);
|
|
14299
|
+
} else if (reverseAttrsToRemove.length > 0) {
|
|
14300
|
+
reverseOp = TreeStyleOperation.createTreeRemoveStyleOperation(
|
|
14301
|
+
this.getParentCreatedAt(),
|
|
14302
|
+
this.fromPos,
|
|
14303
|
+
this.toPos,
|
|
14304
|
+
reverseAttrsToRemove,
|
|
14305
|
+
void 0
|
|
14306
|
+
);
|
|
14307
|
+
} else if (reversePrevAttributes.size > 0) {
|
|
14308
|
+
reverseOp = TreeStyleOperation.create(
|
|
14309
|
+
this.getParentCreatedAt(),
|
|
14310
|
+
this.fromPos,
|
|
14311
|
+
this.toPos,
|
|
14312
|
+
reversePrevAttributes,
|
|
14313
|
+
void 0
|
|
14314
|
+
);
|
|
14315
|
+
}
|
|
14430
14316
|
return {
|
|
14431
14317
|
opInfos: changes.map(({ from, to, value, fromPath, toPath }) => {
|
|
14432
14318
|
return {
|
|
@@ -14438,7 +14324,8 @@ class TreeStyleOperation extends Operation {
|
|
|
14438
14324
|
toPath,
|
|
14439
14325
|
path: root.createPath(this.getParentCreatedAt())
|
|
14440
14326
|
};
|
|
14441
|
-
})
|
|
14327
|
+
}),
|
|
14328
|
+
reverseOp
|
|
14442
14329
|
};
|
|
14443
14330
|
}
|
|
14444
14331
|
/**
|
|
@@ -14659,6 +14546,8 @@ function toCounterType(valueType) {
|
|
|
14659
14546
|
return ValueType.INTEGER_CNT;
|
|
14660
14547
|
case CounterType.Long:
|
|
14661
14548
|
return ValueType.LONG_CNT;
|
|
14549
|
+
case CounterType.IntDedup:
|
|
14550
|
+
return ValueType.INTEGER_DEDUP_CNT;
|
|
14662
14551
|
default:
|
|
14663
14552
|
throw new YorkieError(
|
|
14664
14553
|
Code.ErrInvalidType,
|
|
@@ -14831,6 +14720,7 @@ function toOperation(operation) {
|
|
|
14831
14720
|
pbIncreaseOperation.executedAt = toTimeTicket(
|
|
14832
14721
|
increaseOperation.getExecutedAt()
|
|
14833
14722
|
);
|
|
14723
|
+
pbIncreaseOperation.actor = increaseOperation.getActor();
|
|
14834
14724
|
pbOperation.body.case = "increase";
|
|
14835
14725
|
pbOperation.body.value = pbIncreaseOperation;
|
|
14836
14726
|
} else if (operation instanceof TreeEditOperation) {
|
|
@@ -15082,7 +14972,8 @@ function toCounter(counter) {
|
|
|
15082
14972
|
value: counter.toBytes(),
|
|
15083
14973
|
createdAt: toTimeTicket(counter.getCreatedAt()),
|
|
15084
14974
|
movedAt: toTimeTicket(counter.getMovedAt()),
|
|
15085
|
-
removedAt: toTimeTicket(counter.getRemovedAt())
|
|
14975
|
+
removedAt: toTimeTicket(counter.getRemovedAt()),
|
|
14976
|
+
hllRegisters: counter.hllBytes() || new Uint8Array()
|
|
15086
14977
|
})
|
|
15087
14978
|
}
|
|
15088
14979
|
});
|
|
@@ -15246,6 +15137,8 @@ function fromCounterType(pbValueType) {
|
|
|
15246
15137
|
return CounterType.Int;
|
|
15247
15138
|
case ValueType.LONG_CNT:
|
|
15248
15139
|
return CounterType.Long;
|
|
15140
|
+
case ValueType.INTEGER_DEDUP_CNT:
|
|
15141
|
+
return CounterType.IntDedup;
|
|
15249
15142
|
}
|
|
15250
15143
|
throw new YorkieError(
|
|
15251
15144
|
Code.ErrUnimplemented,
|
|
@@ -15288,6 +15181,7 @@ function fromElementSimple(pbElementSimple) {
|
|
|
15288
15181
|
);
|
|
15289
15182
|
case ValueType.INTEGER_CNT:
|
|
15290
15183
|
case ValueType.LONG_CNT:
|
|
15184
|
+
case ValueType.INTEGER_DEDUP_CNT:
|
|
15291
15185
|
return CRDTCounter.create(
|
|
15292
15186
|
fromCounterType(pbElementSimple.type),
|
|
15293
15187
|
CRDTCounter.valueFromBytes(
|
|
@@ -15470,7 +15364,8 @@ function fromOperation(pbOperation) {
|
|
|
15470
15364
|
return IncreaseOperation.create(
|
|
15471
15365
|
fromTimeTicket(pbIncreaseOperation.parentCreatedAt),
|
|
15472
15366
|
fromElementSimple(pbIncreaseOperation.value),
|
|
15473
|
-
fromTimeTicket(pbIncreaseOperation.executedAt)
|
|
15367
|
+
fromTimeTicket(pbIncreaseOperation.executedAt),
|
|
15368
|
+
pbIncreaseOperation.actor || void 0
|
|
15474
15369
|
);
|
|
15475
15370
|
} else if (pbOperation.body.case === "treeEdit") {
|
|
15476
15371
|
const pbTreeEditOperation = pbOperation.body.value;
|
|
@@ -15618,6 +15513,9 @@ function fromCounter(pbCounter) {
|
|
|
15618
15513
|
);
|
|
15619
15514
|
counter.setMovedAt(fromTimeTicket(pbCounter.movedAt));
|
|
15620
15515
|
counter.setRemovedAt(fromTimeTicket(pbCounter.removedAt));
|
|
15516
|
+
if (counter.isDedup() && pbCounter.hllRegisters.length > 0) {
|
|
15517
|
+
counter.restoreHLL(pbCounter.hllRegisters);
|
|
15518
|
+
}
|
|
15621
15519
|
return counter;
|
|
15622
15520
|
}
|
|
15623
15521
|
function fromTree(pbTree) {
|
|
@@ -17087,7 +16985,7 @@ class Text {
|
|
|
17087
16985
|
return this.text.indexRangeToPosRange(fromIdx, toIdx);
|
|
17088
16986
|
}
|
|
17089
16987
|
}
|
|
17090
|
-
class
|
|
16988
|
+
class BaseCounter {
|
|
17091
16989
|
valueType;
|
|
17092
16990
|
value;
|
|
17093
16991
|
context;
|
|
@@ -17097,7 +16995,7 @@ class Counter {
|
|
|
17097
16995
|
this.value = value;
|
|
17098
16996
|
}
|
|
17099
16997
|
/**
|
|
17100
|
-
* `initialize`
|
|
16998
|
+
* `initialize` links this proxy to a ChangeContext and CRDTCounter.
|
|
17101
16999
|
*/
|
|
17102
17000
|
initialize(context, counter) {
|
|
17103
17001
|
this.valueType = counter.getValueType();
|
|
@@ -17106,17 +17004,11 @@ class Counter {
|
|
|
17106
17004
|
this.value = counter.getValue();
|
|
17107
17005
|
}
|
|
17108
17006
|
/**
|
|
17109
|
-
* `getID` returns the ID of this
|
|
17007
|
+
* `getID` returns the ID of this counter.
|
|
17110
17008
|
*/
|
|
17111
17009
|
getID() {
|
|
17112
17010
|
return this.counter.getID();
|
|
17113
17011
|
}
|
|
17114
|
-
/**
|
|
17115
|
-
* `getValue` returns the value of this counter;
|
|
17116
|
-
*/
|
|
17117
|
-
getValue() {
|
|
17118
|
-
return this.value;
|
|
17119
|
-
}
|
|
17120
17012
|
/**
|
|
17121
17013
|
* `getValueType` returns the value type of this counter.
|
|
17122
17014
|
*/
|
|
@@ -17124,15 +17016,45 @@ class Counter {
|
|
|
17124
17016
|
return this.valueType;
|
|
17125
17017
|
}
|
|
17126
17018
|
/**
|
|
17127
|
-
* `
|
|
17019
|
+
* `toJSForTest` returns value with meta data for testing.
|
|
17128
17020
|
*/
|
|
17129
|
-
|
|
17021
|
+
toJSForTest() {
|
|
17022
|
+
if (!this.context || !this.counter) {
|
|
17023
|
+
throw new YorkieError(
|
|
17024
|
+
Code.ErrNotInitialized,
|
|
17025
|
+
"Counter is not initialized yet"
|
|
17026
|
+
);
|
|
17027
|
+
}
|
|
17028
|
+
return this.counter.toJSForTest();
|
|
17029
|
+
}
|
|
17030
|
+
/**
|
|
17031
|
+
* `ensureInitialized` throws if this counter has not been initialized.
|
|
17032
|
+
*/
|
|
17033
|
+
ensureInitialized() {
|
|
17130
17034
|
if (!this.context || !this.counter) {
|
|
17131
17035
|
throw new YorkieError(
|
|
17132
17036
|
Code.ErrNotInitialized,
|
|
17133
17037
|
"Counter is not initialized yet"
|
|
17134
17038
|
);
|
|
17135
17039
|
}
|
|
17040
|
+
}
|
|
17041
|
+
}
|
|
17042
|
+
class Counter extends BaseCounter {
|
|
17043
|
+
constructor(value) {
|
|
17044
|
+
const type = typeof value === "bigint" ? CounterType.Long : CounterType.Int;
|
|
17045
|
+
super(type, value);
|
|
17046
|
+
}
|
|
17047
|
+
/**
|
|
17048
|
+
* `getValue` returns the value of this counter.
|
|
17049
|
+
*/
|
|
17050
|
+
getValue() {
|
|
17051
|
+
return this.value;
|
|
17052
|
+
}
|
|
17053
|
+
/**
|
|
17054
|
+
* `increase` increases numeric data.
|
|
17055
|
+
*/
|
|
17056
|
+
increase(v) {
|
|
17057
|
+
this.ensureInitialized();
|
|
17136
17058
|
const ticket = this.context.issueTimeTicket();
|
|
17137
17059
|
const value = Primitive.of(v, ticket);
|
|
17138
17060
|
if (!value.isNumericType()) {
|
|
@@ -17146,19 +17068,44 @@ class Counter {
|
|
|
17146
17068
|
);
|
|
17147
17069
|
return this;
|
|
17148
17070
|
}
|
|
17071
|
+
}
|
|
17072
|
+
class DedupCounter extends BaseCounter {
|
|
17073
|
+
constructor() {
|
|
17074
|
+
super(CounterType.IntDedup, 0);
|
|
17075
|
+
}
|
|
17149
17076
|
/**
|
|
17150
|
-
* `
|
|
17077
|
+
* `getValue` returns the value of this counter. Always a number since
|
|
17078
|
+
* DedupCounter only supports IntDedup.
|
|
17151
17079
|
*/
|
|
17152
|
-
|
|
17153
|
-
|
|
17154
|
-
|
|
17155
|
-
|
|
17156
|
-
|
|
17157
|
-
|
|
17080
|
+
getValue() {
|
|
17081
|
+
return this.value;
|
|
17082
|
+
}
|
|
17083
|
+
/**
|
|
17084
|
+
* `add` records a unique actor in the dedup counter. If the actor has
|
|
17085
|
+
* already been counted, the call is ignored.
|
|
17086
|
+
*/
|
|
17087
|
+
add(actor) {
|
|
17088
|
+
this.ensureInitialized();
|
|
17089
|
+
if (!actor) {
|
|
17090
|
+
throw new YorkieError(Code.ErrInvalidArgument, "actor is required");
|
|
17158
17091
|
}
|
|
17159
|
-
|
|
17092
|
+
const ticket = this.context.issueTimeTicket();
|
|
17093
|
+
const value = Primitive.of(1, ticket);
|
|
17094
|
+
this.counter.increaseDedup(value, actor);
|
|
17095
|
+
this.context.push(
|
|
17096
|
+
IncreaseOperation.create(
|
|
17097
|
+
this.counter.getCreatedAt(),
|
|
17098
|
+
value,
|
|
17099
|
+
ticket,
|
|
17100
|
+
actor
|
|
17101
|
+
)
|
|
17102
|
+
);
|
|
17103
|
+
return this;
|
|
17160
17104
|
}
|
|
17161
17105
|
}
|
|
17106
|
+
function isCounter$1(value) {
|
|
17107
|
+
return value instanceof Counter || value instanceof DedupCounter;
|
|
17108
|
+
}
|
|
17162
17109
|
function toTreeNode(node) {
|
|
17163
17110
|
if (node.isText) {
|
|
17164
17111
|
return {
|
|
@@ -17962,7 +17909,12 @@ function toWrappedElement(context, elem) {
|
|
|
17962
17909
|
} else if (elem instanceof CRDTText) {
|
|
17963
17910
|
return new Text(context, elem);
|
|
17964
17911
|
} else if (elem instanceof CRDTCounter) {
|
|
17965
|
-
|
|
17912
|
+
if (elem.isDedup()) {
|
|
17913
|
+
const counter2 = new DedupCounter();
|
|
17914
|
+
counter2.initialize(context, elem);
|
|
17915
|
+
return counter2;
|
|
17916
|
+
}
|
|
17917
|
+
const counter = new Counter(0);
|
|
17966
17918
|
counter.initialize(context, elem);
|
|
17967
17919
|
return counter;
|
|
17968
17920
|
} else if (elem instanceof CRDTTree) {
|
|
@@ -17992,7 +17944,7 @@ function buildCRDTElement(context, value, createdAt) {
|
|
|
17992
17944
|
if (value instanceof Text) {
|
|
17993
17945
|
element = CRDTText.create(RGATreeSplit.create(), createdAt);
|
|
17994
17946
|
value.initialize(context, element);
|
|
17995
|
-
} else if (value
|
|
17947
|
+
} else if (isCounter$1(value)) {
|
|
17996
17948
|
element = CRDTCounter.create(
|
|
17997
17949
|
value.getValueType(),
|
|
17998
17950
|
value.getValue(),
|
|
@@ -20275,7 +20227,7 @@ function createAuthInterceptor(apiKey, token) {
|
|
|
20275
20227
|
};
|
|
20276
20228
|
}
|
|
20277
20229
|
const name$1 = "@yorkie-js/sdk";
|
|
20278
|
-
const version$1 = "0.7.
|
|
20230
|
+
const version$1 = "0.7.5";
|
|
20279
20231
|
const pkg$1 = {
|
|
20280
20232
|
name: name$1,
|
|
20281
20233
|
version: version$1
|
|
@@ -20619,21 +20571,19 @@ class Client {
|
|
|
20619
20571
|
this.channelHeartbeatInterval = opts.channelHeartbeatInterval ?? DefaultClientOptions.channelHeartbeatInterval;
|
|
20620
20572
|
const { authInterceptor, setToken } = createAuthInterceptor(this.apiKey);
|
|
20621
20573
|
this.setAuthToken = setToken;
|
|
20574
|
+
const transportOptions = {
|
|
20575
|
+
baseUrl: rpcAddr,
|
|
20576
|
+
interceptors: [authInterceptor, createMetricInterceptor(opts?.userAgent)],
|
|
20577
|
+
fetch: (input, init) => {
|
|
20578
|
+
return fetch(input, {
|
|
20579
|
+
...init,
|
|
20580
|
+
keepalive: this.keepalive
|
|
20581
|
+
});
|
|
20582
|
+
}
|
|
20583
|
+
};
|
|
20622
20584
|
this.rpcClient = createClient(
|
|
20623
20585
|
YorkieService,
|
|
20624
|
-
createGrpcWebTransport(
|
|
20625
|
-
baseUrl: rpcAddr,
|
|
20626
|
-
interceptors: [
|
|
20627
|
-
authInterceptor,
|
|
20628
|
-
createMetricInterceptor(opts?.userAgent)
|
|
20629
|
-
],
|
|
20630
|
-
fetch: (input, init) => {
|
|
20631
|
-
return fetch(input, {
|
|
20632
|
-
...init,
|
|
20633
|
-
keepalive: this.keepalive
|
|
20634
|
-
});
|
|
20635
|
-
}
|
|
20636
|
-
})
|
|
20586
|
+
opts.useGrpcWebTransport ? createGrpcWebTransport(transportOptions) : createConnectTransport(transportOptions)
|
|
20637
20587
|
);
|
|
20638
20588
|
this.taskQueue = [];
|
|
20639
20589
|
}
|
|
@@ -22131,10 +22081,6 @@ const YSON = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty
|
|
|
22131
22081
|
textToString,
|
|
22132
22082
|
treeToXML
|
|
22133
22083
|
}, Symbol.toStringTag, { value: "Module" }));
|
|
22134
|
-
({
|
|
22135
|
-
IntType: CounterType.Int,
|
|
22136
|
-
LongType: CounterType.Long
|
|
22137
|
-
});
|
|
22138
22084
|
if (typeof globalThis !== "undefined") {
|
|
22139
22085
|
globalThis.yorkie = {
|
|
22140
22086
|
Client,
|
|
@@ -22142,18 +22088,17 @@ if (typeof globalThis !== "undefined") {
|
|
|
22142
22088
|
Primitive,
|
|
22143
22089
|
Text,
|
|
22144
22090
|
Counter,
|
|
22091
|
+
DedupCounter,
|
|
22145
22092
|
Tree,
|
|
22146
22093
|
Channel: Channel2,
|
|
22147
22094
|
ChannelEventType,
|
|
22148
22095
|
YSON,
|
|
22149
22096
|
LogLevel,
|
|
22150
|
-
setLogLevel
|
|
22151
|
-
IntType: CounterType.Int,
|
|
22152
|
-
LongType: CounterType.Long
|
|
22097
|
+
setLogLevel
|
|
22153
22098
|
};
|
|
22154
22099
|
}
|
|
22155
22100
|
const name = "@yorkie-js/react";
|
|
22156
|
-
const version = "0.7.
|
|
22101
|
+
const version = "0.7.5";
|
|
22157
22102
|
const pkg = {
|
|
22158
22103
|
name,
|
|
22159
22104
|
version
|