@uwrl/qc-utils 0.0.22 → 0.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +242 -35
- package/dist/index.d.ts +0 -1
- package/dist/index.js +1710 -2184
- package/dist/index.umd.cjs +15 -15
- package/dist/types/index.d.ts +22 -0
- package/dist/utils/plotting/observation-record.d.ts +16 -45
- package/dist/utils/plotting/script.d.ts +7 -5
- package/package.json +1 -1
- package/dist/services/__tests__/createPatchObject.spec.d.ts +0 -1
- package/dist/services/__tests__/requestInterceptor.spec.d.ts +0 -1
- package/dist/services/__tests__/responseInterceptor.spec.d.ts +0 -1
- package/dist/services/api.d.ts +0 -147
- package/dist/services/apiMethods.d.ts +0 -8
- package/dist/services/createPatchObject.d.ts +0 -17
- package/dist/services/getCSRFToken.d.ts +0 -1
- package/dist/services/index.d.ts +0 -6
- package/dist/services/requestInterceptor.d.ts +0 -12
- package/dist/services/responseInterceptor.d.ts +0 -2
package/dist/index.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
var
|
|
2
|
-
class
|
|
1
|
+
var N = /* @__PURE__ */ ((r) => (r.SECOND = "s", r.MINUTE = "m", r.HOUR = "h", r.DAY = "D", r.WEEK = "W", r.MONTH = "M", r.YEAR = "Y", r))(N || {}), S = /* @__PURE__ */ ((r) => (r.ADD_POINTS = "ADD_POINTS", r.CHANGE_VALUES = "CHANGE_VALUES", r.ASSIGN_VALUES_BULK = "ASSIGN_VALUES_BULK", r.DELETE_POINTS = "DELETE_POINTS", r.DRIFT_CORRECTION = "DRIFT_CORRECTION", r.INTERPOLATE = "INTERPOLATE", r.SHIFT_DATETIMES = "SHIFT_DATETIMES", r.ASSIGN_DATETIMES_BULK = "ASSIGN_DATETIMES_BULK", r.FILL_GAPS = "FILL_GAPS", r))(S || {}), L = /* @__PURE__ */ ((r) => (r.FIND_GAPS = "FIND_GAPS", r.PERSISTENCE = "PERSISTENCE", r.CHANGE = "CHANGE", r.RATE_OF_CHANGE = "RATE_OF_CHANGE", r.VALUE_THRESHOLD = "VALUE_THRESHOLD", r.DATETIME_RANGE = "DATETIME_RANGE", r.SELECTION = "SELECTION", r))(L || {}), B = /* @__PURE__ */ ((r) => (r.LT = "Less than", r.LTE = "Less than or equal to", r.GT = "Greater than", r.GTE = "Greater than or equal to", r.E = "Equal", r))(B || {}), mt = /* @__PURE__ */ ((r) => (r.ADD = "ADD", r.SUB = "SUB", r.MULT = "MULT", r.DIV = "DIV", r.ASSIGN = "ASSIGN", r))(mt || {}), wt = /* @__PURE__ */ ((r) => (r.LT = "Less than", r.LTE = "Less than or equal to", r.GT = "Greater than", r.GTE = "Greater than or equal to", r.E = "Equal", r))(wt || {});
|
|
2
|
+
class gt {
|
|
3
3
|
id;
|
|
4
4
|
thingId;
|
|
5
5
|
link;
|
|
@@ -11,7 +11,7 @@ class zt {
|
|
|
11
11
|
this.id = "", this.thingId = "", this.link = "", this.frequency = null, this.path = "HydroShare", this.datastreamIds = [], this.publicResource = !1;
|
|
12
12
|
}
|
|
13
13
|
}
|
|
14
|
-
class
|
|
14
|
+
class mr extends gt {
|
|
15
15
|
resourceTitle;
|
|
16
16
|
resourceAbstract;
|
|
17
17
|
resourceKeywords;
|
|
@@ -19,7 +19,7 @@ class ts extends zt {
|
|
|
19
19
|
super(), this.resourceTitle = void 0, this.resourceAbstract = void 0, this.resourceKeywords = void 0;
|
|
20
20
|
}
|
|
21
21
|
}
|
|
22
|
-
class
|
|
22
|
+
class yt {
|
|
23
23
|
latitude;
|
|
24
24
|
longitude;
|
|
25
25
|
elevation_m;
|
|
@@ -31,11 +31,11 @@ class Xt {
|
|
|
31
31
|
this.elevationDatum = "WGS84", this.state = "", this.county = "", this.country = "";
|
|
32
32
|
}
|
|
33
33
|
}
|
|
34
|
-
class
|
|
34
|
+
class wr {
|
|
35
35
|
id;
|
|
36
36
|
workspaceId;
|
|
37
37
|
name;
|
|
38
|
-
location = new
|
|
38
|
+
location = new yt();
|
|
39
39
|
tags;
|
|
40
40
|
hydroShareArchive;
|
|
41
41
|
siteType;
|
|
@@ -48,7 +48,7 @@ class rs {
|
|
|
48
48
|
this.id = "", this.workspaceId = "", this.name = "", this.tags = [], this.siteType = "", this.samplingFeatureCode = "", this.isPrivate = !1, this.description = "", this.samplingFeatureType = "Site", this.dataDisclaimer = "";
|
|
49
49
|
}
|
|
50
50
|
}
|
|
51
|
-
class
|
|
51
|
+
class gr {
|
|
52
52
|
id;
|
|
53
53
|
workspaceId;
|
|
54
54
|
name;
|
|
@@ -74,11 +74,11 @@ class ss {
|
|
|
74
74
|
timeAggregationIntervalUnit;
|
|
75
75
|
dataSourceId;
|
|
76
76
|
valueCount;
|
|
77
|
-
constructor(
|
|
78
|
-
this.id = "", this.workspaceId = "", this.name = "", this.description = "", this.thingId =
|
|
77
|
+
constructor(e) {
|
|
78
|
+
this.id = "", this.workspaceId = "", this.name = "", this.description = "", this.thingId = e || "", this.observationType = "OM_Measurement", this.resultType = "Time Series Coverage", this.sampledMedium = "", this.noDataValue = -9999, this.aggregationStatistic = "", this.unitId = "", this.observedPropertyId = "", this.sensorId = "", this.processingLevelId = "", this.timeAggregationInterval = null, this.timeAggregationIntervalUnit = "seconds", this.isPrivate = !0, this.isVisible = !0, this.valueCount = 0;
|
|
79
79
|
}
|
|
80
80
|
}
|
|
81
|
-
class
|
|
81
|
+
class yr {
|
|
82
82
|
id;
|
|
83
83
|
workspaceId;
|
|
84
84
|
name;
|
|
@@ -89,7 +89,7 @@ class ns {
|
|
|
89
89
|
this.id = "", this.workspaceId = "", this.name = "", this.symbol = "", this.definition = "", this.type = "";
|
|
90
90
|
}
|
|
91
91
|
}
|
|
92
|
-
class
|
|
92
|
+
class br {
|
|
93
93
|
id;
|
|
94
94
|
workspaceId;
|
|
95
95
|
name;
|
|
@@ -105,7 +105,7 @@ class os {
|
|
|
105
105
|
this.id = "", this.workspaceId = "", this.name = "", this.description = "", this.manufacturer = "", this.model = "", this.methodType = "Instrument Deployment", this.methodCode = "", this.methodLink = "", this.encodingType = "application/json", this.modelLink = "";
|
|
106
106
|
}
|
|
107
107
|
}
|
|
108
|
-
class
|
|
108
|
+
class Er {
|
|
109
109
|
id;
|
|
110
110
|
workspaceId;
|
|
111
111
|
name;
|
|
@@ -117,7 +117,7 @@ class as {
|
|
|
117
117
|
this.id = "", this.workspaceId = "", this.name = "", this.definition = "", this.description = "", this.type = "Hydrology", this.code = "";
|
|
118
118
|
}
|
|
119
119
|
}
|
|
120
|
-
class
|
|
120
|
+
class Sr {
|
|
121
121
|
id;
|
|
122
122
|
workspaceId;
|
|
123
123
|
code;
|
|
@@ -127,7 +127,7 @@ class is {
|
|
|
127
127
|
this.id = "", this.workspaceId = "", this.code = "", this.definition = "", this.explanation = "";
|
|
128
128
|
}
|
|
129
129
|
}
|
|
130
|
-
class
|
|
130
|
+
class vr {
|
|
131
131
|
id;
|
|
132
132
|
workspaceId;
|
|
133
133
|
code;
|
|
@@ -136,7 +136,7 @@ class cs {
|
|
|
136
136
|
this.id = "", this.workspaceId = "", this.code = "", this.description = "";
|
|
137
137
|
}
|
|
138
138
|
}
|
|
139
|
-
class
|
|
139
|
+
class kr {
|
|
140
140
|
name;
|
|
141
141
|
code;
|
|
142
142
|
type;
|
|
@@ -145,7 +145,7 @@ class ls {
|
|
|
145
145
|
constructor() {
|
|
146
146
|
}
|
|
147
147
|
}
|
|
148
|
-
class
|
|
148
|
+
class Lr {
|
|
149
149
|
id;
|
|
150
150
|
email;
|
|
151
151
|
password;
|
|
@@ -163,7 +163,7 @@ class us {
|
|
|
163
163
|
this.id = "", this.email = "", this.password = "", this.firstName = "", this.middleName = "", this.lastName = "", this.phone = "", this.address = "", this.type = "", this.link = "", this.accountType = "standard", this.hydroShareConnected = !1;
|
|
164
164
|
}
|
|
165
165
|
}
|
|
166
|
-
class
|
|
166
|
+
class Ar {
|
|
167
167
|
id;
|
|
168
168
|
name;
|
|
169
169
|
iconLink;
|
|
@@ -173,8 +173,8 @@ class hs {
|
|
|
173
173
|
this.id = "", this.name = "", this.iconLink = "", this.signupEnabled = !0, this.connectEnabled = !0;
|
|
174
174
|
}
|
|
175
175
|
}
|
|
176
|
-
var
|
|
177
|
-
class
|
|
176
|
+
var bt = /* @__PURE__ */ ((r) => (r.Global = "*", r.View = "view", r.Create = "create", r.Edit = "edit", r.Delete = "delete", r))(bt || {}), Et = /* @__PURE__ */ ((r) => (r.Global = "*", r.Workspace = "Workspace", r.Collaborator = "Collaborator", r.Thing = "Thing", r.Datastream = "Datastream", r.Sensor = "Sensor", r.Unit = "Unit", r.ObservedProperty = "ObservedProperty", r.ProcessingLevel = "ProcessingLevel", r.Observation = "Observation", r))(Et || {});
|
|
177
|
+
class _r {
|
|
178
178
|
id = "";
|
|
179
179
|
key = "";
|
|
180
180
|
name = "";
|
|
@@ -185,11 +185,11 @@ class fs {
|
|
|
185
185
|
lastUsed = "";
|
|
186
186
|
workspaceId = "";
|
|
187
187
|
role = null;
|
|
188
|
-
constructor(
|
|
189
|
-
Object.assign(this,
|
|
188
|
+
constructor(e) {
|
|
189
|
+
Object.assign(this, e);
|
|
190
190
|
}
|
|
191
191
|
}
|
|
192
|
-
class
|
|
192
|
+
class Tr {
|
|
193
193
|
id;
|
|
194
194
|
name;
|
|
195
195
|
isPrivate;
|
|
@@ -200,7 +200,7 @@ class ds {
|
|
|
200
200
|
this.id = "", this.name = "", this.isPrivate = !1, this.owner = null, this.collaboratorRole = null, this.pendingTransferTo = null;
|
|
201
201
|
}
|
|
202
202
|
}
|
|
203
|
-
class
|
|
203
|
+
class Rr {
|
|
204
204
|
user;
|
|
205
205
|
role;
|
|
206
206
|
constructor() {
|
|
@@ -223,1533 +223,1094 @@ class ps {
|
|
|
223
223
|
};
|
|
224
224
|
}
|
|
225
225
|
}
|
|
226
|
-
|
|
227
|
-
|
|
228
|
-
|
|
229
|
-
|
|
230
|
-
|
|
231
|
-
|
|
226
|
+
const ve = {
|
|
227
|
+
HTTP: {
|
|
228
|
+
type: "HTTP",
|
|
229
|
+
sourceUri: "",
|
|
230
|
+
placeholderVariables: []
|
|
231
|
+
},
|
|
232
|
+
local: {
|
|
233
|
+
type: "local",
|
|
234
|
+
sourceUri: "",
|
|
235
|
+
placeholderVariables: []
|
|
232
236
|
}
|
|
233
|
-
|
|
234
|
-
|
|
235
|
-
|
|
236
|
-
|
|
237
|
-
|
|
238
|
-
|
|
239
|
-
|
|
240
|
-
|
|
241
|
-
|
|
237
|
+
}, ke = {
|
|
238
|
+
JSON: {
|
|
239
|
+
type: "JSON",
|
|
240
|
+
timestamp: {
|
|
241
|
+
key: "",
|
|
242
|
+
format: "ISO8601",
|
|
243
|
+
timezoneMode: "embeddedOffset"
|
|
244
|
+
},
|
|
245
|
+
JMESPath: ""
|
|
246
|
+
},
|
|
247
|
+
CSV: {
|
|
248
|
+
type: "CSV",
|
|
249
|
+
timestamp: {
|
|
250
|
+
key: "",
|
|
251
|
+
format: "ISO8601",
|
|
252
|
+
timezoneMode: "embeddedOffset"
|
|
253
|
+
},
|
|
254
|
+
headerRow: 1,
|
|
255
|
+
dataStartRow: 2,
|
|
256
|
+
delimiter: ",",
|
|
257
|
+
identifierType: "name"
|
|
258
|
+
/* Name */
|
|
259
|
+
}
|
|
260
|
+
}, Le = {
|
|
261
|
+
HydroServer: {
|
|
262
|
+
type: "HydroServer"
|
|
263
|
+
}
|
|
264
|
+
};
|
|
265
|
+
class Ir {
|
|
266
|
+
name = "";
|
|
267
|
+
settings = {
|
|
268
|
+
type: "SDL",
|
|
269
|
+
extractor: JSON.parse(JSON.stringify(ve.local)),
|
|
270
|
+
transformer: JSON.parse(JSON.stringify(ke.CSV)),
|
|
271
|
+
loader: JSON.parse(JSON.stringify(Le.HydroServer)),
|
|
272
|
+
payloads: []
|
|
242
273
|
};
|
|
243
|
-
|
|
244
|
-
|
|
245
|
-
|
|
246
|
-
|
|
247
|
-
|
|
248
|
-
|
|
249
|
-
|
|
250
|
-
|
|
251
|
-
|
|
252
|
-
|
|
253
|
-
|
|
254
|
-
return null;
|
|
255
|
-
const t = e.headers.get("content-type") || "";
|
|
256
|
-
let r = null;
|
|
257
|
-
if (t.includes("application/json"))
|
|
258
|
-
try {
|
|
259
|
-
r = await e.json();
|
|
260
|
-
} catch (n) {
|
|
261
|
-
console.error("Failed to parse error JSON:", n);
|
|
262
|
-
}
|
|
263
|
-
else if (t.includes("text/csv"))
|
|
264
|
-
try {
|
|
265
|
-
r = await e.blob();
|
|
266
|
-
} catch (n) {
|
|
267
|
-
console.error("Failed to parse error JSON:", n);
|
|
268
|
-
}
|
|
269
|
-
if (e.ok || e.status === 401) return r;
|
|
270
|
-
const s = {
|
|
271
|
-
status: e.status,
|
|
272
|
-
message: Jt(r)
|
|
274
|
+
id = "";
|
|
275
|
+
workspaceId = "";
|
|
276
|
+
orchestrationSystem = {
|
|
277
|
+
id: "",
|
|
278
|
+
name: "",
|
|
279
|
+
workspaceId: "",
|
|
280
|
+
type: ""
|
|
281
|
+
};
|
|
282
|
+
schedule = {
|
|
283
|
+
interval: 15,
|
|
284
|
+
intervalUnits: "minutes"
|
|
273
285
|
};
|
|
274
|
-
|
|
275
|
-
|
|
276
|
-
|
|
277
|
-
|
|
278
|
-
|
|
279
|
-
|
|
280
|
-
|
|
281
|
-
|
|
286
|
+
status = { paused: !0 };
|
|
287
|
+
datastreams = [];
|
|
288
|
+
constructor(e) {
|
|
289
|
+
Object.assign(this, e);
|
|
290
|
+
}
|
|
291
|
+
switchExtractor(e) {
|
|
292
|
+
this.settings.extractor = JSON.parse(
|
|
293
|
+
JSON.stringify(ve[e])
|
|
294
|
+
);
|
|
295
|
+
}
|
|
296
|
+
switchTransformer(e) {
|
|
297
|
+
this.settings.transformer = JSON.parse(
|
|
298
|
+
JSON.stringify(ke[e])
|
|
299
|
+
);
|
|
300
|
+
}
|
|
301
|
+
switchLoader(e) {
|
|
302
|
+
this.settings.loader = JSON.parse(JSON.stringify(Le[e]));
|
|
303
|
+
}
|
|
304
|
+
}
|
|
305
|
+
class Mr {
|
|
306
|
+
name = "";
|
|
307
|
+
mappings = [];
|
|
308
|
+
extractorVariables = {};
|
|
309
|
+
constructor(e) {
|
|
310
|
+
Object.assign(this, e);
|
|
311
|
+
}
|
|
312
|
+
}
|
|
313
|
+
const Xe = 1, q = Xe * 60, me = q * 60, we = me * 24, St = we * 7, vt = me * 30, kt = we * 365, G = {
|
|
314
|
+
[N.SECOND]: Xe,
|
|
315
|
+
[N.MINUTE]: q,
|
|
316
|
+
[N.HOUR]: me,
|
|
317
|
+
[N.DAY]: we,
|
|
318
|
+
[N.WEEK]: St,
|
|
319
|
+
[N.MONTH]: vt,
|
|
320
|
+
[N.YEAR]: kt
|
|
321
|
+
}, Ur = (r) => r.toLocaleString(void 0, {
|
|
322
|
+
year: "numeric",
|
|
323
|
+
month: "short",
|
|
324
|
+
day: "2-digit",
|
|
325
|
+
hour: "2-digit",
|
|
326
|
+
hour12: !1,
|
|
327
|
+
minute: "2-digit",
|
|
328
|
+
second: "2-digit"
|
|
329
|
+
}), Or = (r) => {
|
|
330
|
+
let e, t;
|
|
331
|
+
r >= q * 1e3 ? (e = r / (q * 1e3), t = "m") : r >= 1e3 ? (e = r / 1e3, t = "s") : (e = r, t = "ms");
|
|
332
|
+
let n;
|
|
333
|
+
return t === "ms" ? n = Math.round(e).toString() : n = e.toFixed(2), `${n} ${t}`;
|
|
334
|
+
}, re = async (r, e) => {
|
|
335
|
+
e && console.info(e);
|
|
336
|
+
const t = performance.now(), n = await r(), i = +(performance.now() - t);
|
|
337
|
+
return { response: n, duration: i };
|
|
282
338
|
};
|
|
283
|
-
function
|
|
284
|
-
|
|
285
|
-
|
|
286
|
-
|
|
287
|
-
|
|
288
|
-
|
|
289
|
-
|
|
290
|
-
|
|
291
|
-
|
|
292
|
-
|
|
293
|
-
|
|
294
|
-
|
|
295
|
-
|
|
339
|
+
var ie = function(r, e) {
|
|
340
|
+
return ie = Object.setPrototypeOf || { __proto__: [] } instanceof Array && function(t, n) {
|
|
341
|
+
t.__proto__ = n;
|
|
342
|
+
} || function(t, n) {
|
|
343
|
+
for (var o in n) Object.prototype.hasOwnProperty.call(n, o) && (t[o] = n[o]);
|
|
344
|
+
}, ie(r, e);
|
|
345
|
+
};
|
|
346
|
+
function K(r, e) {
|
|
347
|
+
if (typeof e != "function" && e !== null)
|
|
348
|
+
throw new TypeError("Class extends value " + String(e) + " is not a constructor or null");
|
|
349
|
+
ie(r, e);
|
|
350
|
+
function t() {
|
|
351
|
+
this.constructor = r;
|
|
352
|
+
}
|
|
353
|
+
r.prototype = e === null ? Object.create(e) : (t.prototype = e.prototype, new t());
|
|
354
|
+
}
|
|
355
|
+
function ae(r) {
|
|
356
|
+
var e = typeof Symbol == "function" && Symbol.iterator, t = e && r[e], n = 0;
|
|
357
|
+
if (t) return t.call(r);
|
|
358
|
+
if (r && typeof r.length == "number") return {
|
|
296
359
|
next: function() {
|
|
297
|
-
return
|
|
360
|
+
return r && n >= r.length && (r = void 0), { value: r && r[n++], done: !r };
|
|
298
361
|
}
|
|
299
362
|
};
|
|
300
|
-
throw new TypeError(
|
|
363
|
+
throw new TypeError(e ? "Object is not iterable." : "Symbol.iterator is not defined.");
|
|
301
364
|
}
|
|
302
|
-
function
|
|
303
|
-
var
|
|
304
|
-
if (!
|
|
305
|
-
var
|
|
365
|
+
function ce(r, e) {
|
|
366
|
+
var t = typeof Symbol == "function" && r[Symbol.iterator];
|
|
367
|
+
if (!t) return r;
|
|
368
|
+
var n = t.call(r), o, i = [], s;
|
|
306
369
|
try {
|
|
307
|
-
for (; (
|
|
308
|
-
} catch (
|
|
309
|
-
|
|
370
|
+
for (; (e === void 0 || e-- > 0) && !(o = n.next()).done; ) i.push(o.value);
|
|
371
|
+
} catch (a) {
|
|
372
|
+
s = { error: a };
|
|
310
373
|
} finally {
|
|
311
374
|
try {
|
|
312
|
-
|
|
375
|
+
o && !o.done && (t = n.return) && t.call(n);
|
|
313
376
|
} finally {
|
|
314
|
-
if (
|
|
377
|
+
if (s) throw s.error;
|
|
315
378
|
}
|
|
316
379
|
}
|
|
317
|
-
return
|
|
380
|
+
return i;
|
|
318
381
|
}
|
|
319
|
-
function
|
|
320
|
-
if (
|
|
321
|
-
(
|
|
322
|
-
return
|
|
382
|
+
function le(r, e, t) {
|
|
383
|
+
if (t || arguments.length === 2) for (var n = 0, o = e.length, i; n < o; n++)
|
|
384
|
+
(i || !(n in e)) && (i || (i = Array.prototype.slice.call(e, 0, n)), i[n] = e[n]);
|
|
385
|
+
return r.concat(i || Array.prototype.slice.call(e));
|
|
323
386
|
}
|
|
324
|
-
function
|
|
325
|
-
return typeof
|
|
387
|
+
function F(r) {
|
|
388
|
+
return typeof r == "function";
|
|
326
389
|
}
|
|
327
|
-
function
|
|
328
|
-
var
|
|
329
|
-
Error.call(
|
|
330
|
-
},
|
|
331
|
-
return
|
|
390
|
+
function He(r) {
|
|
391
|
+
var e = function(n) {
|
|
392
|
+
Error.call(n), n.stack = new Error().stack;
|
|
393
|
+
}, t = r(e);
|
|
394
|
+
return t.prototype = Object.create(Error.prototype), t.prototype.constructor = t, t;
|
|
332
395
|
}
|
|
333
|
-
var
|
|
334
|
-
return function(
|
|
335
|
-
|
|
336
|
-
` +
|
|
337
|
-
return
|
|
396
|
+
var ne = He(function(r) {
|
|
397
|
+
return function(t) {
|
|
398
|
+
r(this), this.message = t ? t.length + ` errors occurred during unsubscription:
|
|
399
|
+
` + t.map(function(n, o) {
|
|
400
|
+
return o + 1 + ") " + n.toString();
|
|
338
401
|
}).join(`
|
|
339
|
-
`) : "", this.name = "UnsubscriptionError", this.errors =
|
|
402
|
+
`) : "", this.name = "UnsubscriptionError", this.errors = t;
|
|
340
403
|
};
|
|
341
404
|
});
|
|
342
|
-
function
|
|
343
|
-
if (
|
|
344
|
-
var
|
|
345
|
-
0 <=
|
|
405
|
+
function ue(r, e) {
|
|
406
|
+
if (r) {
|
|
407
|
+
var t = r.indexOf(e);
|
|
408
|
+
0 <= t && r.splice(t, 1);
|
|
346
409
|
}
|
|
347
410
|
}
|
|
348
|
-
var
|
|
349
|
-
function e
|
|
350
|
-
this.initialTeardown =
|
|
411
|
+
var Q = (function() {
|
|
412
|
+
function r(e) {
|
|
413
|
+
this.initialTeardown = e, this.closed = !1, this._parentage = null, this._finalizers = null;
|
|
351
414
|
}
|
|
352
|
-
return
|
|
353
|
-
var
|
|
415
|
+
return r.prototype.unsubscribe = function() {
|
|
416
|
+
var e, t, n, o, i;
|
|
354
417
|
if (!this.closed) {
|
|
355
418
|
this.closed = !0;
|
|
356
|
-
var
|
|
357
|
-
if (
|
|
358
|
-
if (this._parentage = null, Array.isArray(
|
|
419
|
+
var s = this._parentage;
|
|
420
|
+
if (s)
|
|
421
|
+
if (this._parentage = null, Array.isArray(s))
|
|
359
422
|
try {
|
|
360
|
-
for (var
|
|
361
|
-
var
|
|
362
|
-
|
|
423
|
+
for (var a = ae(s), c = a.next(); !c.done; c = a.next()) {
|
|
424
|
+
var p = c.value;
|
|
425
|
+
p.remove(this);
|
|
363
426
|
}
|
|
364
|
-
} catch (
|
|
365
|
-
|
|
427
|
+
} catch (l) {
|
|
428
|
+
e = { error: l };
|
|
366
429
|
} finally {
|
|
367
430
|
try {
|
|
368
|
-
|
|
431
|
+
c && !c.done && (t = a.return) && t.call(a);
|
|
369
432
|
} finally {
|
|
370
|
-
if (
|
|
433
|
+
if (e) throw e.error;
|
|
371
434
|
}
|
|
372
435
|
}
|
|
373
436
|
else
|
|
374
|
-
|
|
375
|
-
var
|
|
376
|
-
if (
|
|
437
|
+
s.remove(this);
|
|
438
|
+
var f = this.initialTeardown;
|
|
439
|
+
if (F(f))
|
|
377
440
|
try {
|
|
378
|
-
|
|
379
|
-
} catch (
|
|
380
|
-
|
|
441
|
+
f();
|
|
442
|
+
} catch (l) {
|
|
443
|
+
i = l instanceof ne ? l.errors : [l];
|
|
381
444
|
}
|
|
382
|
-
var
|
|
383
|
-
if (
|
|
445
|
+
var w = this._finalizers;
|
|
446
|
+
if (w) {
|
|
384
447
|
this._finalizers = null;
|
|
385
448
|
try {
|
|
386
|
-
for (var
|
|
387
|
-
var
|
|
449
|
+
for (var m = ae(w), d = m.next(); !d.done; d = m.next()) {
|
|
450
|
+
var y = d.value;
|
|
388
451
|
try {
|
|
389
|
-
|
|
390
|
-
} catch (
|
|
391
|
-
|
|
452
|
+
Ae(y);
|
|
453
|
+
} catch (l) {
|
|
454
|
+
i = i ?? [], l instanceof ne ? i = le(le([], ce(i)), ce(l.errors)) : i.push(l);
|
|
392
455
|
}
|
|
393
456
|
}
|
|
394
|
-
} catch (
|
|
395
|
-
|
|
457
|
+
} catch (l) {
|
|
458
|
+
n = { error: l };
|
|
396
459
|
} finally {
|
|
397
460
|
try {
|
|
398
|
-
|
|
461
|
+
d && !d.done && (o = m.return) && o.call(m);
|
|
399
462
|
} finally {
|
|
400
|
-
if (
|
|
463
|
+
if (n) throw n.error;
|
|
401
464
|
}
|
|
402
465
|
}
|
|
403
466
|
}
|
|
404
|
-
if (
|
|
405
|
-
throw new
|
|
467
|
+
if (i)
|
|
468
|
+
throw new ne(i);
|
|
406
469
|
}
|
|
407
|
-
},
|
|
408
|
-
var
|
|
409
|
-
if (
|
|
470
|
+
}, r.prototype.add = function(e) {
|
|
471
|
+
var t;
|
|
472
|
+
if (e && e !== this)
|
|
410
473
|
if (this.closed)
|
|
411
|
-
|
|
474
|
+
Ae(e);
|
|
412
475
|
else {
|
|
413
|
-
if (
|
|
414
|
-
if (
|
|
476
|
+
if (e instanceof r) {
|
|
477
|
+
if (e.closed || e._hasParent(this))
|
|
415
478
|
return;
|
|
416
|
-
|
|
479
|
+
e._addParent(this);
|
|
417
480
|
}
|
|
418
|
-
(this._finalizers = (
|
|
481
|
+
(this._finalizers = (t = this._finalizers) !== null && t !== void 0 ? t : []).push(e);
|
|
419
482
|
}
|
|
420
|
-
},
|
|
421
|
-
var
|
|
422
|
-
return
|
|
423
|
-
},
|
|
424
|
-
var
|
|
425
|
-
this._parentage = Array.isArray(
|
|
426
|
-
},
|
|
427
|
-
var
|
|
428
|
-
|
|
429
|
-
},
|
|
430
|
-
var
|
|
431
|
-
|
|
432
|
-
},
|
|
433
|
-
var
|
|
434
|
-
return
|
|
435
|
-
})(),
|
|
436
|
-
})(),
|
|
437
|
-
function
|
|
438
|
-
return
|
|
439
|
-
}
|
|
440
|
-
function
|
|
441
|
-
|
|
442
|
-
}
|
|
443
|
-
var
|
|
483
|
+
}, r.prototype._hasParent = function(e) {
|
|
484
|
+
var t = this._parentage;
|
|
485
|
+
return t === e || Array.isArray(t) && t.includes(e);
|
|
486
|
+
}, r.prototype._addParent = function(e) {
|
|
487
|
+
var t = this._parentage;
|
|
488
|
+
this._parentage = Array.isArray(t) ? (t.push(e), t) : t ? [t, e] : e;
|
|
489
|
+
}, r.prototype._removeParent = function(e) {
|
|
490
|
+
var t = this._parentage;
|
|
491
|
+
t === e ? this._parentage = null : Array.isArray(t) && ue(t, e);
|
|
492
|
+
}, r.prototype.remove = function(e) {
|
|
493
|
+
var t = this._finalizers;
|
|
494
|
+
t && ue(t, e), e instanceof r && e._removeParent(this);
|
|
495
|
+
}, r.EMPTY = (function() {
|
|
496
|
+
var e = new r();
|
|
497
|
+
return e.closed = !0, e;
|
|
498
|
+
})(), r;
|
|
499
|
+
})(), ze = Q.EMPTY;
|
|
500
|
+
function $e(r) {
|
|
501
|
+
return r instanceof Q || r && "closed" in r && F(r.remove) && F(r.add) && F(r.unsubscribe);
|
|
502
|
+
}
|
|
503
|
+
function Ae(r) {
|
|
504
|
+
F(r) ? r() : r.unsubscribe();
|
|
505
|
+
}
|
|
506
|
+
var Lt = {
|
|
444
507
|
Promise: void 0
|
|
445
|
-
},
|
|
446
|
-
setTimeout: function(
|
|
447
|
-
for (var
|
|
448
|
-
|
|
449
|
-
return setTimeout.apply(void 0,
|
|
508
|
+
}, At = {
|
|
509
|
+
setTimeout: function(r, e) {
|
|
510
|
+
for (var t = [], n = 2; n < arguments.length; n++)
|
|
511
|
+
t[n - 2] = arguments[n];
|
|
512
|
+
return setTimeout.apply(void 0, le([r, e], ce(t)));
|
|
450
513
|
},
|
|
451
|
-
clearTimeout: function(
|
|
452
|
-
return clearTimeout(
|
|
514
|
+
clearTimeout: function(r) {
|
|
515
|
+
return clearTimeout(r);
|
|
453
516
|
},
|
|
454
517
|
delegate: void 0
|
|
455
518
|
};
|
|
456
|
-
function
|
|
457
|
-
|
|
458
|
-
throw
|
|
519
|
+
function _t(r) {
|
|
520
|
+
At.setTimeout(function() {
|
|
521
|
+
throw r;
|
|
459
522
|
});
|
|
460
523
|
}
|
|
461
|
-
function
|
|
524
|
+
function _e() {
|
|
462
525
|
}
|
|
463
|
-
function
|
|
464
|
-
|
|
526
|
+
function $(r) {
|
|
527
|
+
r();
|
|
465
528
|
}
|
|
466
|
-
var
|
|
467
|
-
|
|
468
|
-
function t
|
|
469
|
-
var
|
|
470
|
-
return
|
|
529
|
+
var Ve = (function(r) {
|
|
530
|
+
K(e, r);
|
|
531
|
+
function e(t) {
|
|
532
|
+
var n = r.call(this) || this;
|
|
533
|
+
return n.isStopped = !1, t ? (n.destination = t, $e(t) && t.add(n)) : n.destination = It, n;
|
|
471
534
|
}
|
|
472
|
-
return
|
|
473
|
-
return new
|
|
474
|
-
},
|
|
475
|
-
this.isStopped || this._next(
|
|
476
|
-
},
|
|
477
|
-
this.isStopped || (this.isStopped = !0, this._error(
|
|
478
|
-
},
|
|
535
|
+
return e.create = function(t, n, o) {
|
|
536
|
+
return new fe(t, n, o);
|
|
537
|
+
}, e.prototype.next = function(t) {
|
|
538
|
+
this.isStopped || this._next(t);
|
|
539
|
+
}, e.prototype.error = function(t) {
|
|
540
|
+
this.isStopped || (this.isStopped = !0, this._error(t));
|
|
541
|
+
}, e.prototype.complete = function() {
|
|
479
542
|
this.isStopped || (this.isStopped = !0, this._complete());
|
|
480
|
-
},
|
|
481
|
-
this.closed || (this.isStopped = !0,
|
|
482
|
-
},
|
|
483
|
-
this.destination.next(
|
|
484
|
-
},
|
|
543
|
+
}, e.prototype.unsubscribe = function() {
|
|
544
|
+
this.closed || (this.isStopped = !0, r.prototype.unsubscribe.call(this), this.destination = null);
|
|
545
|
+
}, e.prototype._next = function(t) {
|
|
546
|
+
this.destination.next(t);
|
|
547
|
+
}, e.prototype._error = function(t) {
|
|
485
548
|
try {
|
|
486
|
-
this.destination.error(
|
|
549
|
+
this.destination.error(t);
|
|
487
550
|
} finally {
|
|
488
551
|
this.unsubscribe();
|
|
489
552
|
}
|
|
490
|
-
},
|
|
553
|
+
}, e.prototype._complete = function() {
|
|
491
554
|
try {
|
|
492
555
|
this.destination.complete();
|
|
493
556
|
} finally {
|
|
494
557
|
this.unsubscribe();
|
|
495
558
|
}
|
|
496
|
-
},
|
|
497
|
-
})(
|
|
498
|
-
function e
|
|
499
|
-
this.partialObserver =
|
|
559
|
+
}, e;
|
|
560
|
+
})(Q), Tt = (function() {
|
|
561
|
+
function r(e) {
|
|
562
|
+
this.partialObserver = e;
|
|
500
563
|
}
|
|
501
|
-
return
|
|
502
|
-
var
|
|
503
|
-
if (
|
|
564
|
+
return r.prototype.next = function(e) {
|
|
565
|
+
var t = this.partialObserver;
|
|
566
|
+
if (t.next)
|
|
504
567
|
try {
|
|
505
|
-
|
|
506
|
-
} catch (
|
|
507
|
-
|
|
568
|
+
t.next(e);
|
|
569
|
+
} catch (n) {
|
|
570
|
+
X(n);
|
|
508
571
|
}
|
|
509
|
-
},
|
|
510
|
-
var
|
|
511
|
-
if (
|
|
572
|
+
}, r.prototype.error = function(e) {
|
|
573
|
+
var t = this.partialObserver;
|
|
574
|
+
if (t.error)
|
|
512
575
|
try {
|
|
513
|
-
|
|
514
|
-
} catch (
|
|
515
|
-
|
|
576
|
+
t.error(e);
|
|
577
|
+
} catch (n) {
|
|
578
|
+
X(n);
|
|
516
579
|
}
|
|
517
580
|
else
|
|
518
|
-
|
|
519
|
-
},
|
|
520
|
-
var
|
|
521
|
-
if (
|
|
581
|
+
X(e);
|
|
582
|
+
}, r.prototype.complete = function() {
|
|
583
|
+
var e = this.partialObserver;
|
|
584
|
+
if (e.complete)
|
|
522
585
|
try {
|
|
523
|
-
|
|
524
|
-
} catch (
|
|
525
|
-
|
|
586
|
+
e.complete();
|
|
587
|
+
} catch (t) {
|
|
588
|
+
X(t);
|
|
526
589
|
}
|
|
527
|
-
},
|
|
528
|
-
})(),
|
|
529
|
-
|
|
530
|
-
function t
|
|
531
|
-
var
|
|
532
|
-
return
|
|
533
|
-
next:
|
|
534
|
-
error:
|
|
535
|
-
complete:
|
|
536
|
-
} :
|
|
590
|
+
}, r;
|
|
591
|
+
})(), fe = (function(r) {
|
|
592
|
+
K(e, r);
|
|
593
|
+
function e(t, n, o) {
|
|
594
|
+
var i = r.call(this) || this, s;
|
|
595
|
+
return F(t) || !t ? s = {
|
|
596
|
+
next: t ?? void 0,
|
|
597
|
+
error: n ?? void 0,
|
|
598
|
+
complete: o ?? void 0
|
|
599
|
+
} : s = t, i.destination = new Tt(s), i;
|
|
537
600
|
}
|
|
538
|
-
return
|
|
539
|
-
})(
|
|
540
|
-
function
|
|
541
|
-
|
|
601
|
+
return e;
|
|
602
|
+
})(Ve);
|
|
603
|
+
function X(r) {
|
|
604
|
+
_t(r);
|
|
542
605
|
}
|
|
543
|
-
function
|
|
544
|
-
throw
|
|
606
|
+
function Rt(r) {
|
|
607
|
+
throw r;
|
|
545
608
|
}
|
|
546
|
-
var
|
|
609
|
+
var It = {
|
|
547
610
|
closed: !0,
|
|
548
|
-
next:
|
|
549
|
-
error:
|
|
550
|
-
complete:
|
|
551
|
-
},
|
|
611
|
+
next: _e,
|
|
612
|
+
error: Rt,
|
|
613
|
+
complete: _e
|
|
614
|
+
}, Mt = (function() {
|
|
552
615
|
return typeof Symbol == "function" && Symbol.observable || "@@observable";
|
|
553
616
|
})();
|
|
554
|
-
function
|
|
555
|
-
return
|
|
617
|
+
function Ut(r) {
|
|
618
|
+
return r;
|
|
556
619
|
}
|
|
557
|
-
function
|
|
558
|
-
return
|
|
559
|
-
return
|
|
560
|
-
return n
|
|
561
|
-
},
|
|
620
|
+
function Ot(r) {
|
|
621
|
+
return r.length === 0 ? Ut : r.length === 1 ? r[0] : function(t) {
|
|
622
|
+
return r.reduce(function(n, o) {
|
|
623
|
+
return o(n);
|
|
624
|
+
}, t);
|
|
562
625
|
};
|
|
563
626
|
}
|
|
564
|
-
var
|
|
565
|
-
function e
|
|
566
|
-
|
|
567
|
-
}
|
|
568
|
-
return
|
|
569
|
-
var
|
|
570
|
-
return
|
|
571
|
-
},
|
|
572
|
-
var
|
|
573
|
-
return
|
|
574
|
-
var
|
|
575
|
-
|
|
576
|
-
}),
|
|
577
|
-
},
|
|
627
|
+
var Te = (function() {
|
|
628
|
+
function r(e) {
|
|
629
|
+
e && (this._subscribe = e);
|
|
630
|
+
}
|
|
631
|
+
return r.prototype.lift = function(e) {
|
|
632
|
+
var t = new r();
|
|
633
|
+
return t.source = this, t.operator = e, t;
|
|
634
|
+
}, r.prototype.subscribe = function(e, t, n) {
|
|
635
|
+
var o = this, i = xt(e) ? e : new fe(e, t, n);
|
|
636
|
+
return $(function() {
|
|
637
|
+
var s = o, a = s.operator, c = s.source;
|
|
638
|
+
i.add(a ? a.call(i, c) : c ? o._subscribe(i) : o._trySubscribe(i));
|
|
639
|
+
}), i;
|
|
640
|
+
}, r.prototype._trySubscribe = function(e) {
|
|
578
641
|
try {
|
|
579
|
-
return this._subscribe(
|
|
580
|
-
} catch (
|
|
581
|
-
|
|
582
|
-
}
|
|
583
|
-
},
|
|
584
|
-
var
|
|
585
|
-
return
|
|
586
|
-
var
|
|
587
|
-
next: function(
|
|
642
|
+
return this._subscribe(e);
|
|
643
|
+
} catch (t) {
|
|
644
|
+
e.error(t);
|
|
645
|
+
}
|
|
646
|
+
}, r.prototype.forEach = function(e, t) {
|
|
647
|
+
var n = this;
|
|
648
|
+
return t = Re(t), new t(function(o, i) {
|
|
649
|
+
var s = new fe({
|
|
650
|
+
next: function(a) {
|
|
588
651
|
try {
|
|
589
|
-
|
|
590
|
-
} catch (
|
|
591
|
-
|
|
652
|
+
e(a);
|
|
653
|
+
} catch (c) {
|
|
654
|
+
i(c), s.unsubscribe();
|
|
592
655
|
}
|
|
593
656
|
},
|
|
594
|
-
error:
|
|
595
|
-
complete:
|
|
657
|
+
error: i,
|
|
658
|
+
complete: o
|
|
596
659
|
});
|
|
597
|
-
|
|
660
|
+
n.subscribe(s);
|
|
598
661
|
});
|
|
599
|
-
},
|
|
600
|
-
var
|
|
601
|
-
return (
|
|
602
|
-
},
|
|
662
|
+
}, r.prototype._subscribe = function(e) {
|
|
663
|
+
var t;
|
|
664
|
+
return (t = this.source) === null || t === void 0 ? void 0 : t.subscribe(e);
|
|
665
|
+
}, r.prototype[Mt] = function() {
|
|
603
666
|
return this;
|
|
604
|
-
},
|
|
605
|
-
for (var
|
|
606
|
-
t
|
|
607
|
-
return
|
|
608
|
-
},
|
|
609
|
-
var
|
|
610
|
-
return
|
|
611
|
-
var
|
|
612
|
-
|
|
613
|
-
return
|
|
614
|
-
}, function(
|
|
615
|
-
return
|
|
667
|
+
}, r.prototype.pipe = function() {
|
|
668
|
+
for (var e = [], t = 0; t < arguments.length; t++)
|
|
669
|
+
e[t] = arguments[t];
|
|
670
|
+
return Ot(e)(this);
|
|
671
|
+
}, r.prototype.toPromise = function(e) {
|
|
672
|
+
var t = this;
|
|
673
|
+
return e = Re(e), new e(function(n, o) {
|
|
674
|
+
var i;
|
|
675
|
+
t.subscribe(function(s) {
|
|
676
|
+
return i = s;
|
|
677
|
+
}, function(s) {
|
|
678
|
+
return o(s);
|
|
616
679
|
}, function() {
|
|
617
|
-
return
|
|
680
|
+
return n(i);
|
|
618
681
|
});
|
|
619
682
|
});
|
|
620
|
-
},
|
|
621
|
-
return new e
|
|
622
|
-
},
|
|
683
|
+
}, r.create = function(e) {
|
|
684
|
+
return new r(e);
|
|
685
|
+
}, r;
|
|
623
686
|
})();
|
|
624
|
-
function
|
|
625
|
-
var
|
|
626
|
-
return (
|
|
687
|
+
function Re(r) {
|
|
688
|
+
var e;
|
|
689
|
+
return (e = r ?? Lt.Promise) !== null && e !== void 0 ? e : Promise;
|
|
627
690
|
}
|
|
628
|
-
function
|
|
629
|
-
return
|
|
691
|
+
function Dt(r) {
|
|
692
|
+
return r && F(r.next) && F(r.error) && F(r.complete);
|
|
630
693
|
}
|
|
631
|
-
function
|
|
632
|
-
return
|
|
694
|
+
function xt(r) {
|
|
695
|
+
return r && r instanceof Ve || Dt(r) && $e(r);
|
|
633
696
|
}
|
|
634
|
-
var
|
|
697
|
+
var Ct = He(function(r) {
|
|
635
698
|
return function() {
|
|
636
|
-
|
|
699
|
+
r(this), this.name = "ObjectUnsubscribedError", this.message = "object unsubscribed";
|
|
637
700
|
};
|
|
638
|
-
}),
|
|
639
|
-
|
|
640
|
-
function
|
|
641
|
-
var
|
|
642
|
-
return
|
|
701
|
+
}), qe = (function(r) {
|
|
702
|
+
K(e, r);
|
|
703
|
+
function e() {
|
|
704
|
+
var t = r.call(this) || this;
|
|
705
|
+
return t.closed = !1, t.currentObservers = null, t.observers = [], t.isStopped = !1, t.hasError = !1, t.thrownError = null, t;
|
|
643
706
|
}
|
|
644
|
-
return
|
|
645
|
-
var
|
|
646
|
-
return
|
|
647
|
-
},
|
|
707
|
+
return e.prototype.lift = function(t) {
|
|
708
|
+
var n = new Ie(this, this);
|
|
709
|
+
return n.operator = t, n;
|
|
710
|
+
}, e.prototype._throwIfClosed = function() {
|
|
648
711
|
if (this.closed)
|
|
649
|
-
throw new
|
|
650
|
-
},
|
|
651
|
-
var
|
|
652
|
-
|
|
653
|
-
var
|
|
654
|
-
if (
|
|
655
|
-
|
|
712
|
+
throw new Ct();
|
|
713
|
+
}, e.prototype.next = function(t) {
|
|
714
|
+
var n = this;
|
|
715
|
+
$(function() {
|
|
716
|
+
var o, i;
|
|
717
|
+
if (n._throwIfClosed(), !n.isStopped) {
|
|
718
|
+
n.currentObservers || (n.currentObservers = Array.from(n.observers));
|
|
656
719
|
try {
|
|
657
|
-
for (var
|
|
658
|
-
var
|
|
659
|
-
|
|
720
|
+
for (var s = ae(n.currentObservers), a = s.next(); !a.done; a = s.next()) {
|
|
721
|
+
var c = a.value;
|
|
722
|
+
c.next(t);
|
|
660
723
|
}
|
|
661
|
-
} catch (
|
|
662
|
-
|
|
724
|
+
} catch (p) {
|
|
725
|
+
o = { error: p };
|
|
663
726
|
} finally {
|
|
664
727
|
try {
|
|
665
|
-
|
|
728
|
+
a && !a.done && (i = s.return) && i.call(s);
|
|
666
729
|
} finally {
|
|
667
|
-
if (
|
|
730
|
+
if (o) throw o.error;
|
|
668
731
|
}
|
|
669
732
|
}
|
|
670
733
|
}
|
|
671
734
|
});
|
|
672
|
-
},
|
|
673
|
-
var
|
|
674
|
-
|
|
675
|
-
if (
|
|
676
|
-
|
|
677
|
-
for (var
|
|
678
|
-
|
|
735
|
+
}, e.prototype.error = function(t) {
|
|
736
|
+
var n = this;
|
|
737
|
+
$(function() {
|
|
738
|
+
if (n._throwIfClosed(), !n.isStopped) {
|
|
739
|
+
n.hasError = n.isStopped = !0, n.thrownError = t;
|
|
740
|
+
for (var o = n.observers; o.length; )
|
|
741
|
+
o.shift().error(t);
|
|
679
742
|
}
|
|
680
743
|
});
|
|
681
|
-
},
|
|
682
|
-
var
|
|
683
|
-
|
|
684
|
-
if (
|
|
685
|
-
|
|
686
|
-
for (var
|
|
687
|
-
|
|
744
|
+
}, e.prototype.complete = function() {
|
|
745
|
+
var t = this;
|
|
746
|
+
$(function() {
|
|
747
|
+
if (t._throwIfClosed(), !t.isStopped) {
|
|
748
|
+
t.isStopped = !0;
|
|
749
|
+
for (var n = t.observers; n.length; )
|
|
750
|
+
n.shift().complete();
|
|
688
751
|
}
|
|
689
752
|
});
|
|
690
|
-
},
|
|
753
|
+
}, e.prototype.unsubscribe = function() {
|
|
691
754
|
this.isStopped = this.closed = !0, this.observers = this.currentObservers = null;
|
|
692
|
-
}, Object.defineProperty(
|
|
755
|
+
}, Object.defineProperty(e.prototype, "observed", {
|
|
693
756
|
get: function() {
|
|
694
|
-
var
|
|
695
|
-
return ((
|
|
757
|
+
var t;
|
|
758
|
+
return ((t = this.observers) === null || t === void 0 ? void 0 : t.length) > 0;
|
|
696
759
|
},
|
|
697
760
|
enumerable: !1,
|
|
698
761
|
configurable: !0
|
|
699
|
-
}),
|
|
700
|
-
return this._throwIfClosed(),
|
|
701
|
-
},
|
|
702
|
-
return this._throwIfClosed(), this._checkFinalizedStatuses(
|
|
703
|
-
},
|
|
704
|
-
var
|
|
705
|
-
return
|
|
706
|
-
|
|
762
|
+
}), e.prototype._trySubscribe = function(t) {
|
|
763
|
+
return this._throwIfClosed(), r.prototype._trySubscribe.call(this, t);
|
|
764
|
+
}, e.prototype._subscribe = function(t) {
|
|
765
|
+
return this._throwIfClosed(), this._checkFinalizedStatuses(t), this._innerSubscribe(t);
|
|
766
|
+
}, e.prototype._innerSubscribe = function(t) {
|
|
767
|
+
var n = this, o = this, i = o.hasError, s = o.isStopped, a = o.observers;
|
|
768
|
+
return i || s ? ze : (this.currentObservers = null, a.push(t), new Q(function() {
|
|
769
|
+
n.currentObservers = null, ue(a, t);
|
|
707
770
|
}));
|
|
708
|
-
},
|
|
709
|
-
var
|
|
710
|
-
|
|
711
|
-
},
|
|
712
|
-
var
|
|
713
|
-
return
|
|
714
|
-
},
|
|
715
|
-
return new
|
|
716
|
-
},
|
|
717
|
-
})(
|
|
718
|
-
|
|
719
|
-
function t
|
|
720
|
-
var
|
|
721
|
-
return
|
|
722
|
-
}
|
|
723
|
-
return
|
|
724
|
-
var
|
|
725
|
-
(
|
|
726
|
-
},
|
|
727
|
-
var
|
|
728
|
-
(
|
|
729
|
-
},
|
|
730
|
-
var
|
|
731
|
-
(
|
|
732
|
-
},
|
|
733
|
-
var
|
|
734
|
-
return (
|
|
735
|
-
},
|
|
736
|
-
})(
|
|
737
|
-
const
|
|
738
|
-
var
|
|
739
|
-
class
|
|
740
|
-
constructor(
|
|
741
|
-
this.message =
|
|
742
|
-
}
|
|
743
|
-
}
|
|
744
|
-
class
|
|
745
|
-
static subject = new
|
|
771
|
+
}, e.prototype._checkFinalizedStatuses = function(t) {
|
|
772
|
+
var n = this, o = n.hasError, i = n.thrownError, s = n.isStopped;
|
|
773
|
+
o ? t.error(i) : s && t.complete();
|
|
774
|
+
}, e.prototype.asObservable = function() {
|
|
775
|
+
var t = new Te();
|
|
776
|
+
return t.source = this, t;
|
|
777
|
+
}, e.create = function(t, n) {
|
|
778
|
+
return new Ie(t, n);
|
|
779
|
+
}, e;
|
|
780
|
+
})(Te), Ie = (function(r) {
|
|
781
|
+
K(e, r);
|
|
782
|
+
function e(t, n) {
|
|
783
|
+
var o = r.call(this) || this;
|
|
784
|
+
return o.destination = t, o.source = n, o;
|
|
785
|
+
}
|
|
786
|
+
return e.prototype.next = function(t) {
|
|
787
|
+
var n, o;
|
|
788
|
+
(o = (n = this.destination) === null || n === void 0 ? void 0 : n.next) === null || o === void 0 || o.call(n, t);
|
|
789
|
+
}, e.prototype.error = function(t) {
|
|
790
|
+
var n, o;
|
|
791
|
+
(o = (n = this.destination) === null || n === void 0 ? void 0 : n.error) === null || o === void 0 || o.call(n, t);
|
|
792
|
+
}, e.prototype.complete = function() {
|
|
793
|
+
var t, n;
|
|
794
|
+
(n = (t = this.destination) === null || t === void 0 ? void 0 : t.complete) === null || n === void 0 || n.call(t);
|
|
795
|
+
}, e.prototype._subscribe = function(t) {
|
|
796
|
+
var n, o;
|
|
797
|
+
return (o = (n = this.source) === null || n === void 0 ? void 0 : n.subscribe(t)) !== null && o !== void 0 ? o : ze;
|
|
798
|
+
}, e;
|
|
799
|
+
})(qe);
|
|
800
|
+
const Je = 3e3;
|
|
801
|
+
var Ke = /* @__PURE__ */ ((r) => (r.Warning = "warning", r.Success = "success", r.Error = "error", r.Info = "info", r))(Ke || {}), Qe = /* @__PURE__ */ ((r) => (r.Success = "mdi-checkbox-marked-circle", r.Warning = "mdi-alert", r.Error = "mdi-alert-circle", r.Info = "mdi-information", r.None = "none", r))(Qe || {}), Ze = /* @__PURE__ */ ((r) => (r.Warning = "Warning", r.Success = "Success", r.Error = "Error", r.Info = "Info", r))(Ze || {}), Nt = /* @__PURE__ */ ((r) => (r.Center = "center", r.Left = "left", r.Right = "right", r.Bottom = "bottom", r.Top = "top", r))(Nt || {});
|
|
802
|
+
class Ft {
|
|
803
|
+
constructor(e = "", t = "info", n = "none", o = "Info", i = Je, s = "center", a = !1) {
|
|
804
|
+
this.message = e, this.color = t, this.icon = n, this.title = o, this.timeout = i, this.position = s, this.visible = a;
|
|
805
|
+
}
|
|
806
|
+
}
|
|
807
|
+
class Dr {
|
|
808
|
+
static subject = new qe();
|
|
746
809
|
static get snack$() {
|
|
747
810
|
return this.subject.asObservable();
|
|
748
811
|
}
|
|
749
|
-
static createSnackbar(
|
|
812
|
+
static createSnackbar(e, t) {
|
|
750
813
|
this.subject.next(
|
|
751
|
-
new
|
|
752
|
-
|
|
753
|
-
|
|
754
|
-
|
|
755
|
-
|
|
756
|
-
|
|
814
|
+
new Ft(
|
|
815
|
+
e,
|
|
816
|
+
Ke[t],
|
|
817
|
+
Qe[t],
|
|
818
|
+
Ze[t],
|
|
819
|
+
Je,
|
|
757
820
|
"bottom",
|
|
758
821
|
!0
|
|
759
822
|
)
|
|
760
823
|
);
|
|
761
824
|
}
|
|
762
|
-
static success(
|
|
825
|
+
static success(e) {
|
|
763
826
|
this.createSnackbar(
|
|
764
|
-
|
|
827
|
+
e,
|
|
765
828
|
"Success"
|
|
766
829
|
/* Success */
|
|
767
830
|
);
|
|
768
831
|
}
|
|
769
|
-
static warn(
|
|
832
|
+
static warn(e) {
|
|
770
833
|
this.createSnackbar(
|
|
771
|
-
|
|
834
|
+
e,
|
|
772
835
|
"Warning"
|
|
773
836
|
/* Warning */
|
|
774
837
|
);
|
|
775
838
|
}
|
|
776
|
-
static error(
|
|
839
|
+
static error(e) {
|
|
777
840
|
this.createSnackbar(
|
|
778
|
-
|
|
841
|
+
e,
|
|
779
842
|
"Error"
|
|
780
843
|
/* Error */
|
|
781
844
|
);
|
|
782
845
|
}
|
|
783
|
-
static info(
|
|
846
|
+
static info(e) {
|
|
784
847
|
this.createSnackbar(
|
|
785
|
-
|
|
848
|
+
e,
|
|
786
849
|
"Info"
|
|
787
850
|
/* Info */
|
|
788
851
|
);
|
|
789
852
|
}
|
|
790
853
|
}
|
|
791
|
-
function
|
|
792
|
-
const
|
|
793
|
-
|
|
794
|
-
if (Array.isArray(t[s]))
|
|
795
|
-
JSON.stringify(e[s]) !== JSON.stringify(t[s]) && (r[s] = t[s]);
|
|
796
|
-
else if (e[s] && typeof e[s] == "object" && t[s] && typeof t[s] == "object") {
|
|
797
|
-
const n = Lt(e[s], t[s]);
|
|
798
|
-
Object.keys(n).length > 0 && (r[s] = n);
|
|
799
|
-
} else JSON.stringify(e[s]) !== JSON.stringify(t[s]) && (r[s] = t[s]);
|
|
800
|
-
return r;
|
|
801
|
-
}
|
|
802
|
-
function fr(e) {
|
|
803
|
-
return e && e.__esModule && Object.prototype.hasOwnProperty.call(e, "default") ? e.default : e;
|
|
804
|
-
}
|
|
805
|
-
var be, Ve;
|
|
806
|
-
function dr() {
|
|
807
|
-
if (Ve) return be;
|
|
808
|
-
Ve = 1;
|
|
809
|
-
class e {
|
|
810
|
-
/// value;
|
|
811
|
-
/// next;
|
|
812
|
-
constructor(s) {
|
|
813
|
-
this.value = s, this.next = void 0;
|
|
814
|
-
}
|
|
815
|
-
}
|
|
816
|
-
class t {
|
|
817
|
-
// TODO: Use private class fields when targeting Node.js 12.
|
|
818
|
-
// #_head;
|
|
819
|
-
// #_tail;
|
|
820
|
-
// #_size;
|
|
821
|
-
constructor() {
|
|
822
|
-
this.clear();
|
|
823
|
-
}
|
|
824
|
-
enqueue(s) {
|
|
825
|
-
const n = new e(s);
|
|
826
|
-
this._head ? (this._tail.next = n, this._tail = n) : (this._head = n, this._tail = n), this._size++;
|
|
827
|
-
}
|
|
828
|
-
dequeue() {
|
|
829
|
-
const s = this._head;
|
|
830
|
-
if (s)
|
|
831
|
-
return this._head = this._head.next, this._size--, s.value;
|
|
832
|
-
}
|
|
833
|
-
clear() {
|
|
834
|
-
this._head = void 0, this._tail = void 0, this._size = 0;
|
|
835
|
-
}
|
|
836
|
-
get size() {
|
|
837
|
-
return this._size;
|
|
838
|
-
}
|
|
839
|
-
*[Symbol.iterator]() {
|
|
840
|
-
let s = this._head;
|
|
841
|
-
for (; s; )
|
|
842
|
-
yield s.value, s = s.next;
|
|
843
|
-
}
|
|
844
|
-
}
|
|
845
|
-
return be = t, be;
|
|
846
|
-
}
|
|
847
|
-
var Se, qe;
|
|
848
|
-
function pr() {
|
|
849
|
-
if (qe) return Se;
|
|
850
|
-
qe = 1;
|
|
851
|
-
const e = dr();
|
|
852
|
-
return Se = (r) => {
|
|
853
|
-
if (!((Number.isInteger(r) || r === 1 / 0) && r > 0))
|
|
854
|
-
throw new TypeError("Expected `concurrency` to be a number from 1 and up");
|
|
855
|
-
const s = new e();
|
|
856
|
-
let n = 0;
|
|
857
|
-
const a = () => {
|
|
858
|
-
n--, s.size > 0 && s.dequeue()();
|
|
859
|
-
}, o = async (d, u, ...y) => {
|
|
860
|
-
n++;
|
|
861
|
-
const g = (async () => d(...y))();
|
|
862
|
-
u(g);
|
|
863
|
-
try {
|
|
864
|
-
await g;
|
|
865
|
-
} catch {
|
|
866
|
-
}
|
|
867
|
-
a();
|
|
868
|
-
}, i = (d, u, ...y) => {
|
|
869
|
-
s.enqueue(o.bind(null, d, u, ...y)), (async () => (await Promise.resolve(), n < r && s.size > 0 && s.dequeue()()))();
|
|
870
|
-
}, l = (d, ...u) => new Promise((y) => {
|
|
871
|
-
i(d, y, ...u);
|
|
872
|
-
});
|
|
873
|
-
return Object.defineProperties(l, {
|
|
874
|
-
activeCount: {
|
|
875
|
-
get: () => n
|
|
876
|
-
},
|
|
877
|
-
pendingCount: {
|
|
878
|
-
get: () => s.size
|
|
879
|
-
},
|
|
880
|
-
clearQueue: {
|
|
881
|
-
value: () => {
|
|
882
|
-
s.clear();
|
|
883
|
-
}
|
|
884
|
-
}
|
|
885
|
-
}), l;
|
|
886
|
-
}, Se;
|
|
887
|
-
}
|
|
888
|
-
var yr = pr();
|
|
889
|
-
const gr = /* @__PURE__ */ fr(yr), z = gr(10), mr = 1e3;
|
|
890
|
-
async function q(e, t) {
|
|
891
|
-
const r = gt(t);
|
|
892
|
-
try {
|
|
893
|
-
const s = await fetch(e, r);
|
|
894
|
-
return await mt(s);
|
|
895
|
-
} catch (s) {
|
|
896
|
-
throw s instanceof TypeError && hr.error("Network error. Please check your connection."), s;
|
|
897
|
-
}
|
|
898
|
-
}
|
|
899
|
-
const c = {
|
|
900
|
-
async fetch(e, t = {}) {
|
|
901
|
-
return t.method = "GET", await z(() => q(e, t));
|
|
902
|
-
},
|
|
903
|
-
async patch(e, t, r = null, s = {}) {
|
|
904
|
-
if (s.method = "PATCH", s.body = r ? Lt(r, t) : t, Object.keys(s.body).length !== 0)
|
|
905
|
-
return await z(() => q(e, s));
|
|
906
|
-
},
|
|
907
|
-
async post(e, t = void 0, r = {}) {
|
|
908
|
-
return r.method = "POST", r.body = t, await z(() => q(e, r));
|
|
909
|
-
},
|
|
910
|
-
async put(e, t = void 0, r = {}) {
|
|
911
|
-
return r.method = "PUT", r.body = t, await z(() => q(e, r));
|
|
912
|
-
},
|
|
913
|
-
async delete(e, t = void 0, r = {}) {
|
|
914
|
-
return r.method = "DELETE", r.body = t, await z(() => q(e, r));
|
|
915
|
-
},
|
|
916
|
-
async paginatedFetch(e, t) {
|
|
917
|
-
const r = t ?? mr, s = e.includes("?") ? "&" : "?", n = `${e}${s}page_size=${r}&page=1`, a = gt({ method: "GET" }), o = await z(() => fetch(n, a)), i = Number(o.headers.get("x-total-pages")) || 1, d = [...await mt(o)];
|
|
918
|
-
for (let u = 2; u <= i; u++) {
|
|
919
|
-
const y = `${e}${s}page_size=${r}&page=${u}`, g = await z(() => q(y, { method: "GET" }));
|
|
920
|
-
d.push(...g);
|
|
921
|
-
}
|
|
922
|
-
return d;
|
|
923
|
-
}
|
|
924
|
-
}, Je = {
|
|
925
|
-
HTTP: {
|
|
926
|
-
type: "HTTP",
|
|
927
|
-
sourceUri: "",
|
|
928
|
-
placeholderVariables: []
|
|
929
|
-
},
|
|
930
|
-
local: {
|
|
931
|
-
type: "local",
|
|
932
|
-
sourceUri: "",
|
|
933
|
-
placeholderVariables: []
|
|
934
|
-
}
|
|
935
|
-
}, Qe = {
|
|
936
|
-
JSON: {
|
|
937
|
-
type: "JSON",
|
|
938
|
-
timestamp: {
|
|
939
|
-
key: "",
|
|
940
|
-
format: "ISO8601",
|
|
941
|
-
timezoneMode: "embeddedOffset"
|
|
942
|
-
},
|
|
943
|
-
JMESPath: ""
|
|
944
|
-
},
|
|
945
|
-
CSV: {
|
|
946
|
-
type: "CSV",
|
|
947
|
-
timestamp: {
|
|
948
|
-
key: "",
|
|
949
|
-
format: "ISO8601",
|
|
950
|
-
timezoneMode: "embeddedOffset"
|
|
951
|
-
},
|
|
952
|
-
headerRow: 1,
|
|
953
|
-
dataStartRow: 2,
|
|
954
|
-
delimiter: ",",
|
|
955
|
-
identifierType: "name"
|
|
956
|
-
/* Name */
|
|
957
|
-
}
|
|
958
|
-
}, Ke = {
|
|
959
|
-
HydroServer: {
|
|
960
|
-
type: "HydroServer"
|
|
961
|
-
}
|
|
962
|
-
};
|
|
963
|
-
class ys {
|
|
964
|
-
name = "";
|
|
965
|
-
settings = {
|
|
966
|
-
type: "SDL",
|
|
967
|
-
extractor: JSON.parse(JSON.stringify(Je.local)),
|
|
968
|
-
transformer: JSON.parse(JSON.stringify(Qe.CSV)),
|
|
969
|
-
loader: JSON.parse(JSON.stringify(Ke.HydroServer)),
|
|
970
|
-
payloads: []
|
|
971
|
-
};
|
|
972
|
-
id = "";
|
|
973
|
-
workspaceId = "";
|
|
974
|
-
orchestrationSystem = {
|
|
975
|
-
id: "",
|
|
976
|
-
name: "",
|
|
977
|
-
workspaceId: "",
|
|
978
|
-
type: ""
|
|
979
|
-
};
|
|
980
|
-
schedule = {
|
|
981
|
-
interval: 15,
|
|
982
|
-
intervalUnits: "minutes"
|
|
983
|
-
};
|
|
984
|
-
status = { paused: !0 };
|
|
985
|
-
datastreams = [];
|
|
986
|
-
constructor(t) {
|
|
987
|
-
Object.assign(this, t);
|
|
988
|
-
}
|
|
989
|
-
switchExtractor(t) {
|
|
990
|
-
this.settings.extractor = JSON.parse(
|
|
991
|
-
JSON.stringify(Je[t])
|
|
992
|
-
);
|
|
993
|
-
}
|
|
994
|
-
switchTransformer(t) {
|
|
995
|
-
this.settings.transformer = JSON.parse(
|
|
996
|
-
JSON.stringify(Qe[t])
|
|
997
|
-
);
|
|
998
|
-
}
|
|
999
|
-
switchLoader(t) {
|
|
1000
|
-
this.settings.loader = JSON.parse(JSON.stringify(Ke[t]));
|
|
1001
|
-
}
|
|
1002
|
-
}
|
|
1003
|
-
function Ze(e) {
|
|
1004
|
-
return {
|
|
1005
|
-
name: e.name,
|
|
1006
|
-
settings: e.settings,
|
|
1007
|
-
workspaceId: e.workspaceId,
|
|
1008
|
-
orchestrationSystemId: e.orchestrationSystem.id,
|
|
1009
|
-
schedule: e.schedule,
|
|
1010
|
-
status: e.status
|
|
1011
|
-
};
|
|
854
|
+
function xr(r, e) {
|
|
855
|
+
const t = new Date(r);
|
|
856
|
+
return t.setHours(t.getHours() - e), t.toISOString();
|
|
1012
857
|
}
|
|
1013
|
-
const
|
|
1014
|
-
let
|
|
1015
|
-
|
|
1016
|
-
|
|
1017
|
-
|
|
1018
|
-
provider: e,
|
|
1019
|
-
callback_url: t,
|
|
1020
|
-
process: r
|
|
1021
|
-
}, n = yt(), a = document.createElement("form");
|
|
1022
|
-
if (a.method = "POST", a.action = `${le}/redirect`, n) {
|
|
1023
|
-
const o = document.createElement("input");
|
|
1024
|
-
o.type = "hidden", o.name = "csrfmiddlewaretoken", o.value = n, a.appendChild(o);
|
|
1025
|
-
}
|
|
1026
|
-
for (const o in s) {
|
|
1027
|
-
const i = document.createElement("input");
|
|
1028
|
-
i.type = "hidden", i.name = o, i.value = s[o] || "", a.appendChild(i);
|
|
1029
|
-
}
|
|
1030
|
-
document.body.appendChild(a), a.submit();
|
|
1031
|
-
}, ms = {
|
|
1032
|
-
fetchSession: async () => c.fetch(`${Ee}`),
|
|
1033
|
-
login: async (e, t) => c.post(`${Ee}`, { email: e, password: t }),
|
|
1034
|
-
logout: async () => c.delete(`${Ee}`),
|
|
1035
|
-
fetchUser: async () => c.fetch(`${N}`),
|
|
1036
|
-
signup: async (e) => c.post(`${N}`, e),
|
|
1037
|
-
updateUser: async (e, t) => c.patch(`${N}`, e, t),
|
|
1038
|
-
deleteUser: async () => c.delete(`${N}`),
|
|
1039
|
-
sendVerificationEmail: async (e) => c.put(`${N}/email/verify`, {
|
|
1040
|
-
email: e
|
|
1041
|
-
}),
|
|
1042
|
-
verifyEmailWithCode: async (e) => c.post(`${N}/email/verify`, { key: e }),
|
|
1043
|
-
requestPasswordReset: async (e) => c.post(`${N}/password/request`, {
|
|
1044
|
-
email: e
|
|
1045
|
-
}),
|
|
1046
|
-
resetPassword: async (e, t) => c.post(`${N}/password/reset`, {
|
|
1047
|
-
key: e,
|
|
1048
|
-
password: t
|
|
1049
|
-
}),
|
|
1050
|
-
fetchWorkspaces: async () => c.paginatedFetch(`${R}`),
|
|
1051
|
-
fetchAssociatedWorkspaces: async () => c.paginatedFetch(`${R}?is_associated=true`),
|
|
1052
|
-
fetchWorkspace: async (e) => c.fetch(`${R}/${e}`),
|
|
1053
|
-
createWorkspace: async (e) => c.post(R, e),
|
|
1054
|
-
updateWorkspace: async (e, t = null) => c.patch(
|
|
1055
|
-
`${R}/${e.id}`,
|
|
1056
|
-
e,
|
|
1057
|
-
t
|
|
1058
|
-
),
|
|
1059
|
-
deleteWorkspace: async (e) => c.delete(`${R}/${e}`),
|
|
1060
|
-
transferWorkspace: async (e, t) => c.post(`${R}/${e}/transfer`, { newOwner: t }),
|
|
1061
|
-
acceptWorkspaceTransfer: async (e) => c.put(`${R}/${e}/transfer`),
|
|
1062
|
-
rejectWorkspaceTransfer: async (e) => c.delete(`${R}/${e}/transfer`),
|
|
1063
|
-
getCollaboratorRoles: async (e) => c.paginatedFetch(`${ve}?is_user_role=true`),
|
|
1064
|
-
getAPIKeyRoles: async (e) => c.paginatedFetch(`${ve}?is_apikey_role=true`),
|
|
1065
|
-
getRole: async (e) => c.fetch(`${ve}/${e}`),
|
|
1066
|
-
getCollaborators: async (e) => c.paginatedFetch(`${R}/${e}/collaborators`),
|
|
1067
|
-
addCollaborator: async (e, t, r) => c.post(`${R}/${e}/collaborators`, {
|
|
1068
|
-
email: t,
|
|
1069
|
-
roleId: r
|
|
1070
|
-
}),
|
|
1071
|
-
updateCollaboratorRole: async (e, t, r) => c.put(`${R}/${e}/collaborators`, {
|
|
1072
|
-
email: t,
|
|
1073
|
-
roleId: r
|
|
1074
|
-
}),
|
|
1075
|
-
removeCollaborator: async (e, t) => c.delete(`${R}/${e}/collaborators`, { email: t }),
|
|
1076
|
-
fetchApiKeys: async (e) => c.paginatedFetch(
|
|
1077
|
-
`${R}/${e}/api-keys?expand_related=true`
|
|
1078
|
-
),
|
|
1079
|
-
fetchApiKey: async (e, t) => c.fetch(
|
|
1080
|
-
`${R}/${e}/api-keys/${t}?expand_related=true`
|
|
1081
|
-
),
|
|
1082
|
-
createApiKey: async (e) => c.post(
|
|
1083
|
-
`${R}/${e.workspaceId}/api-keys?expand_related=true`,
|
|
1084
|
-
{
|
|
1085
|
-
name: e.name,
|
|
1086
|
-
description: e.description,
|
|
1087
|
-
isActive: !0,
|
|
1088
|
-
roleId: e.role.id
|
|
1089
|
-
}
|
|
1090
|
-
),
|
|
1091
|
-
updateApiKey: async (e, t) => c.patch(
|
|
1092
|
-
`${R}/${e.workspaceId}/api-keys/${e.id}?expand_related=true`,
|
|
1093
|
-
{
|
|
1094
|
-
name: e.name,
|
|
1095
|
-
description: e.description,
|
|
1096
|
-
isActive: !0,
|
|
1097
|
-
roleId: e.role.id
|
|
1098
|
-
},
|
|
1099
|
-
t && {
|
|
1100
|
-
name: t.name,
|
|
1101
|
-
description: t.description,
|
|
1102
|
-
isActive: !0,
|
|
1103
|
-
roleId: t.role.id
|
|
1104
|
-
}
|
|
1105
|
-
),
|
|
1106
|
-
regenerateApiKey: async (e, t) => c.put(
|
|
1107
|
-
`${R}/${e}/api-keys/${t}/regenerate?expand_related=true`
|
|
1108
|
-
),
|
|
1109
|
-
deleteApiKey: async (e, t) => c.delete(`${R}/${e}/api-keys/${t}`),
|
|
1110
|
-
fetchConnectedProviders: async () => c.fetch(`${le}/connections`),
|
|
1111
|
-
providerRedirect: wr,
|
|
1112
|
-
providerSignup: async (e) => c.post(`${le}/signup`, e),
|
|
1113
|
-
deleteProvider: async (e, t) => c.delete(`${le}/connections`, {
|
|
1114
|
-
provider: e,
|
|
1115
|
-
account: t
|
|
1116
|
-
}),
|
|
1117
|
-
createUnit: async (e) => c.post(V, e),
|
|
1118
|
-
fetchUnits: async () => c.paginatedFetch(`${V}`),
|
|
1119
|
-
fetchWorkspaceUnits: async (e) => c.paginatedFetch(`${V}?workspace_id=${e}`),
|
|
1120
|
-
updateUnit: async (e, t = null) => c.patch(`${V}/${e.id}`, e, t),
|
|
1121
|
-
deleteUnit: async (e) => c.delete(`${V}/${e}`),
|
|
1122
|
-
getUnit: async (e) => c.fetch(`${V}/${e}`),
|
|
1123
|
-
removeThingOwner: async (e, t) => c.patch(`${A}/${e}/ownership`, {
|
|
1124
|
-
email: t,
|
|
1125
|
-
removeOwner: !0
|
|
1126
|
-
}),
|
|
1127
|
-
addSecondaryOwner: async (e, t) => c.patch(`${A}/${e}/ownership`, {
|
|
1128
|
-
email: t,
|
|
1129
|
-
makeOwner: !0
|
|
1130
|
-
}),
|
|
1131
|
-
transferPrimaryOwnership: async (e, t) => c.patch(`${A}/${e}/ownership`, {
|
|
1132
|
-
email: t,
|
|
1133
|
-
transferPrimary: !0
|
|
1134
|
-
}),
|
|
1135
|
-
createThing: async (e) => c.post(A, e),
|
|
1136
|
-
fetchThings: async () => c.paginatedFetch(`${A}`),
|
|
1137
|
-
fetchThingsForWorkspace: async (e) => c.paginatedFetch(`${A}?workspace_id=${e}`),
|
|
1138
|
-
fetchOwnedThings: async () => c.paginatedFetch(`${A}?owned_only=true`),
|
|
1139
|
-
fetchThing: async (e) => c.fetch(`${A}/${e}`),
|
|
1140
|
-
updateThing: async (e) => c.patch(`${A}/${e.id}`, e),
|
|
1141
|
-
updateThingPrivacy: async (e, t) => c.patch(`${A}/${e}`, { isPrivate: t }),
|
|
1142
|
-
deleteThing: async (e) => c.delete(`${A}/${e}`),
|
|
1143
|
-
fetchMetadataForThingOwner: async (e) => c.paginatedFetch(
|
|
1144
|
-
`${A}/${e}/metadata?include_assignable_metadata=true`
|
|
1145
|
-
),
|
|
1146
|
-
fetchMetadataForThing: async (e) => c.fetch(`${A}/${e}/metadata`),
|
|
1147
|
-
uploadSitePhotos: async (e, t) => c.post(`${A}/${e}/photos`, t),
|
|
1148
|
-
fetchSitePhotos: async (e) => c.paginatedFetch(`${A}/${e}/photos`),
|
|
1149
|
-
deleteSitePhoto: async (e, t) => c.delete(`${A}/${e}/photos`, { name: t }),
|
|
1150
|
-
createSiteTag: async (e, t) => c.post(`${A}/${e}/tags`, t),
|
|
1151
|
-
editSiteTag: async (e, t) => c.put(`${A}/${e}/tags`, t),
|
|
1152
|
-
fetchSiteTags: async (e) => c.fetch(`${A}/${e}/tags`),
|
|
1153
|
-
fetchUsersSiteTags: async () => c.fetch(`${et}`),
|
|
1154
|
-
deleteSiteTag: async (e, t) => c.delete(`${A}/${e}/tags`, t),
|
|
1155
|
-
fetchWorkspaceTags: async (e) => c.fetch(`${et}/keys?workspace_id=${e}`),
|
|
1156
|
-
createHydroShareArchive: async (e) => c.post(`${A}/${e.thingId}/archive`, e),
|
|
1157
|
-
updateHydroShareArchive: async (e, t) => c.patch(
|
|
1158
|
-
`${A}/${e.thingId}/archive`,
|
|
1159
|
-
e,
|
|
1160
|
-
t
|
|
1161
|
-
),
|
|
1162
|
-
fetchHydroShareArchive: async (e) => c.fetch(`${A}/${e}/archive`),
|
|
1163
|
-
deleteHydroShareArchive: async (e) => c.delete(`${A}/${e}/archive`),
|
|
1164
|
-
archiveToHydroShare: async (e) => c.post(`${A}/${e}/archive/trigger`),
|
|
1165
|
-
createDatastream: async (e) => c.post(O, e),
|
|
1166
|
-
fetchDatastreams: async (e) => {
|
|
1167
|
-
const t = [];
|
|
1168
|
-
if (e)
|
|
1169
|
-
for (const [s, n] of Object.entries(e))
|
|
1170
|
-
t.push(`${encodeURIComponent(s)}=${encodeURIComponent(n)}`);
|
|
1171
|
-
const r = t.length ? `?${t.join("&")}` : "";
|
|
1172
|
-
return c.paginatedFetch(`${O}${r}`);
|
|
1173
|
-
},
|
|
1174
|
-
fetchDatastreamsForThing: async (e) => c.paginatedFetch(`${O}?thing_id=${e}`),
|
|
1175
|
-
fetchExpandedDatastreamsForThing: async (e) => c.paginatedFetch(
|
|
1176
|
-
`${O}?thing_id=${e}&expand_related=true`
|
|
1177
|
-
),
|
|
1178
|
-
fetchDatastreamsForDataSource: async (e) => c.paginatedFetch(`${O}?data_source_id=${e}`),
|
|
1179
|
-
fetchDatastream: async (e) => c.fetch(`${O}/${e}`),
|
|
1180
|
-
fetchDatastreamExpanded: async (e) => c.fetch(`${O}/${e}?expand_related=true`),
|
|
1181
|
-
fetchUsersDatastreams: async () => c.paginatedFetch(`${O}?exclude_unowned=true`),
|
|
1182
|
-
updateDatastream: async (e, t = null) => c.patch(`${O}/${e.id}`, e, t),
|
|
1183
|
-
deleteDatastream: async (e) => c.delete(`${O}/${e}`),
|
|
1184
|
-
downloadDatastreamCSV: async (e) => c.fetch(`${O}/${e}/csv`),
|
|
1185
|
-
createObservedProperty: async (e) => c.post(X, e),
|
|
1186
|
-
fetchObservedProperty: async (e) => c.fetch(`${X}/${e}`),
|
|
1187
|
-
fetchObservedProperties: async () => c.paginatedFetch(`${X}`),
|
|
1188
|
-
fetchWorkspaceObservedProperties: async (e) => c.paginatedFetch(`${X}?workspace_id=${e}`),
|
|
1189
|
-
updateObservedProperty: async (e, t = null) => c.patch(`${X}/${e.id}`, e, t),
|
|
1190
|
-
deleteObservedProperty: async (e) => c.delete(`${X}/${e}`),
|
|
1191
|
-
createProcessingLevel: async (e) => c.post(Q, e),
|
|
1192
|
-
fetchProcessingLevels: async () => c.paginatedFetch(`${Q}`),
|
|
1193
|
-
fetchProcessingLevel: async (e) => c.fetch(`${Q}/${e}`),
|
|
1194
|
-
fetchWorkspaceProcessingLevels: async (e) => c.paginatedFetch(`${Q}?workspace_id=${e}`),
|
|
1195
|
-
updateProcessingLevel: async (e, t = null) => c.patch(`${Q}/${e.id}`, e, t),
|
|
1196
|
-
deleteProcessingLevel: async (e) => c.delete(`${Q}/${e}`),
|
|
1197
|
-
createSensor: async (e) => c.post(H, e),
|
|
1198
|
-
fetchSensors: async () => c.paginatedFetch(`${H}`),
|
|
1199
|
-
fetchSensor: async (e) => c.fetch(`${H}/${e}`),
|
|
1200
|
-
fetchWorkspaceSensors: async (e) => c.paginatedFetch(`${H}?workspace_id=${e}`),
|
|
1201
|
-
updateSensor: async (e, t = null) => c.patch(`${H}/${e.id}`, e, t),
|
|
1202
|
-
deleteSensor: async (e) => c.delete(`${H}/${e}`),
|
|
1203
|
-
createResultQualifier: async (e) => c.post(ee, e),
|
|
1204
|
-
fetchResultQualifiers: async () => c.paginatedFetch(`${ee}`),
|
|
1205
|
-
fetchWorkspaceResultQualifiers: async (e) => c.paginatedFetch(`${ee}?workspace_id=${e}`),
|
|
1206
|
-
updateResultQualifier: async (e, t = null) => c.patch(
|
|
1207
|
-
`${ee}/${e.id}`,
|
|
1208
|
-
e,
|
|
1209
|
-
t
|
|
1210
|
-
),
|
|
1211
|
-
deleteResultQualifier: async (e) => c.delete(`${ee}/${e}`),
|
|
1212
|
-
createOrchestrationSystem: async (e) => c.post(J, e),
|
|
1213
|
-
fetchOrchestrationSystems: async () => c.paginatedFetch(J),
|
|
1214
|
-
fetchWorkspaceOrchestrationSystems: async (e) => c.paginatedFetch(`${J}?workspace_id=${e}`),
|
|
1215
|
-
fetchOrchestrationSystem: async (e) => c.fetch(`${J}/${e}`),
|
|
1216
|
-
updateOrchestrationSystem: async (e, t) => c.patch(`${J}/${e}`, t),
|
|
1217
|
-
deleteOrchestrationSystem: async (e) => c.delete(`${J}/${e}`),
|
|
1218
|
-
createDataSource: async (e) => c.post(
|
|
1219
|
-
`${Y}?expand_related=true`,
|
|
1220
|
-
Ze(e)
|
|
1221
|
-
),
|
|
1222
|
-
fetchDataSources: async () => c.paginatedFetch(`${Y}?expand_related=true`),
|
|
1223
|
-
fetchWorkspaceDataSources: async (e) => c.paginatedFetch(
|
|
1224
|
-
`${Y}?workspace_id=${e}&expand_related=true`
|
|
1225
|
-
),
|
|
1226
|
-
fetchDataSource: async (e) => c.fetch(`${Y}/${e}?expand_related=true`),
|
|
1227
|
-
updateDataSource: async (e) => c.patch(
|
|
1228
|
-
`${Y}/${e.id}?expand_related=true`,
|
|
1229
|
-
Ze(e)
|
|
1230
|
-
),
|
|
1231
|
-
updateDataSourcePartial: async (e) => c.patch(
|
|
1232
|
-
`${Y}/${e.id}?expand_related=true`,
|
|
1233
|
-
e
|
|
1234
|
-
),
|
|
1235
|
-
deleteDataSource: async (e) => c.delete(`${Y}/${e}`),
|
|
1236
|
-
linkDatastreamToDataSource: async (e, t) => c.post(
|
|
1237
|
-
`${Y}/${e}/datastreams/${t}`
|
|
1238
|
-
),
|
|
1239
|
-
unlinkDatastreamFromDataSource: async (e, t) => c.delete(
|
|
1240
|
-
`${Y}/${e}/datastreams/${t}`
|
|
1241
|
-
),
|
|
1242
|
-
fetchObservations: async (e) => c.fetch(e),
|
|
1243
|
-
deleteObservationsForDatastream: async (e) => c.post(`${O}/${e}/observations/bulk-delete`, {
|
|
1244
|
-
phenomenonTimeStart: null,
|
|
1245
|
-
phenomenonTimeEnd: null
|
|
1246
|
-
}),
|
|
1247
|
-
fetchUserTypes: async () => c.fetch(`${N}/user-types`),
|
|
1248
|
-
fetchOrganizationTypes: async () => c.fetch(`${N}/organization-types`),
|
|
1249
|
-
fetchSiteTypes: async () => c.fetch(`${A}/site-types`),
|
|
1250
|
-
fetchSamplingFeatureTypes: async () => c.paginatedFetch(`${A}/sampling-feature-types`),
|
|
1251
|
-
fetchSensorEncodingTypes: async () => c.paginatedFetch(`${H}/encoding-types`),
|
|
1252
|
-
fetchMethodTypes: async () => c.paginatedFetch(`${H}/method-types`),
|
|
1253
|
-
fetchVariableTypes: async () => c.paginatedFetch(`${X}/variable-types`),
|
|
1254
|
-
fetchUnitTypes: async () => c.paginatedFetch(`${V}/types`),
|
|
1255
|
-
fetchDatastreamStatuses: async () => c.paginatedFetch(`${O}/statuses`),
|
|
1256
|
-
fetchDatastreamAggregations: async () => c.paginatedFetch(`${O}/aggregation-statistics`),
|
|
1257
|
-
fetchSampledMediums: async () => c.paginatedFetch(`${O}/sampled-mediums`)
|
|
1258
|
-
};
|
|
1259
|
-
class ws {
|
|
1260
|
-
name = "";
|
|
1261
|
-
mappings = [];
|
|
1262
|
-
extractorVariables = {};
|
|
1263
|
-
constructor(t) {
|
|
1264
|
-
Object.assign(this, t);
|
|
1265
|
-
}
|
|
1266
|
-
}
|
|
1267
|
-
const $t = 1, he = $t * 60, Ce = he * 60, xe = Ce * 24, br = xe * 7, Sr = Ce * 30, Er = xe * 365, oe = {
|
|
1268
|
-
[W.SECOND]: $t,
|
|
1269
|
-
[W.MINUTE]: he,
|
|
1270
|
-
[W.HOUR]: Ce,
|
|
1271
|
-
[W.DAY]: xe,
|
|
1272
|
-
[W.WEEK]: br,
|
|
1273
|
-
[W.MONTH]: Sr,
|
|
1274
|
-
[W.YEAR]: Er
|
|
1275
|
-
}, bs = (e) => e.toLocaleString(void 0, {
|
|
1276
|
-
year: "numeric",
|
|
1277
|
-
month: "short",
|
|
1278
|
-
day: "2-digit",
|
|
1279
|
-
hour: "2-digit",
|
|
1280
|
-
hour12: !1,
|
|
1281
|
-
minute: "2-digit",
|
|
1282
|
-
second: "2-digit"
|
|
1283
|
-
}), Ss = (e) => {
|
|
1284
|
-
let t, r;
|
|
1285
|
-
e >= he * 1e3 ? (t = e / (he * 1e3), r = "m") : e >= 1e3 ? (t = e / 1e3, r = "s") : (t = e, r = "ms");
|
|
1286
|
-
let s;
|
|
1287
|
-
return r === "ms" ? s = Math.round(t).toString() : s = t.toFixed(2), `${s} ${r}`;
|
|
1288
|
-
}, ke = async (e, t) => {
|
|
1289
|
-
t && console.info(t);
|
|
1290
|
-
const r = performance.now(), s = await e(), a = +(performance.now() - r);
|
|
1291
|
-
return { response: s, duration: a };
|
|
1292
|
-
};
|
|
1293
|
-
function Es(e, t) {
|
|
1294
|
-
const r = new Date(e);
|
|
1295
|
-
return r.setHours(r.getHours() - t), r.toISOString();
|
|
1296
|
-
}
|
|
1297
|
-
const B = (e, t) => {
|
|
1298
|
-
let r = 0, s = e.length;
|
|
1299
|
-
for (; r < s; ) {
|
|
1300
|
-
const n = r + s >> 1;
|
|
1301
|
-
e[n] < t ? r = n + 1 : s = n;
|
|
858
|
+
const x = (r, e) => {
|
|
859
|
+
let t = 0, n = r.length;
|
|
860
|
+
for (; t < n; ) {
|
|
861
|
+
const o = t + n >> 1;
|
|
862
|
+
r[o] < e ? t = o + 1 : n = o;
|
|
1302
863
|
}
|
|
1303
|
-
return
|
|
1304
|
-
},
|
|
1305
|
-
let
|
|
1306
|
-
for (;
|
|
1307
|
-
const
|
|
1308
|
-
|
|
1309
|
-
}
|
|
1310
|
-
return
|
|
1311
|
-
},
|
|
1312
|
-
`,
|
|
1313
|
-
function
|
|
1314
|
-
let
|
|
864
|
+
return t;
|
|
865
|
+
}, C = (r, e) => {
|
|
866
|
+
let t = 0, n = r.length;
|
|
867
|
+
for (; t < n; ) {
|
|
868
|
+
const o = t + n >> 1;
|
|
869
|
+
r[o] > e ? n = o : t = o + 1;
|
|
870
|
+
}
|
|
871
|
+
return t - 1;
|
|
872
|
+
}, et = `(function(){"use strict";function c(n,s,a,u,f,l,y,o){let r=0,e=o;for(let t=l;t<=y;t++)r<a.length&&t===a[r]?r++:(u[e]=n[t],f[e]=s[t],e++);return e-o}self.onmessage=n=>{const{bufferX:s,bufferY:a,outputBufferX:u,outputBufferY:f,start:l,end:y,deleteSegment:o,startTarget:r}=n.data,e=new Float64Array(s),t=new Float32Array(a),A=new Float64Array(u),g=new Float32Array(f);c(e,t,o,A,g,l,y,r),self.postMessage("Done")}})();
|
|
873
|
+
`, Me = typeof self < "u" && self.Blob && new Blob(["(self.URL || self.webkitURL).revokeObjectURL(self.location.href);", et], { type: "text/javascript;charset=utf-8" });
|
|
874
|
+
function Bt(r) {
|
|
875
|
+
let e;
|
|
1315
876
|
try {
|
|
1316
|
-
if (
|
|
1317
|
-
const
|
|
1318
|
-
name:
|
|
877
|
+
if (e = Me && (self.URL || self.webkitURL).createObjectURL(Me), !e) throw "";
|
|
878
|
+
const t = new Worker(e, {
|
|
879
|
+
name: r?.name
|
|
1319
880
|
});
|
|
1320
|
-
return
|
|
1321
|
-
(self.URL || self.webkitURL).revokeObjectURL(
|
|
1322
|
-
}),
|
|
881
|
+
return t.addEventListener("error", () => {
|
|
882
|
+
(self.URL || self.webkitURL).revokeObjectURL(e);
|
|
883
|
+
}), t;
|
|
1323
884
|
} catch {
|
|
1324
885
|
return new Worker(
|
|
1325
|
-
"data:text/javascript;charset=utf-8," + encodeURIComponent(
|
|
886
|
+
"data:text/javascript;charset=utf-8," + encodeURIComponent(et),
|
|
1326
887
|
{
|
|
1327
|
-
name:
|
|
888
|
+
name: r?.name
|
|
1328
889
|
}
|
|
1329
890
|
);
|
|
1330
891
|
}
|
|
1331
892
|
}
|
|
1332
|
-
const
|
|
1333
|
-
`,
|
|
1334
|
-
function
|
|
1335
|
-
let
|
|
893
|
+
const tt = `(function(){"use strict";function F(n,l,a,o,s,y,g,f,i,w,A){let e=0,t=f;for(let r=y;r<=g;r++)if(o[t]=n[r],s[t]=l[r],t++,e<a.length&&r===a[e][0]){const u=a[e][0],c=a[e][1],d=n[u],h=n[c],m=l[u],D=l[c],x=h-d,P=D-m;let p=d+i;for(;p<h;)o[t]=p,s[t]=w?m+(p-d)*P/x:A,t++,p+=i;e++}return t-f}self.onmessage=n=>{const{bufferX:l,bufferY:a,outputBufferX:o,outputBufferY:s,start:y,end:g,gapsSegment:f,startTarget:i,fillDelta:w,interpolate:A,fillValue:e}=n.data,t=new Float64Array(l),r=new Float32Array(a),u=new Float64Array(o),c=new Float32Array(s);F(t,r,f,u,c,y,g,i,w,A,e),self.postMessage("Done")}})();
|
|
894
|
+
`, Ue = typeof self < "u" && self.Blob && new Blob(["(self.URL || self.webkitURL).revokeObjectURL(self.location.href);", tt], { type: "text/javascript;charset=utf-8" });
|
|
895
|
+
function Pt(r) {
|
|
896
|
+
let e;
|
|
1336
897
|
try {
|
|
1337
|
-
if (
|
|
1338
|
-
const
|
|
1339
|
-
name:
|
|
898
|
+
if (e = Ue && (self.URL || self.webkitURL).createObjectURL(Ue), !e) throw "";
|
|
899
|
+
const t = new Worker(e, {
|
|
900
|
+
name: r?.name
|
|
1340
901
|
});
|
|
1341
|
-
return
|
|
1342
|
-
(self.URL || self.webkitURL).revokeObjectURL(
|
|
1343
|
-
}),
|
|
902
|
+
return t.addEventListener("error", () => {
|
|
903
|
+
(self.URL || self.webkitURL).revokeObjectURL(e);
|
|
904
|
+
}), t;
|
|
1344
905
|
} catch {
|
|
1345
906
|
return new Worker(
|
|
1346
|
-
"data:text/javascript;charset=utf-8," + encodeURIComponent(
|
|
907
|
+
"data:text/javascript;charset=utf-8," + encodeURIComponent(tt),
|
|
1347
908
|
{
|
|
1348
|
-
name:
|
|
909
|
+
name: r?.name
|
|
1349
910
|
}
|
|
1350
911
|
);
|
|
1351
912
|
}
|
|
1352
913
|
}
|
|
1353
|
-
const
|
|
1354
|
-
`,
|
|
1355
|
-
function
|
|
1356
|
-
let
|
|
914
|
+
const rt = `(function(){"use strict";function g(o,n,c){for(let s=0;s<c.length;s++){const{indexes:t,lowerIdx:l,upperIdx:r}=c[s],i=o[l],f=n[l],a=o[r],d=n[r],p=a-i,w=d-f;if(p===0){for(let e=0;e<t.length;e++)n[t[e]]=f;continue}for(let e=0;e<t.length;e++){const u=t[e];n[u]=f+(o[u]-i)*w/p}}}self.onmessage=o=>{const{bufferX:n,bufferY:c,groups:s}=o.data,t=new Float64Array(n),l=new Float32Array(c);g(t,l,s),self.postMessage("Done")}})();
|
|
915
|
+
`, Oe = typeof self < "u" && self.Blob && new Blob(["(self.URL || self.webkitURL).revokeObjectURL(self.location.href);", rt], { type: "text/javascript;charset=utf-8" });
|
|
916
|
+
function jt(r) {
|
|
917
|
+
let e;
|
|
1357
918
|
try {
|
|
1358
|
-
if (
|
|
1359
|
-
const
|
|
1360
|
-
name:
|
|
919
|
+
if (e = Oe && (self.URL || self.webkitURL).createObjectURL(Oe), !e) throw "";
|
|
920
|
+
const t = new Worker(e, {
|
|
921
|
+
name: r?.name
|
|
1361
922
|
});
|
|
1362
|
-
return
|
|
1363
|
-
(self.URL || self.webkitURL).revokeObjectURL(
|
|
1364
|
-
}),
|
|
923
|
+
return t.addEventListener("error", () => {
|
|
924
|
+
(self.URL || self.webkitURL).revokeObjectURL(e);
|
|
925
|
+
}), t;
|
|
1365
926
|
} catch {
|
|
1366
927
|
return new Worker(
|
|
1367
|
-
"data:text/javascript;charset=utf-8," + encodeURIComponent(
|
|
928
|
+
"data:text/javascript;charset=utf-8," + encodeURIComponent(rt),
|
|
1368
929
|
{
|
|
1369
|
-
name:
|
|
930
|
+
name: r?.name
|
|
1370
931
|
}
|
|
1371
932
|
);
|
|
1372
933
|
}
|
|
1373
934
|
}
|
|
1374
|
-
const
|
|
1375
|
-
`,
|
|
1376
|
-
function
|
|
1377
|
-
let
|
|
935
|
+
const nt = `(function(){"use strict";self.onmessage=r=>{const{bufferX:s,bufferY:o,jobs:a}=r.data,f=new Float64Array(s),n=new Float32Array(o);for(let e=0;e<a.length;e++){const{chunkStart:c,chunkEnd:l,startDatetime:u,value:i,extent:y}=a[e];for(let t=c;t<l;t++)n[t]=n[t]+i*((f[t]-u)/y)}self.postMessage("Done")}})();
|
|
936
|
+
`, De = typeof self < "u" && self.Blob && new Blob(["(self.URL || self.webkitURL).revokeObjectURL(self.location.href);", nt], { type: "text/javascript;charset=utf-8" });
|
|
937
|
+
function Wt(r) {
|
|
938
|
+
let e;
|
|
1378
939
|
try {
|
|
1379
|
-
if (
|
|
1380
|
-
const
|
|
1381
|
-
name:
|
|
940
|
+
if (e = De && (self.URL || self.webkitURL).createObjectURL(De), !e) throw "";
|
|
941
|
+
const t = new Worker(e, {
|
|
942
|
+
name: r?.name
|
|
1382
943
|
});
|
|
1383
|
-
return
|
|
1384
|
-
(self.URL || self.webkitURL).revokeObjectURL(
|
|
1385
|
-
}),
|
|
944
|
+
return t.addEventListener("error", () => {
|
|
945
|
+
(self.URL || self.webkitURL).revokeObjectURL(e);
|
|
946
|
+
}), t;
|
|
1386
947
|
} catch {
|
|
1387
948
|
return new Worker(
|
|
1388
|
-
"data:text/javascript;charset=utf-8," + encodeURIComponent(
|
|
949
|
+
"data:text/javascript;charset=utf-8," + encodeURIComponent(nt),
|
|
1389
950
|
{
|
|
1390
|
-
name:
|
|
951
|
+
name: r?.name
|
|
1391
952
|
}
|
|
1392
953
|
);
|
|
1393
954
|
}
|
|
1394
955
|
}
|
|
1395
|
-
const
|
|
1396
|
-
`,
|
|
1397
|
-
function
|
|
1398
|
-
let
|
|
956
|
+
const st = `(function(){"use strict";function u(f,o,a,n,l,c,s,i){let r=c,e=0,t=i;const w=a.length;for(;r<s&&e<w;){const y=a[e][0];f[r]<=y?(n[t]=f[r],l[t]=o[r],r++):(n[t]=y,l[t]=a[e][1],e++),t++}for(;r<s;)n[t]=f[r],l[t]=o[r],r++,t++;for(;e<w;)n[t]=a[e][0],l[t]=a[e][1],e++,t++;return t-i}self.onmessage=f=>{const{bufferX:o,bufferY:a,outputBufferX:n,outputBufferY:l,origStart:c,origEnd:s,insertions:i,outStart:r}=f.data,e=new Float64Array(o),t=new Float32Array(a),w=new Float64Array(n),y=new Float32Array(l);u(e,t,i,w,y,c,s,r),self.postMessage("Done")}})();
|
|
957
|
+
`, xe = typeof self < "u" && self.Blob && new Blob(["(self.URL || self.webkitURL).revokeObjectURL(self.location.href);", st], { type: "text/javascript;charset=utf-8" });
|
|
958
|
+
function Yt(r) {
|
|
959
|
+
let e;
|
|
1399
960
|
try {
|
|
1400
|
-
if (
|
|
1401
|
-
const
|
|
1402
|
-
name:
|
|
961
|
+
if (e = xe && (self.URL || self.webkitURL).createObjectURL(xe), !e) throw "";
|
|
962
|
+
const t = new Worker(e, {
|
|
963
|
+
name: r?.name
|
|
1403
964
|
});
|
|
1404
|
-
return
|
|
1405
|
-
(self.URL || self.webkitURL).revokeObjectURL(
|
|
1406
|
-
}),
|
|
965
|
+
return t.addEventListener("error", () => {
|
|
966
|
+
(self.URL || self.webkitURL).revokeObjectURL(e);
|
|
967
|
+
}), t;
|
|
1407
968
|
} catch {
|
|
1408
969
|
return new Worker(
|
|
1409
|
-
"data:text/javascript;charset=utf-8," + encodeURIComponent(
|
|
970
|
+
"data:text/javascript;charset=utf-8," + encodeURIComponent(st),
|
|
1410
971
|
{
|
|
1411
|
-
name:
|
|
972
|
+
name: r?.name
|
|
1412
973
|
}
|
|
1413
974
|
);
|
|
1414
975
|
}
|
|
1415
976
|
}
|
|
1416
|
-
const
|
|
1417
|
-
`,
|
|
1418
|
-
function
|
|
1419
|
-
let
|
|
977
|
+
const ot = `(function(){"use strict";self.onmessage=i=>{const{bufferX:c,bufferY:g,outputBufferX:d,outputBufferY:y,indexes:n,outStart:r,amount:f,isMonth:Y,isYear:h,deltaMs:w}=i.data,s=new Float64Array(c),a=new Float32Array(g),l=new Float64Array(d),u=new Float32Array(y);if(Y)for(let t=0;t<n.length;t++){const e=n[t],o=new Date(s[e]);o.setMonth(o.getMonth()+f),l[r+t]=o.getTime(),u[r+t]=a[e]}else if(h)for(let t=0;t<n.length;t++){const e=n[t],o=new Date(s[e]);o.setFullYear(o.getFullYear()+f),l[r+t]=o.getTime(),u[r+t]=a[e]}else for(let t=0;t<n.length;t++){const e=n[t];l[r+t]=s[e]+w,u[r+t]=a[e]}self.postMessage("Done")}})();
|
|
978
|
+
`, Ce = typeof self < "u" && self.Blob && new Blob(["(self.URL || self.webkitURL).revokeObjectURL(self.location.href);", ot], { type: "text/javascript;charset=utf-8" });
|
|
979
|
+
function Gt(r) {
|
|
980
|
+
let e;
|
|
1420
981
|
try {
|
|
1421
|
-
if (
|
|
1422
|
-
const
|
|
1423
|
-
name:
|
|
982
|
+
if (e = Ce && (self.URL || self.webkitURL).createObjectURL(Ce), !e) throw "";
|
|
983
|
+
const t = new Worker(e, {
|
|
984
|
+
name: r?.name
|
|
1424
985
|
});
|
|
1425
|
-
return
|
|
1426
|
-
(self.URL || self.webkitURL).revokeObjectURL(
|
|
1427
|
-
}),
|
|
986
|
+
return t.addEventListener("error", () => {
|
|
987
|
+
(self.URL || self.webkitURL).revokeObjectURL(e);
|
|
988
|
+
}), t;
|
|
1428
989
|
} catch {
|
|
1429
990
|
return new Worker(
|
|
1430
|
-
"data:text/javascript;charset=utf-8," + encodeURIComponent(
|
|
991
|
+
"data:text/javascript;charset=utf-8," + encodeURIComponent(ot),
|
|
1431
992
|
{
|
|
1432
|
-
name:
|
|
993
|
+
name: r?.name
|
|
1433
994
|
}
|
|
1434
995
|
);
|
|
1435
996
|
}
|
|
1436
997
|
}
|
|
1437
|
-
const
|
|
1438
|
-
`,
|
|
1439
|
-
function
|
|
1440
|
-
let
|
|
998
|
+
const it = `(function(){"use strict";function a(e,t,o,c){const n=[];let r=e[t];for(let s=t+1;s<=o;s++){const f=e[s];f-r>c&&n.push(s-1,s),r=f}return n}self.onmessage=e=>{const{bufferX:t,start:o,endInclusive:c,threshold:n}=e.data,r=new Float64Array(t);self.postMessage(a(r,o,c,n))}})();
|
|
999
|
+
`, Ne = typeof self < "u" && self.Blob && new Blob(["(self.URL || self.webkitURL).revokeObjectURL(self.location.href);", it], { type: "text/javascript;charset=utf-8" });
|
|
1000
|
+
function Xt(r) {
|
|
1001
|
+
let e;
|
|
1441
1002
|
try {
|
|
1442
|
-
if (
|
|
1443
|
-
const
|
|
1444
|
-
name:
|
|
1003
|
+
if (e = Ne && (self.URL || self.webkitURL).createObjectURL(Ne), !e) throw "";
|
|
1004
|
+
const t = new Worker(e, {
|
|
1005
|
+
name: r?.name
|
|
1445
1006
|
});
|
|
1446
|
-
return
|
|
1447
|
-
(self.URL || self.webkitURL).revokeObjectURL(
|
|
1448
|
-
}),
|
|
1007
|
+
return t.addEventListener("error", () => {
|
|
1008
|
+
(self.URL || self.webkitURL).revokeObjectURL(e);
|
|
1009
|
+
}), t;
|
|
1449
1010
|
} catch {
|
|
1450
1011
|
return new Worker(
|
|
1451
|
-
"data:text/javascript;charset=utf-8," + encodeURIComponent(
|
|
1012
|
+
"data:text/javascript;charset=utf-8," + encodeURIComponent(it),
|
|
1452
1013
|
{
|
|
1453
|
-
name:
|
|
1014
|
+
name: r?.name
|
|
1454
1015
|
}
|
|
1455
1016
|
);
|
|
1456
1017
|
}
|
|
1457
1018
|
}
|
|
1458
|
-
const
|
|
1459
|
-
`,
|
|
1460
|
-
function
|
|
1461
|
-
let
|
|
1019
|
+
const at = `(function(){"use strict";function c(u,s,t){const n=[];if(s>=t)return n;let e=s,o=u[s];for(let r=s+1;r<t;r++){const f=u[r];f!==o&&(n.push(e,r-e,o),e=r,o=f)}return n.push(e,t-e,o),n}self.onmessage=u=>{const{bufferY:s,start:t,end:n}=u.data,e=new Float32Array(s);self.postMessage(c(e,t,n))}})();
|
|
1020
|
+
`, Fe = typeof self < "u" && self.Blob && new Blob(["(self.URL || self.webkitURL).revokeObjectURL(self.location.href);", at], { type: "text/javascript;charset=utf-8" });
|
|
1021
|
+
function Ht(r) {
|
|
1022
|
+
let e;
|
|
1462
1023
|
try {
|
|
1463
|
-
if (
|
|
1464
|
-
const
|
|
1465
|
-
name:
|
|
1024
|
+
if (e = Fe && (self.URL || self.webkitURL).createObjectURL(Fe), !e) throw "";
|
|
1025
|
+
const t = new Worker(e, {
|
|
1026
|
+
name: r?.name
|
|
1466
1027
|
});
|
|
1467
|
-
return
|
|
1468
|
-
(self.URL || self.webkitURL).revokeObjectURL(
|
|
1469
|
-
}),
|
|
1028
|
+
return t.addEventListener("error", () => {
|
|
1029
|
+
(self.URL || self.webkitURL).revokeObjectURL(e);
|
|
1030
|
+
}), t;
|
|
1470
1031
|
} catch {
|
|
1471
1032
|
return new Worker(
|
|
1472
|
-
"data:text/javascript;charset=utf-8," + encodeURIComponent(
|
|
1033
|
+
"data:text/javascript;charset=utf-8," + encodeURIComponent(at),
|
|
1473
1034
|
{
|
|
1474
|
-
name:
|
|
1035
|
+
name: r?.name
|
|
1475
1036
|
}
|
|
1476
1037
|
);
|
|
1477
1038
|
}
|
|
1478
1039
|
}
|
|
1479
|
-
const
|
|
1480
|
-
`,
|
|
1481
|
-
function
|
|
1482
|
-
let
|
|
1040
|
+
const ct = `(function(){"use strict";function o(s,i,t,n,l){const f=[];if(n==="Less than")for(let e=i;e<t;e++)s[e]-s[e-1]<l&&f.push(e);else if(n==="Less than or equal to")for(let e=i;e<t;e++)s[e]-s[e-1]<=l&&f.push(e);else if(n==="Greater than")for(let e=i;e<t;e++)s[e]-s[e-1]>l&&f.push(e);else if(n==="Greater than or equal to")for(let e=i;e<t;e++)s[e]-s[e-1]>=l&&f.push(e);else if(n==="Equal")for(let e=i;e<t;e++)s[e]-s[e-1]==l&&f.push(e);return f}self.onmessage=s=>{const{bufferY:i,start:t,end:n,comparator:l,value:f}=s.data,e=new Float32Array(i);self.postMessage(o(e,t,n,l,f))}})();
|
|
1041
|
+
`, Be = typeof self < "u" && self.Blob && new Blob(["(self.URL || self.webkitURL).revokeObjectURL(self.location.href);", ct], { type: "text/javascript;charset=utf-8" });
|
|
1042
|
+
function zt(r) {
|
|
1043
|
+
let e;
|
|
1483
1044
|
try {
|
|
1484
|
-
if (
|
|
1485
|
-
const
|
|
1486
|
-
name:
|
|
1045
|
+
if (e = Be && (self.URL || self.webkitURL).createObjectURL(Be), !e) throw "";
|
|
1046
|
+
const t = new Worker(e, {
|
|
1047
|
+
name: r?.name
|
|
1487
1048
|
});
|
|
1488
|
-
return
|
|
1489
|
-
(self.URL || self.webkitURL).revokeObjectURL(
|
|
1490
|
-
}),
|
|
1049
|
+
return t.addEventListener("error", () => {
|
|
1050
|
+
(self.URL || self.webkitURL).revokeObjectURL(e);
|
|
1051
|
+
}), t;
|
|
1491
1052
|
} catch {
|
|
1492
1053
|
return new Worker(
|
|
1493
|
-
"data:text/javascript;charset=utf-8," + encodeURIComponent(
|
|
1054
|
+
"data:text/javascript;charset=utf-8," + encodeURIComponent(ct),
|
|
1494
1055
|
{
|
|
1495
|
-
name:
|
|
1056
|
+
name: r?.name
|
|
1496
1057
|
}
|
|
1497
1058
|
);
|
|
1498
1059
|
}
|
|
1499
1060
|
}
|
|
1500
|
-
const
|
|
1501
|
-
`,
|
|
1502
|
-
function
|
|
1503
|
-
let
|
|
1061
|
+
const lt = `(function(){"use strict";function l(t,i,n,o,h){const f=[];if(o==="Less than")for(let e=i;e<n;e++){const s=t[e-1];(t[e]-s)/Math.abs(s)<h&&f.push(e)}else if(o==="Less than or equal to")for(let e=i;e<n;e++){const s=t[e-1];(t[e]-s)/Math.abs(s)<=h&&f.push(e)}else if(o==="Greater than")for(let e=i;e<n;e++){const s=t[e-1];(t[e]-s)/Math.abs(s)>h&&f.push(e)}else if(o==="Greater than or equal to")for(let e=i;e<n;e++){const s=t[e-1];(t[e]-s)/Math.abs(s)>=h&&f.push(e)}else if(o==="Equal")for(let e=i;e<n;e++){const s=t[e-1];(t[e]-s)/Math.abs(s)==h&&f.push(e)}return f}self.onmessage=t=>{const{bufferY:i,start:n,end:o,comparator:h,value:f}=t.data,e=new Float32Array(i);self.postMessage(l(e,n,o,h,f))}})();
|
|
1062
|
+
`, Pe = typeof self < "u" && self.Blob && new Blob(["(self.URL || self.webkitURL).revokeObjectURL(self.location.href);", lt], { type: "text/javascript;charset=utf-8" });
|
|
1063
|
+
function $t(r) {
|
|
1064
|
+
let e;
|
|
1504
1065
|
try {
|
|
1505
|
-
if (
|
|
1506
|
-
const
|
|
1507
|
-
name:
|
|
1066
|
+
if (e = Pe && (self.URL || self.webkitURL).createObjectURL(Pe), !e) throw "";
|
|
1067
|
+
const t = new Worker(e, {
|
|
1068
|
+
name: r?.name
|
|
1508
1069
|
});
|
|
1509
|
-
return
|
|
1510
|
-
(self.URL || self.webkitURL).revokeObjectURL(
|
|
1511
|
-
}),
|
|
1070
|
+
return t.addEventListener("error", () => {
|
|
1071
|
+
(self.URL || self.webkitURL).revokeObjectURL(e);
|
|
1072
|
+
}), t;
|
|
1512
1073
|
} catch {
|
|
1513
1074
|
return new Worker(
|
|
1514
|
-
"data:text/javascript;charset=utf-8," + encodeURIComponent(
|
|
1075
|
+
"data:text/javascript;charset=utf-8," + encodeURIComponent(lt),
|
|
1515
1076
|
{
|
|
1516
|
-
name:
|
|
1077
|
+
name: r?.name
|
|
1517
1078
|
}
|
|
1518
1079
|
);
|
|
1519
1080
|
}
|
|
1520
1081
|
}
|
|
1521
|
-
const
|
|
1522
|
-
`,
|
|
1523
|
-
function
|
|
1524
|
-
let
|
|
1082
|
+
const ut = `(function(){"use strict";function k(i,l,u,r,c){const f=[],b=r.length;for(let a=l;a<u;a++){const t=i[a];let e=!1;for(let n=0;n<b;n++){const o=r[n],s=c[n];if(o===0){if(t<s){e=!0;break}}else if(o===1){if(t<=s){e=!0;break}}else if(o===2){if(t>s){e=!0;break}}else if(o===3){if(t>=s){e=!0;break}}else if(t==s){e=!0;break}}e&&f.push(a)}return f}self.onmessage=i=>{const{bufferY:l,start:u,end:r,ops:c,values:f}=i.data,b=new Float32Array(l);self.postMessage(k(b,u,r,c,f))}})();
|
|
1083
|
+
`, je = typeof self < "u" && self.Blob && new Blob(["(self.URL || self.webkitURL).revokeObjectURL(self.location.href);", ut], { type: "text/javascript;charset=utf-8" });
|
|
1084
|
+
function he(r) {
|
|
1085
|
+
let e;
|
|
1525
1086
|
try {
|
|
1526
|
-
if (
|
|
1527
|
-
const
|
|
1528
|
-
name:
|
|
1087
|
+
if (e = je && (self.URL || self.webkitURL).createObjectURL(je), !e) throw "";
|
|
1088
|
+
const t = new Worker(e, {
|
|
1089
|
+
name: r?.name
|
|
1529
1090
|
});
|
|
1530
|
-
return
|
|
1531
|
-
(self.URL || self.webkitURL).revokeObjectURL(
|
|
1532
|
-
}),
|
|
1091
|
+
return t.addEventListener("error", () => {
|
|
1092
|
+
(self.URL || self.webkitURL).revokeObjectURL(e);
|
|
1093
|
+
}), t;
|
|
1533
1094
|
} catch {
|
|
1534
1095
|
return new Worker(
|
|
1535
|
-
"data:text/javascript;charset=utf-8," + encodeURIComponent(
|
|
1096
|
+
"data:text/javascript;charset=utf-8," + encodeURIComponent(ut),
|
|
1536
1097
|
{
|
|
1537
|
-
name:
|
|
1098
|
+
name: r?.name
|
|
1538
1099
|
}
|
|
1539
1100
|
);
|
|
1540
1101
|
}
|
|
1541
1102
|
}
|
|
1542
|
-
const
|
|
1543
|
-
`,
|
|
1544
|
-
function
|
|
1545
|
-
let
|
|
1103
|
+
const ft = `(function(){"use strict";function e(l,t,o,s){const c=t.length;if(o==="ADD")for(let f=0;f<c;f++)l[t[f]]=l[t[f]]+s;else if(o==="SUB")for(let f=0;f<c;f++)l[t[f]]=l[t[f]]-s;else if(o==="MULT")for(let f=0;f<c;f++)l[t[f]]=l[t[f]]*s;else if(o==="DIV")for(let f=0;f<c;f++)l[t[f]]=l[t[f]]/s;else if(o==="ASSIGN")for(let f=0;f<c;f++)l[t[f]]=s}self.onmessage=l=>{const{bufferY:t,indexes:o,operator:s,value:c}=l.data,f=new Float32Array(t);e(f,o,s,c),self.postMessage("Done")}})();
|
|
1104
|
+
`, We = typeof self < "u" && self.Blob && new Blob(["(self.URL || self.webkitURL).revokeObjectURL(self.location.href);", ft], { type: "text/javascript;charset=utf-8" });
|
|
1105
|
+
function Vt(r) {
|
|
1106
|
+
let e;
|
|
1546
1107
|
try {
|
|
1547
|
-
if (
|
|
1548
|
-
const
|
|
1549
|
-
name:
|
|
1108
|
+
if (e = We && (self.URL || self.webkitURL).createObjectURL(We), !e) throw "";
|
|
1109
|
+
const t = new Worker(e, {
|
|
1110
|
+
name: r?.name
|
|
1550
1111
|
});
|
|
1551
|
-
return
|
|
1552
|
-
(self.URL || self.webkitURL).revokeObjectURL(
|
|
1553
|
-
}),
|
|
1112
|
+
return t.addEventListener("error", () => {
|
|
1113
|
+
(self.URL || self.webkitURL).revokeObjectURL(e);
|
|
1114
|
+
}), t;
|
|
1554
1115
|
} catch {
|
|
1555
1116
|
return new Worker(
|
|
1556
|
-
"data:text/javascript;charset=utf-8," + encodeURIComponent(
|
|
1117
|
+
"data:text/javascript;charset=utf-8," + encodeURIComponent(ft),
|
|
1557
1118
|
{
|
|
1558
|
-
name:
|
|
1119
|
+
name: r?.name
|
|
1559
1120
|
}
|
|
1560
1121
|
);
|
|
1561
1122
|
}
|
|
1562
1123
|
}
|
|
1563
|
-
function
|
|
1564
|
-
const
|
|
1565
|
-
for (let
|
|
1566
|
-
const
|
|
1567
|
-
let
|
|
1568
|
-
for (let
|
|
1569
|
-
const
|
|
1570
|
-
if (
|
|
1571
|
-
if (
|
|
1572
|
-
|
|
1124
|
+
function ht(r, e, t, n, o) {
|
|
1125
|
+
const i = [], s = n.length;
|
|
1126
|
+
for (let a = e; a < t; a++) {
|
|
1127
|
+
const c = r[a];
|
|
1128
|
+
let p = !1;
|
|
1129
|
+
for (let f = 0; f < s; f++) {
|
|
1130
|
+
const w = n[f], m = o[f];
|
|
1131
|
+
if (w === 0) {
|
|
1132
|
+
if (c < m) {
|
|
1133
|
+
p = !0;
|
|
1573
1134
|
break;
|
|
1574
1135
|
}
|
|
1575
|
-
} else if (
|
|
1576
|
-
if (
|
|
1577
|
-
|
|
1136
|
+
} else if (w === 1) {
|
|
1137
|
+
if (c <= m) {
|
|
1138
|
+
p = !0;
|
|
1578
1139
|
break;
|
|
1579
1140
|
}
|
|
1580
|
-
} else if (
|
|
1581
|
-
if (
|
|
1582
|
-
|
|
1141
|
+
} else if (w === 2) {
|
|
1142
|
+
if (c > m) {
|
|
1143
|
+
p = !0;
|
|
1583
1144
|
break;
|
|
1584
1145
|
}
|
|
1585
|
-
} else if (
|
|
1586
|
-
if (
|
|
1587
|
-
|
|
1146
|
+
} else if (w === 3) {
|
|
1147
|
+
if (c >= m) {
|
|
1148
|
+
p = !0;
|
|
1588
1149
|
break;
|
|
1589
1150
|
}
|
|
1590
|
-
} else if (
|
|
1591
|
-
|
|
1151
|
+
} else if (c == m) {
|
|
1152
|
+
p = !0;
|
|
1592
1153
|
break;
|
|
1593
1154
|
}
|
|
1594
1155
|
}
|
|
1595
|
-
|
|
1596
|
-
}
|
|
1597
|
-
return
|
|
1598
|
-
}
|
|
1599
|
-
function
|
|
1600
|
-
const
|
|
1601
|
-
if (
|
|
1602
|
-
for (let
|
|
1603
|
-
|
|
1604
|
-
else if (
|
|
1605
|
-
for (let
|
|
1606
|
-
|
|
1607
|
-
else if (
|
|
1608
|
-
for (let
|
|
1609
|
-
|
|
1610
|
-
else if (
|
|
1611
|
-
for (let
|
|
1612
|
-
|
|
1613
|
-
else if (
|
|
1614
|
-
for (let
|
|
1615
|
-
|
|
1616
|
-
return
|
|
1617
|
-
}
|
|
1618
|
-
function
|
|
1619
|
-
const
|
|
1620
|
-
if (
|
|
1621
|
-
for (let
|
|
1622
|
-
const
|
|
1623
|
-
(
|
|
1624
|
-
}
|
|
1625
|
-
else if (
|
|
1626
|
-
for (let
|
|
1627
|
-
const
|
|
1628
|
-
(
|
|
1629
|
-
}
|
|
1630
|
-
else if (
|
|
1631
|
-
for (let
|
|
1632
|
-
const
|
|
1633
|
-
(
|
|
1634
|
-
}
|
|
1635
|
-
else if (
|
|
1636
|
-
for (let
|
|
1637
|
-
const
|
|
1638
|
-
(
|
|
1639
|
-
}
|
|
1640
|
-
else if (
|
|
1641
|
-
for (let
|
|
1642
|
-
const
|
|
1643
|
-
(
|
|
1644
|
-
}
|
|
1645
|
-
return
|
|
1646
|
-
}
|
|
1647
|
-
function
|
|
1156
|
+
p && i.push(a);
|
|
1157
|
+
}
|
|
1158
|
+
return i;
|
|
1159
|
+
}
|
|
1160
|
+
function qt(r, e, t, n, o) {
|
|
1161
|
+
const i = [];
|
|
1162
|
+
if (n === "Less than")
|
|
1163
|
+
for (let s = e; s < t; s++)
|
|
1164
|
+
r[s] - r[s - 1] < o && i.push(s);
|
|
1165
|
+
else if (n === "Less than or equal to")
|
|
1166
|
+
for (let s = e; s < t; s++)
|
|
1167
|
+
r[s] - r[s - 1] <= o && i.push(s);
|
|
1168
|
+
else if (n === "Greater than")
|
|
1169
|
+
for (let s = e; s < t; s++)
|
|
1170
|
+
r[s] - r[s - 1] > o && i.push(s);
|
|
1171
|
+
else if (n === "Greater than or equal to")
|
|
1172
|
+
for (let s = e; s < t; s++)
|
|
1173
|
+
r[s] - r[s - 1] >= o && i.push(s);
|
|
1174
|
+
else if (n === "Equal")
|
|
1175
|
+
for (let s = e; s < t; s++)
|
|
1176
|
+
r[s] - r[s - 1] == o && i.push(s);
|
|
1177
|
+
return i;
|
|
1178
|
+
}
|
|
1179
|
+
function Jt(r, e, t, n, o) {
|
|
1180
|
+
const i = [];
|
|
1181
|
+
if (n === "Less than")
|
|
1182
|
+
for (let s = e; s < t; s++) {
|
|
1183
|
+
const a = r[s - 1];
|
|
1184
|
+
(r[s] - a) / Math.abs(a) < o && i.push(s);
|
|
1185
|
+
}
|
|
1186
|
+
else if (n === "Less than or equal to")
|
|
1187
|
+
for (let s = e; s < t; s++) {
|
|
1188
|
+
const a = r[s - 1];
|
|
1189
|
+
(r[s] - a) / Math.abs(a) <= o && i.push(s);
|
|
1190
|
+
}
|
|
1191
|
+
else if (n === "Greater than")
|
|
1192
|
+
for (let s = e; s < t; s++) {
|
|
1193
|
+
const a = r[s - 1];
|
|
1194
|
+
(r[s] - a) / Math.abs(a) > o && i.push(s);
|
|
1195
|
+
}
|
|
1196
|
+
else if (n === "Greater than or equal to")
|
|
1197
|
+
for (let s = e; s < t; s++) {
|
|
1198
|
+
const a = r[s - 1];
|
|
1199
|
+
(r[s] - a) / Math.abs(a) >= o && i.push(s);
|
|
1200
|
+
}
|
|
1201
|
+
else if (n === "Equal")
|
|
1202
|
+
for (let s = e; s < t; s++) {
|
|
1203
|
+
const a = r[s - 1];
|
|
1204
|
+
(r[s] - a) / Math.abs(a) == o && i.push(s);
|
|
1205
|
+
}
|
|
1206
|
+
return i;
|
|
1207
|
+
}
|
|
1208
|
+
function Kt(r, e, t, n) {
|
|
1209
|
+
const o = [];
|
|
1210
|
+
let i = r[e];
|
|
1211
|
+
for (let s = e + 1; s <= t; s++) {
|
|
1212
|
+
const a = r[s];
|
|
1213
|
+
a - i > n && o.push(s - 1, s), i = a;
|
|
1214
|
+
}
|
|
1215
|
+
return o;
|
|
1216
|
+
}
|
|
1217
|
+
function Qt(r, e, t) {
|
|
1648
1218
|
const n = [];
|
|
1649
|
-
|
|
1650
|
-
|
|
1651
|
-
|
|
1652
|
-
|
|
1653
|
-
|
|
1654
|
-
|
|
1655
|
-
|
|
1656
|
-
|
|
1657
|
-
|
|
1658
|
-
|
|
1659
|
-
let
|
|
1660
|
-
|
|
1661
|
-
|
|
1662
|
-
|
|
1663
|
-
|
|
1664
|
-
|
|
1665
|
-
|
|
1666
|
-
|
|
1667
|
-
|
|
1668
|
-
|
|
1669
|
-
|
|
1670
|
-
|
|
1671
|
-
|
|
1672
|
-
|
|
1673
|
-
|
|
1674
|
-
|
|
1675
|
-
|
|
1676
|
-
|
|
1677
|
-
|
|
1678
|
-
|
|
1679
|
-
|
|
1680
|
-
|
|
1681
|
-
|
|
1682
|
-
|
|
1683
|
-
|
|
1684
|
-
|
|
1685
|
-
|
|
1686
|
-
|
|
1687
|
-
|
|
1688
|
-
|
|
1689
|
-
|
|
1690
|
-
|
|
1691
|
-
|
|
1692
|
-
|
|
1693
|
-
|
|
1694
|
-
|
|
1695
|
-
|
|
1696
|
-
|
|
1697
|
-
|
|
1698
|
-
|
|
1699
|
-
if (s.isMonth)
|
|
1700
|
-
for (let o = 0; o < n; o++) {
|
|
1701
|
-
const i = r[o], l = new Date(e[i]);
|
|
1702
|
-
l.setMonth(l.getMonth() + s.amount), a[o] = [l.getTime(), t[i]];
|
|
1703
|
-
}
|
|
1704
|
-
else if (s.isYear)
|
|
1705
|
-
for (let o = 0; o < n; o++) {
|
|
1706
|
-
const i = r[o], l = new Date(e[i]);
|
|
1707
|
-
l.setFullYear(l.getFullYear() + s.amount), a[o] = [l.getTime(), t[i]];
|
|
1219
|
+
if (e >= t) return n;
|
|
1220
|
+
let o = e, i = r[e];
|
|
1221
|
+
for (let s = e + 1; s < t; s++) {
|
|
1222
|
+
const a = r[s];
|
|
1223
|
+
a !== i && (n.push(o, s - o, i), o = s, i = a);
|
|
1224
|
+
}
|
|
1225
|
+
return n.push(o, t - o, i), n;
|
|
1226
|
+
}
|
|
1227
|
+
function Zt(r, e, t, n, o, i, s, a, c, p, f) {
|
|
1228
|
+
let w = 0, m = a;
|
|
1229
|
+
for (let d = i; d <= s; d++)
|
|
1230
|
+
if (n[m] = r[d], o[m] = e[d], m++, w < t.length && d === t[w][0]) {
|
|
1231
|
+
const y = t[w][0], l = t[w][1], u = r[y], g = r[l], h = e[y], b = e[l], E = g - u, k = b - h;
|
|
1232
|
+
let A = u + c;
|
|
1233
|
+
for (; A < g; )
|
|
1234
|
+
n[m] = A, o[m] = p ? h + (A - u) * k / E : f, m++, A += c;
|
|
1235
|
+
w++;
|
|
1236
|
+
}
|
|
1237
|
+
return m - a;
|
|
1238
|
+
}
|
|
1239
|
+
function er(r, e, t, n, o, i, s, a) {
|
|
1240
|
+
let c = i, p = 0, f = a;
|
|
1241
|
+
const w = t.length;
|
|
1242
|
+
for (; c < s && p < w; ) {
|
|
1243
|
+
const m = t[p][0];
|
|
1244
|
+
r[c] <= m ? (n[f] = r[c], o[f] = e[c], c++) : (n[f] = m, o[f] = t[p][1], p++), f++;
|
|
1245
|
+
}
|
|
1246
|
+
for (; c < s; )
|
|
1247
|
+
n[f] = r[c], o[f] = e[c], c++, f++;
|
|
1248
|
+
for (; p < w; )
|
|
1249
|
+
n[f] = t[p][0], o[f] = t[p][1], p++, f++;
|
|
1250
|
+
return f - a;
|
|
1251
|
+
}
|
|
1252
|
+
function tr(r, e, t, n, o, i, s, a) {
|
|
1253
|
+
let c = 0, p = a;
|
|
1254
|
+
for (let f = i; f <= s; f++)
|
|
1255
|
+
c < t.length && f === t[c] ? c++ : (n[p] = r[f], o[p] = e[f], p++);
|
|
1256
|
+
return p - a;
|
|
1257
|
+
}
|
|
1258
|
+
function rr(r, e, t, n) {
|
|
1259
|
+
const o = t.length, i = new Array(o);
|
|
1260
|
+
if (n.isMonth)
|
|
1261
|
+
for (let s = 0; s < o; s++) {
|
|
1262
|
+
const a = t[s], c = new Date(r[a]);
|
|
1263
|
+
c.setMonth(c.getMonth() + n.amount), i[s] = [c.getTime(), e[a]];
|
|
1264
|
+
}
|
|
1265
|
+
else if (n.isYear)
|
|
1266
|
+
for (let s = 0; s < o; s++) {
|
|
1267
|
+
const a = t[s], c = new Date(r[a]);
|
|
1268
|
+
c.setFullYear(c.getFullYear() + n.amount), i[s] = [c.getTime(), e[a]];
|
|
1708
1269
|
}
|
|
1709
1270
|
else
|
|
1710
|
-
for (let
|
|
1711
|
-
const
|
|
1712
|
-
|
|
1271
|
+
for (let s = 0; s < o; s++) {
|
|
1272
|
+
const a = t[s];
|
|
1273
|
+
i[s] = [r[a] + n.deltaMs, e[a]];
|
|
1713
1274
|
}
|
|
1714
|
-
return
|
|
1275
|
+
return i;
|
|
1715
1276
|
}
|
|
1716
|
-
function
|
|
1717
|
-
for (let
|
|
1718
|
-
const { indexes:
|
|
1719
|
-
if (
|
|
1720
|
-
for (let
|
|
1277
|
+
function nr(r, e, t) {
|
|
1278
|
+
for (let n = 0; n < t.length; n++) {
|
|
1279
|
+
const { indexes: o, lowerIdx: i, upperIdx: s } = t[n], a = r[i], c = e[i], p = r[s], f = e[s], w = p - a, m = f - c;
|
|
1280
|
+
if (w === 0) {
|
|
1281
|
+
for (let d = 0; d < o.length; d++) e[o[d]] = c;
|
|
1721
1282
|
continue;
|
|
1722
1283
|
}
|
|
1723
|
-
for (let
|
|
1724
|
-
const
|
|
1725
|
-
|
|
1284
|
+
for (let d = 0; d < o.length; d++) {
|
|
1285
|
+
const y = o[d];
|
|
1286
|
+
e[y] = c + (r[y] - a) * m / w;
|
|
1726
1287
|
}
|
|
1727
1288
|
}
|
|
1728
1289
|
}
|
|
1729
|
-
function
|
|
1730
|
-
for (let
|
|
1731
|
-
const
|
|
1732
|
-
if (
|
|
1733
|
-
const
|
|
1734
|
-
if (
|
|
1735
|
-
for (let
|
|
1736
|
-
|
|
1290
|
+
function sr(r, e, t) {
|
|
1291
|
+
for (let n = 0; n < t.length; n++) {
|
|
1292
|
+
const o = t[n][0], i = t[n][1], s = t[n][2];
|
|
1293
|
+
if (i <= o) continue;
|
|
1294
|
+
const a = r[o], c = r[i] - a;
|
|
1295
|
+
if (c !== 0)
|
|
1296
|
+
for (let p = o; p < i; p++)
|
|
1297
|
+
e[p] = e[p] + s * ((r[p] - a) / c);
|
|
1737
1298
|
}
|
|
1738
1299
|
}
|
|
1739
|
-
function
|
|
1740
|
-
const
|
|
1741
|
-
if (
|
|
1742
|
-
for (let
|
|
1743
|
-
else if (
|
|
1744
|
-
for (let
|
|
1745
|
-
else if (
|
|
1746
|
-
for (let
|
|
1747
|
-
else if (
|
|
1748
|
-
for (let
|
|
1749
|
-
else if (
|
|
1750
|
-
for (let
|
|
1300
|
+
function Ye(r, e, t, n) {
|
|
1301
|
+
const o = e.length;
|
|
1302
|
+
if (t === "ADD")
|
|
1303
|
+
for (let i = 0; i < o; i++) r[e[i]] = r[e[i]] + n;
|
|
1304
|
+
else if (t === "SUB")
|
|
1305
|
+
for (let i = 0; i < o; i++) r[e[i]] = r[e[i]] - n;
|
|
1306
|
+
else if (t === "MULT")
|
|
1307
|
+
for (let i = 0; i < o; i++) r[e[i]] = r[e[i]] * n;
|
|
1308
|
+
else if (t === "DIV")
|
|
1309
|
+
for (let i = 0; i < o; i++) r[e[i]] = r[e[i]] / n;
|
|
1310
|
+
else if (t === "ASSIGN")
|
|
1311
|
+
for (let i = 0; i < o; i++) r[e[i]] = n;
|
|
1751
1312
|
}
|
|
1752
|
-
const
|
|
1313
|
+
const or = 1, ge = `qc-utils:calibration:v${or}`, ir = 720 * 60 * 60 * 1e3, H = 5e4, z = 2e5, J = {
|
|
1753
1314
|
spawnOverheadMs: 50,
|
|
1754
1315
|
// worst-case Windows
|
|
1755
1316
|
inlineThroughput: 5e4,
|
|
@@ -1760,106 +1321,106 @@ const Yr = 1, Pe = `qc-utils:calibration:v${Yr}`, Gr = 720 * 60 * 60 * 1e3, ae =
|
|
|
1760
1321
|
measuredAt: 0,
|
|
1761
1322
|
userAgent: "default"
|
|
1762
1323
|
};
|
|
1763
|
-
let
|
|
1764
|
-
const
|
|
1324
|
+
let R = lr() ?? J, ye = null, j = null;
|
|
1325
|
+
const de = /* @__PURE__ */ new Set(), pe = {
|
|
1765
1326
|
// Filter ops — read-only scans, cheap kernels
|
|
1766
|
-
[
|
|
1327
|
+
[L.VALUE_THRESHOLD]: {
|
|
1767
1328
|
mode: "calibrated",
|
|
1768
1329
|
weight: 1,
|
|
1769
1330
|
rationale: "O(n) single-pass scan; baseline reference"
|
|
1770
1331
|
},
|
|
1771
|
-
[
|
|
1332
|
+
[L.CHANGE]: {
|
|
1772
1333
|
mode: "calibrated",
|
|
1773
1334
|
weight: 1.1,
|
|
1774
1335
|
rationale: "O(n) with one subtraction per step"
|
|
1775
1336
|
},
|
|
1776
|
-
[
|
|
1337
|
+
[L.RATE_OF_CHANGE]: {
|
|
1777
1338
|
mode: "calibrated",
|
|
1778
1339
|
weight: 1.4,
|
|
1779
1340
|
rationale: "O(n) with division + abs per step"
|
|
1780
1341
|
},
|
|
1781
|
-
[
|
|
1342
|
+
[L.FIND_GAPS]: {
|
|
1782
1343
|
mode: "calibrated",
|
|
1783
1344
|
weight: 0.9,
|
|
1784
1345
|
rationale: "O(n) on X only, mostly empty output"
|
|
1785
1346
|
},
|
|
1786
|
-
[
|
|
1347
|
+
[L.PERSISTENCE]: {
|
|
1787
1348
|
mode: "calibrated",
|
|
1788
1349
|
weight: 1.3,
|
|
1789
1350
|
rationale: "O(n) + chunk-boundary stitch"
|
|
1790
1351
|
},
|
|
1791
|
-
[
|
|
1352
|
+
[L.DATETIME_RANGE]: {
|
|
1792
1353
|
mode: "always-inline",
|
|
1793
1354
|
weight: 0,
|
|
1794
1355
|
rationale: "O(log n) binary search; never worth the worker hop"
|
|
1795
1356
|
},
|
|
1796
|
-
[
|
|
1357
|
+
[L.SELECTION]: {
|
|
1797
1358
|
mode: "always-inline",
|
|
1798
1359
|
weight: 0,
|
|
1799
1360
|
rationale: "Pure history bookkeeping"
|
|
1800
1361
|
},
|
|
1801
1362
|
// Edit ops — mutate Y in place or rebuild arrays
|
|
1802
|
-
[
|
|
1363
|
+
[S.CHANGE_VALUES]: {
|
|
1803
1364
|
mode: "calibrated",
|
|
1804
1365
|
weight: 0.7,
|
|
1805
1366
|
rationale: "O(k) in-place arithmetic on selection"
|
|
1806
1367
|
},
|
|
1807
|
-
[
|
|
1368
|
+
[S.ASSIGN_VALUES_BULK]: {
|
|
1808
1369
|
mode: "always-inline",
|
|
1809
1370
|
weight: 0,
|
|
1810
1371
|
rationale: "Single tight loop, already inline"
|
|
1811
1372
|
},
|
|
1812
|
-
[
|
|
1373
|
+
[S.ASSIGN_DATETIMES_BULK]: {
|
|
1813
1374
|
mode: "always-inline",
|
|
1814
1375
|
weight: 0,
|
|
1815
1376
|
rationale: "Composes delete+add which handle their own dispatch"
|
|
1816
1377
|
},
|
|
1817
|
-
[
|
|
1378
|
+
[S.INTERPOLATE]: {
|
|
1818
1379
|
mode: "calibrated",
|
|
1819
1380
|
weight: 1.5,
|
|
1820
1381
|
rationale: "Linear interp per consecutive group; in-place writes"
|
|
1821
1382
|
},
|
|
1822
|
-
[
|
|
1383
|
+
[S.DRIFT_CORRECTION]: {
|
|
1823
1384
|
mode: "calibrated",
|
|
1824
1385
|
weight: 1.2,
|
|
1825
1386
|
rationale: "O(range total) in-place math; one pass per range"
|
|
1826
1387
|
},
|
|
1827
|
-
[
|
|
1388
|
+
[S.SHIFT_DATETIMES]: {
|
|
1828
1389
|
mode: "calibrated",
|
|
1829
1390
|
weight: 1.1,
|
|
1830
1391
|
rationale: "O(k) per-point shift math; inline skips SAB allocation"
|
|
1831
1392
|
},
|
|
1832
|
-
[
|
|
1393
|
+
[S.ADD_POINTS]: {
|
|
1833
1394
|
mode: "calibrated",
|
|
1834
1395
|
weight: 1.8,
|
|
1835
1396
|
rationale: "Single merge pass over Y/X + insertions; fresh SAB per call"
|
|
1836
1397
|
},
|
|
1837
|
-
[
|
|
1398
|
+
[S.DELETE_POINTS]: {
|
|
1838
1399
|
mode: "calibrated",
|
|
1839
1400
|
weight: 1.4,
|
|
1840
1401
|
rationale: "Single skip-on-delete pass over Y/X; fresh SAB per call"
|
|
1841
1402
|
},
|
|
1842
|
-
[
|
|
1403
|
+
[S.FILL_GAPS]: {
|
|
1843
1404
|
mode: "calibrated",
|
|
1844
1405
|
weight: 1.3,
|
|
1845
1406
|
rationale: "Single copy-with-fills pass; fresh SAB sized to newLength"
|
|
1846
1407
|
}
|
|
1847
1408
|
};
|
|
1848
|
-
function
|
|
1849
|
-
const
|
|
1850
|
-
if (!
|
|
1409
|
+
function U(r, e) {
|
|
1410
|
+
const t = pe[r];
|
|
1411
|
+
if (!t)
|
|
1851
1412
|
return {
|
|
1852
1413
|
useWorker: !0,
|
|
1853
1414
|
predictedInlineMs: 1 / 0,
|
|
1854
1415
|
predictedWorkerMs: 0,
|
|
1855
1416
|
reason: "unknown op; keeping default worker path"
|
|
1856
1417
|
};
|
|
1857
|
-
if (
|
|
1418
|
+
if (t.mode === "always-inline")
|
|
1858
1419
|
return {
|
|
1859
1420
|
useWorker: !1,
|
|
1860
1421
|
predictedInlineMs: 0,
|
|
1861
1422
|
predictedWorkerMs: 0,
|
|
1862
|
-
reason:
|
|
1423
|
+
reason: t.rationale
|
|
1863
1424
|
};
|
|
1864
1425
|
if (typeof SharedArrayBuffer > "u")
|
|
1865
1426
|
return {
|
|
@@ -1868,222 +1429,221 @@ function D(e, t) {
|
|
|
1868
1429
|
predictedWorkerMs: 1 / 0,
|
|
1869
1430
|
reason: "SharedArrayBuffer unavailable; forced inline"
|
|
1870
1431
|
};
|
|
1871
|
-
if (
|
|
1432
|
+
if (t.mode === "always-worker")
|
|
1872
1433
|
return {
|
|
1873
1434
|
useWorker: !0,
|
|
1874
1435
|
predictedInlineMs: 1 / 0,
|
|
1875
1436
|
predictedWorkerMs: 0,
|
|
1876
|
-
reason:
|
|
1437
|
+
reason: t.rationale
|
|
1877
1438
|
};
|
|
1878
|
-
const
|
|
1879
|
-
if (
|
|
1439
|
+
const n = ar(r, e);
|
|
1440
|
+
if (n <= 0)
|
|
1880
1441
|
return {
|
|
1881
1442
|
useWorker: !1,
|
|
1882
1443
|
predictedInlineMs: 0,
|
|
1883
|
-
predictedWorkerMs:
|
|
1444
|
+
predictedWorkerMs: R.spawnOverheadMs,
|
|
1884
1445
|
reason: "zero work units"
|
|
1885
1446
|
};
|
|
1886
|
-
const
|
|
1447
|
+
const o = Math.max(
|
|
1887
1448
|
1,
|
|
1888
1449
|
Math.min(
|
|
1889
|
-
|
|
1890
|
-
|
|
1450
|
+
e.parallelism ?? R.hwConcurrency,
|
|
1451
|
+
R.hwConcurrency
|
|
1891
1452
|
)
|
|
1892
|
-
),
|
|
1453
|
+
), i = t.weight * n / R.inlineThroughput, s = R.spawnOverheadMs + t.weight * n / (R.workerThroughput * o), a = i > s;
|
|
1893
1454
|
return {
|
|
1894
|
-
useWorker:
|
|
1895
|
-
predictedInlineMs:
|
|
1896
|
-
predictedWorkerMs:
|
|
1897
|
-
reason:
|
|
1455
|
+
useWorker: a,
|
|
1456
|
+
predictedInlineMs: i,
|
|
1457
|
+
predictedWorkerMs: s,
|
|
1458
|
+
reason: a ? `worker faster (${s.toFixed(1)} vs ${i.toFixed(1)} ms)` : `inline faster (${i.toFixed(1)} vs ${s.toFixed(1)} ms)`
|
|
1898
1459
|
};
|
|
1899
1460
|
}
|
|
1900
|
-
function
|
|
1901
|
-
switch (
|
|
1902
|
-
case
|
|
1903
|
-
case
|
|
1904
|
-
case
|
|
1905
|
-
case
|
|
1906
|
-
return
|
|
1907
|
-
case
|
|
1908
|
-
return (
|
|
1909
|
-
case
|
|
1910
|
-
const
|
|
1911
|
-
return
|
|
1461
|
+
function ar(r, e) {
|
|
1462
|
+
switch (r) {
|
|
1463
|
+
case S.CHANGE_VALUES:
|
|
1464
|
+
case S.INTERPOLATE:
|
|
1465
|
+
case S.SHIFT_DATETIMES:
|
|
1466
|
+
case S.DRIFT_CORRECTION:
|
|
1467
|
+
return e.selectionSize ?? 0;
|
|
1468
|
+
case S.DELETE_POINTS:
|
|
1469
|
+
return (e.selectionSize ?? 0) + e.datasetSize * 0.25;
|
|
1470
|
+
case S.ADD_POINTS: {
|
|
1471
|
+
const t = Math.max(1, Math.log2(Math.max(e.datasetSize, 2)));
|
|
1472
|
+
return e.datasetSize + (e.selectionSize ?? 0) * t;
|
|
1912
1473
|
}
|
|
1913
1474
|
default:
|
|
1914
|
-
return
|
|
1475
|
+
return e.datasetSize;
|
|
1915
1476
|
}
|
|
1916
1477
|
}
|
|
1917
|
-
function
|
|
1918
|
-
return
|
|
1478
|
+
function Cr(r) {
|
|
1479
|
+
return de.add(r), () => de.delete(r);
|
|
1919
1480
|
}
|
|
1920
|
-
function
|
|
1921
|
-
return
|
|
1481
|
+
function Nr() {
|
|
1482
|
+
return R;
|
|
1922
1483
|
}
|
|
1923
|
-
function
|
|
1924
|
-
return
|
|
1484
|
+
function Fr() {
|
|
1485
|
+
return ye;
|
|
1925
1486
|
}
|
|
1926
|
-
function
|
|
1927
|
-
return Object.keys(
|
|
1487
|
+
function Br() {
|
|
1488
|
+
return Object.keys(pe).map((r) => ({ op: r, ...pe[r] }));
|
|
1928
1489
|
}
|
|
1929
|
-
function
|
|
1930
|
-
|
|
1490
|
+
function Pr() {
|
|
1491
|
+
R = J, ye = null;
|
|
1931
1492
|
try {
|
|
1932
|
-
localStorage.removeItem(
|
|
1493
|
+
localStorage.removeItem(ge);
|
|
1933
1494
|
} catch {
|
|
1934
1495
|
}
|
|
1935
1496
|
}
|
|
1936
|
-
async function
|
|
1937
|
-
if (typeof window > "u" || !(
|
|
1938
|
-
if (
|
|
1497
|
+
async function jr(r = {}) {
|
|
1498
|
+
if (typeof window > "u" || !(r.force || R.measuredAt === 0 || Date.now() - R.measuredAt > ir)) return R;
|
|
1499
|
+
if (j) await j;
|
|
1939
1500
|
else {
|
|
1940
|
-
|
|
1941
|
-
|
|
1501
|
+
j = cr().finally(() => {
|
|
1502
|
+
j = null;
|
|
1942
1503
|
});
|
|
1943
|
-
const
|
|
1944
|
-
|
|
1945
|
-
for (const
|
|
1504
|
+
const t = await j;
|
|
1505
|
+
R = t, ur(t), ye = t;
|
|
1506
|
+
for (const n of de) n(R);
|
|
1946
1507
|
}
|
|
1947
|
-
return
|
|
1508
|
+
return R;
|
|
1948
1509
|
}
|
|
1949
|
-
async function
|
|
1510
|
+
async function cr() {
|
|
1950
1511
|
if (!(typeof SharedArrayBuffer < "u"))
|
|
1951
1512
|
return {
|
|
1952
|
-
...
|
|
1513
|
+
...J,
|
|
1953
1514
|
measuredAt: Date.now(),
|
|
1954
1515
|
userAgent: navigator.userAgent,
|
|
1955
|
-
hwConcurrency: navigator.hardwareConcurrency ||
|
|
1516
|
+
hwConcurrency: navigator.hardwareConcurrency || J.hwConcurrency,
|
|
1956
1517
|
sharedArrayBufferAvailable: !1,
|
|
1957
1518
|
samples: { spawnRoundtripMs: [], inlineScanMs: [], workerScanMs: [] }
|
|
1958
1519
|
};
|
|
1959
|
-
const
|
|
1960
|
-
for (let
|
|
1961
|
-
const
|
|
1962
|
-
const
|
|
1963
|
-
return
|
|
1964
|
-
}),
|
|
1965
|
-
const
|
|
1966
|
-
return await new Promise((
|
|
1967
|
-
const
|
|
1968
|
-
|
|
1969
|
-
|
|
1970
|
-
},
|
|
1971
|
-
bufferY:
|
|
1520
|
+
const e = navigator.hardwareConcurrency || 4, t = new Float32Array(H);
|
|
1521
|
+
for (let l = 0; l < H; l++) t[l] = Math.sin(l);
|
|
1522
|
+
const n = await se(3, () => {
|
|
1523
|
+
const l = performance.now();
|
|
1524
|
+
return ht(t, 0, H, [2], [0.5]), performance.now() - l;
|
|
1525
|
+
}), o = oe(n), i = H / Math.max(o, 1e-3), s = new SharedArrayBuffer(256 * Float32Array.BYTES_PER_ELEMENT), a = await se(3, async () => {
|
|
1526
|
+
const l = performance.now();
|
|
1527
|
+
return await new Promise((u) => {
|
|
1528
|
+
const g = new he();
|
|
1529
|
+
g.onmessage = () => {
|
|
1530
|
+
g.terminate(), u();
|
|
1531
|
+
}, g.postMessage({
|
|
1532
|
+
bufferY: s,
|
|
1972
1533
|
start: 0,
|
|
1973
1534
|
end: 256,
|
|
1974
1535
|
ops: [2],
|
|
1975
1536
|
values: [0.5]
|
|
1976
1537
|
});
|
|
1977
|
-
}), performance.now() -
|
|
1978
|
-
}),
|
|
1979
|
-
|
|
1980
|
-
),
|
|
1981
|
-
for (let
|
|
1982
|
-
const
|
|
1983
|
-
const
|
|
1984
|
-
return await new Promise((
|
|
1985
|
-
const
|
|
1986
|
-
|
|
1987
|
-
|
|
1988
|
-
},
|
|
1989
|
-
bufferY:
|
|
1538
|
+
}), performance.now() - l;
|
|
1539
|
+
}), c = oe(a), p = new SharedArrayBuffer(
|
|
1540
|
+
z * Float32Array.BYTES_PER_ELEMENT
|
|
1541
|
+
), f = new Float32Array(p);
|
|
1542
|
+
for (let l = 0; l < z; l++) f[l] = Math.sin(l);
|
|
1543
|
+
const w = await se(3, async () => {
|
|
1544
|
+
const l = performance.now();
|
|
1545
|
+
return await new Promise((u) => {
|
|
1546
|
+
const g = new he();
|
|
1547
|
+
g.onmessage = () => {
|
|
1548
|
+
g.terminate(), u();
|
|
1549
|
+
}, g.postMessage({
|
|
1550
|
+
bufferY: p,
|
|
1990
1551
|
start: 0,
|
|
1991
|
-
end:
|
|
1552
|
+
end: z,
|
|
1992
1553
|
ops: [2],
|
|
1993
1554
|
values: [0.5]
|
|
1994
1555
|
});
|
|
1995
|
-
}), performance.now() -
|
|
1996
|
-
}),
|
|
1556
|
+
}), performance.now() - l;
|
|
1557
|
+
}), m = Math.max(oe(w) - c, 0.1), d = z / m;
|
|
1997
1558
|
return {
|
|
1998
|
-
spawnOverheadMs:
|
|
1999
|
-
inlineThroughput:
|
|
2000
|
-
workerThroughput:
|
|
2001
|
-
hwConcurrency:
|
|
1559
|
+
spawnOverheadMs: c,
|
|
1560
|
+
inlineThroughput: i,
|
|
1561
|
+
workerThroughput: d,
|
|
1562
|
+
hwConcurrency: e,
|
|
2002
1563
|
measuredAt: Date.now(),
|
|
2003
1564
|
userAgent: navigator.userAgent,
|
|
2004
1565
|
sharedArrayBufferAvailable: !0,
|
|
2005
1566
|
samples: {
|
|
2006
|
-
spawnRoundtripMs:
|
|
2007
|
-
inlineScanMs:
|
|
2008
|
-
workerScanMs:
|
|
1567
|
+
spawnRoundtripMs: a,
|
|
1568
|
+
inlineScanMs: n,
|
|
1569
|
+
workerScanMs: w
|
|
2009
1570
|
}
|
|
2010
1571
|
};
|
|
2011
1572
|
}
|
|
2012
|
-
async function
|
|
2013
|
-
const
|
|
2014
|
-
for (let
|
|
2015
|
-
await new Promise((
|
|
2016
|
-
return
|
|
1573
|
+
async function se(r, e) {
|
|
1574
|
+
const t = [];
|
|
1575
|
+
for (let n = 0; n < r; n++)
|
|
1576
|
+
await new Promise((o) => setTimeout(o, 0)), t.push(await e());
|
|
1577
|
+
return t;
|
|
2017
1578
|
}
|
|
2018
|
-
function
|
|
2019
|
-
if (!
|
|
2020
|
-
const
|
|
2021
|
-
return
|
|
1579
|
+
function oe(r) {
|
|
1580
|
+
if (!r.length) return 0;
|
|
1581
|
+
const e = [...r].sort((n, o) => n - o), t = Math.floor(e.length / 2);
|
|
1582
|
+
return e.length % 2 ? e[t] : (e[t - 1] + e[t]) / 2;
|
|
2022
1583
|
}
|
|
2023
|
-
function
|
|
1584
|
+
function lr() {
|
|
2024
1585
|
if (typeof localStorage > "u") return null;
|
|
2025
1586
|
try {
|
|
2026
|
-
const
|
|
2027
|
-
if (!
|
|
2028
|
-
const
|
|
2029
|
-
return !
|
|
1587
|
+
const r = localStorage.getItem(ge);
|
|
1588
|
+
if (!r) return null;
|
|
1589
|
+
const e = JSON.parse(r);
|
|
1590
|
+
return !e || typeof e.spawnOverheadMs != "number" ? null : e;
|
|
2030
1591
|
} catch {
|
|
2031
1592
|
return null;
|
|
2032
1593
|
}
|
|
2033
1594
|
}
|
|
2034
|
-
function
|
|
1595
|
+
function ur(r) {
|
|
2035
1596
|
if (!(typeof localStorage > "u"))
|
|
2036
1597
|
try {
|
|
2037
|
-
const
|
|
2038
|
-
spawnOverheadMs:
|
|
2039
|
-
inlineThroughput:
|
|
2040
|
-
workerThroughput:
|
|
2041
|
-
hwConcurrency:
|
|
2042
|
-
measuredAt:
|
|
2043
|
-
userAgent:
|
|
1598
|
+
const e = {
|
|
1599
|
+
spawnOverheadMs: r.spawnOverheadMs,
|
|
1600
|
+
inlineThroughput: r.inlineThroughput,
|
|
1601
|
+
workerThroughput: r.workerThroughput,
|
|
1602
|
+
hwConcurrency: r.hwConcurrency,
|
|
1603
|
+
measuredAt: r.measuredAt,
|
|
1604
|
+
userAgent: r.userAgent
|
|
2044
1605
|
};
|
|
2045
|
-
localStorage.setItem(
|
|
1606
|
+
localStorage.setItem(ge, JSON.stringify(e));
|
|
2046
1607
|
} catch {
|
|
2047
1608
|
}
|
|
2048
1609
|
}
|
|
2049
|
-
const
|
|
2050
|
-
function
|
|
2051
|
-
return
|
|
1610
|
+
const W = 20 * 1e3, fr = typeof SharedArrayBuffer < "u";
|
|
1611
|
+
function I(r, e) {
|
|
1612
|
+
return fr ? e !== void 0 ? new SharedArrayBuffer(r, { maxByteLength: e }) : new SharedArrayBuffer(r) : e !== void 0 ? new ArrayBuffer(r, { maxByteLength: e }) : new ArrayBuffer(r);
|
|
2052
1613
|
}
|
|
2053
|
-
function
|
|
2054
|
-
const
|
|
2055
|
-
typeof
|
|
1614
|
+
function Ge(r, e) {
|
|
1615
|
+
const t = r;
|
|
1616
|
+
typeof t.grow == "function" ? t.grow(e) : typeof t.resize == "function" && t.resize(e);
|
|
2056
1617
|
}
|
|
2057
|
-
function
|
|
2058
|
-
if (
|
|
2059
|
-
for (let
|
|
2060
|
-
if (
|
|
1618
|
+
function hr(r, e) {
|
|
1619
|
+
if (r.length !== e.length) return !1;
|
|
1620
|
+
for (let t = 0; t < r.length; t++)
|
|
1621
|
+
if (r[t] !== e[t]) return !1;
|
|
2061
1622
|
return !0;
|
|
2062
1623
|
}
|
|
2063
|
-
function
|
|
2064
|
-
switch (
|
|
2065
|
-
case
|
|
2066
|
-
case
|
|
1624
|
+
function dr(r, e) {
|
|
1625
|
+
switch (r) {
|
|
1626
|
+
case S.ADD_POINTS:
|
|
1627
|
+
case S.FILL_GAPS:
|
|
2067
1628
|
return !1;
|
|
2068
1629
|
default:
|
|
2069
1630
|
return !0;
|
|
2070
1631
|
}
|
|
2071
1632
|
}
|
|
2072
|
-
class
|
|
1633
|
+
class Wr {
|
|
2073
1634
|
/** The generated dataset to be used for plotting */
|
|
2074
1635
|
dataset = {
|
|
2075
|
-
dimensions: Jr,
|
|
2076
1636
|
source: {
|
|
2077
1637
|
x: new Float64Array(
|
|
2078
|
-
|
|
2079
|
-
|
|
2080
|
-
|
|
1638
|
+
I(
|
|
1639
|
+
W * Float64Array.BYTES_PER_ELEMENT,
|
|
1640
|
+
W * Float64Array.BYTES_PER_ELEMENT
|
|
2081
1641
|
)
|
|
2082
1642
|
),
|
|
2083
1643
|
y: new Float32Array(
|
|
2084
|
-
|
|
2085
|
-
|
|
2086
|
-
|
|
1644
|
+
I(
|
|
1645
|
+
W * Float32Array.BYTES_PER_ELEMENT,
|
|
1646
|
+
W * Float32Array.BYTES_PER_ELEMENT
|
|
2087
1647
|
)
|
|
2088
1648
|
)
|
|
2089
1649
|
}
|
|
@@ -2116,17 +1676,17 @@ class $s {
|
|
|
2116
1676
|
loadingTime = null;
|
|
2117
1677
|
isLoading = !0;
|
|
2118
1678
|
rawData;
|
|
2119
|
-
constructor(
|
|
2120
|
-
this.history = [], this.rawData =
|
|
1679
|
+
constructor(e) {
|
|
1680
|
+
this.history = [], this.rawData = e, this.loadData(this.rawData);
|
|
2121
1681
|
}
|
|
2122
|
-
async loadData(
|
|
2123
|
-
if (!
|
|
1682
|
+
async loadData(e) {
|
|
1683
|
+
if (!e)
|
|
2124
1684
|
return;
|
|
2125
1685
|
this.isLoading = !0;
|
|
2126
|
-
const
|
|
2127
|
-
this._growBuffer(
|
|
1686
|
+
const t = await re(() => {
|
|
1687
|
+
this._growBuffer(e.datetimes.length), this._resizeTo(e.datetimes.length), this.dataX.set(e.datetimes), this.dataY.set(e.dataValues);
|
|
2128
1688
|
});
|
|
2129
|
-
this.loadingTime =
|
|
1689
|
+
this.loadingTime = t.duration, this.history.length = 0, this.isLoading = !1;
|
|
2130
1690
|
}
|
|
2131
1691
|
get dataX() {
|
|
2132
1692
|
return this.dataset.source.x;
|
|
@@ -2138,34 +1698,34 @@ class $s {
|
|
|
2138
1698
|
* Resizes the typed array
|
|
2139
1699
|
* @param length The total number of elements that the view will contain
|
|
2140
1700
|
*/
|
|
2141
|
-
_resizeTo(
|
|
1701
|
+
_resizeTo(e) {
|
|
2142
1702
|
this.dataset.source.x = new Float64Array(
|
|
2143
1703
|
this.dataset.source.x.buffer
|
|
2144
|
-
).subarray(0,
|
|
1704
|
+
).subarray(0, e), this.dataset.source.y = new Float32Array(
|
|
2145
1705
|
this.dataset.source.y.buffer
|
|
2146
|
-
).subarray(0,
|
|
1706
|
+
).subarray(0, e);
|
|
2147
1707
|
}
|
|
2148
1708
|
/**
|
|
2149
1709
|
* Buffer size is always in increments of `INCREASE_AMOUNT`.
|
|
2150
1710
|
* Grows the buffer by `INCREASE_AMOUNT` in bytes if the current data doesn't fit
|
|
2151
1711
|
* @param newLength The total number of elements that the view will contain
|
|
2152
1712
|
*/
|
|
2153
|
-
_growBuffer(
|
|
2154
|
-
const
|
|
2155
|
-
let
|
|
2156
|
-
for (;
|
|
2157
|
-
|
|
2158
|
-
if (
|
|
2159
|
-
const
|
|
1713
|
+
_growBuffer(e) {
|
|
1714
|
+
const t = e * Float64Array.BYTES_PER_ELEMENT;
|
|
1715
|
+
let n = this.dataX.buffer.byteLength;
|
|
1716
|
+
for (; t > n; )
|
|
1717
|
+
n += W * Float64Array.BYTES_PER_ELEMENT;
|
|
1718
|
+
if (n * Float64Array.BYTES_PER_ELEMENT > this.dataX.buffer.maxByteLength) {
|
|
1719
|
+
const o = I(
|
|
2160
1720
|
this.dataX.buffer.byteLength,
|
|
2161
|
-
|
|
2162
|
-
),
|
|
1721
|
+
n * Float64Array.BYTES_PER_ELEMENT
|
|
1722
|
+
), i = I(
|
|
2163
1723
|
this.dataY.buffer.byteLength,
|
|
2164
|
-
|
|
2165
|
-
),
|
|
2166
|
-
|
|
1724
|
+
n * Float32Array.BYTES_PER_ELEMENT
|
|
1725
|
+
), s = new Float64Array(o), a = new Float32Array(i);
|
|
1726
|
+
s.set(this.dataX), a.set(this.dataY), this.dataset.source.x = s, this.dataset.source.y = a;
|
|
2167
1727
|
}
|
|
2168
|
-
this.dataX.buffer.byteLength <
|
|
1728
|
+
this.dataX.buffer.byteLength < e * Float64Array.BYTES_PER_ELEMENT && (Ge(this.dataX.buffer, e * Float64Array.BYTES_PER_ELEMENT), Ge(this.dataY.buffer, e * Float32Array.BYTES_PER_ELEMENT));
|
|
2169
1729
|
}
|
|
2170
1730
|
/**
|
|
2171
1731
|
* Reloads the dataset with the raw data
|
|
@@ -2174,20 +1734,19 @@ class $s {
|
|
|
2174
1734
|
this.loadingTime = null, this.isLoading = !0, this.history.length = 0, await this.loadData(this.rawData);
|
|
2175
1735
|
}
|
|
2176
1736
|
/**
|
|
2177
|
-
*
|
|
2178
|
-
*
|
|
1737
|
+
* Truncate history at `index` (inclusive), reload from raw, and
|
|
1738
|
+
* replay the surviving entries. Used by the "Reload from this step"
|
|
1739
|
+
* button in EditHistory.
|
|
2179
1740
|
*/
|
|
2180
|
-
async reloadHistory(
|
|
2181
|
-
const
|
|
2182
|
-
return this.redoStack.length = 0, await this.reload(), await this.dispatch(
|
|
1741
|
+
async reloadHistory(e) {
|
|
1742
|
+
const t = this.history.slice(0, e + 1);
|
|
1743
|
+
return this.redoStack.length = 0, await this.reload(), await this.dispatch(t.map((n) => [n.method, ...n.args || []]));
|
|
2183
1744
|
}
|
|
2184
|
-
/**
|
|
2185
|
-
*
|
|
2186
|
-
|
|
2187
|
-
|
|
2188
|
-
|
|
2189
|
-
const r = [...this.history];
|
|
2190
|
-
return r.splice(t, 1), this.redoStack.length = 0, await this.reload(), await this.dispatch(r.map((s) => [s.method, ...s.args || []]));
|
|
1745
|
+
/** Splice the history entry at `index`, reload from raw, and replay
|
|
1746
|
+
* the survivors. */
|
|
1747
|
+
async removeHistoryItem(e) {
|
|
1748
|
+
const t = [...this.history];
|
|
1749
|
+
return t.splice(e, 1), this.redoStack.length = 0, await this.reload(), await this.dispatch(t.map((n) => [n.method, ...n.args || []]));
|
|
2191
1750
|
}
|
|
2192
1751
|
/**
|
|
2193
1752
|
* Undo the most recent history entry. Pushes it onto `redoStack` so a
|
|
@@ -2196,10 +1755,10 @@ class $s {
|
|
|
2196
1755
|
*/
|
|
2197
1756
|
async undo() {
|
|
2198
1757
|
if (!this.history.length) return [];
|
|
2199
|
-
const
|
|
2200
|
-
await this.reload(), this.redoStack.push(
|
|
1758
|
+
const e = this.history[this.history.length - 1], t = this.history.slice(0, -1);
|
|
1759
|
+
await this.reload(), this.redoStack.push(e), this._isReplaying = !0;
|
|
2201
1760
|
try {
|
|
2202
|
-
return await this.dispatch(
|
|
1761
|
+
return await this.dispatch(t.map((n) => [n.method, ...n.args || []]));
|
|
2203
1762
|
} finally {
|
|
2204
1763
|
this._isReplaying = !1;
|
|
2205
1764
|
}
|
|
@@ -2212,10 +1771,10 @@ class $s {
|
|
|
2212
1771
|
*/
|
|
2213
1772
|
async redo() {
|
|
2214
1773
|
if (!this.redoStack.length) return [];
|
|
2215
|
-
const
|
|
1774
|
+
const e = this.redoStack.pop();
|
|
2216
1775
|
this._isReplaying = !0;
|
|
2217
1776
|
try {
|
|
2218
|
-
return await this.dispatch([[
|
|
1777
|
+
return await this.dispatch([[e.method, ...e.args || []]]);
|
|
2219
1778
|
} finally {
|
|
2220
1779
|
this._isReplaying = !1;
|
|
2221
1780
|
}
|
|
@@ -2239,128 +1798,124 @@ class $s {
|
|
|
2239
1798
|
* `_assignDatetimesBulk` → `_deleteDataPoints` + `_addDataPoints`)
|
|
2240
1799
|
* can pass locally-computed indices without going through history.
|
|
2241
1800
|
*/
|
|
2242
|
-
async dispatchAction(
|
|
2243
|
-
const
|
|
2244
|
-
[
|
|
2245
|
-
[
|
|
2246
|
-
[
|
|
2247
|
-
[
|
|
2248
|
-
[
|
|
2249
|
-
[
|
|
2250
|
-
[
|
|
2251
|
-
[
|
|
2252
|
-
[
|
|
1801
|
+
async dispatchAction(e, ...t) {
|
|
1802
|
+
const n = {
|
|
1803
|
+
[S.ADD_POINTS]: this._addDataPoints,
|
|
1804
|
+
[S.CHANGE_VALUES]: this._changeValues,
|
|
1805
|
+
[S.ASSIGN_VALUES_BULK]: this._assignValuesBulk,
|
|
1806
|
+
[S.DELETE_POINTS]: this._deleteDataPointsFromSelection,
|
|
1807
|
+
[S.DRIFT_CORRECTION]: this._driftCorrectionFromSelection,
|
|
1808
|
+
[S.INTERPOLATE]: this._interpolateFromSelection,
|
|
1809
|
+
[S.SHIFT_DATETIMES]: this._shiftFromSelection,
|
|
1810
|
+
[S.ASSIGN_DATETIMES_BULK]: this._assignDatetimesBulk,
|
|
1811
|
+
[S.FILL_GAPS]: this._fillGaps
|
|
2253
1812
|
};
|
|
2254
|
-
let
|
|
1813
|
+
let o = [], i = null;
|
|
2255
1814
|
try {
|
|
2256
|
-
this._isReplaying || (this.redoStack.length = 0),
|
|
2257
|
-
method:
|
|
2258
|
-
args:
|
|
2259
|
-
isLoading: !0
|
|
2260
|
-
|
|
2261
|
-
|
|
2262
|
-
|
|
2263
|
-
|
|
2264
|
-
|
|
1815
|
+
this._isReplaying || (this.redoStack.length = 0), i = {
|
|
1816
|
+
method: e,
|
|
1817
|
+
args: t,
|
|
1818
|
+
isLoading: !0,
|
|
1819
|
+
timestamp: Date.now()
|
|
1820
|
+
}, this.history.push(i), dr(e, t) || this.history[this.history.length - 2]?.method === L.SELECTION && this.history.splice(this.history.length - 2, 1), this._pendingExecutionMode = "inline";
|
|
1821
|
+
const s = await re(async () => await n[e].apply(this, t));
|
|
1822
|
+
o = s.response;
|
|
1823
|
+
const a = this.history.indexOf(i), c = a >= 0 ? this.history[a] : void 0;
|
|
1824
|
+
c && (c.duration = s.duration, c.executionMode = this._pendingExecutionMode, c.status = "success", c.isLoading = !1);
|
|
2265
1825
|
} catch {
|
|
2266
|
-
if (
|
|
2267
|
-
const
|
|
2268
|
-
|
|
1826
|
+
if (i) {
|
|
1827
|
+
const a = this.history.indexOf(i), c = a >= 0 ? this.history[a] : void 0;
|
|
1828
|
+
c && (c.status = "failed", c.isLoading = !1);
|
|
2269
1829
|
}
|
|
2270
1830
|
}
|
|
2271
|
-
return
|
|
1831
|
+
return o;
|
|
2272
1832
|
}
|
|
2273
|
-
async dispatch(
|
|
2274
|
-
const
|
|
2275
|
-
if (Array.isArray(
|
|
2276
|
-
let
|
|
2277
|
-
for (let
|
|
2278
|
-
const
|
|
2279
|
-
|
|
1833
|
+
async dispatch(e, ...t) {
|
|
1834
|
+
const n = async (o, i) => L[o] ? await this.dispatchFilter(o, ...i) : await this.dispatchAction(o, ...i);
|
|
1835
|
+
if (Array.isArray(e)) {
|
|
1836
|
+
let o = [];
|
|
1837
|
+
for (let i = 0; i < e.length; i++) {
|
|
1838
|
+
const s = e[i][0], a = e[i].slice(1, e[i].length);
|
|
1839
|
+
o = await n(s, a);
|
|
2280
1840
|
}
|
|
2281
|
-
return
|
|
1841
|
+
return o;
|
|
2282
1842
|
} else
|
|
2283
|
-
return await
|
|
1843
|
+
return await n(e, t);
|
|
2284
1844
|
}
|
|
2285
1845
|
/** Filter operations do not transform the data and return a selection */
|
|
2286
|
-
async dispatchFilter(
|
|
2287
|
-
const
|
|
2288
|
-
[
|
|
2289
|
-
[
|
|
2290
|
-
[
|
|
2291
|
-
[
|
|
2292
|
-
[
|
|
2293
|
-
[
|
|
2294
|
-
[
|
|
1846
|
+
async dispatchFilter(e, ...t) {
|
|
1847
|
+
const n = {
|
|
1848
|
+
[L.FIND_GAPS]: this._findGaps,
|
|
1849
|
+
[L.VALUE_THRESHOLD]: this._valueThreshold,
|
|
1850
|
+
[L.DATETIME_RANGE]: this._datetimeRange,
|
|
1851
|
+
[L.PERSISTENCE]: this._persistence,
|
|
1852
|
+
[L.CHANGE]: this._change,
|
|
1853
|
+
[L.RATE_OF_CHANGE]: this._rateOfChange,
|
|
1854
|
+
[L.SELECTION]: this._selection
|
|
2295
1855
|
};
|
|
2296
|
-
let
|
|
1856
|
+
let o = [], i = null;
|
|
2297
1857
|
try {
|
|
2298
|
-
const
|
|
2299
|
-
!this._isReplaying && !
|
|
2300
|
-
method:
|
|
2301
|
-
args:
|
|
2302
|
-
isLoading: !0
|
|
1858
|
+
const s = e === L.SELECTION, a = s && (!t[0] || Array.isArray(t[0]) && t[0].length === 0);
|
|
1859
|
+
!this._isReplaying && !a && (this.redoStack.length = 0), i = {
|
|
1860
|
+
method: e,
|
|
1861
|
+
args: t,
|
|
1862
|
+
isLoading: !0,
|
|
1863
|
+
timestamp: Date.now()
|
|
2303
1864
|
};
|
|
2304
|
-
const
|
|
2305
|
-
let
|
|
2306
|
-
|
|
2307
|
-
const
|
|
2308
|
-
|
|
2309
|
-
const
|
|
2310
|
-
|
|
2311
|
-
} catch (
|
|
1865
|
+
const c = this.history[this.history.length - 1], p = !!L[c?.method], f = c?.method === e || p && !s;
|
|
1866
|
+
let w;
|
|
1867
|
+
f ? (w = this.history.length - 1, this.history[w] = i) : (this.history.push(i), w = this.history.length - 1), this._pendingExecutionMode = "inline";
|
|
1868
|
+
const m = await re(async () => await n[e].apply(this, t));
|
|
1869
|
+
o = m.response;
|
|
1870
|
+
const d = this.history.indexOf(i), y = d >= 0 ? this.history[d] : void 0;
|
|
1871
|
+
y && (y.duration = m.duration, y.executionMode = this._pendingExecutionMode, y.selected = m.response, y.status = "success", y.isLoading = !1);
|
|
1872
|
+
} catch (s) {
|
|
2312
1873
|
if (console.log(
|
|
2313
|
-
`Failed to execute filter operation: ${
|
|
2314
|
-
|
|
2315
|
-
), console.log(
|
|
2316
|
-
const
|
|
2317
|
-
|
|
1874
|
+
`Failed to execute filter operation: ${e} with arguments: `,
|
|
1875
|
+
t
|
|
1876
|
+
), console.log(s), i) {
|
|
1877
|
+
const a = this.history.indexOf(i), c = a >= 0 ? this.history[a] : void 0;
|
|
1878
|
+
c && (c.status = "failed", c.isLoading = !1);
|
|
2318
1879
|
}
|
|
2319
1880
|
}
|
|
2320
|
-
return
|
|
1881
|
+
return o;
|
|
2321
1882
|
}
|
|
2322
|
-
/**
|
|
2323
|
-
* @param index An array containing the list of index of values to perform the operations on.
|
|
2324
|
-
* @param operator The operator that will be applied
|
|
2325
|
-
* @param value The value to use in the operation
|
|
2326
|
-
* @returns an array of index values to keep selected in the plot
|
|
2327
|
-
*/
|
|
2328
1883
|
/**
|
|
2329
1884
|
* Multi-threaded apply of an arithmetic operator to Y at the previously-filtered selection.
|
|
2330
1885
|
* 1. Selection is read from the previous history entry (the last entry is this operation itself).
|
|
2331
1886
|
* 2. Selection indexes are sharded into disjoint chunks; workers write in place to shared Y.
|
|
2332
1887
|
* 3. Writes are conflict-free because the selection carries distinct indexes.
|
|
2333
1888
|
*/
|
|
2334
|
-
async _changeValues(
|
|
2335
|
-
const
|
|
2336
|
-
if (!
|
|
2337
|
-
const
|
|
2338
|
-
if (!
|
|
1889
|
+
async _changeValues(e, t) {
|
|
1890
|
+
const n = this.history[this.history.length - 2]?.selected;
|
|
1891
|
+
if (!n || n.length === 0) return [];
|
|
1892
|
+
const o = n.length;
|
|
1893
|
+
if (!U(S.CHANGE_VALUES, {
|
|
2339
1894
|
datasetSize: this.dataset.source.y.length,
|
|
2340
|
-
selectionSize:
|
|
2341
|
-
}).useWorker
|
|
2342
|
-
return
|
|
1895
|
+
selectionSize: o
|
|
1896
|
+
}).useWorker)
|
|
1897
|
+
return Ye(this.dataY, n, e, t), [];
|
|
2343
1898
|
this._pendingExecutionMode = "worker";
|
|
2344
|
-
const
|
|
2345
|
-
for (let
|
|
2346
|
-
const
|
|
2347
|
-
if (
|
|
2348
|
-
const
|
|
2349
|
-
|
|
2350
|
-
new Promise((
|
|
2351
|
-
const
|
|
2352
|
-
|
|
1899
|
+
const s = Math.min(navigator.hardwareConcurrency || 1, o), a = Math.ceil(o / s), c = [], p = [];
|
|
1900
|
+
for (let f = 0; f < s; f++) {
|
|
1901
|
+
const w = f * a, m = Math.min((f + 1) * a, o);
|
|
1902
|
+
if (w >= m) break;
|
|
1903
|
+
const d = n.slice(w, m);
|
|
1904
|
+
p.push(
|
|
1905
|
+
new Promise((y) => {
|
|
1906
|
+
const l = new Vt();
|
|
1907
|
+
c.push(l), l.postMessage({
|
|
2353
1908
|
bufferY: this.dataY.buffer,
|
|
2354
|
-
indexes:
|
|
2355
|
-
operator:
|
|
2356
|
-
value:
|
|
2357
|
-
}),
|
|
2358
|
-
|
|
1909
|
+
indexes: d,
|
|
1910
|
+
operator: e,
|
|
1911
|
+
value: t
|
|
1912
|
+
}), l.onmessage = (u) => {
|
|
1913
|
+
y(u.data);
|
|
2359
1914
|
};
|
|
2360
1915
|
})
|
|
2361
1916
|
);
|
|
2362
1917
|
}
|
|
2363
|
-
return await Promise.all(
|
|
1918
|
+
return await Promise.all(p), c.forEach((f) => f.terminate()), [];
|
|
2364
1919
|
}
|
|
2365
1920
|
/**
|
|
2366
1921
|
* Apply an arithmetic operator to Y in-place on the main thread. Thin
|
|
@@ -2368,8 +1923,8 @@ class $s {
|
|
|
2368
1923
|
* and callers outside this module can use the same routine the
|
|
2369
1924
|
* CHANGE_VALUES fast path does.
|
|
2370
1925
|
*/
|
|
2371
|
-
_applyOperatorInPlace(
|
|
2372
|
-
|
|
1926
|
+
_applyOperatorInPlace(e, t, n) {
|
|
1927
|
+
Ye(this.dataY, e, t, n);
|
|
2373
1928
|
}
|
|
2374
1929
|
/**
|
|
2375
1930
|
* One-shot assignment of distinct Y-values at the indices logged by the
|
|
@@ -2383,11 +1938,11 @@ class $s {
|
|
|
2383
1938
|
* The SELECTION entry carries the indices for history, so this op does
|
|
2384
1939
|
* not log them again.
|
|
2385
1940
|
*/
|
|
2386
|
-
async _assignValuesBulk(
|
|
2387
|
-
const
|
|
2388
|
-
if (!
|
|
2389
|
-
const
|
|
2390
|
-
for (let
|
|
1941
|
+
async _assignValuesBulk(e) {
|
|
1942
|
+
const t = this.history[this.history.length - 2]?.selected;
|
|
1943
|
+
if (!t || !t.length || !e?.length) return [];
|
|
1944
|
+
const n = Math.min(t.length, e.length), o = this.dataY;
|
|
1945
|
+
for (let i = 0; i < n; i++) o[t[i]] = e[i];
|
|
2391
1946
|
return [];
|
|
2392
1947
|
}
|
|
2393
1948
|
/**
|
|
@@ -2399,13 +1954,13 @@ class $s {
|
|
|
2399
1954
|
* Expected dispatch order (matches SHIFT_DATETIMES pattern):
|
|
2400
1955
|
* [[SELECTION, indices], [ASSIGN_DATETIMES_BULK, datetimes]]
|
|
2401
1956
|
*/
|
|
2402
|
-
async _assignDatetimesBulk(
|
|
2403
|
-
const
|
|
2404
|
-
if (!
|
|
2405
|
-
const
|
|
2406
|
-
for (let
|
|
2407
|
-
|
|
2408
|
-
return
|
|
1957
|
+
async _assignDatetimesBulk(e) {
|
|
1958
|
+
const t = this.history[this.history.length - 2]?.selected;
|
|
1959
|
+
if (!t || !t.length || !e?.length) return [];
|
|
1960
|
+
const n = Math.min(t.length, e.length), o = new Array(n), i = new Array(n);
|
|
1961
|
+
for (let s = 0; s < n; s++)
|
|
1962
|
+
o[s] = [e[s], this.dataY[t[s]]], i[s] = t[s];
|
|
1963
|
+
return i.sort((s, a) => s - a), await this._deleteDataPoints(i), await this._addDataPoints(o), [];
|
|
2409
1964
|
}
|
|
2410
1965
|
/**
|
|
2411
1966
|
* Dispatch wrapper around `_interpolate` — reads target indices
|
|
@@ -2415,9 +1970,9 @@ class $s {
|
|
|
2415
1970
|
* directly with explicit indices.
|
|
2416
1971
|
*/
|
|
2417
1972
|
async _interpolateFromSelection() {
|
|
2418
|
-
const
|
|
2419
|
-
if (!(!
|
|
2420
|
-
return this._interpolate(
|
|
1973
|
+
const e = this.history[this.history.length - 2]?.selected;
|
|
1974
|
+
if (!(!e || e.length === 0))
|
|
1975
|
+
return this._interpolate(e);
|
|
2421
1976
|
}
|
|
2422
1977
|
/**
|
|
2423
1978
|
* Multi-threaded linear interpolation over the selected indexes.
|
|
@@ -2425,55 +1980,55 @@ class $s {
|
|
|
2425
1980
|
* 2. Groups are sharded across workers (disjoint by construction, so in-place writes are safe).
|
|
2426
1981
|
* 3. Each worker writes interpolated Y values directly into the shared Y buffer — no output copy needed since only a subset of Y changes.
|
|
2427
1982
|
*/
|
|
2428
|
-
async _interpolate(
|
|
2429
|
-
const
|
|
2430
|
-
if (
|
|
2431
|
-
const
|
|
2432
|
-
indexes:
|
|
2433
|
-
lowerIdx: Math.max(0,
|
|
2434
|
-
upperIdx: Math.min(
|
|
1983
|
+
async _interpolate(e) {
|
|
1984
|
+
const t = this._getConsecutiveGroups(e);
|
|
1985
|
+
if (t.length === 0 || t[0].length === 0) return;
|
|
1986
|
+
const n = this.dataset.source.y.length, o = t.map((f) => ({
|
|
1987
|
+
indexes: f,
|
|
1988
|
+
lowerIdx: Math.max(0, f[0] - 1),
|
|
1989
|
+
upperIdx: Math.min(n - 1, f[f.length - 1] + 1)
|
|
2435
1990
|
}));
|
|
2436
|
-
if (!
|
|
2437
|
-
datasetSize:
|
|
2438
|
-
selectionSize:
|
|
1991
|
+
if (!U(S.INTERPOLATE, {
|
|
1992
|
+
datasetSize: n,
|
|
1993
|
+
selectionSize: e.length
|
|
2439
1994
|
}).useWorker) {
|
|
2440
|
-
|
|
1995
|
+
nr(this.dataX, this.dataY, o);
|
|
2441
1996
|
return;
|
|
2442
1997
|
}
|
|
2443
1998
|
this._pendingExecutionMode = "worker";
|
|
2444
|
-
const
|
|
1999
|
+
const s = Math.min(
|
|
2445
2000
|
navigator.hardwareConcurrency || 1,
|
|
2446
|
-
|
|
2447
|
-
),
|
|
2448
|
-
for (let
|
|
2449
|
-
const
|
|
2450
|
-
|
|
2451
|
-
(
|
|
2001
|
+
o.length
|
|
2002
|
+
), a = Math.ceil(o.length / s), c = [], p = [];
|
|
2003
|
+
for (let f = 0; f < s; f++) {
|
|
2004
|
+
const w = o.slice(
|
|
2005
|
+
f * a,
|
|
2006
|
+
(f + 1) * a
|
|
2452
2007
|
);
|
|
2453
|
-
if (
|
|
2454
|
-
|
|
2455
|
-
new Promise((
|
|
2456
|
-
const
|
|
2457
|
-
|
|
2008
|
+
if (w.length === 0) break;
|
|
2009
|
+
p.push(
|
|
2010
|
+
new Promise((m) => {
|
|
2011
|
+
const d = new jt();
|
|
2012
|
+
c.push(d), d.postMessage({
|
|
2458
2013
|
bufferX: this.dataX.buffer,
|
|
2459
2014
|
bufferY: this.dataY.buffer,
|
|
2460
|
-
groups:
|
|
2461
|
-
}),
|
|
2462
|
-
|
|
2015
|
+
groups: w
|
|
2016
|
+
}), d.onmessage = (y) => {
|
|
2017
|
+
m(y.data);
|
|
2463
2018
|
};
|
|
2464
2019
|
})
|
|
2465
2020
|
);
|
|
2466
2021
|
}
|
|
2467
|
-
await Promise.all(
|
|
2022
|
+
await Promise.all(p), c.forEach((f) => f.terminate());
|
|
2468
2023
|
}
|
|
2469
2024
|
/**
|
|
2470
2025
|
* Dispatch wrapper around `_shift` — reads target indices from
|
|
2471
2026
|
* `history[length - 2].selected`. The `amount` and `unit` args
|
|
2472
2027
|
* stay parametric on the public dispatch signature.
|
|
2473
2028
|
*/
|
|
2474
|
-
async _shiftFromSelection(
|
|
2475
|
-
const
|
|
2476
|
-
return !
|
|
2029
|
+
async _shiftFromSelection(e, t) {
|
|
2030
|
+
const n = this.history[this.history.length - 2]?.selected;
|
|
2031
|
+
return !n || n.length === 0 ? [] : await this._shift(n, e, t) ?? [];
|
|
2477
2032
|
}
|
|
2478
2033
|
/**
|
|
2479
2034
|
* Shifts the selected indexes by specified amount of units. Elements are reinserted according to their datetime.
|
|
@@ -2482,152 +2037,154 @@ class $s {
|
|
|
2482
2037
|
* @param unit {@link TimeUnit}
|
|
2483
2038
|
* @returns
|
|
2484
2039
|
*/
|
|
2485
|
-
async _shift(
|
|
2486
|
-
if (
|
|
2487
|
-
const
|
|
2488
|
-
if (!
|
|
2040
|
+
async _shift(e, t, n) {
|
|
2041
|
+
if (e.length === 0) return [];
|
|
2042
|
+
const o = n === N.MONTH, i = n === N.YEAR, s = !o && !i ? t * G[n] * 1e3 : 0, a = e.length;
|
|
2043
|
+
if (!U(S.SHIFT_DATETIMES, {
|
|
2489
2044
|
datasetSize: this.dataset.source.x.length,
|
|
2490
|
-
selectionSize:
|
|
2045
|
+
selectionSize: a
|
|
2491
2046
|
}).useWorker) {
|
|
2492
|
-
const
|
|
2047
|
+
const h = rr(
|
|
2493
2048
|
this.dataX,
|
|
2494
2049
|
this.dataY,
|
|
2495
|
-
|
|
2496
|
-
{ amount:
|
|
2050
|
+
e,
|
|
2051
|
+
{ amount: t, isMonth: o, isYear: i, deltaMs: s }
|
|
2497
2052
|
);
|
|
2498
|
-
return await this._deleteDataPoints(
|
|
2053
|
+
return await this._deleteDataPoints(e), await this._addDataPoints(h) ?? [];
|
|
2499
2054
|
}
|
|
2500
2055
|
this._pendingExecutionMode = "worker";
|
|
2501
|
-
const
|
|
2502
|
-
for (let
|
|
2503
|
-
const
|
|
2504
|
-
if (
|
|
2505
|
-
const
|
|
2506
|
-
|
|
2507
|
-
new Promise((
|
|
2508
|
-
const
|
|
2509
|
-
|
|
2056
|
+
const p = I(a * Float64Array.BYTES_PER_ELEMENT), f = I(a * Float32Array.BYTES_PER_ELEMENT), w = Math.min(navigator.hardwareConcurrency || 1, a), m = Math.ceil(a / w), d = [], y = [];
|
|
2057
|
+
for (let h = 0; h < w; h++) {
|
|
2058
|
+
const b = h * m, E = Math.min((h + 1) * m, a);
|
|
2059
|
+
if (b >= E) break;
|
|
2060
|
+
const k = e.slice(b, E);
|
|
2061
|
+
y.push(
|
|
2062
|
+
new Promise((A) => {
|
|
2063
|
+
const _ = new Gt();
|
|
2064
|
+
d.push(_), _.postMessage({
|
|
2510
2065
|
bufferX: this.dataX.buffer,
|
|
2511
2066
|
bufferY: this.dataY.buffer,
|
|
2512
|
-
outputBufferX:
|
|
2513
|
-
outputBufferY:
|
|
2514
|
-
indexes:
|
|
2515
|
-
outStart:
|
|
2516
|
-
amount:
|
|
2517
|
-
isMonth:
|
|
2518
|
-
isYear:
|
|
2519
|
-
deltaMs:
|
|
2520
|
-
}),
|
|
2521
|
-
|
|
2067
|
+
outputBufferX: p,
|
|
2068
|
+
outputBufferY: f,
|
|
2069
|
+
indexes: k,
|
|
2070
|
+
outStart: b,
|
|
2071
|
+
amount: t,
|
|
2072
|
+
isMonth: o,
|
|
2073
|
+
isYear: i,
|
|
2074
|
+
deltaMs: s
|
|
2075
|
+
}), _.onmessage = (T) => {
|
|
2076
|
+
A(T.data);
|
|
2522
2077
|
};
|
|
2523
2078
|
})
|
|
2524
2079
|
);
|
|
2525
2080
|
}
|
|
2526
|
-
await Promise.all(
|
|
2527
|
-
const
|
|
2528
|
-
for (let
|
|
2529
|
-
|
|
2530
|
-
return await this._deleteDataPoints(
|
|
2081
|
+
await Promise.all(y), d.forEach((h) => h.terminate());
|
|
2082
|
+
const l = new Float64Array(p), u = new Float32Array(f), g = new Array(a);
|
|
2083
|
+
for (let h = 0; h < a; h++)
|
|
2084
|
+
g[h] = [l[h], u[h]];
|
|
2085
|
+
return await this._deleteDataPoints(e), await this._addDataPoints(g) ?? [];
|
|
2531
2086
|
}
|
|
2532
2087
|
/**
|
|
2533
|
-
*
|
|
2088
|
+
* Detect gaps in the configured window and insert fill points using
|
|
2089
|
+
* either linear interpolation or a sentinel `fillValue`. Inline path:
|
|
2090
|
+
* single copy-with-fills sweep into freshly-allocated x/y buffers.
|
|
2091
|
+
* Worker path:
|
|
2534
2092
|
* 1. The main thread scans once for gaps and computes the number of fill points per gap.
|
|
2535
2093
|
* 2. The original array is split into equal segments; each gap is assigned to the segment containing its left index.
|
|
2536
2094
|
* 3. Cumulative fill counts before each segment give each worker's output startTarget, ensuring no overlap.
|
|
2537
2095
|
* 4. Each worker copies its segment to the output buffer and inserts its gap fills inline.
|
|
2538
|
-
|
|
2539
|
-
/**
|
|
2096
|
+
*
|
|
2540
2097
|
* @param range Optional `[startTs, endTs]` window in epoch
|
|
2541
2098
|
* milliseconds. Both bounds inclusive; snapped to the nearest
|
|
2542
2099
|
* enclosed point via binary search. Datetime-addressed (not
|
|
2543
2100
|
* index-addressed) so the same call survives data growth and is
|
|
2544
2101
|
* portable across datasets for QC script replay.
|
|
2545
2102
|
*/
|
|
2546
|
-
async _fillGaps(
|
|
2547
|
-
const
|
|
2548
|
-
if (
|
|
2549
|
-
const
|
|
2550
|
-
let
|
|
2551
|
-
for (let
|
|
2552
|
-
if (
|
|
2553
|
-
let
|
|
2554
|
-
for (;
|
|
2555
|
-
|
|
2556
|
-
|
|
2103
|
+
async _fillGaps(e, t, n, o, i) {
|
|
2104
|
+
const s = this.dataX.length;
|
|
2105
|
+
if (s === 0) return [];
|
|
2106
|
+
const a = e[0] * G[e[1]] * 1e3, c = t[0] * G[t[1]] * 1e3, p = this.dataX, f = i?.[0] != null && Number.isFinite(i[0]) ? x(p, i[0]) : 0, w = i?.[1] != null && Number.isFinite(i[1]) ? C(p, i[1]) : s - 1, m = [], d = [];
|
|
2107
|
+
let y = 0;
|
|
2108
|
+
for (let v = f + 1; v <= w; v++)
|
|
2109
|
+
if (p[v] - p[v - 1] > a) {
|
|
2110
|
+
let M = 0, O = p[v - 1] + c;
|
|
2111
|
+
for (; O < p[v]; )
|
|
2112
|
+
M++, O += c;
|
|
2113
|
+
M > 0 && (m.push([v - 1, v]), d.push(M), y += M);
|
|
2557
2114
|
}
|
|
2558
|
-
if (
|
|
2559
|
-
const
|
|
2560
|
-
let
|
|
2561
|
-
for (let
|
|
2562
|
-
const
|
|
2563
|
-
for (let
|
|
2564
|
-
|
|
2565
|
-
|
|
2566
|
-
}
|
|
2567
|
-
const
|
|
2568
|
-
|
|
2569
|
-
Math.max(this.dataX.buffer.maxByteLength,
|
|
2570
|
-
),
|
|
2115
|
+
if (y === 0) return [];
|
|
2116
|
+
const l = new Array(y);
|
|
2117
|
+
let u = 0, g = 0;
|
|
2118
|
+
for (let v = 0; v < m.length; v++) {
|
|
2119
|
+
const D = m[v][0], M = d[v];
|
|
2120
|
+
for (let O = 1; O <= M; O++)
|
|
2121
|
+
l[g++] = D + u + O;
|
|
2122
|
+
u += M;
|
|
2123
|
+
}
|
|
2124
|
+
const h = s + y, b = h * Float64Array.BYTES_PER_ELEMENT, E = h * Float32Array.BYTES_PER_ELEMENT, k = I(
|
|
2125
|
+
b,
|
|
2126
|
+
Math.max(this.dataX.buffer.maxByteLength, b)
|
|
2127
|
+
), A = I(
|
|
2571
2128
|
E,
|
|
2572
2129
|
Math.max(this.dataY.buffer.maxByteLength, E)
|
|
2573
2130
|
);
|
|
2574
|
-
if (!
|
|
2575
|
-
datasetSize:
|
|
2576
|
-
selectionSize:
|
|
2131
|
+
if (!U(S.FILL_GAPS, {
|
|
2132
|
+
datasetSize: s,
|
|
2133
|
+
selectionSize: y
|
|
2577
2134
|
}).useWorker) {
|
|
2578
|
-
const
|
|
2579
|
-
return
|
|
2135
|
+
const v = new Float64Array(k), D = new Float32Array(A);
|
|
2136
|
+
return Zt(
|
|
2580
2137
|
this.dataX,
|
|
2581
2138
|
this.dataY,
|
|
2582
|
-
|
|
2583
|
-
|
|
2584
|
-
|
|
2139
|
+
m,
|
|
2140
|
+
v,
|
|
2141
|
+
D,
|
|
2585
2142
|
0,
|
|
2586
|
-
|
|
2143
|
+
s - 1,
|
|
2587
2144
|
0,
|
|
2588
|
-
|
|
2589
|
-
|
|
2590
|
-
|
|
2591
|
-
), this.dataset.source.x =
|
|
2145
|
+
c,
|
|
2146
|
+
n,
|
|
2147
|
+
o
|
|
2148
|
+
), this.dataset.source.x = v, this.dataset.source.y = D, this._resizeTo(h), l;
|
|
2592
2149
|
}
|
|
2593
2150
|
this._pendingExecutionMode = "worker";
|
|
2594
|
-
const
|
|
2595
|
-
let
|
|
2596
|
-
for (let
|
|
2597
|
-
const
|
|
2598
|
-
let
|
|
2599
|
-
for (;
|
|
2600
|
-
|
|
2601
|
-
|
|
2602
|
-
}
|
|
2603
|
-
const
|
|
2604
|
-
for (let
|
|
2605
|
-
|
|
2606
|
-
const
|
|
2607
|
-
for (let
|
|
2608
|
-
const { start:
|
|
2609
|
-
|
|
2610
|
-
new Promise((
|
|
2611
|
-
const
|
|
2612
|
-
|
|
2151
|
+
const T = navigator.hardwareConcurrency || 1, be = Math.ceil(s / T), Z = [];
|
|
2152
|
+
let P = 0;
|
|
2153
|
+
for (let v = 0; v < T; v++) {
|
|
2154
|
+
const D = v * be, M = Math.min((v + 1) * be - 1, s - 1), O = [];
|
|
2155
|
+
let Y = 0;
|
|
2156
|
+
for (; P < m.length && m[P][0] <= M; )
|
|
2157
|
+
O.push(m[P]), Y += d[P], P++;
|
|
2158
|
+
Z.push({ start: D, end: M, gapsSegment: O, fillsInSegment: Y });
|
|
2159
|
+
}
|
|
2160
|
+
const ee = new Array(T).fill(0);
|
|
2161
|
+
for (let v = 1; v < T; v++)
|
|
2162
|
+
ee[v] = ee[v - 1] + Z[v - 1].fillsInSegment;
|
|
2163
|
+
const Ee = [], Se = [];
|
|
2164
|
+
for (let v = 0; v < T; v++) {
|
|
2165
|
+
const { start: D, end: M, gapsSegment: O } = Z[v], Y = D + ee[v];
|
|
2166
|
+
Se.push(
|
|
2167
|
+
new Promise((dt) => {
|
|
2168
|
+
const te = new Pt();
|
|
2169
|
+
Ee.push(te), te.postMessage({
|
|
2613
2170
|
bufferX: this.dataX.buffer,
|
|
2614
2171
|
bufferY: this.dataY.buffer,
|
|
2615
|
-
outputBufferX:
|
|
2616
|
-
outputBufferY:
|
|
2617
|
-
start:
|
|
2618
|
-
end:
|
|
2619
|
-
gapsSegment:
|
|
2620
|
-
startTarget:
|
|
2621
|
-
fillDelta:
|
|
2622
|
-
interpolate:
|
|
2623
|
-
fillValue:
|
|
2624
|
-
}),
|
|
2625
|
-
|
|
2172
|
+
outputBufferX: k,
|
|
2173
|
+
outputBufferY: A,
|
|
2174
|
+
start: D,
|
|
2175
|
+
end: M,
|
|
2176
|
+
gapsSegment: O,
|
|
2177
|
+
startTarget: Y,
|
|
2178
|
+
fillDelta: c,
|
|
2179
|
+
interpolate: n,
|
|
2180
|
+
fillValue: o
|
|
2181
|
+
}), te.onmessage = (pt) => {
|
|
2182
|
+
dt(pt.data);
|
|
2626
2183
|
};
|
|
2627
2184
|
})
|
|
2628
2185
|
);
|
|
2629
2186
|
}
|
|
2630
|
-
return await Promise.all(
|
|
2187
|
+
return await Promise.all(Se), Ee.forEach((v) => v.terminate()), this.dataset.source.x = new Float64Array(k), this.dataset.source.y = new Float32Array(A), this._resizeTo(h), l;
|
|
2631
2188
|
}
|
|
2632
2189
|
/**
|
|
2633
2190
|
* Dispatch wrapper around `_deleteDataPoints` — reads target
|
|
@@ -2637,80 +2194,80 @@ class $s {
|
|
|
2637
2194
|
* indices; only the external dispatch path goes through here.
|
|
2638
2195
|
*/
|
|
2639
2196
|
async _deleteDataPointsFromSelection() {
|
|
2640
|
-
const
|
|
2641
|
-
if (!(!
|
|
2642
|
-
return this._deleteDataPoints(
|
|
2197
|
+
const e = this.history[this.history.length - 2]?.selected;
|
|
2198
|
+
if (!(!e || e.length === 0))
|
|
2199
|
+
return this._deleteDataPoints(e);
|
|
2643
2200
|
}
|
|
2644
2201
|
/**
|
|
2645
|
-
|
|
2646
|
-
|
|
2647
|
-
|
|
2648
|
-
|
|
2649
|
-
|
|
2650
|
-
|
|
2202
|
+
* Delete points by ascending `deleteIndices` from x/y. Inline path
|
|
2203
|
+
* runs a single skip-on-delete copy on the main thread; worker path:
|
|
2204
|
+
* 1. Main thread splits the original array into equal segments.
|
|
2205
|
+
* 2. Per-segment binary search locates the indexes to delete (deleteSegment) for efficient lookups.
|
|
2206
|
+
* 3. Cumulative deletions before each segment give each worker's output startTarget so segments don't overlap.
|
|
2207
|
+
* 4. Each worker walks its segment linearly, skipping deletions and copying kept elements into place.
|
|
2651
2208
|
*/
|
|
2652
|
-
async _deleteDataPoints(
|
|
2653
|
-
const
|
|
2654
|
-
if (!
|
|
2655
|
-
datasetSize:
|
|
2656
|
-
selectionSize:
|
|
2209
|
+
async _deleteDataPoints(e) {
|
|
2210
|
+
const t = this.dataX.length, n = t - e.length;
|
|
2211
|
+
if (!U(S.DELETE_POINTS, {
|
|
2212
|
+
datasetSize: t,
|
|
2213
|
+
selectionSize: e.length
|
|
2657
2214
|
}).useWorker) {
|
|
2658
|
-
const
|
|
2215
|
+
const d = I(
|
|
2659
2216
|
this.dataX.buffer.byteLength,
|
|
2660
2217
|
this.dataX.buffer.maxByteLength
|
|
2661
|
-
),
|
|
2218
|
+
), y = I(
|
|
2662
2219
|
this.dataY.buffer.byteLength,
|
|
2663
2220
|
this.dataY.buffer.maxByteLength
|
|
2664
|
-
),
|
|
2665
|
-
|
|
2221
|
+
), l = new Float64Array(d), u = new Float32Array(y);
|
|
2222
|
+
tr(
|
|
2666
2223
|
this.dataX,
|
|
2667
2224
|
this.dataY,
|
|
2668
|
-
|
|
2669
|
-
|
|
2670
|
-
|
|
2225
|
+
e,
|
|
2226
|
+
l,
|
|
2227
|
+
u,
|
|
2671
2228
|
0,
|
|
2672
|
-
|
|
2229
|
+
t - 1,
|
|
2673
2230
|
0
|
|
2674
|
-
), this.dataset.source.x =
|
|
2231
|
+
), this.dataset.source.x = l, this.dataset.source.y = u, this._resizeTo(n);
|
|
2675
2232
|
return;
|
|
2676
2233
|
}
|
|
2677
2234
|
this._pendingExecutionMode = "worker";
|
|
2678
|
-
const
|
|
2679
|
-
for (let
|
|
2680
|
-
const
|
|
2681
|
-
|
|
2682
|
-
}
|
|
2683
|
-
const
|
|
2684
|
-
for (let
|
|
2685
|
-
d
|
|
2686
|
-
const
|
|
2235
|
+
const i = navigator.hardwareConcurrency || 1, s = Math.ceil(this.dataX.length / i), a = [], c = [];
|
|
2236
|
+
for (let d = 0; d < i; d++) {
|
|
2237
|
+
const y = d * s, l = Math.min((d + 1) * s - 1, this.dataX.length - 1), u = x(e, y), g = C(e, l), h = e.slice(u, g + 1);
|
|
2238
|
+
c.push({ start: y, end: l, deleteSegment: h });
|
|
2239
|
+
}
|
|
2240
|
+
const p = new Array(i).fill(0);
|
|
2241
|
+
for (let d = 1; d < i; d++)
|
|
2242
|
+
p[d] = p[d - 1] + c[d - 1].deleteSegment.length;
|
|
2243
|
+
const f = [], w = I(
|
|
2687
2244
|
this.dataX.buffer.byteLength,
|
|
2688
2245
|
this.dataX.buffer.maxByteLength
|
|
2689
|
-
),
|
|
2246
|
+
), m = I(
|
|
2690
2247
|
this.dataY.buffer.byteLength,
|
|
2691
2248
|
this.dataY.buffer.maxByteLength
|
|
2692
2249
|
);
|
|
2693
|
-
for (let
|
|
2694
|
-
const { start:
|
|
2695
|
-
|
|
2696
|
-
new Promise((
|
|
2697
|
-
const
|
|
2698
|
-
|
|
2250
|
+
for (let d = 0; d < i; d++) {
|
|
2251
|
+
const { start: y, end: l, deleteSegment: u } = c[d], g = y - p[d];
|
|
2252
|
+
f.push(
|
|
2253
|
+
new Promise((h) => {
|
|
2254
|
+
const b = new Bt();
|
|
2255
|
+
a.push(b), b.postMessage({
|
|
2699
2256
|
bufferX: this.dataX.buffer,
|
|
2700
2257
|
bufferY: this.dataY.buffer,
|
|
2701
|
-
outputBufferX:
|
|
2702
|
-
outputBufferY:
|
|
2703
|
-
start:
|
|
2704
|
-
end:
|
|
2705
|
-
deleteSegment:
|
|
2706
|
-
startTarget:
|
|
2707
|
-
}),
|
|
2708
|
-
|
|
2258
|
+
outputBufferX: w,
|
|
2259
|
+
outputBufferY: m,
|
|
2260
|
+
start: y,
|
|
2261
|
+
end: l,
|
|
2262
|
+
deleteSegment: u,
|
|
2263
|
+
startTarget: g
|
|
2264
|
+
}), b.onmessage = (E) => {
|
|
2265
|
+
h(E.data);
|
|
2709
2266
|
};
|
|
2710
2267
|
})
|
|
2711
2268
|
);
|
|
2712
2269
|
}
|
|
2713
|
-
await Promise.all(
|
|
2270
|
+
await Promise.all(f), a.forEach((d) => d.terminate()), this.dataset.source.x = new Float64Array(w), this.dataset.source.y = new Float32Array(m), this._resizeTo(n);
|
|
2714
2271
|
}
|
|
2715
2272
|
/**
|
|
2716
2273
|
* Dispatch wrapper around `_driftCorrection` — reads target
|
|
@@ -2721,21 +2278,15 @@ class $s {
|
|
|
2721
2278
|
* signature so future callers that need distinct per-range values
|
|
2722
2279
|
* can still use it directly.
|
|
2723
2280
|
*/
|
|
2724
|
-
async _driftCorrectionFromSelection(
|
|
2725
|
-
const
|
|
2726
|
-
if (!
|
|
2727
|
-
const
|
|
2728
|
-
for (const
|
|
2729
|
-
|
|
2730
|
-
if (
|
|
2731
|
-
return this._driftCorrection(
|
|
2281
|
+
async _driftCorrectionFromSelection(e) {
|
|
2282
|
+
const t = this.history[this.history.length - 2]?.selected;
|
|
2283
|
+
if (!t || t.length === 0) return;
|
|
2284
|
+
const n = this._getConsecutiveGroups(t), o = [];
|
|
2285
|
+
for (const i of n)
|
|
2286
|
+
i.length !== 0 && o.push([i[0], i[i.length - 1], e]);
|
|
2287
|
+
if (o.length !== 0)
|
|
2288
|
+
return this._driftCorrection(o);
|
|
2732
2289
|
}
|
|
2733
|
-
/**
|
|
2734
|
-
*
|
|
2735
|
-
* @param start The start index
|
|
2736
|
-
* @param end The end index
|
|
2737
|
-
* @param value The drift amount
|
|
2738
|
-
*/
|
|
2739
2290
|
/**
|
|
2740
2291
|
* Multi-threaded drift correction over one or more [start, end, value] ranges.
|
|
2741
2292
|
* 1. Main thread reads each range's anchors (startDatetime, extent) once and chunks the range.
|
|
@@ -2743,68 +2294,68 @@ class $s {
|
|
|
2743
2294
|
* 3. Each worker applies y_n = y_0 + value * ((x_i - startDatetime) / extent) in place on its jobs.
|
|
2744
2295
|
* 4. Batching all ranges into a single call yields a single history entry.
|
|
2745
2296
|
*/
|
|
2746
|
-
async _driftCorrection(
|
|
2747
|
-
if (!
|
|
2748
|
-
const
|
|
2749
|
-
let
|
|
2750
|
-
for (const [
|
|
2751
|
-
|
|
2752
|
-
if (!
|
|
2753
|
-
datasetSize:
|
|
2754
|
-
selectionSize:
|
|
2297
|
+
async _driftCorrection(e) {
|
|
2298
|
+
if (!e || e.length === 0) return;
|
|
2299
|
+
const t = this.dataset.source.x, n = navigator.hardwareConcurrency || 1;
|
|
2300
|
+
let o = 0;
|
|
2301
|
+
for (const [w, m] of e)
|
|
2302
|
+
m > w && (o += m - w);
|
|
2303
|
+
if (!U(S.DRIFT_CORRECTION, {
|
|
2304
|
+
datasetSize: t.length,
|
|
2305
|
+
selectionSize: o
|
|
2755
2306
|
}).useWorker) {
|
|
2756
|
-
|
|
2307
|
+
sr(t, this.dataY, e);
|
|
2757
2308
|
return;
|
|
2758
2309
|
}
|
|
2759
2310
|
this._pendingExecutionMode = "worker";
|
|
2760
|
-
const
|
|
2761
|
-
for (const [
|
|
2762
|
-
if (
|
|
2763
|
-
const
|
|
2764
|
-
if (
|
|
2765
|
-
const
|
|
2766
|
-
for (let
|
|
2767
|
-
|
|
2768
|
-
chunkStart:
|
|
2769
|
-
chunkEnd: Math.min(
|
|
2770
|
-
startDatetime:
|
|
2771
|
-
value:
|
|
2772
|
-
extent:
|
|
2311
|
+
const s = [];
|
|
2312
|
+
for (const [w, m, d] of e) {
|
|
2313
|
+
if (m <= w) continue;
|
|
2314
|
+
const y = t[w], l = t[m] - y;
|
|
2315
|
+
if (l === 0) continue;
|
|
2316
|
+
const u = m - w, g = Math.max(1, Math.ceil(u / n));
|
|
2317
|
+
for (let h = w; h < m; h += g)
|
|
2318
|
+
s.push({
|
|
2319
|
+
chunkStart: h,
|
|
2320
|
+
chunkEnd: Math.min(h + g, m),
|
|
2321
|
+
startDatetime: y,
|
|
2322
|
+
value: d,
|
|
2323
|
+
extent: l
|
|
2773
2324
|
});
|
|
2774
2325
|
}
|
|
2775
|
-
if (
|
|
2776
|
-
const
|
|
2777
|
-
{ length:
|
|
2326
|
+
if (s.length === 0) return;
|
|
2327
|
+
const a = Math.min(n, s.length), c = Array.from(
|
|
2328
|
+
{ length: a },
|
|
2778
2329
|
() => []
|
|
2779
2330
|
);
|
|
2780
|
-
|
|
2781
|
-
const
|
|
2782
|
-
for (const
|
|
2783
|
-
|
|
2784
|
-
new Promise((
|
|
2785
|
-
const
|
|
2786
|
-
|
|
2331
|
+
s.forEach((w, m) => c[m % a].push(w));
|
|
2332
|
+
const p = [], f = [];
|
|
2333
|
+
for (const w of c)
|
|
2334
|
+
w.length !== 0 && f.push(
|
|
2335
|
+
new Promise((m) => {
|
|
2336
|
+
const d = new Wt();
|
|
2337
|
+
p.push(d), d.postMessage({
|
|
2787
2338
|
bufferX: this.dataX.buffer,
|
|
2788
2339
|
bufferY: this.dataY.buffer,
|
|
2789
|
-
jobs:
|
|
2790
|
-
}),
|
|
2791
|
-
|
|
2340
|
+
jobs: w
|
|
2341
|
+
}), d.onmessage = (y) => {
|
|
2342
|
+
m(y.data);
|
|
2792
2343
|
};
|
|
2793
2344
|
})
|
|
2794
2345
|
);
|
|
2795
|
-
await Promise.all(
|
|
2346
|
+
await Promise.all(f), p.forEach((w) => w.terminate());
|
|
2796
2347
|
}
|
|
2797
2348
|
/** Traverses the index array and returns groups of consecutive values.
|
|
2798
2349
|
* i.e.: `[0, 1, 3, 4, 6] => [[0, 1], [3, 4], [6]]`
|
|
2799
2350
|
* Assumes the input array is sorted.
|
|
2800
2351
|
* @param index: the index array (sorted)
|
|
2801
2352
|
*/
|
|
2802
|
-
_getConsecutiveGroups(
|
|
2803
|
-
const
|
|
2804
|
-
return
|
|
2805
|
-
const
|
|
2806
|
-
return !
|
|
2807
|
-
},
|
|
2353
|
+
_getConsecutiveGroups(e) {
|
|
2354
|
+
const t = [[]];
|
|
2355
|
+
return e.reduce((n, o) => {
|
|
2356
|
+
const i = n[n.length - 1];
|
|
2357
|
+
return !i.length || o == i[i.length - 1] + 1 ? i.push(o) : n.push([o]), n;
|
|
2358
|
+
}, t), t;
|
|
2808
2359
|
}
|
|
2809
2360
|
/**
|
|
2810
2361
|
* Adds data points using worker threads.
|
|
@@ -2813,75 +2364,70 @@ class $s {
|
|
|
2813
2364
|
* 3. `firstIns` per chunk doubles as the prefix sum of insertions placed before the chunk, giving each worker its outStart in the output buffer without overlap.
|
|
2814
2365
|
* 4. Each worker linearly merges its original slice with its insertion slice (both already sorted by datetime) into the output buffer. Originals win on datetime ties, matching the original `findLastLessOrEqual` semantics.
|
|
2815
2366
|
*/
|
|
2816
|
-
async _addDataPoints(
|
|
2817
|
-
if (
|
|
2818
|
-
const
|
|
2819
|
-
|
|
2820
|
-
const
|
|
2821
|
-
for (let
|
|
2822
|
-
const
|
|
2823
|
-
|
|
2824
|
-
}
|
|
2825
|
-
const
|
|
2826
|
-
|
|
2827
|
-
Math.max(this.dataX.buffer.maxByteLength,
|
|
2828
|
-
),
|
|
2829
|
-
|
|
2830
|
-
Math.max(this.dataY.buffer.maxByteLength,
|
|
2367
|
+
async _addDataPoints(e) {
|
|
2368
|
+
if (e.length === 0) return [];
|
|
2369
|
+
const t = this.dataX.length, n = t + e.length;
|
|
2370
|
+
e.sort((l, u) => l[0] - u[0]);
|
|
2371
|
+
const o = new Array(e.length);
|
|
2372
|
+
for (let l = 0; l < e.length; l++) {
|
|
2373
|
+
const u = e[l][0], g = C(this.dataX, u) + 1;
|
|
2374
|
+
o[l] = g + l;
|
|
2375
|
+
}
|
|
2376
|
+
const i = n * Float64Array.BYTES_PER_ELEMENT, s = n * Float32Array.BYTES_PER_ELEMENT, a = I(
|
|
2377
|
+
i,
|
|
2378
|
+
Math.max(this.dataX.buffer.maxByteLength, i)
|
|
2379
|
+
), c = I(
|
|
2380
|
+
s,
|
|
2381
|
+
Math.max(this.dataY.buffer.maxByteLength, s)
|
|
2831
2382
|
);
|
|
2832
|
-
if (!
|
|
2833
|
-
datasetSize:
|
|
2834
|
-
selectionSize:
|
|
2383
|
+
if (!U(S.ADD_POINTS, {
|
|
2384
|
+
datasetSize: t,
|
|
2385
|
+
selectionSize: e.length
|
|
2835
2386
|
}).useWorker) {
|
|
2836
|
-
const
|
|
2837
|
-
return
|
|
2387
|
+
const l = new Float64Array(a), u = new Float32Array(c);
|
|
2388
|
+
return er(
|
|
2838
2389
|
this.dataX,
|
|
2839
2390
|
this.dataY,
|
|
2840
|
-
|
|
2841
|
-
|
|
2842
|
-
|
|
2391
|
+
e,
|
|
2392
|
+
l,
|
|
2393
|
+
u,
|
|
2843
2394
|
0,
|
|
2844
|
-
|
|
2395
|
+
t,
|
|
2845
2396
|
0
|
|
2846
|
-
), this.dataset.source.x =
|
|
2397
|
+
), this.dataset.source.x = l, this.dataset.source.y = u, this._resizeTo(n), o;
|
|
2847
2398
|
}
|
|
2848
2399
|
this._pendingExecutionMode = "worker";
|
|
2849
|
-
const
|
|
2850
|
-
(
|
|
2851
|
-
),
|
|
2400
|
+
const f = e.map(
|
|
2401
|
+
(l) => C(this.dataX, l[0]) + 1
|
|
2402
|
+
), w = Math.max(
|
|
2852
2403
|
1,
|
|
2853
|
-
Math.min(navigator.hardwareConcurrency || 1, Math.max(
|
|
2854
|
-
),
|
|
2855
|
-
for (let
|
|
2856
|
-
const
|
|
2857
|
-
|
|
2858
|
-
new Promise((
|
|
2859
|
-
const
|
|
2860
|
-
|
|
2404
|
+
Math.min(navigator.hardwareConcurrency || 1, Math.max(t, 1))
|
|
2405
|
+
), m = Math.ceil(Math.max(t, 1) / w), d = [], y = [];
|
|
2406
|
+
for (let l = 0; l < w; l++) {
|
|
2407
|
+
const u = l * m, g = Math.min((l + 1) * m, t), h = x(f, u), b = l === w - 1 ? e.length : x(f, g), E = e.slice(h, b), k = u + h;
|
|
2408
|
+
u >= g && E.length === 0 || y.push(
|
|
2409
|
+
new Promise((A) => {
|
|
2410
|
+
const _ = new Yt();
|
|
2411
|
+
d.push(_), _.postMessage({
|
|
2861
2412
|
bufferX: this.dataX.buffer,
|
|
2862
2413
|
bufferY: this.dataY.buffer,
|
|
2863
|
-
outputBufferX:
|
|
2864
|
-
outputBufferY:
|
|
2865
|
-
origStart:
|
|
2866
|
-
origEnd:
|
|
2414
|
+
outputBufferX: a,
|
|
2415
|
+
outputBufferY: c,
|
|
2416
|
+
origStart: u,
|
|
2417
|
+
origEnd: g,
|
|
2867
2418
|
insertions: E,
|
|
2868
|
-
outStart:
|
|
2869
|
-
}),
|
|
2870
|
-
|
|
2419
|
+
outStart: k
|
|
2420
|
+
}), _.onmessage = (T) => {
|
|
2421
|
+
A(T.data);
|
|
2871
2422
|
};
|
|
2872
2423
|
})
|
|
2873
2424
|
);
|
|
2874
2425
|
}
|
|
2875
|
-
return await Promise.all(
|
|
2426
|
+
return await Promise.all(y), d.forEach((l) => l.terminate()), this.dataset.source.x = new Float64Array(a), this.dataset.source.y = new Float32Array(c), this._resizeTo(n), o;
|
|
2876
2427
|
}
|
|
2877
2428
|
// =======================
|
|
2878
2429
|
// FILTER OPERATIONS
|
|
2879
2430
|
// =======================
|
|
2880
|
-
/**
|
|
2881
|
-
* Filter by applying a set of logical operations
|
|
2882
|
-
* @param appliedFilters
|
|
2883
|
-
* @returns an array of index values to select in the plot
|
|
2884
|
-
*/
|
|
2885
2431
|
/**
|
|
2886
2432
|
* Filter by applying a set of logical operations, using worker threads.
|
|
2887
2433
|
* 1. Main thread encodes filters as numeric opcodes + thresholds (cheaper than string compares in the hot loop).
|
|
@@ -2890,111 +2436,105 @@ class $s {
|
|
|
2890
2436
|
*
|
|
2891
2437
|
* Opcodes: 0=LT, 1=LTE, 2=GT, 3=GTE, 4=E.
|
|
2892
2438
|
*/
|
|
2893
|
-
async _valueThreshold(
|
|
2894
|
-
const
|
|
2895
|
-
if (
|
|
2896
|
-
const
|
|
2897
|
-
[
|
|
2898
|
-
[
|
|
2899
|
-
[
|
|
2900
|
-
[
|
|
2901
|
-
[
|
|
2902
|
-
},
|
|
2903
|
-
let
|
|
2904
|
-
if (
|
|
2905
|
-
if (
|
|
2906
|
-
const [
|
|
2907
|
-
|
|
2908
|
-
}
|
|
2909
|
-
if (
|
|
2910
|
-
const
|
|
2911
|
-
if (!
|
|
2912
|
-
datasetSize:
|
|
2439
|
+
async _valueThreshold(e, t) {
|
|
2440
|
+
const n = Object.keys(e);
|
|
2441
|
+
if (n.length === 0) return [];
|
|
2442
|
+
const o = {
|
|
2443
|
+
[B.LT]: 0,
|
|
2444
|
+
[B.LTE]: 1,
|
|
2445
|
+
[B.GT]: 2,
|
|
2446
|
+
[B.GTE]: 3,
|
|
2447
|
+
[B.E]: 4
|
|
2448
|
+
}, i = n.map((b) => o[b] ?? 4), s = n.map((b) => e[b]), a = this.dataset.source.y, c = this.dataset.source.x;
|
|
2449
|
+
let p = 0, f = a.length;
|
|
2450
|
+
if (f === 0) return [];
|
|
2451
|
+
if (t != null) {
|
|
2452
|
+
const [b, E] = t;
|
|
2453
|
+
b != null && Number.isFinite(b) && (p = x(c, b)), E != null && Number.isFinite(E) && (f = C(c, E) + 1);
|
|
2454
|
+
}
|
|
2455
|
+
if (f <= p) return [];
|
|
2456
|
+
const w = f - p;
|
|
2457
|
+
if (!U(L.VALUE_THRESHOLD, {
|
|
2458
|
+
datasetSize: w
|
|
2913
2459
|
}).useWorker)
|
|
2914
|
-
return
|
|
2460
|
+
return ht(a, p, f, i, s);
|
|
2915
2461
|
this._pendingExecutionMode = "worker";
|
|
2916
|
-
const
|
|
2917
|
-
for (let
|
|
2918
|
-
const E =
|
|
2919
|
-
if (E >=
|
|
2920
|
-
|
|
2921
|
-
new Promise((
|
|
2922
|
-
const
|
|
2923
|
-
|
|
2462
|
+
const d = Math.min(navigator.hardwareConcurrency || 1, w), y = Math.ceil(w / d), l = [], u = [];
|
|
2463
|
+
for (let b = 0; b < d; b++) {
|
|
2464
|
+
const E = p + b * y, k = Math.min(p + (b + 1) * y, f);
|
|
2465
|
+
if (E >= k) break;
|
|
2466
|
+
u.push(
|
|
2467
|
+
new Promise((A) => {
|
|
2468
|
+
const _ = new he();
|
|
2469
|
+
l.push(_), _.postMessage({
|
|
2924
2470
|
bufferY: this.dataY.buffer,
|
|
2925
2471
|
start: E,
|
|
2926
|
-
end:
|
|
2927
|
-
ops:
|
|
2928
|
-
values:
|
|
2929
|
-
}),
|
|
2930
|
-
|
|
2472
|
+
end: k,
|
|
2473
|
+
ops: i,
|
|
2474
|
+
values: s
|
|
2475
|
+
}), _.onmessage = (T) => {
|
|
2476
|
+
A(T.data);
|
|
2931
2477
|
};
|
|
2932
2478
|
})
|
|
2933
2479
|
);
|
|
2934
2480
|
}
|
|
2935
|
-
const
|
|
2936
|
-
|
|
2937
|
-
const
|
|
2938
|
-
for (let
|
|
2939
|
-
const E =
|
|
2940
|
-
for (let
|
|
2481
|
+
const g = await Promise.all(u);
|
|
2482
|
+
l.forEach((b) => b.terminate());
|
|
2483
|
+
const h = [];
|
|
2484
|
+
for (let b = 0; b < g.length; b++) {
|
|
2485
|
+
const E = g[b];
|
|
2486
|
+
for (let k = 0; k < E.length; k++) h.push(E[k]);
|
|
2941
2487
|
}
|
|
2942
|
-
return
|
|
2488
|
+
return h;
|
|
2943
2489
|
}
|
|
2944
|
-
/**
|
|
2945
|
-
*
|
|
2946
|
-
* @param comparator
|
|
2947
|
-
* @param value
|
|
2948
|
-
* @returns
|
|
2949
|
-
*/
|
|
2950
2490
|
/**
|
|
2951
2491
|
* Find points where the relative rate `(curr - prev) / |prev|` satisfies the comparator, using worker threads.
|
|
2952
2492
|
* 1. Main thread partitions scan range [1, dataY.length) into chunks; `Y[i-1]` is safely read from the shared buffer across chunk boundaries.
|
|
2953
2493
|
* 2. Each worker runs a hoisted branch matching the comparator and returns matching indexes in ascending order.
|
|
2954
2494
|
* 3. Main thread concatenates results in chunk order, preserving ascending order.
|
|
2955
2495
|
*/
|
|
2956
|
-
async _rateOfChange(
|
|
2957
|
-
const
|
|
2958
|
-
if (
|
|
2959
|
-
let
|
|
2960
|
-
if (
|
|
2961
|
-
const [
|
|
2962
|
-
|
|
2963
|
-
}
|
|
2964
|
-
if (
|
|
2965
|
-
const
|
|
2966
|
-
if (!
|
|
2967
|
-
datasetSize:
|
|
2496
|
+
async _rateOfChange(e, t, n) {
|
|
2497
|
+
const o = this.dataset.source.y, i = this.dataset.source.x;
|
|
2498
|
+
if (o.length < 2) return [];
|
|
2499
|
+
let s = 1, a = o.length;
|
|
2500
|
+
if (n != null) {
|
|
2501
|
+
const [u, g] = n;
|
|
2502
|
+
u != null && Number.isFinite(u) && (s = Math.max(1, x(i, u))), g != null && Number.isFinite(g) && (a = C(i, g) + 1);
|
|
2503
|
+
}
|
|
2504
|
+
if (a <= s) return [];
|
|
2505
|
+
const c = a - s;
|
|
2506
|
+
if (!U(L.RATE_OF_CHANGE, {
|
|
2507
|
+
datasetSize: o.length
|
|
2968
2508
|
}).useWorker)
|
|
2969
|
-
return
|
|
2509
|
+
return Jt(o, s, a, e, t);
|
|
2970
2510
|
this._pendingExecutionMode = "worker";
|
|
2971
|
-
const
|
|
2972
|
-
for (let
|
|
2973
|
-
const
|
|
2974
|
-
if (
|
|
2975
|
-
|
|
2976
|
-
new Promise((
|
|
2977
|
-
const E = new
|
|
2978
|
-
|
|
2511
|
+
const f = Math.min(navigator.hardwareConcurrency || 1, c), w = Math.ceil(c / f), m = [], d = [];
|
|
2512
|
+
for (let u = 0; u < f; u++) {
|
|
2513
|
+
const g = s + u * w, h = Math.min(s + (u + 1) * w, a);
|
|
2514
|
+
if (g >= h) break;
|
|
2515
|
+
d.push(
|
|
2516
|
+
new Promise((b) => {
|
|
2517
|
+
const E = new $t();
|
|
2518
|
+
m.push(E), E.postMessage({
|
|
2979
2519
|
bufferY: this.dataY.buffer,
|
|
2980
|
-
start:
|
|
2981
|
-
end:
|
|
2982
|
-
comparator:
|
|
2983
|
-
value:
|
|
2984
|
-
}), E.onmessage = (
|
|
2985
|
-
|
|
2520
|
+
start: g,
|
|
2521
|
+
end: h,
|
|
2522
|
+
comparator: e,
|
|
2523
|
+
value: t
|
|
2524
|
+
}), E.onmessage = (k) => {
|
|
2525
|
+
b(k.data);
|
|
2986
2526
|
};
|
|
2987
2527
|
})
|
|
2988
2528
|
);
|
|
2989
2529
|
}
|
|
2990
|
-
const
|
|
2991
|
-
|
|
2992
|
-
const
|
|
2993
|
-
for (let
|
|
2994
|
-
const
|
|
2995
|
-
for (let
|
|
2530
|
+
const y = await Promise.all(d);
|
|
2531
|
+
m.forEach((u) => u.terminate());
|
|
2532
|
+
const l = [];
|
|
2533
|
+
for (let u = 0; u < y.length; u++) {
|
|
2534
|
+
const g = y[u];
|
|
2535
|
+
for (let h = 0; h < g.length; h++) l.push(g[h]);
|
|
2996
2536
|
}
|
|
2997
|
-
return
|
|
2537
|
+
return l;
|
|
2998
2538
|
}
|
|
2999
2539
|
/**
|
|
3000
2540
|
* Select all points whose datetime falls inside `[from, to]` (inclusive).
|
|
@@ -3002,14 +2542,14 @@ class $s {
|
|
|
3002
2542
|
* O(log n) — no workers required. Pass `undefined` for either bound to
|
|
3003
2543
|
* leave that side unconstrained; omitting both selects the full series.
|
|
3004
2544
|
*/
|
|
3005
|
-
async _datetimeRange(
|
|
3006
|
-
const
|
|
3007
|
-
if (
|
|
3008
|
-
const
|
|
3009
|
-
if (
|
|
3010
|
-
const
|
|
3011
|
-
for (let
|
|
3012
|
-
return
|
|
2545
|
+
async _datetimeRange(e, t) {
|
|
2546
|
+
const n = this.dataset.source.x, o = n.length;
|
|
2547
|
+
if (o === 0) return [];
|
|
2548
|
+
const i = e == null ? 0 : x(n, e), s = t == null ? o - 1 : C(n, t);
|
|
2549
|
+
if (i > s) return [];
|
|
2550
|
+
const a = new Array(s - i + 1);
|
|
2551
|
+
for (let c = i; c <= s; c++) a[c - i] = c;
|
|
2552
|
+
return a;
|
|
3013
2553
|
}
|
|
3014
2554
|
/**
|
|
3015
2555
|
* SELECTION filter handler — also acts as the cleanup site for the
|
|
@@ -3036,64 +2576,58 @@ class $s {
|
|
|
3036
2576
|
* fires a SELECTION carrying the same indices. Without this dedup
|
|
3037
2577
|
* the script would grow a phantom SELECTION after every real filter.
|
|
3038
2578
|
*/
|
|
3039
|
-
async _selection(
|
|
3040
|
-
const
|
|
3041
|
-
return !
|
|
2579
|
+
async _selection(e) {
|
|
2580
|
+
const t = this.history[this.history.length - 2], n = !!t && t.method !== L.SELECTION && !!L[t.method], o = n && Array.isArray(t.selected) ? t.selected : void 0;
|
|
2581
|
+
return !e || !e.length ? (this.history.pop(), o && o.length > 0 && this.history.pop(), e) : (o && hr(o, e) ? this.history.pop() : n && this.history.splice(this.history.length - 2, 1), e);
|
|
3042
2582
|
}
|
|
3043
|
-
/**
|
|
3044
|
-
*
|
|
3045
|
-
* @param comparator
|
|
3046
|
-
* @param value
|
|
3047
|
-
* @returns
|
|
3048
|
-
*/
|
|
3049
2583
|
/**
|
|
3050
2584
|
* Find points where the change from the previous value satisfies the comparator, using worker threads.
|
|
3051
2585
|
* 1. Main thread partitions scan range [1, dataY.length) into chunks (each chunk's first index safely reads Y[i-1] from the shared buffer).
|
|
3052
2586
|
* 2. Each worker runs a hoisted branch matching the comparator and returns matching indexes in ascending order.
|
|
3053
2587
|
* 3. Main thread concatenates results in chunk order, preserving ascending order.
|
|
3054
2588
|
*/
|
|
3055
|
-
async _change(
|
|
3056
|
-
const
|
|
3057
|
-
if (
|
|
3058
|
-
let
|
|
3059
|
-
if (
|
|
3060
|
-
const [
|
|
3061
|
-
|
|
3062
|
-
}
|
|
3063
|
-
if (
|
|
3064
|
-
const
|
|
3065
|
-
if (!
|
|
3066
|
-
datasetSize:
|
|
2589
|
+
async _change(e, t, n) {
|
|
2590
|
+
const o = this.dataset.source.y, i = this.dataset.source.x;
|
|
2591
|
+
if (o.length < 2) return [];
|
|
2592
|
+
let s = 1, a = o.length;
|
|
2593
|
+
if (n != null) {
|
|
2594
|
+
const [u, g] = n;
|
|
2595
|
+
u != null && Number.isFinite(u) && (s = Math.max(1, x(i, u))), g != null && Number.isFinite(g) && (a = C(i, g) + 1);
|
|
2596
|
+
}
|
|
2597
|
+
if (a <= s) return [];
|
|
2598
|
+
const c = a - s;
|
|
2599
|
+
if (!U(L.CHANGE, {
|
|
2600
|
+
datasetSize: o.length
|
|
3067
2601
|
}).useWorker)
|
|
3068
|
-
return
|
|
2602
|
+
return qt(o, s, a, e, t);
|
|
3069
2603
|
this._pendingExecutionMode = "worker";
|
|
3070
|
-
const
|
|
3071
|
-
for (let
|
|
3072
|
-
const
|
|
3073
|
-
if (
|
|
3074
|
-
|
|
3075
|
-
new Promise((
|
|
3076
|
-
const E = new
|
|
3077
|
-
|
|
2604
|
+
const f = Math.min(navigator.hardwareConcurrency || 1, c), w = Math.ceil(c / f), m = [], d = [];
|
|
2605
|
+
for (let u = 0; u < f; u++) {
|
|
2606
|
+
const g = s + u * w, h = Math.min(s + (u + 1) * w, a);
|
|
2607
|
+
if (g >= h) break;
|
|
2608
|
+
d.push(
|
|
2609
|
+
new Promise((b) => {
|
|
2610
|
+
const E = new zt();
|
|
2611
|
+
m.push(E), E.postMessage({
|
|
3078
2612
|
bufferY: this.dataY.buffer,
|
|
3079
|
-
start:
|
|
3080
|
-
end:
|
|
3081
|
-
comparator:
|
|
3082
|
-
value:
|
|
3083
|
-
}), E.onmessage = (
|
|
3084
|
-
|
|
2613
|
+
start: g,
|
|
2614
|
+
end: h,
|
|
2615
|
+
comparator: e,
|
|
2616
|
+
value: t
|
|
2617
|
+
}), E.onmessage = (k) => {
|
|
2618
|
+
b(k.data);
|
|
3085
2619
|
};
|
|
3086
2620
|
})
|
|
3087
2621
|
);
|
|
3088
2622
|
}
|
|
3089
|
-
const
|
|
3090
|
-
|
|
3091
|
-
const
|
|
3092
|
-
for (let
|
|
3093
|
-
const
|
|
3094
|
-
for (let
|
|
2623
|
+
const y = await Promise.all(d);
|
|
2624
|
+
m.forEach((u) => u.terminate());
|
|
2625
|
+
const l = [];
|
|
2626
|
+
for (let u = 0; u < y.length; u++) {
|
|
2627
|
+
const g = y[u];
|
|
2628
|
+
for (let h = 0; h < g.length; h++) l.push(g[h]);
|
|
3095
2629
|
}
|
|
3096
|
-
return
|
|
2630
|
+
return l;
|
|
3097
2631
|
}
|
|
3098
2632
|
/**
|
|
3099
2633
|
* Find gaps in the data using worker threads.
|
|
@@ -3109,49 +2643,49 @@ class $s {
|
|
|
3109
2643
|
* same call survives data growth and is portable across datasets
|
|
3110
2644
|
* for QC script replay.
|
|
3111
2645
|
*/
|
|
3112
|
-
async _findGaps(
|
|
3113
|
-
const
|
|
3114
|
-
let
|
|
3115
|
-
if (
|
|
3116
|
-
const [
|
|
3117
|
-
|
|
3118
|
-
}
|
|
3119
|
-
if (
|
|
3120
|
-
const
|
|
3121
|
-
if (!
|
|
3122
|
-
datasetSize:
|
|
2646
|
+
async _findGaps(e, t, n) {
|
|
2647
|
+
const o = this.dataset.source.x;
|
|
2648
|
+
let i = 0, s = o.length;
|
|
2649
|
+
if (n != null) {
|
|
2650
|
+
const [u, g] = n;
|
|
2651
|
+
u != null && Number.isFinite(u) && (i = x(o, u)), g != null && Number.isFinite(g) && (s = C(o, g) + 1);
|
|
2652
|
+
}
|
|
2653
|
+
if (s <= i) return [];
|
|
2654
|
+
const a = e * G[t] * 1e3;
|
|
2655
|
+
if (!U(L.FIND_GAPS, {
|
|
2656
|
+
datasetSize: s - i
|
|
3123
2657
|
}).useWorker) {
|
|
3124
|
-
const
|
|
3125
|
-
for (let
|
|
3126
|
-
return [...
|
|
2658
|
+
const u = Kt(o, i, s - 1, a), g = /* @__PURE__ */ new Set();
|
|
2659
|
+
for (let h = 0; h < u.length; h++) g.add(u[h]);
|
|
2660
|
+
return [...g];
|
|
3127
2661
|
}
|
|
3128
2662
|
this._pendingExecutionMode = "worker";
|
|
3129
|
-
const
|
|
3130
|
-
for (let
|
|
3131
|
-
const
|
|
3132
|
-
if (
|
|
3133
|
-
|
|
3134
|
-
new Promise((
|
|
3135
|
-
const E = new
|
|
3136
|
-
|
|
2663
|
+
const p = s - i, f = Math.min(navigator.hardwareConcurrency || 1, p), w = Math.ceil(p / f), m = [], d = [];
|
|
2664
|
+
for (let u = 0; u < f; u++) {
|
|
2665
|
+
const g = i + u * w, h = Math.min(i + (u + 1) * w, s);
|
|
2666
|
+
if (g >= h) break;
|
|
2667
|
+
d.push(
|
|
2668
|
+
new Promise((b) => {
|
|
2669
|
+
const E = new Xt();
|
|
2670
|
+
m.push(E), E.postMessage({
|
|
3137
2671
|
bufferX: this.dataX.buffer,
|
|
3138
|
-
start:
|
|
3139
|
-
endInclusive:
|
|
3140
|
-
threshold:
|
|
3141
|
-
}), E.onmessage = (
|
|
3142
|
-
|
|
2672
|
+
start: g,
|
|
2673
|
+
endInclusive: h,
|
|
2674
|
+
threshold: a
|
|
2675
|
+
}), E.onmessage = (k) => {
|
|
2676
|
+
b(k.data);
|
|
3143
2677
|
};
|
|
3144
2678
|
})
|
|
3145
2679
|
);
|
|
3146
2680
|
}
|
|
3147
|
-
const
|
|
3148
|
-
|
|
3149
|
-
const
|
|
3150
|
-
for (let
|
|
3151
|
-
const
|
|
3152
|
-
for (let
|
|
2681
|
+
const y = await Promise.all(d);
|
|
2682
|
+
m.forEach((u) => u.terminate());
|
|
2683
|
+
const l = /* @__PURE__ */ new Set();
|
|
2684
|
+
for (let u = 0; u < y.length; u++) {
|
|
2685
|
+
const g = y[u];
|
|
2686
|
+
for (let h = 0; h < g.length; h++) l.add(g[h]);
|
|
3153
2687
|
}
|
|
3154
|
-
return [...
|
|
2688
|
+
return [...l];
|
|
3155
2689
|
}
|
|
3156
2690
|
/**
|
|
3157
2691
|
* Find points where the values are the same at least `times` in a row, using worker threads.
|
|
@@ -3168,219 +2702,211 @@ class $s {
|
|
|
3168
2702
|
* addressed) so the same call survives data growth and is
|
|
3169
2703
|
* portable across datasets for QC script replay.
|
|
3170
2704
|
*/
|
|
3171
|
-
async _persistence(
|
|
3172
|
-
const
|
|
3173
|
-
let
|
|
3174
|
-
if (
|
|
3175
|
-
const [
|
|
3176
|
-
|
|
3177
|
-
}
|
|
3178
|
-
if (
|
|
3179
|
-
const
|
|
3180
|
-
if (!
|
|
3181
|
-
datasetSize:
|
|
2705
|
+
async _persistence(e, t) {
|
|
2706
|
+
const n = this.dataset.source.x, o = this.dataset.source.y;
|
|
2707
|
+
let i = 0, s = o.length;
|
|
2708
|
+
if (t != null) {
|
|
2709
|
+
const [h, b] = t;
|
|
2710
|
+
h != null && Number.isFinite(h) && (i = x(n, h)), b != null && Number.isFinite(b) && (s = C(n, b) + 1);
|
|
2711
|
+
}
|
|
2712
|
+
if (s <= i) return [];
|
|
2713
|
+
const a = s - i;
|
|
2714
|
+
if (!U(L.PERSISTENCE, {
|
|
2715
|
+
datasetSize: a
|
|
3182
2716
|
}).useWorker) {
|
|
3183
|
-
const
|
|
3184
|
-
for (let E = 0; E <
|
|
3185
|
-
const
|
|
3186
|
-
if (
|
|
3187
|
-
for (let
|
|
2717
|
+
const h = Qt(o, i, s), b = [];
|
|
2718
|
+
for (let E = 0; E < h.length; E += 3) {
|
|
2719
|
+
const k = h[E], A = h[E + 1];
|
|
2720
|
+
if (A >= e)
|
|
2721
|
+
for (let _ = 0; _ < A; _++) b.push(k + _);
|
|
3188
2722
|
}
|
|
3189
|
-
return
|
|
2723
|
+
return b;
|
|
3190
2724
|
}
|
|
3191
2725
|
this._pendingExecutionMode = "worker";
|
|
3192
|
-
const
|
|
3193
|
-
for (let
|
|
3194
|
-
const
|
|
3195
|
-
if (
|
|
3196
|
-
|
|
3197
|
-
new Promise((
|
|
3198
|
-
const
|
|
3199
|
-
|
|
2726
|
+
const p = Math.min(navigator.hardwareConcurrency || 1, a), f = Math.ceil(a / p), w = [], m = [];
|
|
2727
|
+
for (let h = 0; h < p; h++) {
|
|
2728
|
+
const b = i + h * f, E = Math.min(i + (h + 1) * f, s);
|
|
2729
|
+
if (b >= E) break;
|
|
2730
|
+
m.push(
|
|
2731
|
+
new Promise((k) => {
|
|
2732
|
+
const A = new Ht();
|
|
2733
|
+
w.push(A), A.postMessage({
|
|
3200
2734
|
bufferY: this.dataY.buffer,
|
|
3201
|
-
start:
|
|
2735
|
+
start: b,
|
|
3202
2736
|
end: E
|
|
3203
|
-
}),
|
|
3204
|
-
_
|
|
2737
|
+
}), A.onmessage = (_) => {
|
|
2738
|
+
k(_.data);
|
|
3205
2739
|
};
|
|
3206
2740
|
})
|
|
3207
2741
|
);
|
|
3208
2742
|
}
|
|
3209
|
-
const
|
|
3210
|
-
|
|
3211
|
-
const
|
|
3212
|
-
for (let
|
|
3213
|
-
const
|
|
3214
|
-
for (let E = 0; E <
|
|
3215
|
-
const
|
|
3216
|
-
|
|
2743
|
+
const d = await Promise.all(m);
|
|
2744
|
+
w.forEach((h) => h.terminate());
|
|
2745
|
+
const y = [], l = [], u = [];
|
|
2746
|
+
for (let h = 0; h < d.length; h++) {
|
|
2747
|
+
const b = d[h];
|
|
2748
|
+
for (let E = 0; E < b.length; E += 3) {
|
|
2749
|
+
const k = b[E], A = b[E + 1], _ = b[E + 2], T = y.length - 1;
|
|
2750
|
+
T >= 0 && u[T] === _ && y[T] + l[T] === k ? l[T] += A : (y.push(k), l.push(A), u.push(_));
|
|
3217
2751
|
}
|
|
3218
2752
|
}
|
|
3219
|
-
const
|
|
3220
|
-
for (let
|
|
3221
|
-
const
|
|
3222
|
-
if (
|
|
3223
|
-
const E =
|
|
3224
|
-
for (let
|
|
2753
|
+
const g = [];
|
|
2754
|
+
for (let h = 0; h < y.length; h++) {
|
|
2755
|
+
const b = l[h];
|
|
2756
|
+
if (b >= e) {
|
|
2757
|
+
const E = y[h];
|
|
2758
|
+
for (let k = 0; k < b; k++) g.push(E + k);
|
|
3225
2759
|
}
|
|
3226
2760
|
}
|
|
3227
|
-
return
|
|
2761
|
+
return g;
|
|
3228
2762
|
}
|
|
3229
2763
|
}
|
|
3230
|
-
const
|
|
3231
|
-
...Object.values(
|
|
3232
|
-
...Object.values(
|
|
2764
|
+
const V = "1", pr = /* @__PURE__ */ new Set([
|
|
2765
|
+
...Object.values(S),
|
|
2766
|
+
...Object.values(L)
|
|
3233
2767
|
]);
|
|
3234
|
-
function
|
|
3235
|
-
const
|
|
3236
|
-
const
|
|
3237
|
-
method:
|
|
3238
|
-
args:
|
|
2768
|
+
function Yr(r, e) {
|
|
2769
|
+
const t = r.history.map((n) => {
|
|
2770
|
+
const o = {
|
|
2771
|
+
method: n.method,
|
|
2772
|
+
args: n.args ? [...n.args] : []
|
|
3239
2773
|
};
|
|
3240
|
-
return
|
|
2774
|
+
return n.status === "failed" && (o.status = "failed"), typeof n.timestamp == "number" && Number.isFinite(n.timestamp) && (o.timestamp = n.timestamp), o;
|
|
3241
2775
|
});
|
|
3242
2776
|
return {
|
|
3243
|
-
version:
|
|
2777
|
+
version: V,
|
|
3244
2778
|
createdAt: (/* @__PURE__ */ new Date()).toISOString(),
|
|
3245
2779
|
window: {
|
|
3246
|
-
startDate:
|
|
3247
|
-
endDate:
|
|
2780
|
+
startDate: e.startDate,
|
|
2781
|
+
endDate: e.endDate
|
|
3248
2782
|
},
|
|
3249
|
-
operations:
|
|
2783
|
+
operations: t
|
|
3250
2784
|
};
|
|
3251
2785
|
}
|
|
3252
|
-
function
|
|
3253
|
-
if (!
|
|
2786
|
+
function Gr(r) {
|
|
2787
|
+
if (!r || typeof r != "object")
|
|
3254
2788
|
throw new Error("QC script must be a JSON object.");
|
|
3255
|
-
const
|
|
3256
|
-
if (
|
|
2789
|
+
const e = r;
|
|
2790
|
+
if (e.version !== V)
|
|
3257
2791
|
throw new Error(
|
|
3258
|
-
`Unsupported QC script version: ${String(
|
|
2792
|
+
`Unsupported QC script version: ${String(e.version)}. This loader understands version "${V}".`
|
|
3259
2793
|
);
|
|
3260
|
-
if (typeof
|
|
2794
|
+
if (typeof e.createdAt != "string")
|
|
3261
2795
|
throw new Error("QC script is missing `createdAt` (ISO-8601 string).");
|
|
3262
|
-
const
|
|
3263
|
-
if (!
|
|
2796
|
+
const t = e.window;
|
|
2797
|
+
if (!t || typeof t != "object")
|
|
3264
2798
|
throw new Error("QC script is missing `window`.");
|
|
3265
|
-
if (typeof
|
|
2799
|
+
if (typeof t.startDate != "string" || typeof t.endDate != "string")
|
|
3266
2800
|
throw new Error("`window.startDate` and `window.endDate` must be ISO-8601 strings.");
|
|
3267
|
-
if (!Array.isArray(
|
|
2801
|
+
if (!Array.isArray(e.operations))
|
|
3268
2802
|
throw new Error("QC script `operations` must be an array.");
|
|
3269
|
-
const
|
|
3270
|
-
if (!
|
|
3271
|
-
throw new Error(`Operation ${
|
|
3272
|
-
const
|
|
3273
|
-
if (typeof
|
|
3274
|
-
throw new Error(`Operation ${
|
|
3275
|
-
if (!
|
|
3276
|
-
throw new Error(`Operation ${
|
|
3277
|
-
if (!Array.isArray(
|
|
3278
|
-
throw new Error(`Operation ${
|
|
3279
|
-
const
|
|
3280
|
-
method:
|
|
3281
|
-
args: [...
|
|
2803
|
+
const n = e.operations.map((o, i) => {
|
|
2804
|
+
if (!o || typeof o != "object")
|
|
2805
|
+
throw new Error(`Operation ${i} must be an object.`);
|
|
2806
|
+
const s = o;
|
|
2807
|
+
if (typeof s.method != "string")
|
|
2808
|
+
throw new Error(`Operation ${i} missing string \`method\`.`);
|
|
2809
|
+
if (!pr.has(s.method))
|
|
2810
|
+
throw new Error(`Operation ${i} has unknown method: "${s.method}".`);
|
|
2811
|
+
if (!Array.isArray(s.args))
|
|
2812
|
+
throw new Error(`Operation ${i} \`args\` must be an array.`);
|
|
2813
|
+
const a = {
|
|
2814
|
+
method: s.method,
|
|
2815
|
+
args: [...s.args]
|
|
3282
2816
|
};
|
|
3283
|
-
|
|
2817
|
+
if (s.status === "failed" && (a.status = "failed"), s.timestamp !== void 0) {
|
|
2818
|
+
if (typeof s.timestamp != "number" || !Number.isFinite(s.timestamp))
|
|
2819
|
+
throw new Error(
|
|
2820
|
+
`Operation ${i} \`timestamp\` must be a finite epoch-ms number when present.`
|
|
2821
|
+
);
|
|
2822
|
+
a.timestamp = s.timestamp;
|
|
2823
|
+
}
|
|
2824
|
+
return a;
|
|
3284
2825
|
});
|
|
3285
2826
|
return {
|
|
3286
|
-
version:
|
|
3287
|
-
createdAt:
|
|
2827
|
+
version: V,
|
|
2828
|
+
createdAt: e.createdAt,
|
|
3288
2829
|
window: {
|
|
3289
|
-
startDate:
|
|
3290
|
-
endDate:
|
|
2830
|
+
startDate: t.startDate,
|
|
2831
|
+
endDate: t.endDate
|
|
3291
2832
|
},
|
|
3292
|
-
operations:
|
|
2833
|
+
operations: n
|
|
3293
2834
|
};
|
|
3294
2835
|
}
|
|
3295
|
-
async function
|
|
3296
|
-
|
|
3297
|
-
const
|
|
3298
|
-
for (let
|
|
3299
|
-
const
|
|
2836
|
+
async function Xr(r, e) {
|
|
2837
|
+
r.history.length = 0, r.redoStack.length = 0, await r.reload();
|
|
2838
|
+
const t = { applied: 0, failed: [] };
|
|
2839
|
+
for (let n = 0; n < e.operations.length; n++) {
|
|
2840
|
+
const o = e.operations[n];
|
|
3300
2841
|
try {
|
|
3301
|
-
await
|
|
3302
|
-
index:
|
|
3303
|
-
method:
|
|
2842
|
+
await r.dispatch(o.method, ...o.args), r.history[r.history.length - 1]?.status === "failed" ? t.failed.push({
|
|
2843
|
+
index: n,
|
|
2844
|
+
method: o.method,
|
|
3304
2845
|
error: "Operation handler reported failure (see console)."
|
|
3305
|
-
}) :
|
|
3306
|
-
} catch (
|
|
3307
|
-
|
|
3308
|
-
index:
|
|
3309
|
-
method:
|
|
3310
|
-
error:
|
|
2846
|
+
}) : t.applied++;
|
|
2847
|
+
} catch (i) {
|
|
2848
|
+
t.failed.push({
|
|
2849
|
+
index: n,
|
|
2850
|
+
method: o.method,
|
|
2851
|
+
error: i instanceof Error ? i.message : String(i)
|
|
3311
2852
|
});
|
|
3312
2853
|
}
|
|
3313
2854
|
}
|
|
3314
|
-
return
|
|
2855
|
+
return t;
|
|
3315
2856
|
}
|
|
3316
2857
|
export {
|
|
3317
|
-
|
|
3318
|
-
|
|
3319
|
-
|
|
3320
|
-
|
|
3321
|
-
|
|
3322
|
-
|
|
3323
|
-
|
|
3324
|
-
|
|
3325
|
-
|
|
3326
|
-
|
|
3327
|
-
|
|
3328
|
-
|
|
3329
|
-
|
|
3330
|
-
|
|
3331
|
-
|
|
3332
|
-
|
|
3333
|
-
|
|
3334
|
-
|
|
3335
|
-
|
|
3336
|
-
|
|
3337
|
-
|
|
3338
|
-
|
|
3339
|
-
|
|
3340
|
-
|
|
3341
|
-
|
|
3342
|
-
|
|
3343
|
-
|
|
3344
|
-
|
|
3345
|
-
|
|
3346
|
-
|
|
3347
|
-
|
|
3348
|
-
|
|
3349
|
-
|
|
3350
|
-
|
|
3351
|
-
|
|
3352
|
-
|
|
3353
|
-
|
|
3354
|
-
|
|
3355
|
-
|
|
3356
|
-
|
|
3357
|
-
|
|
3358
|
-
|
|
3359
|
-
|
|
3360
|
-
|
|
3361
|
-
|
|
3362
|
-
|
|
3363
|
-
|
|
3364
|
-
|
|
3365
|
-
|
|
3366
|
-
|
|
3367
|
-
|
|
3368
|
-
|
|
3369
|
-
|
|
3370
|
-
|
|
3371
|
-
yt as getCSRFToken,
|
|
3372
|
-
ks as getCalibration,
|
|
3373
|
-
_s as getLastBenchmarkDetail,
|
|
3374
|
-
gs as getObservationsEndpoint,
|
|
3375
|
-
As as getOperationTable,
|
|
3376
|
-
ke as measureEllapsedTime,
|
|
3377
|
-
vs as onCalibrationChange,
|
|
3378
|
-
Is as parseScript,
|
|
3379
|
-
gt as requestInterceptor,
|
|
3380
|
-
mt as responseInterceptor,
|
|
3381
|
-
zr as runBenchmarks,
|
|
3382
|
-
Rs as serializeHistory,
|
|
3383
|
-
D as shouldUseWorker,
|
|
3384
|
-
Es as subtractHours,
|
|
3385
|
-
oe as timeUnitMultipliers
|
|
2858
|
+
_r as ApiKey,
|
|
2859
|
+
Rr as Collaborator,
|
|
2860
|
+
Je as DEFAULT_SNACK_DURATION,
|
|
2861
|
+
Ir as DataSource,
|
|
2862
|
+
gr as Datastream,
|
|
2863
|
+
S as EnumEditOperations,
|
|
2864
|
+
L as EnumFilterOperations,
|
|
2865
|
+
B as FilterOperation,
|
|
2866
|
+
gt as HydroShareArchive,
|
|
2867
|
+
W as INCREASE_AMOUNT,
|
|
2868
|
+
yt as Location,
|
|
2869
|
+
wt as LogicalOperation,
|
|
2870
|
+
Ar as OAuthProvider,
|
|
2871
|
+
Wr as ObservationRecord,
|
|
2872
|
+
Er as ObservedProperty,
|
|
2873
|
+
mt as Operator,
|
|
2874
|
+
kr as Organization,
|
|
2875
|
+
Mr as Payload,
|
|
2876
|
+
bt as PermissionAction,
|
|
2877
|
+
Et as PermissionResource,
|
|
2878
|
+
Nt as Position,
|
|
2879
|
+
mr as PostHydroShareArchive,
|
|
2880
|
+
Sr as ProcessingLevel,
|
|
2881
|
+
V as QC_SCRIPT_VERSION,
|
|
2882
|
+
vr as ResultQualifier,
|
|
2883
|
+
br as Sensor,
|
|
2884
|
+
Ft as Snack,
|
|
2885
|
+
Ke as SnackColor,
|
|
2886
|
+
Qe as SnackIcon,
|
|
2887
|
+
Ze as SnackTitle,
|
|
2888
|
+
Dr as Snackbar,
|
|
2889
|
+
wr as Thing,
|
|
2890
|
+
N as TimeUnit,
|
|
2891
|
+
yr as Unit,
|
|
2892
|
+
Lr as User,
|
|
2893
|
+
Tr as Workspace,
|
|
2894
|
+
Xr as applyScript,
|
|
2895
|
+
Pr as clearCalibration,
|
|
2896
|
+
jr as ensureCalibration,
|
|
2897
|
+
x as findFirstGreaterOrEqual,
|
|
2898
|
+
C as findLastLessOrEqual,
|
|
2899
|
+
Ur as formatDate,
|
|
2900
|
+
Or as formatDuration,
|
|
2901
|
+
Nr as getCalibration,
|
|
2902
|
+
Fr as getLastBenchmarkDetail,
|
|
2903
|
+
Br as getOperationTable,
|
|
2904
|
+
re as measureEllapsedTime,
|
|
2905
|
+
Cr as onCalibrationChange,
|
|
2906
|
+
Gr as parseScript,
|
|
2907
|
+
cr as runBenchmarks,
|
|
2908
|
+
Yr as serializeHistory,
|
|
2909
|
+
U as shouldUseWorker,
|
|
2910
|
+
xr as subtractHours,
|
|
2911
|
+
G as timeUnitMultipliers
|
|
3386
2912
|
};
|