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