@sanity/sdk 2.2.0 → 2.3.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/dist/index.d.ts +19 -339
- package/dist/index.js +142 -1779
- package/dist/index.js.map +1 -1
- package/package.json +5 -5
- package/src/_exports/index.ts +1 -0
- package/src/auth/utils.test.ts +34 -0
- package/src/auth/utils.ts +10 -2
- package/src/document/permissions.test.ts +2 -3
- package/src/document/permissions.ts +3 -3
- package/src/document/processActions.test.ts +1 -1
- package/src/document/processActions.ts +3 -3
- package/src/projection/getProjectionState.ts +5 -5
- package/src/projection/projectionQuery.test.ts +5 -6
- package/src/projection/projectionQuery.ts +4 -7
- package/src/projection/resolveProjection.test.ts +2 -2
- package/src/projection/resolveProjection.ts +2 -2
- package/src/projection/types.ts +9 -6
- package/src/projection/util.ts +2 -4
- package/src/query/queryStore.ts +14 -2
- package/src/utils/getCorsErrorProjectId.test.ts +46 -0
- package/src/utils/getCorsErrorProjectId.ts +15 -0
- package/src/document/_synchronous-groq-js.mjs +0 -4
package/dist/index.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { createClient } from "@sanity/client";
|
|
1
|
+
import { createClient, CorsOriginError } from "@sanity/client";
|
|
2
2
|
import { Observable, share, map, distinctUntilChanged, skip, filter, exhaustMap, from, timer, switchMap, takeWhile, firstValueFrom, fromEvent, EMPTY, defer, asapScheduler, combineLatest, of, concatMap, withLatestFrom, concat, throwError, first as first$1, Subject, takeUntil, partition, merge, shareReplay, tap as tap$1, catchError as catchError$1, startWith as startWith$1, pairwise as pairwise$1, groupBy as groupBy$1, mergeMap as mergeMap$1, throttle, race, NEVER, Subscription, retry, debounceTime as debounceTime$1 } from "rxjs";
|
|
3
3
|
import { devtools } from "zustand/middleware";
|
|
4
4
|
import { createStore } from "zustand/vanilla";
|
|
@@ -10,6 +10,7 @@ import { SanityEncoder } from "@sanity/mutate";
|
|
|
10
10
|
import { getPublishedId as getPublishedId$1 } from "@sanity/client/csm";
|
|
11
11
|
import { jsonMatch, stringifyPath, slicePath, getIndexForKey } from "@sanity/json-match";
|
|
12
12
|
import { getIndexForKey as getIndexForKey2, getPathDepth, joinPaths, jsonMatch as jsonMatch2, slicePath as slicePath2, stringifyPath as stringifyPath2 } from "@sanity/json-match";
|
|
13
|
+
import { evaluateSync, parse } from "groq-js";
|
|
13
14
|
import { diffValue } from "@sanity/diff-patch";
|
|
14
15
|
import { applyPatches, parsePatch } from "@sanity/diff-match-patch";
|
|
15
16
|
import { isKeySegment, isKeyedObject } from "@sanity/types";
|
|
@@ -379,8 +380,14 @@ function getDefaultLocation() {
|
|
|
379
380
|
}
|
|
380
381
|
}
|
|
381
382
|
function getCleanedUrl(locationUrl) {
|
|
382
|
-
const loc = new URL(locationUrl);
|
|
383
|
-
|
|
383
|
+
const loc = new URL(locationUrl), rawHash = loc.hash.startsWith("#") ? loc.hash.slice(1) : loc.hash;
|
|
384
|
+
if (rawHash && rawHash.includes("=")) {
|
|
385
|
+
const hashParams = new URLSearchParams(rawHash);
|
|
386
|
+
hashParams.delete("token"), hashParams.delete("withSid");
|
|
387
|
+
const nextHash = hashParams.toString();
|
|
388
|
+
loc.hash = nextHash ? `#${nextHash}` : "";
|
|
389
|
+
}
|
|
390
|
+
return loc.searchParams.delete("sid"), loc.searchParams.delete("url"), loc.toString();
|
|
384
391
|
}
|
|
385
392
|
async function checkForCookieAuth(projectId, clientFactory) {
|
|
386
393
|
if (!projectId) return !1;
|
|
@@ -444,7 +451,7 @@ const subscribeToStateAndFetchCurrentUser = ({
|
|
|
444
451
|
const { storageArea, storageKey } = state.get().options;
|
|
445
452
|
return defer(getStorageEvents).pipe(
|
|
446
453
|
filter(
|
|
447
|
-
(
|
|
454
|
+
(e) => e.storageArea === storageArea && e.key === storageKey
|
|
448
455
|
),
|
|
449
456
|
map(() => getTokenFromStorage(storageArea, storageKey)),
|
|
450
457
|
distinctUntilChanged()
|
|
@@ -651,8 +658,8 @@ function createFetcherStore({
|
|
|
651
658
|
state
|
|
652
659
|
}) => state.observable.pipe(
|
|
653
660
|
// Map the state to an array of [serialized, entry] pairs.
|
|
654
|
-
switchMap$1((
|
|
655
|
-
const entries = Object.entries(
|
|
661
|
+
switchMap$1((s) => {
|
|
662
|
+
const entries = Object.entries(s.stateByParams);
|
|
656
663
|
return entries.length > 0 ? from(entries) : EMPTY;
|
|
657
664
|
}),
|
|
658
665
|
// Group by the serialized key.
|
|
@@ -760,7 +767,7 @@ function createFetcherStore({
|
|
|
760
767
|
})
|
|
761
768
|
), resolveState = bindActionGlobally(
|
|
762
769
|
store,
|
|
763
|
-
({ instance }, ...params) => firstValueFrom(getState(instance, ...params).observable.pipe(first((
|
|
770
|
+
({ instance }, ...params) => firstValueFrom(getState(instance, ...params).observable.pipe(first((i) => i !== void 0)))
|
|
764
771
|
);
|
|
765
772
|
return { getState, resolveState };
|
|
766
773
|
}
|
|
@@ -1067,8 +1074,8 @@ function deleteDocument(doc) {
|
|
|
1067
1074
|
};
|
|
1068
1075
|
}
|
|
1069
1076
|
function convertSanityMutatePatch(sanityPatchMutation) {
|
|
1070
|
-
return SanityEncoder.encode(sanityPatchMutation).map((
|
|
1071
|
-
const copy = { ...
|
|
1077
|
+
return SanityEncoder.encode(sanityPatchMutation).map((i) => {
|
|
1078
|
+
const copy = { ...i.patch };
|
|
1072
1079
|
return "id" in copy && delete copy.id, copy;
|
|
1073
1080
|
});
|
|
1074
1081
|
}
|
|
@@ -1230,8 +1237,8 @@ function dec(input, pathExpressionValues) {
|
|
|
1230
1237
|
}
|
|
1231
1238
|
function diffMatchPatch(input, pathExpressionValues) {
|
|
1232
1239
|
const result = Object.entries(pathExpressionValues).flatMap(
|
|
1233
|
-
([pathExpression, dmp]) => Array.from(jsonMatch(input, pathExpression)).map((
|
|
1234
|
-
).filter((
|
|
1240
|
+
([pathExpression, dmp]) => Array.from(jsonMatch(input, pathExpression)).map((m) => ({ ...m, dmp }))
|
|
1241
|
+
).filter((i) => i.value !== void 0).map(({ path, value, dmp }) => {
|
|
1235
1242
|
if (typeof value != "string")
|
|
1236
1243
|
throw new Error(
|
|
1237
1244
|
`Can't diff-match-patch \`${JSON.stringify(value)}\` at path \`${stringifyPath(path)}\`, because it is not a string`
|
|
@@ -1274,7 +1281,7 @@ function setDeep(input, path, value) {
|
|
|
1274
1281
|
if (Array.isArray(input)) {
|
|
1275
1282
|
let index;
|
|
1276
1283
|
return isKeySegment(currentSegment) ? index = getIndexForKey(input, currentSegment._key) ?? input.length : typeof currentSegment == "number" && (index = currentSegment < 0 ? input.length + currentSegment : currentSegment), index === void 0 ? input : index in input ? input.map(
|
|
1277
|
-
(nestedInput,
|
|
1284
|
+
(nestedInput, i) => i === index ? setDeep(nestedInput, restOfPath, value) : nestedInput
|
|
1278
1285
|
) : [
|
|
1279
1286
|
...input,
|
|
1280
1287
|
...Array.from({ length: index - input.length }).fill(null),
|
|
@@ -1468,7 +1475,7 @@ function sortListenerEvents(options) {
|
|
|
1468
1475
|
let baseRevision = state.base.revision, progress = !0;
|
|
1469
1476
|
for (; progress; ) {
|
|
1470
1477
|
progress = !1;
|
|
1471
|
-
const idx = buffer.findIndex((
|
|
1478
|
+
const idx = buffer.findIndex((e) => e.previousRev === baseRevision);
|
|
1472
1479
|
if (idx !== -1) {
|
|
1473
1480
|
const [next] = buffer.splice(idx, 1);
|
|
1474
1481
|
emitEvents.push(next), baseRevision = next.transition === "disappear" ? void 0 : next.resultRev, progress = !0;
|
|
@@ -1513,13 +1520,13 @@ function sortListenerEvents(options) {
|
|
|
1513
1520
|
const listen$1 = ({ state }, documentId) => {
|
|
1514
1521
|
const { sharedListener, fetchDocument } = state.get();
|
|
1515
1522
|
return sharedListener.events.pipe(
|
|
1516
|
-
concatMap((
|
|
1523
|
+
concatMap((e) => e.type === "welcome" ? fetchDocument(documentId).pipe(
|
|
1517
1524
|
map((document2) => ({ type: "sync", document: document2 }))
|
|
1518
|
-
) :
|
|
1525
|
+
) : e.type === "mutation" && e.documentId === documentId ? of(e) : EMPTY),
|
|
1519
1526
|
sortListenerEvents(),
|
|
1520
1527
|
withLatestFrom(
|
|
1521
1528
|
state.observable.pipe(
|
|
1522
|
-
map((
|
|
1529
|
+
map((s) => s.documentStates[documentId]),
|
|
1523
1530
|
filter(Boolean),
|
|
1524
1531
|
distinctUntilChanged()
|
|
1525
1532
|
)
|
|
@@ -1552,1665 +1559,6 @@ const listen$1 = ({ state }, documentId) => {
|
|
|
1552
1559
|
})
|
|
1553
1560
|
);
|
|
1554
1561
|
};
|
|
1555
|
-
class e {
|
|
1556
|
-
pattern;
|
|
1557
|
-
patternRe;
|
|
1558
|
-
constructor(e3) {
|
|
1559
|
-
this.pattern = e3, this.patternRe = function(e4) {
|
|
1560
|
-
const t2 = [];
|
|
1561
|
-
for (const r2 of e4.split(".")) r2 === "*" ? t2.push("[^.]+") : r2 === "**" ? t2.push(".*") : t2.push(r2.replace(/[.*+?^${}()|[\]\\]/g, "\\$&"));
|
|
1562
|
-
return new RegExp(`^${t2.join(".")}$`);
|
|
1563
|
-
}(e3);
|
|
1564
|
-
}
|
|
1565
|
-
matches(e3) {
|
|
1566
|
-
return this.patternRe.test(e3);
|
|
1567
|
-
}
|
|
1568
|
-
toJSON() {
|
|
1569
|
-
return this.pattern;
|
|
1570
|
-
}
|
|
1571
|
-
}
|
|
1572
|
-
class t {
|
|
1573
|
-
type = "stream";
|
|
1574
|
-
generator;
|
|
1575
|
-
ticker;
|
|
1576
|
-
isDone;
|
|
1577
|
-
data;
|
|
1578
|
-
constructor(e3) {
|
|
1579
|
-
this.generator = e3, this.ticker = null, this.isDone = !1, this.data = [];
|
|
1580
|
-
}
|
|
1581
|
-
isArray() {
|
|
1582
|
-
return !0;
|
|
1583
|
-
}
|
|
1584
|
-
async get() {
|
|
1585
|
-
const e3 = [];
|
|
1586
|
-
for await (const t2 of this) e3.push(await t2.get());
|
|
1587
|
-
return e3;
|
|
1588
|
-
}
|
|
1589
|
-
async first(e3 = () => !0) {
|
|
1590
|
-
for await (const t2 of this) if (e3(t2)) return t2;
|
|
1591
|
-
}
|
|
1592
|
-
async reduce(e3, t2) {
|
|
1593
|
-
let r2 = t2;
|
|
1594
|
-
for await (const t3 of this) r2 = await e3(r2, t3);
|
|
1595
|
-
return r2;
|
|
1596
|
-
}
|
|
1597
|
-
async *[Symbol.asyncIterator]() {
|
|
1598
|
-
let e3 = 0;
|
|
1599
|
-
for (; ; ) {
|
|
1600
|
-
for (; e3 < this.data.length; e3++) yield this.data[e3];
|
|
1601
|
-
if (this.isDone) return;
|
|
1602
|
-
await this._nextTick();
|
|
1603
|
-
}
|
|
1604
|
-
}
|
|
1605
|
-
_nextTick() {
|
|
1606
|
-
if (this.ticker) return this.ticker;
|
|
1607
|
-
let e3;
|
|
1608
|
-
const t2 = () => {
|
|
1609
|
-
this.ticker = new Promise((t3) => {
|
|
1610
|
-
e3 = t3;
|
|
1611
|
-
});
|
|
1612
|
-
}, r2 = () => {
|
|
1613
|
-
e3(), t2();
|
|
1614
|
-
};
|
|
1615
|
-
return t2(), (async () => {
|
|
1616
|
-
for await (const e4 of this.generator()) this.data.push(e4), r2();
|
|
1617
|
-
this.isDone = !0, r2();
|
|
1618
|
-
})(), this.ticker;
|
|
1619
|
-
}
|
|
1620
|
-
}
|
|
1621
|
-
const r = /^\d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2}(\.\d+)?(Z|([-+]\d{2}:\d{2}))$/;
|
|
1622
|
-
function n(e3, t2) {
|
|
1623
|
-
let r2 = e3.toString();
|
|
1624
|
-
for (; r2.length < t2; ) r2 = `0${r2}`;
|
|
1625
|
-
return r2;
|
|
1626
|
-
}
|
|
1627
|
-
class o {
|
|
1628
|
-
data;
|
|
1629
|
-
type;
|
|
1630
|
-
constructor(e3, t2) {
|
|
1631
|
-
this.data = e3, this.type = t2;
|
|
1632
|
-
}
|
|
1633
|
-
isArray() {
|
|
1634
|
-
return this.type === "array";
|
|
1635
|
-
}
|
|
1636
|
-
get() {
|
|
1637
|
-
return this.data;
|
|
1638
|
-
}
|
|
1639
|
-
first(e3 = () => !0) {
|
|
1640
|
-
if (!this.isArray()) throw new Error("`first` can only be called on array `StaticValue`s");
|
|
1641
|
-
const t2 = this.get();
|
|
1642
|
-
for (const r2 of t2) {
|
|
1643
|
-
const t3 = f(r2, "sync");
|
|
1644
|
-
if (e3(t3)) return t3;
|
|
1645
|
-
}
|
|
1646
|
-
}
|
|
1647
|
-
reduce(e3, t2) {
|
|
1648
|
-
if (!this.isArray()) throw new Error("`reduce` can only be called on array `StaticValue`s");
|
|
1649
|
-
const r2 = this.get();
|
|
1650
|
-
let n2 = t2;
|
|
1651
|
-
for (const t3 of r2)
|
|
1652
|
-
n2 = e3(n2, f(t3, "sync"));
|
|
1653
|
-
return n2;
|
|
1654
|
-
}
|
|
1655
|
-
[Symbol.asyncIterator]() {
|
|
1656
|
-
if (Array.isArray(this.data)) return function* (e3) {
|
|
1657
|
-
for (const t2 of e3) yield f(t2, "async");
|
|
1658
|
-
}(this.data);
|
|
1659
|
-
throw new Error(`Cannot iterate over: ${this.type}`);
|
|
1660
|
-
}
|
|
1661
|
-
}
|
|
1662
|
-
const i = new o(null, "null"), s = new o(!0, "boolean"), a = new o(!1, "boolean");
|
|
1663
|
-
class c {
|
|
1664
|
-
date;
|
|
1665
|
-
constructor(e3) {
|
|
1666
|
-
this.date = e3;
|
|
1667
|
-
}
|
|
1668
|
-
static parseToValue(e3) {
|
|
1669
|
-
const t2 = function(e4) {
|
|
1670
|
-
return r.test(e4) ? new Date(e4) : null;
|
|
1671
|
-
}(e3);
|
|
1672
|
-
return t2 ? new o(new c(t2), "datetime") : i;
|
|
1673
|
-
}
|
|
1674
|
-
equals(e3) {
|
|
1675
|
-
return this.date.getTime() == e3.date.getTime();
|
|
1676
|
-
}
|
|
1677
|
-
add(e3) {
|
|
1678
|
-
const t2 = new Date(this.date.getTime());
|
|
1679
|
-
return t2.setTime(t2.getTime() + 1e3 * e3), new c(t2);
|
|
1680
|
-
}
|
|
1681
|
-
difference(e3) {
|
|
1682
|
-
return (this.date.getTime() - e3.date.getTime()) / 1e3;
|
|
1683
|
-
}
|
|
1684
|
-
compareTo(e3) {
|
|
1685
|
-
return this.date.getTime() - e3.date.getTime();
|
|
1686
|
-
}
|
|
1687
|
-
toString() {
|
|
1688
|
-
return function(e3) {
|
|
1689
|
-
const t2 = n(e3.getUTCFullYear(), 4), r2 = n(e3.getUTCMonth() + 1, 2), o2 = n(e3.getUTCDate(), 2), i2 = n(e3.getUTCHours(), 2), s2 = n(e3.getUTCMinutes(), 2), a2 = n(e3.getUTCSeconds(), 2);
|
|
1690
|
-
let c2 = "";
|
|
1691
|
-
const u2 = e3.getMilliseconds();
|
|
1692
|
-
return u2 != 0 && (c2 = `.${n(u2, 3)}`), `${t2}-${r2}-${o2}T${i2}:${s2}:${a2}${c2}Z`;
|
|
1693
|
-
}(this.date);
|
|
1694
|
-
}
|
|
1695
|
-
toJSON() {
|
|
1696
|
-
return this.toString();
|
|
1697
|
-
}
|
|
1698
|
-
}
|
|
1699
|
-
function u(e3) {
|
|
1700
|
-
return Number.isFinite(e3) ? new o(e3, "number") : i;
|
|
1701
|
-
}
|
|
1702
|
-
function p(e3) {
|
|
1703
|
-
return new o(e3, "string");
|
|
1704
|
-
}
|
|
1705
|
-
function l(e3) {
|
|
1706
|
-
return new o(e3, "datetime");
|
|
1707
|
-
}
|
|
1708
|
-
function f(e3, r2) {
|
|
1709
|
-
return (n2 = e3) && typeof n2.next == "function" && r2 !== "sync" ? new t(async function* () {
|
|
1710
|
-
for await (const t2 of e3) yield f(t2, "async");
|
|
1711
|
-
}) : e3 == null ? i : new o(e3, y(e3));
|
|
1712
|
-
var n2;
|
|
1713
|
-
}
|
|
1714
|
-
function y(t2) {
|
|
1715
|
-
return t2 === null || typeof t2 > "u" ? "null" : Array.isArray(t2) ? "array" : t2 instanceof e ? "path" : t2 instanceof c ? "datetime" : typeof t2;
|
|
1716
|
-
}
|
|
1717
|
-
const d = (e3) => typeof e3 == "object" && !!e3 && "then" in e3 && typeof e3.then == "function";
|
|
1718
|
-
function h(e3) {
|
|
1719
|
-
const t2 = e3(), r2 = t2.next();
|
|
1720
|
-
if (r2.done) return r2.value;
|
|
1721
|
-
function n2(e4) {
|
|
1722
|
-
const r3 = t2.next(e4);
|
|
1723
|
-
if (r3.done) return r3.value;
|
|
1724
|
-
const o3 = r3.value;
|
|
1725
|
-
return o3 && d(o3) ? o3.then(n2) : n2(o3);
|
|
1726
|
-
}
|
|
1727
|
-
const o2 = r2.value;
|
|
1728
|
-
return o2 && d(o2) ? o2.then(n2) : n2(o2);
|
|
1729
|
-
}
|
|
1730
|
-
function m(e3, t2) {
|
|
1731
|
-
return e3.type === "string" && t2.type === "string" || e3.type === "boolean" && t2.type === "boolean" || e3.type === "null" && t2.type === "null" || e3.type === "number" && t2.type === "number" ? e3.data === t2.data : e3.type === "datetime" && t2.type === "datetime" && e3.data.equals(t2.data);
|
|
1732
|
-
}
|
|
1733
|
-
const b = /([^!@#$%^&*(),\\/?";:{}|[\]+<>\s-])+/g, g = /([^!@#$%^&(),\\/?";:{}|[\]+<>\s-])+/g, w = /(\b\.+|\.+\b)/g;
|
|
1734
|
-
function k(e3) {
|
|
1735
|
-
return e3.replace(w, "").match(b) || [];
|
|
1736
|
-
}
|
|
1737
|
-
function v(e3) {
|
|
1738
|
-
return x(e3).map((e4) => (t2) => t2.some((t3) => e4.test(t3)));
|
|
1739
|
-
}
|
|
1740
|
-
function x(e3) {
|
|
1741
|
-
return (e3.replace(w, "").match(g) || []).map((e4) => new RegExp(`^${e4.slice(0, 1024).replace(/\*/g, ".*")}$`, "i"));
|
|
1742
|
-
}
|
|
1743
|
-
const _ = { datetime: 1, number: 2, string: 3, boolean: 4 };
|
|
1744
|
-
function A(e3, t2) {
|
|
1745
|
-
const r2 = y(e3);
|
|
1746
|
-
if (r2 !== y(t2)) return null;
|
|
1747
|
-
switch (r2) {
|
|
1748
|
-
case "number":
|
|
1749
|
-
case "boolean":
|
|
1750
|
-
return e3 - t2;
|
|
1751
|
-
case "string":
|
|
1752
|
-
return e3 < t2 ? -1 : e3 > t2 ? 1 : 0;
|
|
1753
|
-
case "datetime":
|
|
1754
|
-
return e3.compareTo(t2);
|
|
1755
|
-
default:
|
|
1756
|
-
return null;
|
|
1757
|
-
}
|
|
1758
|
-
}
|
|
1759
|
-
function E(e3, t2) {
|
|
1760
|
-
const r2 = y(e3), n2 = y(t2), o2 = _[r2] || 100, i2 = _[n2] || 100;
|
|
1761
|
-
if (o2 !== i2) return o2 - i2;
|
|
1762
|
-
let s2 = A(e3, t2);
|
|
1763
|
-
return s2 === null && (s2 = 0), s2;
|
|
1764
|
-
}
|
|
1765
|
-
const j = { "==": function(e3, t2) {
|
|
1766
|
-
return m(e3, t2) ? s : a;
|
|
1767
|
-
}, "!=": function(e3, t2) {
|
|
1768
|
-
return m(e3, t2) ? a : s;
|
|
1769
|
-
}, ">": function(e3, t2) {
|
|
1770
|
-
if (e3.type === "stream" || t2.type === "stream") return i;
|
|
1771
|
-
const r2 = A(e3.data, t2.data);
|
|
1772
|
-
return r2 === null ? i : r2 > 0 ? s : a;
|
|
1773
|
-
}, ">=": function(e3, t2) {
|
|
1774
|
-
if (e3.type === "stream" || t2.type === "stream") return i;
|
|
1775
|
-
const r2 = A(e3.data, t2.data);
|
|
1776
|
-
return r2 === null ? i : r2 >= 0 ? s : a;
|
|
1777
|
-
}, "<": function(e3, t2) {
|
|
1778
|
-
if (e3.type === "stream" || t2.type === "stream") return i;
|
|
1779
|
-
const r2 = A(e3.data, t2.data);
|
|
1780
|
-
return r2 === null ? i : r2 < 0 ? s : a;
|
|
1781
|
-
}, "<=": function(e3, t2) {
|
|
1782
|
-
if (e3.type === "stream" || t2.type === "stream") return i;
|
|
1783
|
-
const r2 = A(e3.data, t2.data);
|
|
1784
|
-
return r2 === null ? i : r2 <= 0 ? s : a;
|
|
1785
|
-
}, in: function(e3, t2) {
|
|
1786
|
-
return h(function* () {
|
|
1787
|
-
return t2.type === "path" ? e3.type !== "string" ? i : t2.data.matches(e3.data) ? s : a : t2.isArray() ? (yield t2.first((t3) => m(e3, t3))) ? s : a : i;
|
|
1788
|
-
});
|
|
1789
|
-
}, match: function(e3, t2) {
|
|
1790
|
-
return h(function* () {
|
|
1791
|
-
const r2 = yield e3.get(), n2 = yield t2.get();
|
|
1792
|
-
let o2, i2 = [];
|
|
1793
|
-
return Array.isArray(r2) ? i2 = r2.filter((e4) => typeof e4 == "string") : typeof r2 == "string" && (i2 = [r2]), Array.isArray(n2) ? o2 = n2.filter((e4) => typeof e4 == "string") : typeof n2 == "string" && (o2 = [n2]), o2?.length && function(e4, t3) {
|
|
1794
|
-
return e4.length !== 0 && t3.length !== 0 && t3.every((t4) => t4(e4));
|
|
1795
|
-
}(i2.flatMap(k), o2.flatMap(v)) ? s : a;
|
|
1796
|
-
});
|
|
1797
|
-
}, "+": function(e3, r2, n2) {
|
|
1798
|
-
return e3.type === "datetime" && r2.type === "number" ? l(e3.data.add(r2.data)) : e3.type === "number" && r2.type === "number" ? u(e3.data + r2.data) : e3.type === "string" && r2.type === "string" ? p(e3.data + r2.data) : e3.type === "object" && r2.type === "object" ? f({ ...e3.data, ...r2.data }, n2) : e3.type === "array" && r2.type === "array" ? f(e3.data.concat(r2.data), n2) : e3.isArray() && r2.isArray() ? n2 === "sync" ? h(function* () {
|
|
1799
|
-
const t2 = [...yield e3.get(), ...yield r2.get()];
|
|
1800
|
-
return new o(t2, "array");
|
|
1801
|
-
}) : new t(async function* () {
|
|
1802
|
-
for await (const t2 of e3) yield t2;
|
|
1803
|
-
for await (const e4 of r2) yield e4;
|
|
1804
|
-
}) : i;
|
|
1805
|
-
}, "-": function(e3, t2) {
|
|
1806
|
-
return e3.type === "datetime" && t2.type === "number" ? l(e3.data.add(-t2.data)) : e3.type === "datetime" && t2.type === "datetime" ? u(e3.data.difference(t2.data)) : e3.type === "number" && t2.type === "number" ? u(e3.data - t2.data) : i;
|
|
1807
|
-
}, "*": S((e3, t2) => e3 * t2), "/": S((e3, t2) => e3 / t2), "%": S((e3, t2) => e3 % t2), "**": S((e3, t2) => Math.pow(e3, t2)) };
|
|
1808
|
-
function S(e3) {
|
|
1809
|
-
return function(t2, r2) {
|
|
1810
|
-
return t2.type === "number" && r2.type === "number" ? u(e3(t2.data, r2.data)) : i;
|
|
1811
|
-
};
|
|
1812
|
-
}
|
|
1813
|
-
let O = class e2 {
|
|
1814
|
-
params;
|
|
1815
|
-
source;
|
|
1816
|
-
value;
|
|
1817
|
-
parent;
|
|
1818
|
-
context;
|
|
1819
|
-
isHidden = !1;
|
|
1820
|
-
constructor(e3, t2, r2, n2, o2) {
|
|
1821
|
-
this.params = e3, this.source = t2, this.value = r2, this.context = n2, this.parent = o2;
|
|
1822
|
-
}
|
|
1823
|
-
createNested(t2) {
|
|
1824
|
-
return this.isHidden ? new e2(this.params, this.source, t2, this.context, this.parent) : new e2(this.params, this.source, t2, this.context, this);
|
|
1825
|
-
}
|
|
1826
|
-
createHidden(e3) {
|
|
1827
|
-
const t2 = this.createNested(e3);
|
|
1828
|
-
return t2.isHidden = !0, t2;
|
|
1829
|
-
}
|
|
1830
|
-
};
|
|
1831
|
-
function I(e3, t2, r2) {
|
|
1832
|
-
return (0, $[e3.type])(e3, t2, r2);
|
|
1833
|
-
}
|
|
1834
|
-
const $ = { This: (e3, t2) => t2.value, Selector() {
|
|
1835
|
-
throw new Error("Selectors can not be evaluated");
|
|
1836
|
-
}, Everything: (e3, t2) => t2.source, Parameter: ({ name: e3 }, t2, r2) => f(t2.params[e3], r2), Context({ key: e3 }, t2) {
|
|
1837
|
-
if (e3 === "before" || e3 === "after") return t2.context[e3] || i;
|
|
1838
|
-
throw new Error(`unknown context key: ${e3}`);
|
|
1839
|
-
}, Parent({ n: e3 }, t2) {
|
|
1840
|
-
let r2 = t2;
|
|
1841
|
-
for (let t3 = 0; t3 < e3; t3++) {
|
|
1842
|
-
if (!r2.parent) return i;
|
|
1843
|
-
r2 = r2.parent;
|
|
1844
|
-
}
|
|
1845
|
-
return r2.value;
|
|
1846
|
-
}, OpCall: ({ op: e3, left: t2, right: r2 }, n2, o2) => h(function* () {
|
|
1847
|
-
const i2 = j[e3];
|
|
1848
|
-
if (!i2) throw new Error(`Unknown operator: ${e3}`);
|
|
1849
|
-
const s2 = yield I(t2, n2, o2), a2 = yield I(r2, n2, o2);
|
|
1850
|
-
return yield i2(s2, a2, o2);
|
|
1851
|
-
}), Select: ({ alternatives: e3, fallback: t2 }, r2, n2) => h(function* () {
|
|
1852
|
-
for (const t3 of e3) {
|
|
1853
|
-
const e4 = yield I(t3.condition, r2, n2);
|
|
1854
|
-
if (e4.type === "boolean" && e4.data === !0) return yield I(t3.value, r2, n2);
|
|
1855
|
-
}
|
|
1856
|
-
return t2 ? yield I(t2, r2, n2) : i;
|
|
1857
|
-
}), InRange: ({ base: e3, left: t2, right: r2, isInclusive: n2 }, o2, c2) => h(function* () {
|
|
1858
|
-
const u2 = yield I(e3, o2, c2), p2 = yield I(t2, o2, c2), l2 = yield I(r2, o2, c2), f2 = A(yield u2.get(), yield p2.get());
|
|
1859
|
-
if (f2 === null) return i;
|
|
1860
|
-
const y2 = A(yield u2.get(), yield l2.get());
|
|
1861
|
-
return y2 === null ? i : n2 ? f2 >= 0 && y2 <= 0 ? s : a : f2 >= 0 && y2 < 0 ? s : a;
|
|
1862
|
-
}), Filter: ({ base: e3, expr: r2 }, n2, s2) => h(function* () {
|
|
1863
|
-
const a2 = yield I(e3, n2, s2);
|
|
1864
|
-
if (!a2.isArray()) return i;
|
|
1865
|
-
if (s2 === "sync") {
|
|
1866
|
-
const e4 = yield a2.get(), t2 = [];
|
|
1867
|
-
for (const o2 of e4) {
|
|
1868
|
-
const e5 = f(o2, s2), i2 = n2.createNested(e5), a3 = yield I(r2, i2, s2);
|
|
1869
|
-
a3.type === "boolean" && a3.data === !0 && t2.push(o2);
|
|
1870
|
-
}
|
|
1871
|
-
return new o(t2, "array");
|
|
1872
|
-
}
|
|
1873
|
-
return new t(async function* () {
|
|
1874
|
-
for await (const e4 of a2) {
|
|
1875
|
-
const t2 = n2.createNested(e4), o2 = await I(r2, t2, s2);
|
|
1876
|
-
o2.type === "boolean" && o2.data === !0 && (yield e4);
|
|
1877
|
-
}
|
|
1878
|
-
});
|
|
1879
|
-
}), Projection: ({ base: e3, expr: t2 }, r2, n2) => h(function* () {
|
|
1880
|
-
const o2 = yield I(e3, r2, n2);
|
|
1881
|
-
if (o2.type !== "object") return i;
|
|
1882
|
-
const s2 = r2.createNested(o2);
|
|
1883
|
-
return yield I(t2, s2, n2);
|
|
1884
|
-
}), FuncCall: ({ func: e3, args: t2 }, r2, n2) => e3(t2, r2, n2), PipeFuncCall: ({ func: e3, base: t2, args: r2 }, n2, o2) => h(function* () {
|
|
1885
|
-
const i2 = yield I(t2, n2, o2);
|
|
1886
|
-
return yield e3(i2, r2, n2, o2);
|
|
1887
|
-
}), AccessAttribute: ({ base: e3, name: t2 }, r2, n2) => h(function* () {
|
|
1888
|
-
let o2 = r2.value;
|
|
1889
|
-
return e3 && (o2 = yield I(e3, r2, n2)), o2.type === "object" && o2.data.hasOwnProperty(t2) ? f(o2.data[t2], n2) : i;
|
|
1890
|
-
}), AccessElement: ({ base: e3, index: t2 }, r2, n2) => h(function* () {
|
|
1891
|
-
const o2 = yield I(e3, r2, n2);
|
|
1892
|
-
if (!o2.isArray()) return i;
|
|
1893
|
-
const s2 = yield o2.get();
|
|
1894
|
-
return f(s2[t2 < 0 ? t2 + s2.length : t2], n2);
|
|
1895
|
-
}), Slice: ({ base: e3, left: t2, right: r2, isInclusive: n2 }, o2, s2) => h(function* () {
|
|
1896
|
-
const a2 = yield I(e3, o2, s2);
|
|
1897
|
-
if (!a2.isArray()) return i;
|
|
1898
|
-
const c2 = yield a2.get();
|
|
1899
|
-
let u2 = t2, p2 = r2;
|
|
1900
|
-
return u2 < 0 && (u2 = c2.length + u2), p2 < 0 && (p2 = c2.length + p2), n2 && p2++, u2 < 0 && (u2 = 0), p2 < 0 && (p2 = 0), f(c2.slice(u2, p2), s2);
|
|
1901
|
-
}), Deref: ({ base: e3 }, t2, r2) => h(function* () {
|
|
1902
|
-
const n2 = yield I(e3, t2, r2);
|
|
1903
|
-
if (!t2.source.isArray() || n2.type !== "object") return i;
|
|
1904
|
-
const o2 = n2.data._ref;
|
|
1905
|
-
return typeof o2 != "string" ? i : t2.context.dereference ? f(yield t2.context.dereference({ _ref: o2 }), r2) : (yield t2.source.first((e4) => e4.type === "object" && o2 == e4.data._id)) || i;
|
|
1906
|
-
}), Value: ({ value: e3 }, t2, r2) => f(e3, r2), Group: ({ base: e3 }, t2, r2) => I(e3, t2, r2), Object: ({ attributes: e3 }, t2, r2) => h(function* () {
|
|
1907
|
-
const n2 = {};
|
|
1908
|
-
for (const o2 of e3) {
|
|
1909
|
-
const e4 = o2.type;
|
|
1910
|
-
switch (o2.type) {
|
|
1911
|
-
case "ObjectAttributeValue": {
|
|
1912
|
-
const e5 = yield I(o2.value, t2, r2);
|
|
1913
|
-
n2[o2.name] = yield e5.get();
|
|
1914
|
-
break;
|
|
1915
|
-
}
|
|
1916
|
-
case "ObjectConditionalSplat": {
|
|
1917
|
-
const e5 = yield I(o2.condition, t2, r2);
|
|
1918
|
-
if (e5.type !== "boolean" || e5.data === !1) continue;
|
|
1919
|
-
const i2 = yield I(o2.value, t2, r2);
|
|
1920
|
-
i2.type === "object" && Object.assign(n2, i2.data);
|
|
1921
|
-
break;
|
|
1922
|
-
}
|
|
1923
|
-
case "ObjectSplat": {
|
|
1924
|
-
const e5 = yield I(o2.value, t2, r2);
|
|
1925
|
-
e5.type === "object" && Object.assign(n2, e5.data);
|
|
1926
|
-
break;
|
|
1927
|
-
}
|
|
1928
|
-
default:
|
|
1929
|
-
throw new Error(`Unknown node type: ${e4}`);
|
|
1930
|
-
}
|
|
1931
|
-
}
|
|
1932
|
-
return f(n2, r2);
|
|
1933
|
-
}), Array: ({ elements: e3 }, r2, n2) => h(function* () {
|
|
1934
|
-
if (n2 === "sync") {
|
|
1935
|
-
const t2 = [];
|
|
1936
|
-
for (const o2 of e3) {
|
|
1937
|
-
const e4 = yield I(o2.value, r2, n2);
|
|
1938
|
-
if (o2.isSplat) {
|
|
1939
|
-
if (e4.isArray()) {
|
|
1940
|
-
const r3 = yield e4.get();
|
|
1941
|
-
t2.push(...r3);
|
|
1942
|
-
}
|
|
1943
|
-
} else t2.push(yield e4.get());
|
|
1944
|
-
}
|
|
1945
|
-
return new o(t2, "array");
|
|
1946
|
-
}
|
|
1947
|
-
return new t(async function* () {
|
|
1948
|
-
for (const t2 of e3) {
|
|
1949
|
-
const e4 = await I(t2.value, r2, n2);
|
|
1950
|
-
if (t2.isSplat) {
|
|
1951
|
-
if (e4.isArray()) for await (const t3 of e4) yield t3;
|
|
1952
|
-
} else yield e4;
|
|
1953
|
-
}
|
|
1954
|
-
});
|
|
1955
|
-
}), Tuple() {
|
|
1956
|
-
throw new Error("tuples can not be evaluated");
|
|
1957
|
-
}, Or: ({ left: e3, right: t2 }, r2, n2) => h(function* () {
|
|
1958
|
-
const o2 = yield I(e3, r2, n2), c2 = yield I(t2, r2, n2);
|
|
1959
|
-
return o2.type === "boolean" && o2.data === !0 || c2.type === "boolean" && c2.data === !0 ? s : o2.type !== "boolean" || c2.type !== "boolean" ? i : a;
|
|
1960
|
-
}), And: ({ left: e3, right: t2 }, r2, n2) => h(function* () {
|
|
1961
|
-
const o2 = yield I(e3, r2, n2), c2 = yield I(t2, r2, n2);
|
|
1962
|
-
return o2.type === "boolean" && o2.data === !1 || c2.type === "boolean" && c2.data === !1 ? a : o2.type !== "boolean" || c2.type !== "boolean" ? i : s;
|
|
1963
|
-
}), Not: ({ base: e3 }, t2, r2) => h(function* () {
|
|
1964
|
-
const n2 = yield I(e3, t2, r2);
|
|
1965
|
-
return n2.type !== "boolean" ? i : n2.data ? a : s;
|
|
1966
|
-
}), Neg: ({ base: e3 }, t2, r2) => h(function* () {
|
|
1967
|
-
const n2 = yield I(e3, t2, r2);
|
|
1968
|
-
return n2.type !== "number" ? i : u(-n2.data);
|
|
1969
|
-
}), Pos: ({ base: e3 }, t2, r2) => h(function* () {
|
|
1970
|
-
const n2 = yield I(e3, t2, r2);
|
|
1971
|
-
return n2.type !== "number" ? i : u(n2.data);
|
|
1972
|
-
}), Asc: () => i, Desc: () => i, ArrayCoerce: ({ base: e3 }, t2, r2) => h(function* () {
|
|
1973
|
-
const n2 = yield I(e3, t2, r2);
|
|
1974
|
-
return n2.isArray() ? n2 : i;
|
|
1975
|
-
}), Map: ({ base: e3, expr: r2 }, n2, s2) => h(function* () {
|
|
1976
|
-
const a2 = yield I(e3, n2, s2);
|
|
1977
|
-
if (!a2.isArray()) return i;
|
|
1978
|
-
if (s2 === "sync") {
|
|
1979
|
-
const e4 = yield a2.get(), t2 = [];
|
|
1980
|
-
for (const o2 of e4) {
|
|
1981
|
-
const e5 = f(o2, "sync"), i2 = n2.createHidden(e5), a3 = yield I(r2, i2, s2);
|
|
1982
|
-
t2.push(yield a3.get());
|
|
1983
|
-
}
|
|
1984
|
-
return new o(t2, "array");
|
|
1985
|
-
}
|
|
1986
|
-
return new t(async function* () {
|
|
1987
|
-
for await (const e4 of a2) {
|
|
1988
|
-
const t2 = n2.createHidden(e4);
|
|
1989
|
-
yield await I(r2, t2, s2);
|
|
1990
|
-
}
|
|
1991
|
-
});
|
|
1992
|
-
}), FlatMap: ({ base: e3, expr: r2 }, n2, s2) => h(function* () {
|
|
1993
|
-
const a2 = yield I(e3, n2, s2);
|
|
1994
|
-
if (!a2.isArray()) return i;
|
|
1995
|
-
if (s2 === "sync") {
|
|
1996
|
-
const e4 = yield a2.get(), t2 = [];
|
|
1997
|
-
for (const o2 of e4) {
|
|
1998
|
-
const e5 = f(o2, "sync"), i2 = n2.createHidden(e5), a3 = yield I(r2, i2, s2);
|
|
1999
|
-
if (a3.isArray()) {
|
|
2000
|
-
const e6 = yield a3.get();
|
|
2001
|
-
t2.push(...e6);
|
|
2002
|
-
} else {
|
|
2003
|
-
const e6 = yield a3.get();
|
|
2004
|
-
t2.push(e6);
|
|
2005
|
-
}
|
|
2006
|
-
}
|
|
2007
|
-
return new o(t2, "array");
|
|
2008
|
-
}
|
|
2009
|
-
return new t(async function* () {
|
|
2010
|
-
for await (const e4 of a2) {
|
|
2011
|
-
const t2 = n2.createHidden(e4), o2 = await I(r2, t2, s2);
|
|
2012
|
-
if (o2.isArray()) for await (const e5 of o2) yield e5;
|
|
2013
|
-
else yield o2;
|
|
2014
|
-
}
|
|
2015
|
-
});
|
|
2016
|
-
}) };
|
|
2017
|
-
function C(e3, t2 = {}) {
|
|
2018
|
-
const r2 = f(t2.root, "sync"), n2 = f(t2.dataset, "sync"), o2 = { ...t2.params }, i2 = new O(o2, n2, r2, function(e4 = {}, t3) {
|
|
2019
|
-
return { timestamp: e4.timestamp || /* @__PURE__ */ new Date(), identity: e4.identity === void 0 ? "me" : e4.identity, sanity: e4.sanity, after: e4.after ? f(e4.after, t3) : null, before: e4.before ? f(e4.before, t3) : null, dereference: e4.dereference };
|
|
2020
|
-
}(t2, "sync"), null), s2 = I(e3, i2, "sync");
|
|
2021
|
-
if (d(s2)) throw new Error("Unexpected promise when evaluating. This expression may not support evaluateSync.");
|
|
2022
|
-
return s2;
|
|
2023
|
-
}
|
|
2024
|
-
function M(e3) {
|
|
2025
|
-
switch (e3.type) {
|
|
2026
|
-
case "Group":
|
|
2027
|
-
return M(e3.base);
|
|
2028
|
-
case "Value":
|
|
2029
|
-
case "Parameter":
|
|
2030
|
-
return !0;
|
|
2031
|
-
case "Pos":
|
|
2032
|
-
case "Neg":
|
|
2033
|
-
return M(e3.base);
|
|
2034
|
-
case "OpCall":
|
|
2035
|
-
switch (e3.op) {
|
|
2036
|
-
case "+":
|
|
2037
|
-
case "-":
|
|
2038
|
-
case "*":
|
|
2039
|
-
case "/":
|
|
2040
|
-
case "%":
|
|
2041
|
-
case "**":
|
|
2042
|
-
return M(e3.left) && M(e3.right);
|
|
2043
|
-
default:
|
|
2044
|
-
return !1;
|
|
2045
|
-
}
|
|
2046
|
-
default:
|
|
2047
|
-
return !1;
|
|
2048
|
-
}
|
|
2049
|
-
}
|
|
2050
|
-
const T = new O({}, i, i, { timestamp: /* @__PURE__ */ new Date(0), identity: "me", before: null, after: null }, null);
|
|
2051
|
-
function P(e3) {
|
|
2052
|
-
return M(e3) ? function(e4) {
|
|
2053
|
-
const t2 = I(e4, T, "sync");
|
|
2054
|
-
if (d(t2)) throw new Error("BUG: constant evaluate should never return a promise");
|
|
2055
|
-
return t2;
|
|
2056
|
-
}(e3) : null;
|
|
2057
|
-
}
|
|
2058
|
-
function N(e3, t2) {
|
|
2059
|
-
return h(function* () {
|
|
2060
|
-
if (e3.type === "object") return V(e3.data);
|
|
2061
|
-
if (e3.isArray()) {
|
|
2062
|
-
const r2 = yield U(e3, t2);
|
|
2063
|
-
if (r2.length > 0) return r2.join(`
|
|
2064
|
-
|
|
2065
|
-
`);
|
|
2066
|
-
}
|
|
2067
|
-
return null;
|
|
2068
|
-
});
|
|
2069
|
-
}
|
|
2070
|
-
function U(e3, t2) {
|
|
2071
|
-
return h(function* () {
|
|
2072
|
-
const r2 = [], n2 = yield e3.get();
|
|
2073
|
-
for (const e4 of n2) {
|
|
2074
|
-
const n3 = f(e4, t2);
|
|
2075
|
-
if (n3.type === "object") {
|
|
2076
|
-
const e5 = V(n3.data);
|
|
2077
|
-
e5 !== null && r2.push(e5);
|
|
2078
|
-
} else if (n3.isArray()) {
|
|
2079
|
-
const e5 = yield U(n3, t2);
|
|
2080
|
-
r2.push(...e5);
|
|
2081
|
-
}
|
|
2082
|
-
}
|
|
2083
|
-
return r2;
|
|
2084
|
-
});
|
|
2085
|
-
}
|
|
2086
|
-
function V(e3) {
|
|
2087
|
-
if (typeof e3._type != "string") return null;
|
|
2088
|
-
const t2 = e3.children;
|
|
2089
|
-
if (!Array.isArray(t2)) return null;
|
|
2090
|
-
let r2 = "";
|
|
2091
|
-
for (const e4 of t2) e4 && typeof e4 == "object" && typeof e4._type == "string" && e4._type === "span" && typeof e4.text == "string" && (r2 += e4.text);
|
|
2092
|
-
return r2;
|
|
2093
|
-
}
|
|
2094
|
-
const D = 1.2;
|
|
2095
|
-
function F(e3, t2, r2) {
|
|
2096
|
-
return h(function* () {
|
|
2097
|
-
if (e3.type === "OpCall" && e3.op === "match")
|
|
2098
|
-
return function(e4, t3) {
|
|
2099
|
-
return h(function* () {
|
|
2100
|
-
const r3 = yield e4.get(), n2 = yield t3.get();
|
|
2101
|
-
let o2, i2 = [];
|
|
2102
|
-
if (Array.isArray(r3) ? i2 = r3.filter((e5) => typeof e5 == "string") : typeof r3 == "string" && (i2 = [r3]), Array.isArray(n2) ? o2 = n2.filter((e5) => typeof e5 == "string") : typeof n2 == "string" && (o2 = [n2]), !o2?.length) return 0;
|
|
2103
|
-
const s2 = i2.flatMap(k), a2 = o2.flatMap(x);
|
|
2104
|
-
if (s2.length === 0 || a2.length === 0) return 0;
|
|
2105
|
-
let c2 = 0;
|
|
2106
|
-
for (const e5 of a2) {
|
|
2107
|
-
const t4 = s2.reduce((t5, r4) => t5 + (e5.test(r4) ? 1 : 0), 0);
|
|
2108
|
-
c2 += 2.2 * t4 / (t4 + D);
|
|
2109
|
-
}
|
|
2110
|
-
return c2;
|
|
2111
|
-
});
|
|
2112
|
-
}(yield I(e3.left, t2, r2), yield I(e3.right, t2, r2));
|
|
2113
|
-
if (e3.type === "FuncCall" && e3.name === "boost") {
|
|
2114
|
-
const n2 = yield F(e3.args[0], t2, r2), o2 = yield I(e3.args[1], t2, r2);
|
|
2115
|
-
return o2.type === "number" && n2 > 0 ? n2 + o2.data : 0;
|
|
2116
|
-
}
|
|
2117
|
-
switch (e3.type) {
|
|
2118
|
-
case "Or":
|
|
2119
|
-
return (yield F(e3.left, t2, r2)) + (yield F(e3.right, t2, r2));
|
|
2120
|
-
case "And": {
|
|
2121
|
-
const n2 = yield F(e3.left, t2, r2), o2 = yield F(e3.right, t2, r2);
|
|
2122
|
-
return n2 === 0 || o2 === 0 ? 0 : n2 + o2;
|
|
2123
|
-
}
|
|
2124
|
-
default: {
|
|
2125
|
-
const n2 = yield I(e3, t2, r2);
|
|
2126
|
-
return n2.type === "boolean" && n2.data === !0 ? 1 : 0;
|
|
2127
|
-
}
|
|
2128
|
-
}
|
|
2129
|
-
});
|
|
2130
|
-
}
|
|
2131
|
-
function R(e3, t2) {
|
|
2132
|
-
switch (y(e3)) {
|
|
2133
|
-
case "array":
|
|
2134
|
-
for (const r2 of e3) if (R(r2, t2)) return !0;
|
|
2135
|
-
break;
|
|
2136
|
-
case "object":
|
|
2137
|
-
if (e3._ref) return t2.has(e3._ref);
|
|
2138
|
-
for (const r2 of Object.values(e3)) if (R(r2, t2)) return !0;
|
|
2139
|
-
}
|
|
2140
|
-
return !1;
|
|
2141
|
-
}
|
|
2142
|
-
const q = { anywhere: function() {
|
|
2143
|
-
throw new Error("not implemented");
|
|
2144
|
-
} };
|
|
2145
|
-
q.anywhere.arity = 1, q.coalesce = function(e3, t2, r2) {
|
|
2146
|
-
return h(function* () {
|
|
2147
|
-
for (const n2 of e3) {
|
|
2148
|
-
const e4 = yield I(n2, t2, r2);
|
|
2149
|
-
if (e4.type !== "null") return e4;
|
|
2150
|
-
}
|
|
2151
|
-
return i;
|
|
2152
|
-
});
|
|
2153
|
-
}, q.count = function(e3, t2, r2) {
|
|
2154
|
-
return h(function* () {
|
|
2155
|
-
const n2 = yield I(e3[0], t2, r2);
|
|
2156
|
-
return n2.isArray() ? u(yield n2.reduce((e4) => e4 + 1, 0)) : i;
|
|
2157
|
-
});
|
|
2158
|
-
}, q.count.arity = 1, q.dateTime = function(e3, t2, r2) {
|
|
2159
|
-
return h(function* () {
|
|
2160
|
-
const n2 = yield I(e3[0], t2, r2);
|
|
2161
|
-
return n2.type === "datetime" ? n2 : n2.type !== "string" ? i : c.parseToValue(n2.data);
|
|
2162
|
-
});
|
|
2163
|
-
}, q.dateTime.arity = 1, q.defined = function(e3, t2, r2) {
|
|
2164
|
-
return h(function* () {
|
|
2165
|
-
return (yield I(e3[0], t2, r2)).type === "null" ? a : s;
|
|
2166
|
-
});
|
|
2167
|
-
}, q.defined.arity = 1, q.identity = function(e3, t2) {
|
|
2168
|
-
return p(t2.context.identity);
|
|
2169
|
-
}, q.identity.arity = 0, q.length = function(e3, t2, r2) {
|
|
2170
|
-
return h(function* () {
|
|
2171
|
-
const n2 = yield I(e3[0], t2, r2);
|
|
2172
|
-
return n2.type === "string" ? u(function(e4) {
|
|
2173
|
-
let t3 = 0;
|
|
2174
|
-
for (let r3 = 0; r3 < e4.length; r3++) {
|
|
2175
|
-
const n3 = e4.charCodeAt(r3);
|
|
2176
|
-
n3 >= 55296 && n3 <= 56319 || t3++;
|
|
2177
|
-
}
|
|
2178
|
-
return t3;
|
|
2179
|
-
}(n2.data)) : n2.isArray() ? u(yield n2.reduce((e4) => e4 + 1, 0)) : i;
|
|
2180
|
-
});
|
|
2181
|
-
}, q.length.arity = 1, q.path = function(t2, r2, n2) {
|
|
2182
|
-
return h(function* () {
|
|
2183
|
-
const s2 = yield I(t2[0], r2, n2);
|
|
2184
|
-
return s2.type !== "string" ? i : (a2 = new e(s2.data), new o(a2, "path"));
|
|
2185
|
-
var a2;
|
|
2186
|
-
});
|
|
2187
|
-
}, q.path.arity = 1, q.string = function(e3, t2, r2) {
|
|
2188
|
-
return h(function* () {
|
|
2189
|
-
const n2 = yield I(e3[0], t2, r2);
|
|
2190
|
-
switch (n2.type) {
|
|
2191
|
-
case "number":
|
|
2192
|
-
case "string":
|
|
2193
|
-
case "boolean":
|
|
2194
|
-
case "datetime":
|
|
2195
|
-
return p(`${n2.data}`);
|
|
2196
|
-
default:
|
|
2197
|
-
return i;
|
|
2198
|
-
}
|
|
2199
|
-
});
|
|
2200
|
-
}, q.string.arity = 1, q.references = function(e3, t2, r2) {
|
|
2201
|
-
return h(function* () {
|
|
2202
|
-
const n2 = /* @__PURE__ */ new Set();
|
|
2203
|
-
for (const o2 of e3) {
|
|
2204
|
-
const e4 = yield I(o2, t2, r2);
|
|
2205
|
-
if (e4.type === "string") n2.add(e4.data);
|
|
2206
|
-
else if (e4.isArray()) {
|
|
2207
|
-
const t3 = yield e4.get();
|
|
2208
|
-
for (const e5 of t3) typeof e5 == "string" && n2.add(e5);
|
|
2209
|
-
}
|
|
2210
|
-
}
|
|
2211
|
-
return n2.size === 0 ? a : R(yield t2.value.get(), n2) ? s : a;
|
|
2212
|
-
});
|
|
2213
|
-
}, q.references.arity = (e3) => e3 >= 1, q.round = function(e3, t2, r2) {
|
|
2214
|
-
return h(function* () {
|
|
2215
|
-
const n2 = yield I(e3[0], t2, r2);
|
|
2216
|
-
if (n2.type !== "number") return i;
|
|
2217
|
-
const o2 = n2.data;
|
|
2218
|
-
let s2 = 0;
|
|
2219
|
-
if (e3.length === 2) {
|
|
2220
|
-
const n3 = yield I(e3[1], t2, r2);
|
|
2221
|
-
if (n3.type !== "number" || n3.data < 0 || !Number.isInteger(n3.data)) return i;
|
|
2222
|
-
s2 = n3.data;
|
|
2223
|
-
}
|
|
2224
|
-
return u(s2 === 0 ? o2 < 0 ? -Math.round(-o2) : Math.round(o2) : Number(o2.toFixed(s2)));
|
|
2225
|
-
});
|
|
2226
|
-
}, q.round.arity = (e3) => e3 >= 1 && e3 <= 2, q.now = function(e3, t2) {
|
|
2227
|
-
return p(t2.context.timestamp.toISOString());
|
|
2228
|
-
}, q.now.arity = 0, q.boost = function() {
|
|
2229
|
-
throw new Error("unexpected boost call");
|
|
2230
|
-
}, q.boost.arity = 2;
|
|
2231
|
-
const G = { lower: function(e3, t2, r2) {
|
|
2232
|
-
return h(function* () {
|
|
2233
|
-
const n2 = yield I(e3[0], t2, r2);
|
|
2234
|
-
return n2.type !== "string" ? i : p(n2.data.toLowerCase());
|
|
2235
|
-
});
|
|
2236
|
-
} };
|
|
2237
|
-
G.lower.arity = 1, G.upper = function(e3, t2, r2) {
|
|
2238
|
-
return h(function* () {
|
|
2239
|
-
const n2 = yield I(e3[0], t2, r2);
|
|
2240
|
-
return n2.type !== "string" ? i : p(n2.data.toUpperCase());
|
|
2241
|
-
});
|
|
2242
|
-
}, G.upper.arity = 1, G.split = function(e3, t2, r2) {
|
|
2243
|
-
return h(function* () {
|
|
2244
|
-
const n2 = yield I(e3[0], t2, r2);
|
|
2245
|
-
if (n2.type !== "string") return i;
|
|
2246
|
-
const o2 = yield I(e3[1], t2, r2);
|
|
2247
|
-
return o2.type !== "string" ? i : n2.data.length === 0 ? f([], r2) : o2.data.length === 0 ? f(Array.from(n2.data), r2) : f(n2.data.split(o2.data), r2);
|
|
2248
|
-
});
|
|
2249
|
-
}, G.split.arity = 2, q.lower = G.lower, q.upper = G.upper, G.startsWith = function(e3, t2, r2) {
|
|
2250
|
-
return h(function* () {
|
|
2251
|
-
const n2 = yield I(e3[0], t2, r2);
|
|
2252
|
-
if (n2.type !== "string") return i;
|
|
2253
|
-
const o2 = yield I(e3[1], t2, r2);
|
|
2254
|
-
return o2.type !== "string" ? i : n2.data.startsWith(o2.data) ? s : a;
|
|
2255
|
-
});
|
|
2256
|
-
}, G.startsWith.arity = 2;
|
|
2257
|
-
const H = { join: function(e3, t2, r2) {
|
|
2258
|
-
return h(function* () {
|
|
2259
|
-
const n2 = yield I(e3[0], t2, r2);
|
|
2260
|
-
if (!n2.isArray()) return i;
|
|
2261
|
-
const o2 = yield I(e3[1], t2, r2);
|
|
2262
|
-
if (o2.type !== "string") return i;
|
|
2263
|
-
let s2 = "", a2 = !1;
|
|
2264
|
-
const c2 = yield n2.get();
|
|
2265
|
-
for (const e4 of c2) {
|
|
2266
|
-
const t3 = f(e4, r2);
|
|
2267
|
-
switch (a2 && (s2 += o2.data), t3.type) {
|
|
2268
|
-
case "number":
|
|
2269
|
-
case "string":
|
|
2270
|
-
case "boolean":
|
|
2271
|
-
case "datetime":
|
|
2272
|
-
s2 += `${t3.data}`;
|
|
2273
|
-
break;
|
|
2274
|
-
default:
|
|
2275
|
-
return i;
|
|
2276
|
-
}
|
|
2277
|
-
a2 = !0;
|
|
2278
|
-
}
|
|
2279
|
-
return f(s2, r2);
|
|
2280
|
-
});
|
|
2281
|
-
} };
|
|
2282
|
-
H.join.arity = 2, H.compact = function(e3, r2, n2) {
|
|
2283
|
-
return h(function* () {
|
|
2284
|
-
const o2 = yield I(e3[0], r2, n2);
|
|
2285
|
-
return o2.isArray() ? new t(async function* () {
|
|
2286
|
-
for await (const e4 of o2) e4.type !== "null" && (yield e4);
|
|
2287
|
-
}) : i;
|
|
2288
|
-
});
|
|
2289
|
-
}, H.compact.arity = 1, H.unique = function(e3, r2, n2) {
|
|
2290
|
-
return h(function* () {
|
|
2291
|
-
const s2 = yield I(e3[0], r2, n2);
|
|
2292
|
-
if (!s2.isArray()) return i;
|
|
2293
|
-
if (n2 === "sync") {
|
|
2294
|
-
const e4 = yield s2.get(), t2 = /* @__PURE__ */ new Set(), r3 = [];
|
|
2295
|
-
for (const n3 of e4) {
|
|
2296
|
-
const e5 = f(n3, "sync");
|
|
2297
|
-
switch (e5.type) {
|
|
2298
|
-
case "number":
|
|
2299
|
-
case "string":
|
|
2300
|
-
case "boolean":
|
|
2301
|
-
case "datetime":
|
|
2302
|
-
t2.has(n3) || (t2.add(n3), r3.push(e5));
|
|
2303
|
-
break;
|
|
2304
|
-
default:
|
|
2305
|
-
r3.push(e5);
|
|
2306
|
-
}
|
|
2307
|
-
}
|
|
2308
|
-
return new o(r3, "array");
|
|
2309
|
-
}
|
|
2310
|
-
return new t(async function* () {
|
|
2311
|
-
const e4 = /* @__PURE__ */ new Set();
|
|
2312
|
-
for await (const t2 of s2) switch (t2.type) {
|
|
2313
|
-
case "number":
|
|
2314
|
-
case "string":
|
|
2315
|
-
case "boolean":
|
|
2316
|
-
case "datetime":
|
|
2317
|
-
e4.has(t2.data) || (e4.add(t2.data), yield t2);
|
|
2318
|
-
break;
|
|
2319
|
-
default:
|
|
2320
|
-
yield t2;
|
|
2321
|
-
}
|
|
2322
|
-
});
|
|
2323
|
-
});
|
|
2324
|
-
}, H.unique.arity = 1, H.intersects = function(e3, t2, r2) {
|
|
2325
|
-
return h(function* () {
|
|
2326
|
-
const n2 = yield I(e3[0], t2, r2);
|
|
2327
|
-
if (!n2.isArray()) return i;
|
|
2328
|
-
const o2 = yield I(e3[1], t2, r2);
|
|
2329
|
-
return o2.isArray() ? (yield n2.first((e4) => !!o2.first((t3) => m(e4, t3)))) ? s : a : i;
|
|
2330
|
-
});
|
|
2331
|
-
}, H.intersects.arity = 2;
|
|
2332
|
-
const B = { text: function(e3, t2, r2) {
|
|
2333
|
-
return h(function* () {
|
|
2334
|
-
const n2 = yield I(e3[0], t2, r2), o2 = yield N(n2, r2);
|
|
2335
|
-
return o2 === null ? i : p(o2);
|
|
2336
|
-
});
|
|
2337
|
-
} };
|
|
2338
|
-
B.text.arity = 1;
|
|
2339
|
-
const W = { projectId: function(e3, t2) {
|
|
2340
|
-
return t2.context.sanity ? p(t2.context.sanity.projectId) : i;
|
|
2341
|
-
}, dataset: function(e3, t2) {
|
|
2342
|
-
return t2.context.sanity ? p(t2.context.sanity.dataset) : i;
|
|
2343
|
-
}, versionsOf: function(e3, t2, r2) {
|
|
2344
|
-
return h(function* () {
|
|
2345
|
-
if (!t2.source.isArray()) return i;
|
|
2346
|
-
const n2 = yield I(e3[0], t2, r2);
|
|
2347
|
-
if (n2.type !== "string") return i;
|
|
2348
|
-
const o2 = n2.data;
|
|
2349
|
-
return f(yield t2.source.reduce((e4, t3) => {
|
|
2350
|
-
if (y(t3) === "object") {
|
|
2351
|
-
const r3 = t3.get();
|
|
2352
|
-
r3 && "_id" in r3 && r3._id.split(".").length === 2 && r3._id.endsWith(`.${o2}`) && "_version" in r3 && typeof r3._version == "object" && e4.push(r3._id);
|
|
2353
|
-
}
|
|
2354
|
-
return e4;
|
|
2355
|
-
}, []), r2);
|
|
2356
|
-
});
|
|
2357
|
-
} };
|
|
2358
|
-
W.versionsOf.arity = 1, W.partOfRelease = function(e3, t2, r2) {
|
|
2359
|
-
return h(function* () {
|
|
2360
|
-
if (!t2.source.isArray()) return i;
|
|
2361
|
-
const n2 = yield I(e3[0], t2, r2);
|
|
2362
|
-
if (n2.type !== "string") return i;
|
|
2363
|
-
const o2 = n2.data;
|
|
2364
|
-
return f(yield t2.source.reduce((e4, t3) => {
|
|
2365
|
-
if (y(t3) === "object") {
|
|
2366
|
-
const r3 = t3.get();
|
|
2367
|
-
r3 && "_id" in r3 && r3._id.split(".").length === 2 && r3._id.startsWith(`${o2}.`) && "_version" in r3 && typeof r3._version == "object" && e4.push(r3._id);
|
|
2368
|
-
}
|
|
2369
|
-
return e4;
|
|
2370
|
-
}, []), r2);
|
|
2371
|
-
});
|
|
2372
|
-
}, W.partOfRelease.arity = 1;
|
|
2373
|
-
const Z = { order: function(e3, t2, r2, n2) {
|
|
2374
|
-
return h(function* () {
|
|
2375
|
-
if (!e3.isArray()) return i;
|
|
2376
|
-
const o2 = [], s2 = [];
|
|
2377
|
-
let a2 = 0;
|
|
2378
|
-
for (let e4 of t2) {
|
|
2379
|
-
let t3 = "asc";
|
|
2380
|
-
e4.type === "Desc" ? (t3 = "desc", e4 = e4.base) : e4.type === "Asc" && (e4 = e4.base), o2.push(e4), s2.push(t3), a2++;
|
|
2381
|
-
}
|
|
2382
|
-
const c2 = [];
|
|
2383
|
-
let u2 = 0;
|
|
2384
|
-
const p2 = yield e3.get();
|
|
2385
|
-
for (const e4 of p2) {
|
|
2386
|
-
const t3 = f(e4, n2), i2 = r2.createNested(t3), s3 = [yield t3.get(), u2];
|
|
2387
|
-
for (let e5 = 0; e5 < a2; e5++) {
|
|
2388
|
-
const t4 = yield I(o2[e5], i2, n2);
|
|
2389
|
-
s3.push(yield t4.get());
|
|
2390
|
-
}
|
|
2391
|
-
c2.push(s3), u2++;
|
|
2392
|
-
}
|
|
2393
|
-
return c2.sort((e4, t3) => {
|
|
2394
|
-
for (let r3 = 0; r3 < a2; r3++) {
|
|
2395
|
-
let n3 = E(e4[r3 + 2], t3[r3 + 2]);
|
|
2396
|
-
if (s2[r3] === "desc" && (n3 = -n3), n3 !== 0) return n3;
|
|
2397
|
-
}
|
|
2398
|
-
return e4[1] - t3[1];
|
|
2399
|
-
}), f(c2.map((e4) => e4[0]), n2);
|
|
2400
|
-
});
|
|
2401
|
-
} };
|
|
2402
|
-
Z.order.arity = (e3) => e3 >= 1, Z.score = function(e3, t2, r2, n2) {
|
|
2403
|
-
return h(function* () {
|
|
2404
|
-
if (!e3.isArray()) return i;
|
|
2405
|
-
const o2 = [], s2 = [], a2 = yield e3.get();
|
|
2406
|
-
for (const e4 of a2) {
|
|
2407
|
-
const i2 = f(e4, n2);
|
|
2408
|
-
if (i2.type !== "object") {
|
|
2409
|
-
o2.push(yield i2.get());
|
|
2410
|
-
continue;
|
|
2411
|
-
}
|
|
2412
|
-
const a3 = r2.createNested(i2);
|
|
2413
|
-
let c2 = typeof i2.data._score == "number" ? i2.data._score : 0;
|
|
2414
|
-
for (const e5 of t2) c2 += yield F(e5, a3, n2);
|
|
2415
|
-
const u2 = Object.assign({}, i2.data, { _score: c2 });
|
|
2416
|
-
s2.push(u2);
|
|
2417
|
-
}
|
|
2418
|
-
return s2.sort((e4, t3) => t3._score - e4._score), f(s2, n2);
|
|
2419
|
-
});
|
|
2420
|
-
}, Z.score.arity = (e3) => e3 >= 1;
|
|
2421
|
-
const z = { operation: function(e3, t2) {
|
|
2422
|
-
const r2 = t2.context.before !== null, n2 = t2.context.after !== null;
|
|
2423
|
-
return r2 && n2 ? p("update") : n2 ? p("create") : r2 ? p("delete") : i;
|
|
2424
|
-
}, changedAny: () => {
|
|
2425
|
-
throw new Error("not implemented");
|
|
2426
|
-
} };
|
|
2427
|
-
z.changedAny.arity = 1, z.changedAny.mode = "delta", z.changedOnly = () => {
|
|
2428
|
-
throw new Error("not implemented");
|
|
2429
|
-
}, z.changedOnly.arity = 1, z.changedOnly.mode = "delta";
|
|
2430
|
-
const J = { changedAny: () => {
|
|
2431
|
-
throw new Error("not implemented");
|
|
2432
|
-
} };
|
|
2433
|
-
J.changedAny.arity = 3, J.changedOnly = () => {
|
|
2434
|
-
throw new Error("not implemented");
|
|
2435
|
-
}, J.changedOnly.arity = 3;
|
|
2436
|
-
const Q = { min: function(e3, t2, r2) {
|
|
2437
|
-
return h(function* () {
|
|
2438
|
-
const n2 = yield I(e3[0], t2, r2);
|
|
2439
|
-
if (!n2.isArray() || (yield n2.first((e4) => e4.type !== "null" && e4.type !== "number"))) return i;
|
|
2440
|
-
const o2 = yield n2.get();
|
|
2441
|
-
let s2;
|
|
2442
|
-
for (const e4 of o2) typeof e4 == "number" && (s2 === void 0 || e4 < s2) && (s2 = e4);
|
|
2443
|
-
return f(s2, r2);
|
|
2444
|
-
});
|
|
2445
|
-
} };
|
|
2446
|
-
Q.min.arity = 1, Q.max = function(e3, t2, r2) {
|
|
2447
|
-
return h(function* () {
|
|
2448
|
-
const n2 = yield I(e3[0], t2, r2);
|
|
2449
|
-
if (!n2.isArray() || (yield n2.first((e4) => e4.type !== "null" && e4.type !== "number"))) return i;
|
|
2450
|
-
const o2 = yield n2.get();
|
|
2451
|
-
let s2;
|
|
2452
|
-
for (const e4 of o2) typeof e4 == "number" && (s2 === void 0 || e4 > s2) && (s2 = e4);
|
|
2453
|
-
return f(s2, r2);
|
|
2454
|
-
});
|
|
2455
|
-
}, Q.max.arity = 1, Q.sum = function(e3, t2, r2) {
|
|
2456
|
-
return h(function* () {
|
|
2457
|
-
const n2 = yield I(e3[0], t2, r2);
|
|
2458
|
-
return !n2.isArray() || (yield n2.first((e4) => e4.type !== "null" && e4.type !== "number")) ? i : f(yield n2.reduce((e4, t3) => t3.type !== "number" ? e4 : e4 + t3.data, 0), r2);
|
|
2459
|
-
});
|
|
2460
|
-
}, Q.sum.arity = 1, Q.avg = function(e3, t2, r2) {
|
|
2461
|
-
return h(function* () {
|
|
2462
|
-
const n2 = yield I(e3[0], t2, r2);
|
|
2463
|
-
if (!n2.isArray() || (yield n2.first((e4) => e4.type !== "null" && e4.type !== "number"))) return i;
|
|
2464
|
-
const o2 = yield n2.reduce((e4, t3) => t3.type !== "number" ? e4 : e4 + 1, 0), s2 = yield n2.reduce((e4, t3) => t3.type !== "number" ? e4 : e4 + t3.data, 0);
|
|
2465
|
-
return o2 === 0 ? i : f(s2 / o2, r2);
|
|
2466
|
-
});
|
|
2467
|
-
}, Q.avg.arity = 1;
|
|
2468
|
-
const L = { now: function(e3, t2) {
|
|
2469
|
-
return l(new c(t2.context.timestamp));
|
|
2470
|
-
} };
|
|
2471
|
-
L.now.arity = 0;
|
|
2472
|
-
const Y = { global: q, string: G, array: H, pt: B, delta: z, diff: J, sanity: W, math: Q, dateTime: L };
|
|
2473
|
-
class K {
|
|
2474
|
-
string;
|
|
2475
|
-
marks;
|
|
2476
|
-
index;
|
|
2477
|
-
parseOptions;
|
|
2478
|
-
allowBoost = !1;
|
|
2479
|
-
constructor(e3, t2, r2) {
|
|
2480
|
-
this.string = e3, this.marks = t2, this.index = 0, this.parseOptions = r2;
|
|
2481
|
-
}
|
|
2482
|
-
hasMark(e3 = 0) {
|
|
2483
|
-
return this.index + e3 < this.marks.length;
|
|
2484
|
-
}
|
|
2485
|
-
getMark(e3 = 0) {
|
|
2486
|
-
return this.marks[this.index + e3];
|
|
2487
|
-
}
|
|
2488
|
-
shift() {
|
|
2489
|
-
this.index += 1;
|
|
2490
|
-
}
|
|
2491
|
-
process(e3) {
|
|
2492
|
-
const t2 = this.marks[this.index];
|
|
2493
|
-
this.shift();
|
|
2494
|
-
const r2 = e3[t2.name];
|
|
2495
|
-
if (!r2) throw new Error(`Unknown handler: ${t2.name}`);
|
|
2496
|
-
return r2.call(e3, this, t2);
|
|
2497
|
-
}
|
|
2498
|
-
processString() {
|
|
2499
|
-
return this.shift(), this.processStringEnd();
|
|
2500
|
-
}
|
|
2501
|
-
processStringEnd() {
|
|
2502
|
-
const e3 = this.marks[this.index - 1], t2 = this.marks[this.index];
|
|
2503
|
-
return this.shift(), this.string.slice(e3.position, t2.position);
|
|
2504
|
-
}
|
|
2505
|
-
slice(e3) {
|
|
2506
|
-
const t2 = this.marks[this.index].position;
|
|
2507
|
-
return this.string.slice(t2, t2 + e3);
|
|
2508
|
-
}
|
|
2509
|
-
}
|
|
2510
|
-
const X = /^([\t\n\v\f\r \u0085\u00A0]|(\/\/[^\n]*\n))+/, ee = /^\d+/, te = /^[a-zA-Z_][a-zA-Z_0-9]*/;
|
|
2511
|
-
function re(e3, t2, r2) {
|
|
2512
|
-
let n2, o2 = t2;
|
|
2513
|
-
switch (e3[t2]) {
|
|
2514
|
-
case "+": {
|
|
2515
|
-
let r3 = re(e3, se(e3, t2 + 1), 10);
|
|
2516
|
-
if (r3.type === "error") return r3;
|
|
2517
|
-
n2 = [{ name: "pos", position: o2 }].concat(r3.marks), t2 = r3.position;
|
|
2518
|
-
break;
|
|
2519
|
-
}
|
|
2520
|
-
case "-": {
|
|
2521
|
-
let r3 = re(e3, se(e3, t2 + 1), 8);
|
|
2522
|
-
if (r3.type === "error") return r3;
|
|
2523
|
-
n2 = [{ name: "neg", position: o2 }].concat(r3.marks), t2 = r3.position;
|
|
2524
|
-
break;
|
|
2525
|
-
}
|
|
2526
|
-
case "(": {
|
|
2527
|
-
let r3 = re(e3, se(e3, t2 + 1), 0);
|
|
2528
|
-
if (r3.type === "error") return r3;
|
|
2529
|
-
switch (e3[t2 = se(e3, r3.position)]) {
|
|
2530
|
-
case ",":
|
|
2531
|
-
for (n2 = [{ name: "tuple", position: o2 }].concat(r3.marks), t2 = se(e3, t2 + 1); ; ) {
|
|
2532
|
-
if (r3 = re(e3, t2, 0), r3.type === "error") return r3;
|
|
2533
|
-
if (e3[t2 = se(e3, r3.position)] !== ",") break;
|
|
2534
|
-
t2 = se(e3, t2 + 1);
|
|
2535
|
-
}
|
|
2536
|
-
if (e3[t2] !== ")") return { type: "error", position: t2 };
|
|
2537
|
-
t2++, n2.push({ name: "tuple_end", position: t2 });
|
|
2538
|
-
break;
|
|
2539
|
-
case ")":
|
|
2540
|
-
t2++, n2 = [{ name: "group", position: o2 }].concat(r3.marks);
|
|
2541
|
-
break;
|
|
2542
|
-
default:
|
|
2543
|
-
return { type: "error", position: t2 };
|
|
2544
|
-
}
|
|
2545
|
-
break;
|
|
2546
|
-
}
|
|
2547
|
-
case "!": {
|
|
2548
|
-
let r3 = re(e3, se(e3, t2 + 1), 10);
|
|
2549
|
-
if (r3.type === "error") return r3;
|
|
2550
|
-
n2 = [{ name: "not", position: o2 }].concat(r3.marks), t2 = r3.position;
|
|
2551
|
-
break;
|
|
2552
|
-
}
|
|
2553
|
-
case "{": {
|
|
2554
|
-
let r3 = ie(e3, t2);
|
|
2555
|
-
if (r3.type === "error") return r3;
|
|
2556
|
-
n2 = r3.marks, t2 = r3.position;
|
|
2557
|
-
break;
|
|
2558
|
-
}
|
|
2559
|
-
case "[":
|
|
2560
|
-
if (n2 = [{ name: "array", position: t2 }], e3[t2 = se(e3, t2 + 1)] !== "]") for (; ; ) {
|
|
2561
|
-
e3.slice(t2, t2 + 3) === "..." && (n2.push({ name: "array_splat", position: t2 }), t2 = se(e3, t2 + 3));
|
|
2562
|
-
let r3 = re(e3, t2, 0);
|
|
2563
|
-
if (r3.type === "error") return r3;
|
|
2564
|
-
if (n2 = n2.concat(r3.marks), e3[t2 = se(e3, t2 = r3.position)] !== "," || e3[t2 = se(e3, t2 + 1)] === "]") break;
|
|
2565
|
-
}
|
|
2566
|
-
if (e3[t2] !== "]") return { type: "error", position: t2 };
|
|
2567
|
-
t2++, n2.push({ name: "array_end", position: t2 });
|
|
2568
|
-
break;
|
|
2569
|
-
case "'":
|
|
2570
|
-
case '"': {
|
|
2571
|
-
let r3 = function(e4, t3) {
|
|
2572
|
-
let r4 = e4[t3];
|
|
2573
|
-
t3 += 1;
|
|
2574
|
-
const n3 = [{ name: "str", position: t3 }];
|
|
2575
|
-
e: for (; ; t3++) {
|
|
2576
|
-
if (t3 > e4.length) return { type: "error", position: t3 };
|
|
2577
|
-
switch (e4[t3]) {
|
|
2578
|
-
case r4:
|
|
2579
|
-
n3.push({ name: "str_end", position: t3 }), t3++;
|
|
2580
|
-
break e;
|
|
2581
|
-
case "\\":
|
|
2582
|
-
n3.push({ name: "str_pause", position: t3 }), e4[t3 + 1] === "u" ? e4[t3 + 2] === "{" ? (n3.push({ name: "unicode_hex", position: t3 + 3 }), t3 = e4.indexOf("}", t3 + 3), n3.push({ name: "unicode_hex_end", position: t3 })) : (n3.push({ name: "unicode_hex", position: t3 + 2 }), n3.push({ name: "unicode_hex_end", position: t3 + 6 }), t3 += 5) : (n3.push({ name: "single_escape", position: t3 + 1 }), t3 += 1), n3.push({ name: "str_start", position: t3 + 1 });
|
|
2583
|
-
}
|
|
2584
|
-
}
|
|
2585
|
-
return { type: "success", marks: n3, position: t3 };
|
|
2586
|
-
}(e3, t2);
|
|
2587
|
-
if (r3.type === "error") return r3;
|
|
2588
|
-
n2 = r3.marks, t2 = r3.position;
|
|
2589
|
-
break;
|
|
2590
|
-
}
|
|
2591
|
-
case "^":
|
|
2592
|
-
for (t2++, n2 = []; e3[t2] === "." && e3[t2 + 1] === "^"; ) n2.push({ name: "dblparent", position: o2 }), t2 += 2;
|
|
2593
|
-
n2.push({ name: "parent", position: o2 });
|
|
2594
|
-
break;
|
|
2595
|
-
case "@":
|
|
2596
|
-
n2 = [{ name: "this", position: o2 }], t2++;
|
|
2597
|
-
break;
|
|
2598
|
-
case "*":
|
|
2599
|
-
n2 = [{ name: "everything", position: o2 }], t2++;
|
|
2600
|
-
break;
|
|
2601
|
-
case "$": {
|
|
2602
|
-
let r3 = ae(e3, t2 + 1, te);
|
|
2603
|
-
r3 && (n2 = [{ name: "param", position: o2 }, { name: "ident", position: o2 + 1 }, { name: "ident_end", position: t2 += 1 + r3 }]);
|
|
2604
|
-
break;
|
|
2605
|
-
}
|
|
2606
|
-
default: {
|
|
2607
|
-
let r3 = ae(e3, t2, ee);
|
|
2608
|
-
if (r3) {
|
|
2609
|
-
let i4 = "integer";
|
|
2610
|
-
if (e3[t2 += r3] === ".") {
|
|
2611
|
-
let r4 = ae(e3, t2 + 1, ee);
|
|
2612
|
-
r4 && (i4 = "float", t2 += 1 + r4);
|
|
2613
|
-
}
|
|
2614
|
-
if (e3[t2] === "e" || e3[t2] === "E") {
|
|
2615
|
-
i4 = "sci", (e3[++t2] === "+" || e3[t2] === "-") && t2++;
|
|
2616
|
-
let r4 = ae(e3, t2, ee);
|
|
2617
|
-
if (!r4) return { type: "error", position: t2 };
|
|
2618
|
-
t2 += r4;
|
|
2619
|
-
}
|
|
2620
|
-
n2 = [{ name: i4, position: o2 }, { name: i4 + "_end", position: t2 }];
|
|
2621
|
-
break;
|
|
2622
|
-
}
|
|
2623
|
-
let i3 = ae(e3, t2, te);
|
|
2624
|
-
if (i3) {
|
|
2625
|
-
switch (e3[t2 += i3]) {
|
|
2626
|
-
case ":":
|
|
2627
|
-
case "(": {
|
|
2628
|
-
let r4 = oe(e3, o2, t2);
|
|
2629
|
-
if (r4.type === "error") return r4;
|
|
2630
|
-
n2 = r4.marks, t2 = r4.position;
|
|
2631
|
-
break;
|
|
2632
|
-
}
|
|
2633
|
-
default:
|
|
2634
|
-
n2 = [{ name: "this_attr", position: o2 }, { name: "ident", position: o2 }, { name: "ident_end", position: t2 }];
|
|
2635
|
-
}
|
|
2636
|
-
break;
|
|
2637
|
-
}
|
|
2638
|
-
}
|
|
2639
|
-
}
|
|
2640
|
-
if (!n2) return { type: "error", position: t2 };
|
|
2641
|
-
let i2, s2 = 12;
|
|
2642
|
-
e: for (; ; ) {
|
|
2643
|
-
let a2 = se(e3, t2);
|
|
2644
|
-
if (a2 === e3.length) {
|
|
2645
|
-
t2 = a2;
|
|
2646
|
-
break;
|
|
2647
|
-
}
|
|
2648
|
-
if (i2 = ne(e3, a2), i2.type !== "success") switch (e3[a2]) {
|
|
2649
|
-
case "=":
|
|
2650
|
-
switch (e3[a2 + 1]) {
|
|
2651
|
-
case ">": {
|
|
2652
|
-
if (r2 > 1 || s2 <= 1) break e;
|
|
2653
|
-
let i3 = re(e3, se(e3, a2 + 2), 1);
|
|
2654
|
-
if (i3.type === "error") return i3;
|
|
2655
|
-
n2 = n2.concat(i3.marks), n2.unshift({ name: "pair", position: o2 }), t2 = i3.position, s2 = 1;
|
|
2656
|
-
break;
|
|
2657
|
-
}
|
|
2658
|
-
case "=": {
|
|
2659
|
-
if (r2 > 4 || s2 <= 4) break e;
|
|
2660
|
-
let i3 = re(e3, se(e3, a2 + 2), 5);
|
|
2661
|
-
if (i3.type === "error") return i3;
|
|
2662
|
-
n2.unshift({ name: "comp", position: o2 }), n2.push({ name: "op", position: a2 }, { name: "op_end", position: a2 + 2 }), n2 = n2.concat(i3.marks), t2 = i3.position, s2 = 4;
|
|
2663
|
-
break;
|
|
2664
|
-
}
|
|
2665
|
-
default:
|
|
2666
|
-
break e;
|
|
2667
|
-
}
|
|
2668
|
-
break;
|
|
2669
|
-
case "+": {
|
|
2670
|
-
if (r2 > 6 || s2 < 6) break e;
|
|
2671
|
-
let i3 = re(e3, se(e3, a2 + 1), 7);
|
|
2672
|
-
if (i3.type === "error") return i3;
|
|
2673
|
-
n2 = n2.concat(i3.marks), n2.unshift({ name: "add", position: o2 }), t2 = i3.position, s2 = 6;
|
|
2674
|
-
break;
|
|
2675
|
-
}
|
|
2676
|
-
case "-": {
|
|
2677
|
-
if (r2 > 6 || s2 < 6) break e;
|
|
2678
|
-
let i3 = re(e3, se(e3, a2 + 1), 7);
|
|
2679
|
-
if (i3.type === "error") return i3;
|
|
2680
|
-
n2 = n2.concat(i3.marks), n2.unshift({ name: "sub", position: o2 }), t2 = i3.position, s2 = 6;
|
|
2681
|
-
break;
|
|
2682
|
-
}
|
|
2683
|
-
case "*": {
|
|
2684
|
-
if (e3[a2 + 1] === "*") {
|
|
2685
|
-
if (r2 > 8 || s2 <= 8) break e;
|
|
2686
|
-
let i4 = re(e3, se(e3, a2 + 2), 8);
|
|
2687
|
-
if (i4.type === "error") return i4;
|
|
2688
|
-
n2 = n2.concat(i4.marks), n2.unshift({ name: "pow", position: o2 }), t2 = i4.position, s2 = 8;
|
|
2689
|
-
break;
|
|
2690
|
-
}
|
|
2691
|
-
if (r2 > 7 || s2 < 7) break e;
|
|
2692
|
-
let i3 = re(e3, se(e3, a2 + 1), 8);
|
|
2693
|
-
if (i3.type === "error") return i3;
|
|
2694
|
-
n2 = n2.concat(i3.marks), n2.unshift({ name: "mul", position: o2 }), t2 = i3.position, s2 = 7;
|
|
2695
|
-
break;
|
|
2696
|
-
}
|
|
2697
|
-
case "/": {
|
|
2698
|
-
if (r2 > 7 || s2 < 7) break e;
|
|
2699
|
-
let i3 = re(e3, se(e3, a2 + 1), 8);
|
|
2700
|
-
if (i3.type === "error") return i3;
|
|
2701
|
-
n2 = n2.concat(i3.marks), n2.unshift({ name: "div", position: o2 }), t2 = i3.position, s2 = 7;
|
|
2702
|
-
break;
|
|
2703
|
-
}
|
|
2704
|
-
case "%": {
|
|
2705
|
-
if (r2 > 7 || s2 < 7) break e;
|
|
2706
|
-
let i3 = re(e3, se(e3, a2 + 1), 8);
|
|
2707
|
-
if (i3.type === "error") return i3;
|
|
2708
|
-
n2 = n2.concat(i3.marks), n2.unshift({ name: "mod", position: o2 }), t2 = i3.position, s2 = 7;
|
|
2709
|
-
break;
|
|
2710
|
-
}
|
|
2711
|
-
case "<":
|
|
2712
|
-
case ">": {
|
|
2713
|
-
if (r2 > 4 || s2 <= 4) break e;
|
|
2714
|
-
let i3 = a2 + 1;
|
|
2715
|
-
e3[i3] === "=" && i3++;
|
|
2716
|
-
let c2 = re(e3, se(e3, i3), 5);
|
|
2717
|
-
if (c2.type === "error") return c2;
|
|
2718
|
-
n2.unshift({ name: "comp", position: o2 }), n2.push({ name: "op", position: a2 }, { name: "op_end", position: i3 }), n2 = n2.concat(c2.marks), t2 = c2.position, s2 = 4;
|
|
2719
|
-
break;
|
|
2720
|
-
}
|
|
2721
|
-
case "|":
|
|
2722
|
-
if (e3[a2 + 1] === "|") {
|
|
2723
|
-
if (r2 > 2 || s2 < 2) break e;
|
|
2724
|
-
let i3 = re(e3, se(e3, a2 + 2), 3);
|
|
2725
|
-
if (i3.type === "error") return i3;
|
|
2726
|
-
n2 = n2.concat(i3.marks), n2.unshift({ name: "or", position: o2 }), t2 = i3.position, s2 = 2;
|
|
2727
|
-
} else {
|
|
2728
|
-
if (r2 > 11 || s2 < 11) break e;
|
|
2729
|
-
let i3 = se(e3, a2 + 1), c2 = ae(e3, i3, te);
|
|
2730
|
-
if (!c2) return { type: "error", position: i3 };
|
|
2731
|
-
if (e3[t2 = i3 + c2] === "(" || e3[t2] === ":") {
|
|
2732
|
-
let r3 = oe(e3, i3, t2);
|
|
2733
|
-
if (r3.type === "error") return r3;
|
|
2734
|
-
n2 = n2.concat(r3.marks), n2.unshift({ name: "pipecall", position: o2 }), t2 = r3.position, s2 = 11;
|
|
2735
|
-
}
|
|
2736
|
-
}
|
|
2737
|
-
break;
|
|
2738
|
-
case "&": {
|
|
2739
|
-
if (e3[a2 + 1] != "&" || r2 > 3 || s2 < 3) break e;
|
|
2740
|
-
let i3 = re(e3, se(e3, a2 + 2), 4);
|
|
2741
|
-
if (i3.type === "error") return i3;
|
|
2742
|
-
n2 = n2.concat(i3.marks), n2.unshift({ name: "and", position: o2 }), t2 = i3.position, s2 = 3;
|
|
2743
|
-
break;
|
|
2744
|
-
}
|
|
2745
|
-
case "!": {
|
|
2746
|
-
if (e3[a2 + 1] !== "=" || r2 > 4 || s2 <= 4) break e;
|
|
2747
|
-
let i3 = re(e3, se(e3, a2 + 2), 5);
|
|
2748
|
-
if (i3.type === "error") return i3;
|
|
2749
|
-
n2.unshift({ name: "comp", position: o2 }), n2.push({ name: "op", position: a2 }, { name: "op_end", position: a2 + 2 }), n2 = n2.concat(i3.marks), t2 = i3.position, s2 = 4;
|
|
2750
|
-
break;
|
|
2751
|
-
}
|
|
2752
|
-
case "d":
|
|
2753
|
-
if (e3.slice(a2, a2 + 4) !== "desc" || r2 > 4 || s2 < 4) break e;
|
|
2754
|
-
n2.unshift({ name: "desc", position: o2 }), t2 = a2 + 4, s2 = 4;
|
|
2755
|
-
break;
|
|
2756
|
-
case "a":
|
|
2757
|
-
if (e3.slice(a2, a2 + 3) !== "asc" || r2 > 4 || s2 < 4) break e;
|
|
2758
|
-
n2.unshift({ name: "asc", position: o2 }), t2 = a2 + 3, s2 = 4;
|
|
2759
|
-
break;
|
|
2760
|
-
default:
|
|
2761
|
-
switch (ce(e3, a2, te)) {
|
|
2762
|
-
case "in": {
|
|
2763
|
-
if (r2 > 4 || s2 <= 4) break e;
|
|
2764
|
-
let i3 = !1;
|
|
2765
|
-
e3[t2 = se(e3, a2 + 2)] === "(" && (i3 = !0, t2 = se(e3, t2 + 1));
|
|
2766
|
-
let c2 = t2, u2 = re(e3, t2, 5);
|
|
2767
|
-
if (u2.type === "error") return u2;
|
|
2768
|
-
if (e3[t2 = se(e3, u2.position)] === "." && e3[t2 + 1] === ".") {
|
|
2769
|
-
let r3 = "inc_range";
|
|
2770
|
-
e3[t2 + 2] === "." ? (r3 = "exc_range", t2 = se(e3, t2 + 3)) : t2 = se(e3, t2 + 2);
|
|
2771
|
-
let i4 = re(e3, t2, 5);
|
|
2772
|
-
if (i4.type === "error") return i4;
|
|
2773
|
-
n2.unshift({ name: "in_range", position: o2 }), n2 = n2.concat({ name: r3, position: c2 }, u2.marks, i4.marks), t2 = i4.position;
|
|
2774
|
-
} else n2.unshift({ name: "comp", position: o2 }), n2.push({ name: "op", position: a2 }, { name: "op_end", position: a2 + 2 }), n2 = n2.concat(u2.marks);
|
|
2775
|
-
if (i3) {
|
|
2776
|
-
if (e3[t2 = se(e3, t2)] !== ")") return { type: "error", position: t2 };
|
|
2777
|
-
t2++;
|
|
2778
|
-
}
|
|
2779
|
-
s2 = 4;
|
|
2780
|
-
break;
|
|
2781
|
-
}
|
|
2782
|
-
case "match": {
|
|
2783
|
-
if (r2 > 4 || s2 <= 4) break e;
|
|
2784
|
-
let i3 = re(e3, se(e3, a2 + 5), 5);
|
|
2785
|
-
if (i3.type === "error") return i3;
|
|
2786
|
-
n2.unshift({ name: "comp", position: o2 }), n2.push({ name: "op", position: a2 }, { name: "op_end", position: a2 + 5 }), n2 = n2.concat(i3.marks), t2 = i3.position, s2 = 4;
|
|
2787
|
-
break;
|
|
2788
|
-
}
|
|
2789
|
-
default:
|
|
2790
|
-
break e;
|
|
2791
|
-
}
|
|
2792
|
-
}
|
|
2793
|
-
else {
|
|
2794
|
-
for (n2.unshift({ name: "traverse", position: o2 }); i2.type === "success"; ) n2 = n2.concat(i2.marks), i2 = ne(e3, se(e3, t2 = i2.position));
|
|
2795
|
-
n2.push({ name: "traversal_end", position: t2 });
|
|
2796
|
-
}
|
|
2797
|
-
}
|
|
2798
|
-
return { type: "success", marks: n2, position: t2, failPosition: i2?.type === "error" && i2.position };
|
|
2799
|
-
}
|
|
2800
|
-
function ne(e3, t2) {
|
|
2801
|
-
let r2 = t2;
|
|
2802
|
-
switch (e3[t2]) {
|
|
2803
|
-
case ".": {
|
|
2804
|
-
let n3 = t2 = se(e3, t2 + 1), o3 = ae(e3, t2, te);
|
|
2805
|
-
return o3 ? { type: "success", marks: [{ name: "attr_access", position: r2 }, { name: "ident", position: n3 }, { name: "ident_end", position: t2 += o3 }], position: t2 } : { type: "error", position: t2 };
|
|
2806
|
-
}
|
|
2807
|
-
case "-":
|
|
2808
|
-
if (e3[t2 + 1] !== ">") return { type: "error", position: t2 };
|
|
2809
|
-
let n2 = [{ name: "deref", position: r2 }], o2 = se(e3, t2 += 2), i2 = ae(e3, o2, te);
|
|
2810
|
-
return i2 && (t2 = o2 + i2, n2.push({ name: "deref_attr", position: o2 }, { name: "ident", position: o2 }, { name: "ident_end", position: t2 })), { type: "success", marks: n2, position: t2 };
|
|
2811
|
-
case "[": {
|
|
2812
|
-
if (e3[t2 = se(e3, t2 + 1)] === "]") return { type: "success", marks: [{ name: "array_postfix", position: r2 }], position: t2 + 1 };
|
|
2813
|
-
let n3 = t2, o3 = re(e3, t2, 0);
|
|
2814
|
-
if (o3.type === "error") return o3;
|
|
2815
|
-
if (e3[t2 = se(e3, o3.position)] === "." && e3[t2 + 1] === ".") {
|
|
2816
|
-
let i3 = "inc_range";
|
|
2817
|
-
e3[t2 + 2] === "." ? (i3 = "exc_range", t2 += 3) : t2 += 2;
|
|
2818
|
-
let s2 = re(e3, t2 = se(e3, t2), 0);
|
|
2819
|
-
return s2.type === "error" ? s2 : e3[t2 = se(e3, s2.position)] !== "]" ? { type: "error", position: t2 } : { type: "success", marks: [{ name: "slice", position: r2 }, { name: i3, position: n3 }].concat(o3.marks, s2.marks), position: t2 + 1 };
|
|
2820
|
-
}
|
|
2821
|
-
return e3[t2] !== "]" ? { type: "error", position: t2 } : { type: "success", marks: [{ name: "square_bracket", position: r2 }].concat(o3.marks), position: t2 + 1 };
|
|
2822
|
-
}
|
|
2823
|
-
case "|":
|
|
2824
|
-
if (e3[t2 = se(e3, t2 + 1)] === "{") {
|
|
2825
|
-
let n3 = ie(e3, t2);
|
|
2826
|
-
return n3.type === "error" || n3.marks.unshift({ name: "projection", position: r2 }), n3;
|
|
2827
|
-
}
|
|
2828
|
-
break;
|
|
2829
|
-
case "{": {
|
|
2830
|
-
let n3 = ie(e3, t2);
|
|
2831
|
-
return n3.type === "error" || n3.marks.unshift({ name: "projection", position: r2 }), n3;
|
|
2832
|
-
}
|
|
2833
|
-
}
|
|
2834
|
-
return { type: "error", position: t2 };
|
|
2835
|
-
}
|
|
2836
|
-
function oe(e3, t2, r2) {
|
|
2837
|
-
let n2 = [];
|
|
2838
|
-
if (n2.push({ name: "func_call", position: t2 }), e3[r2] === ":" && e3[r2 + 1] === ":") {
|
|
2839
|
-
n2.push({ name: "namespace", position: t2 }), n2.push({ name: "ident", position: t2 }, { name: "ident_end", position: r2 });
|
|
2840
|
-
let o3 = ae(e3, r2 = se(e3, r2 + 2), te);
|
|
2841
|
-
if (!o3) return { type: "error", position: r2 };
|
|
2842
|
-
if (n2.push({ name: "ident", position: r2 }, { name: "ident_end", position: r2 + o3 }), e3[r2 = se(e3, r2 + o3)] !== "(") return { type: "error", position: r2 };
|
|
2843
|
-
r2 = se(e3, ++r2);
|
|
2844
|
-
} else n2.push({ name: "ident", position: t2 }, { name: "ident_end", position: r2 }), r2 = se(e3, r2 + 1);
|
|
2845
|
-
let o2 = r2;
|
|
2846
|
-
if (e3[r2] !== ")") for (; ; ) {
|
|
2847
|
-
let t3 = re(e3, r2, 0);
|
|
2848
|
-
if (t3.type === "error") return t3;
|
|
2849
|
-
if (n2 = n2.concat(t3.marks), o2 = t3.position, e3[r2 = se(e3, t3.position)] !== "," || e3[r2 = se(e3, r2 + 1)] === ")") break;
|
|
2850
|
-
}
|
|
2851
|
-
return e3[r2] !== ")" ? { type: "error", position: r2 } : (n2.push({ name: "func_args_end", position: o2 }), { type: "success", marks: n2, position: r2 + 1 });
|
|
2852
|
-
}
|
|
2853
|
-
function ie(e3, t2) {
|
|
2854
|
-
let r2 = [{ name: "object", position: t2 }];
|
|
2855
|
-
for (t2 = se(e3, t2 + 1); e3[t2] !== "}"; ) {
|
|
2856
|
-
let n2 = t2;
|
|
2857
|
-
if (e3.slice(t2, t2 + 3) === "...") if (e3[t2 = se(e3, t2 + 3)] !== "}" && e3[t2] !== ",") {
|
|
2858
|
-
let o2 = re(e3, t2, 0);
|
|
2859
|
-
if (o2.type === "error") return o2;
|
|
2860
|
-
r2.push({ name: "object_splat", position: n2 }), r2 = r2.concat(o2.marks), t2 = o2.position;
|
|
2861
|
-
} else r2.push({ name: "object_splat_this", position: n2 });
|
|
2862
|
-
else {
|
|
2863
|
-
let o2 = re(e3, t2, 0);
|
|
2864
|
-
if (o2.type === "error") return o2;
|
|
2865
|
-
let i2 = se(e3, o2.position);
|
|
2866
|
-
if (o2.marks[0].name === "str" && e3[i2] === ":") {
|
|
2867
|
-
let s2 = re(e3, se(e3, i2 + 1), 0);
|
|
2868
|
-
if (s2.type === "error") return s2;
|
|
2869
|
-
r2.push({ name: "object_pair", position: n2 }), r2 = r2.concat(o2.marks, s2.marks), t2 = s2.position;
|
|
2870
|
-
} else r2 = r2.concat({ name: "object_expr", position: t2 }, o2.marks), t2 = o2.position;
|
|
2871
|
-
}
|
|
2872
|
-
if (e3[t2 = se(e3, t2)] !== ",") break;
|
|
2873
|
-
t2 = se(e3, t2 + 1);
|
|
2874
|
-
}
|
|
2875
|
-
return e3[t2] !== "}" ? { type: "error", position: t2 } : (t2++, r2.push({ name: "object_end", position: t2 }), { type: "success", marks: r2, position: t2 });
|
|
2876
|
-
}
|
|
2877
|
-
function se(e3, t2) {
|
|
2878
|
-
return t2 + ae(e3, t2, X);
|
|
2879
|
-
}
|
|
2880
|
-
function ae(e3, t2, r2) {
|
|
2881
|
-
let n2 = r2.exec(e3.slice(t2));
|
|
2882
|
-
return n2 ? n2[0].length : 0;
|
|
2883
|
-
}
|
|
2884
|
-
function ce(e3, t2, r2) {
|
|
2885
|
-
let n2 = r2.exec(e3.slice(t2));
|
|
2886
|
-
return n2 ? n2[0] : null;
|
|
2887
|
-
}
|
|
2888
|
-
function ue(e3, t2) {
|
|
2889
|
-
return (r2) => t2(e3(r2));
|
|
2890
|
-
}
|
|
2891
|
-
function pe(e3) {
|
|
2892
|
-
return (t2) => ({ type: "Map", base: t2, expr: e3({ type: "This" }) });
|
|
2893
|
-
}
|
|
2894
|
-
function le(e3, t2) {
|
|
2895
|
-
if (!t2) return { type: "a-a", build: e3 };
|
|
2896
|
-
switch (t2.type) {
|
|
2897
|
-
case "a-a":
|
|
2898
|
-
return { type: "a-a", build: ue(e3, t2.build) };
|
|
2899
|
-
case "a-b":
|
|
2900
|
-
return { type: "a-b", build: ue(e3, t2.build) };
|
|
2901
|
-
case "b-b":
|
|
2902
|
-
return { type: "a-a", build: ue(e3, pe(t2.build)) };
|
|
2903
|
-
case "b-a":
|
|
2904
|
-
return { type: "a-a", build: ue(e3, (r2 = t2.build, (e4) => ({ type: "FlatMap", base: e4, expr: r2({ type: "This" }) }))) };
|
|
2905
|
-
default:
|
|
2906
|
-
throw new Error(`unknown type: ${t2.type}`);
|
|
2907
|
-
}
|
|
2908
|
-
var r2;
|
|
2909
|
-
}
|
|
2910
|
-
function fe(e3, t2) {
|
|
2911
|
-
if (!t2) return { type: "b-b", build: e3 };
|
|
2912
|
-
switch (t2.type) {
|
|
2913
|
-
case "a-a":
|
|
2914
|
-
case "b-a":
|
|
2915
|
-
return { type: "b-a", build: ue(e3, t2.build) };
|
|
2916
|
-
case "a-b":
|
|
2917
|
-
case "b-b":
|
|
2918
|
-
return { type: "b-b", build: ue(e3, t2.build) };
|
|
2919
|
-
default:
|
|
2920
|
-
throw new Error(`unknown type: ${t2.type}`);
|
|
2921
|
-
}
|
|
2922
|
-
}
|
|
2923
|
-
const ye = { "'": "'", '"': '"', "\\": "\\", "/": "/", b: "\b", f: "\f", n: `
|
|
2924
|
-
`, r: "\r", t: " " };
|
|
2925
|
-
function de(e3) {
|
|
2926
|
-
const t2 = parseInt(e3, 16);
|
|
2927
|
-
return String.fromCharCode(t2);
|
|
2928
|
-
}
|
|
2929
|
-
class he extends Error {
|
|
2930
|
-
name = "GroqQueryError";
|
|
2931
|
-
}
|
|
2932
|
-
const me = { group: (e3) => ({ type: "Group", base: e3.process(me) }), everything: () => ({ type: "Everything" }), this: () => ({ type: "This" }), parent: () => ({ type: "Parent", n: 1 }), dblparent: (e3) => ({ type: "Parent", n: e3.process(me).n + 1 }), traverse(e3) {
|
|
2933
|
-
const t2 = e3.process(me), r2 = [];
|
|
2934
|
-
for (; e3.getMark().name !== "traversal_end"; ) r2.push(e3.process(ge));
|
|
2935
|
-
e3.shift();
|
|
2936
|
-
let n2 = null;
|
|
2937
|
-
for (let e4 = r2.length - 1; e4 >= 0; e4--) n2 = r2[e4](n2);
|
|
2938
|
-
if ((t2.type === "Everything" || t2.type === "Array" || t2.type === "PipeFuncCall") && (n2 = le((e4) => e4, n2)), n2 === null) throw new Error("BUG: unexpected empty traversal");
|
|
2939
|
-
return n2.build(t2);
|
|
2940
|
-
}, this_attr(e3) {
|
|
2941
|
-
const t2 = e3.processString();
|
|
2942
|
-
return t2 === "null" ? { type: "Value", value: null } : t2 === "true" ? { type: "Value", value: !0 } : t2 === "false" ? { type: "Value", value: !1 } : { type: "AccessAttribute", name: t2 };
|
|
2943
|
-
}, neg: (e3) => ({ type: "Neg", base: e3.process(me) }), pos: (e3) => ({ type: "Pos", base: e3.process(me) }), add: (e3) => ({ type: "OpCall", op: "+", left: e3.process(me), right: e3.process(me) }), sub: (e3) => ({ type: "OpCall", op: "-", left: e3.process(me), right: e3.process(me) }), mul: (e3) => ({ type: "OpCall", op: "*", left: e3.process(me), right: e3.process(me) }), div: (e3) => ({ type: "OpCall", op: "/", left: e3.process(me), right: e3.process(me) }), mod: (e3) => ({ type: "OpCall", op: "%", left: e3.process(me), right: e3.process(me) }), pow: (e3) => ({ type: "OpCall", op: "**", left: e3.process(me), right: e3.process(me) }), comp(e3) {
|
|
2944
|
-
const t2 = e3.process(me);
|
|
2945
|
-
return { type: "OpCall", op: e3.processString(), left: t2, right: e3.process(me) };
|
|
2946
|
-
}, in_range(e3) {
|
|
2947
|
-
const t2 = e3.process(me), r2 = e3.getMark().name === "inc_range";
|
|
2948
|
-
return e3.shift(), { type: "InRange", base: t2, left: e3.process(me), right: e3.process(me), isInclusive: r2 };
|
|
2949
|
-
}, str(e3) {
|
|
2950
|
-
let t2 = "";
|
|
2951
|
-
e: for (; e3.hasMark(); ) {
|
|
2952
|
-
const r2 = e3.getMark();
|
|
2953
|
-
switch (r2.name) {
|
|
2954
|
-
case "str_end":
|
|
2955
|
-
t2 += e3.processStringEnd();
|
|
2956
|
-
break e;
|
|
2957
|
-
case "str_pause":
|
|
2958
|
-
t2 += e3.processStringEnd();
|
|
2959
|
-
break;
|
|
2960
|
-
case "str_start":
|
|
2961
|
-
e3.shift();
|
|
2962
|
-
break;
|
|
2963
|
-
case "single_escape": {
|
|
2964
|
-
const r3 = e3.slice(1);
|
|
2965
|
-
e3.shift(), t2 += ye[r3];
|
|
2966
|
-
break;
|
|
2967
|
-
}
|
|
2968
|
-
case "unicode_hex":
|
|
2969
|
-
e3.shift(), t2 += de(e3.processStringEnd());
|
|
2970
|
-
break;
|
|
2971
|
-
default:
|
|
2972
|
-
throw new Error(`unexpected mark: ${r2.name}`);
|
|
2973
|
-
}
|
|
2974
|
-
}
|
|
2975
|
-
return { type: "Value", value: t2 };
|
|
2976
|
-
}, integer(e3) {
|
|
2977
|
-
const t2 = e3.processStringEnd();
|
|
2978
|
-
return { type: "Value", value: Number(t2) };
|
|
2979
|
-
}, float(e3) {
|
|
2980
|
-
const t2 = e3.processStringEnd();
|
|
2981
|
-
return { type: "Value", value: Number(t2) };
|
|
2982
|
-
}, sci(e3) {
|
|
2983
|
-
const t2 = e3.processStringEnd();
|
|
2984
|
-
return { type: "Value", value: Number(t2) };
|
|
2985
|
-
}, object(e3) {
|
|
2986
|
-
const t2 = [];
|
|
2987
|
-
for (; e3.getMark().name !== "object_end"; ) t2.push(e3.process(be));
|
|
2988
|
-
return e3.shift(), { type: "Object", attributes: t2 };
|
|
2989
|
-
}, array(e3) {
|
|
2990
|
-
const t2 = [];
|
|
2991
|
-
for (; e3.getMark().name !== "array_end"; ) {
|
|
2992
|
-
let r2 = !1;
|
|
2993
|
-
e3.getMark().name === "array_splat" && (r2 = !0, e3.shift());
|
|
2994
|
-
const n2 = e3.process(me);
|
|
2995
|
-
t2.push({ type: "ArrayElement", value: n2, isSplat: r2 });
|
|
2996
|
-
}
|
|
2997
|
-
return e3.shift(), { type: "Array", elements: t2 };
|
|
2998
|
-
}, tuple(e3) {
|
|
2999
|
-
const t2 = [];
|
|
3000
|
-
for (; e3.getMark().name !== "tuple_end"; ) t2.push(e3.process(me));
|
|
3001
|
-
return e3.shift(), { type: "Tuple", members: t2 };
|
|
3002
|
-
}, func_call(e3) {
|
|
3003
|
-
let t2 = "global";
|
|
3004
|
-
e3.getMark().name === "namespace" && (e3.shift(), t2 = e3.processString());
|
|
3005
|
-
const r2 = e3.processString();
|
|
3006
|
-
if (t2 === "global" && r2 === "select") {
|
|
3007
|
-
const t3 = { type: "Select", alternatives: [] };
|
|
3008
|
-
for (; e3.getMark().name !== "func_args_end"; ) if (e3.getMark().name === "pair") {
|
|
3009
|
-
if (t3.fallback) throw new he("unexpected argument to select()");
|
|
3010
|
-
e3.shift();
|
|
3011
|
-
const r3 = e3.process(me), n3 = e3.process(me);
|
|
3012
|
-
t3.alternatives.push({ type: "SelectAlternative", condition: r3, value: n3 });
|
|
3013
|
-
} else {
|
|
3014
|
-
if (t3.fallback) throw new he("unexpected argument to select()");
|
|
3015
|
-
const r3 = e3.process(me);
|
|
3016
|
-
t3.fallback = r3;
|
|
3017
|
-
}
|
|
3018
|
-
return e3.shift(), t3;
|
|
3019
|
-
}
|
|
3020
|
-
const n2 = [];
|
|
3021
|
-
for (; e3.getMark().name !== "func_args_end"; ) xe(t2, r2, n2.length) ? (e3.process(we), n2.push({ type: "Selector" })) : n2.push(e3.process(me));
|
|
3022
|
-
if (e3.shift(), t2 === "global" && (r2 === "before" || r2 === "after") && e3.parseOptions.mode === "delta") return { type: "Context", key: r2 };
|
|
3023
|
-
if (t2 === "global" && r2 === "boost" && !e3.allowBoost) throw new he("unexpected boost");
|
|
3024
|
-
const o2 = Y[t2];
|
|
3025
|
-
if (!o2) throw new he(`Undefined namespace: ${t2}`);
|
|
3026
|
-
const i2 = o2[r2];
|
|
3027
|
-
if (!i2) throw new he(`Undefined function: ${r2}`);
|
|
3028
|
-
if (i2.arity !== void 0 && ve(r2, i2.arity, n2.length), i2.mode !== void 0 && i2.mode !== e3.parseOptions.mode) throw new he(`Undefined function: ${r2}`);
|
|
3029
|
-
return { type: "FuncCall", func: i2, namespace: t2, name: r2, args: n2 };
|
|
3030
|
-
}, pipecall(e3) {
|
|
3031
|
-
const t2 = e3.process(me);
|
|
3032
|
-
e3.shift();
|
|
3033
|
-
let r2 = "global";
|
|
3034
|
-
if (e3.getMark().name === "namespace" && (e3.shift(), r2 = e3.processString()), r2 !== "global") throw new he(`Undefined namespace: ${r2}`);
|
|
3035
|
-
const n2 = e3.processString(), o2 = [], i2 = e3.allowBoost;
|
|
3036
|
-
for (n2 === "score" && (e3.allowBoost = !0); ; ) {
|
|
3037
|
-
const t3 = e3.getMark().name;
|
|
3038
|
-
if (t3 === "func_args_end") break;
|
|
3039
|
-
if (n2 === "order") {
|
|
3040
|
-
if (t3 === "asc") {
|
|
3041
|
-
e3.shift(), o2.push({ type: "Asc", base: e3.process(me) });
|
|
3042
|
-
continue;
|
|
3043
|
-
}
|
|
3044
|
-
if (t3 === "desc") {
|
|
3045
|
-
e3.shift(), o2.push({ type: "Desc", base: e3.process(me) });
|
|
3046
|
-
continue;
|
|
3047
|
-
}
|
|
3048
|
-
}
|
|
3049
|
-
o2.push(e3.process(me));
|
|
3050
|
-
}
|
|
3051
|
-
e3.shift(), e3.allowBoost = i2;
|
|
3052
|
-
const s2 = Z[n2];
|
|
3053
|
-
if (!s2) throw new he(`Undefined pipe function: ${n2}`);
|
|
3054
|
-
return s2.arity && ve(n2, s2.arity, o2.length), { type: "PipeFuncCall", func: s2, base: t2, name: n2, args: o2 };
|
|
3055
|
-
}, pair() {
|
|
3056
|
-
throw new he("unexpected =>");
|
|
3057
|
-
}, and: (e3) => ({ type: "And", left: e3.process(me), right: e3.process(me) }), or: (e3) => ({ type: "Or", left: e3.process(me), right: e3.process(me) }), not: (e3) => ({ type: "Not", base: e3.process(me) }), asc() {
|
|
3058
|
-
throw new he("unexpected asc");
|
|
3059
|
-
}, desc() {
|
|
3060
|
-
throw new he("unexpected desc");
|
|
3061
|
-
}, param(e3) {
|
|
3062
|
-
const t2 = e3.processString();
|
|
3063
|
-
return e3.parseOptions.params && e3.parseOptions.params.hasOwnProperty(t2) ? { type: "Value", value: e3.parseOptions.params[t2] } : { type: "Parameter", name: t2 };
|
|
3064
|
-
} }, be = { object_expr(e3) {
|
|
3065
|
-
if (e3.getMark().name === "pair")
|
|
3066
|
-
return e3.shift(), { type: "ObjectConditionalSplat", condition: e3.process(me), value: e3.process(me) };
|
|
3067
|
-
const t2 = e3.process(me);
|
|
3068
|
-
return { type: "ObjectAttributeValue", name: ke(t2), value: t2 };
|
|
3069
|
-
}, object_pair(e3) {
|
|
3070
|
-
const t2 = e3.process(me);
|
|
3071
|
-
if (t2.type !== "Value") throw new Error("name must be string");
|
|
3072
|
-
const r2 = e3.process(me);
|
|
3073
|
-
return { type: "ObjectAttributeValue", name: t2.value, value: r2 };
|
|
3074
|
-
}, object_splat: (e3) => ({ type: "ObjectSplat", value: e3.process(me) }), object_splat_this: () => ({ type: "ObjectSplat", value: { type: "This" } }) }, ge = { square_bracket(e3) {
|
|
3075
|
-
const t2 = e3.process(me), r2 = P(t2);
|
|
3076
|
-
return r2 && r2.type === "number" ? (e4) => function(e5, t3) {
|
|
3077
|
-
if (!t3) return { type: "a-b", build: e5 };
|
|
3078
|
-
switch (t3.type) {
|
|
3079
|
-
case "a-a":
|
|
3080
|
-
case "b-a":
|
|
3081
|
-
return { type: "a-a", build: ue(e5, t3.build) };
|
|
3082
|
-
case "a-b":
|
|
3083
|
-
case "b-b":
|
|
3084
|
-
return { type: "a-b", build: ue(e5, t3.build) };
|
|
3085
|
-
default:
|
|
3086
|
-
throw new Error(`unknown type: ${t3.type}`);
|
|
3087
|
-
}
|
|
3088
|
-
}((e5) => ({ type: "AccessElement", base: e5, index: r2.data }), e4) : r2 && r2.type === "string" ? (e4) => fe((e5) => ({ type: "AccessAttribute", base: e5, name: r2.data }), e4) : (e4) => le((e5) => ({ type: "Filter", base: e5, expr: t2 }), e4);
|
|
3089
|
-
}, slice(e3) {
|
|
3090
|
-
const t2 = e3.getMark().name === "inc_range";
|
|
3091
|
-
e3.shift();
|
|
3092
|
-
const r2 = e3.process(me), n2 = e3.process(me), o2 = P(r2), i2 = P(n2);
|
|
3093
|
-
if (!o2 || !i2 || o2.type !== "number" || i2.type !== "number") throw new he("slicing must use constant numbers");
|
|
3094
|
-
return (e4) => le((e5) => ({ type: "Slice", base: e5, left: o2.data, right: i2.data, isInclusive: t2 }), e4);
|
|
3095
|
-
}, projection(e3) {
|
|
3096
|
-
const t2 = e3.process(me);
|
|
3097
|
-
return (e4) => function(e5, t3) {
|
|
3098
|
-
if (!t3) return { type: "b-b", build: e5 };
|
|
3099
|
-
switch (t3.type) {
|
|
3100
|
-
case "a-a":
|
|
3101
|
-
return { type: "a-a", build: ue(pe(e5), t3.build) };
|
|
3102
|
-
case "a-b":
|
|
3103
|
-
return { type: "a-b", build: ue(pe(e5), t3.build) };
|
|
3104
|
-
case "b-a":
|
|
3105
|
-
return { type: "b-a", build: ue(e5, t3.build) };
|
|
3106
|
-
case "b-b":
|
|
3107
|
-
return { type: "b-b", build: ue(e5, t3.build) };
|
|
3108
|
-
default:
|
|
3109
|
-
throw new Error(`unknown type: ${t3.type}`);
|
|
3110
|
-
}
|
|
3111
|
-
}((e5) => ({ type: "Projection", base: e5, expr: t2 }), e4);
|
|
3112
|
-
}, attr_access(e3) {
|
|
3113
|
-
const t2 = e3.processString();
|
|
3114
|
-
return (e4) => fe((e5) => ({ type: "AccessAttribute", base: e5, name: t2 }), e4);
|
|
3115
|
-
}, deref(e3) {
|
|
3116
|
-
let t2 = null;
|
|
3117
|
-
return e3.getMark().name === "deref_attr" && (e3.shift(), t2 = e3.processString()), (e4) => fe((e5) => /* @__PURE__ */ ((e6) => t2 ? { type: "AccessAttribute", base: e6, name: t2 } : e6)({ type: "Deref", base: e5 }), e4);
|
|
3118
|
-
}, array_postfix: () => (e3) => le((e4) => ({ type: "ArrayCoerce", base: e4 }), e3) }, we = { group: (e3) => (e3.process(we), null), everything() {
|
|
3119
|
-
throw new Error("Invalid selector syntax");
|
|
3120
|
-
}, this() {
|
|
3121
|
-
throw new Error("Invalid selector syntax");
|
|
3122
|
-
}, parent() {
|
|
3123
|
-
throw new Error("Invalid selector syntax");
|
|
3124
|
-
}, dblparent() {
|
|
3125
|
-
throw new Error("Invalid selector syntax");
|
|
3126
|
-
}, traverse(e3) {
|
|
3127
|
-
for (e3.process(we); e3.getMark().name !== "traversal_end"; ) e3.process(ge);
|
|
3128
|
-
return e3.shift(), null;
|
|
3129
|
-
}, this_attr: (e3) => (e3.processString(), null), neg() {
|
|
3130
|
-
throw new Error("Invalid selector syntax");
|
|
3131
|
-
}, pos() {
|
|
3132
|
-
throw new Error("Invalid selector syntax");
|
|
3133
|
-
}, add() {
|
|
3134
|
-
throw new Error("Invalid selector syntax");
|
|
3135
|
-
}, sub() {
|
|
3136
|
-
throw new Error("Invalid selector syntax");
|
|
3137
|
-
}, mul() {
|
|
3138
|
-
throw new Error("Invalid selector syntax");
|
|
3139
|
-
}, div() {
|
|
3140
|
-
throw new Error("Invalid selector syntax");
|
|
3141
|
-
}, mod() {
|
|
3142
|
-
throw new Error("Invalid selector syntax");
|
|
3143
|
-
}, pow() {
|
|
3144
|
-
throw new Error("Invalid selector syntax");
|
|
3145
|
-
}, comp() {
|
|
3146
|
-
throw new Error("Invalid selector syntax");
|
|
3147
|
-
}, in_range() {
|
|
3148
|
-
throw new Error("Invalid selector syntax");
|
|
3149
|
-
}, str() {
|
|
3150
|
-
throw new Error("Invalid selector syntax");
|
|
3151
|
-
}, integer() {
|
|
3152
|
-
throw new Error("Invalid selector syntax");
|
|
3153
|
-
}, float() {
|
|
3154
|
-
throw new Error("Invalid selector syntax");
|
|
3155
|
-
}, sci() {
|
|
3156
|
-
throw new Error("Invalid selector syntax");
|
|
3157
|
-
}, object() {
|
|
3158
|
-
throw new Error("Invalid selector syntax");
|
|
3159
|
-
}, array() {
|
|
3160
|
-
throw new Error("Invalid selector syntax");
|
|
3161
|
-
}, tuple() {
|
|
3162
|
-
throw new Error("Invalid selector syntax");
|
|
3163
|
-
}, func_call(e3, t2) {
|
|
3164
|
-
const r2 = me.func_call(e3, t2);
|
|
3165
|
-
if (r2.name === "anywhere" && r2.args.length === 1) return null;
|
|
3166
|
-
throw new Error("Invalid selector syntax");
|
|
3167
|
-
}, pipecall() {
|
|
3168
|
-
throw new Error("Invalid selector syntax");
|
|
3169
|
-
}, pair() {
|
|
3170
|
-
throw new Error("Invalid selector syntax");
|
|
3171
|
-
}, and() {
|
|
3172
|
-
throw new Error("Invalid selector syntax");
|
|
3173
|
-
}, or() {
|
|
3174
|
-
throw new Error("Invalid selector syntax");
|
|
3175
|
-
}, not() {
|
|
3176
|
-
throw new Error("Invalid selector syntax");
|
|
3177
|
-
}, asc() {
|
|
3178
|
-
throw new Error("Invalid selector syntax");
|
|
3179
|
-
}, desc() {
|
|
3180
|
-
throw new Error("Invalid selector syntax");
|
|
3181
|
-
}, param() {
|
|
3182
|
-
throw new Error("Invalid selector syntax");
|
|
3183
|
-
} };
|
|
3184
|
-
function ke(e3) {
|
|
3185
|
-
if (e3.type === "AccessAttribute" && !e3.base) return e3.name;
|
|
3186
|
-
if (e3.type === "PipeFuncCall" || e3.type === "Deref" || e3.type === "Map" || e3.type === "Projection" || e3.type === "Slice" || e3.type === "Filter" || e3.type === "AccessElement" || e3.type === "ArrayCoerce" || e3.type === "Group") return ke(e3.base);
|
|
3187
|
-
throw new he(`Cannot determine property key for type: ${e3.type}`);
|
|
3188
|
-
}
|
|
3189
|
-
function ve(e3, t2, r2) {
|
|
3190
|
-
if (typeof t2 == "number") {
|
|
3191
|
-
if (r2 !== t2) throw new he(`Incorrect number of arguments to function ${e3}(). Expected ${t2}, got ${r2}.`);
|
|
3192
|
-
} else if (t2 && !t2(r2)) throw new he(`Incorrect number of arguments to function ${e3}().`);
|
|
3193
|
-
}
|
|
3194
|
-
function xe(e3, t2, r2) {
|
|
3195
|
-
return e3 == "diff" && r2 == 2 && ["changedAny", "changedOnly"].includes(t2);
|
|
3196
|
-
}
|
|
3197
|
-
class _e extends Error {
|
|
3198
|
-
position;
|
|
3199
|
-
name = "GroqSyntaxError";
|
|
3200
|
-
constructor(e3) {
|
|
3201
|
-
super(`Syntax error in GROQ query at position ${e3}`), this.position = e3;
|
|
3202
|
-
}
|
|
3203
|
-
}
|
|
3204
|
-
function Ae(e3, t2 = {}) {
|
|
3205
|
-
const r2 = function(e4) {
|
|
3206
|
-
let t3 = 0;
|
|
3207
|
-
t3 = se(e4, t3);
|
|
3208
|
-
let r3 = re(e4, t3, 0);
|
|
3209
|
-
return r3.type === "error" ? r3 : (t3 = se(e4, r3.position), t3 !== e4.length ? (r3.failPosition && (t3 = r3.failPosition - 1), { type: "error", position: t3 }) : (delete r3.position, delete r3.failPosition, r3));
|
|
3210
|
-
}(e3);
|
|
3211
|
-
if (r2.type === "error") throw new _e(r2.position);
|
|
3212
|
-
return new K(e3, r2.marks, t2).process(me);
|
|
3213
|
-
}
|
|
3214
1562
|
class MultiKeyWeakMap {
|
|
3215
1563
|
// The root of our nested WeakMap structure.
|
|
3216
1564
|
#rootMap = /* @__PURE__ */ new WeakMap();
|
|
@@ -3233,7 +1581,7 @@ class MultiKeyWeakMap {
|
|
|
3233
1581
|
*/
|
|
3234
1582
|
#arrangeKeys(keys) {
|
|
3235
1583
|
const keyed = Array.from(new Set(keys)).map((key) => [this.#assignId(key), key]);
|
|
3236
|
-
return keyed.sort((
|
|
1584
|
+
return keyed.sort((a, b) => a[0] - b[0]), keyed.map(([, key]) => key);
|
|
3237
1585
|
}
|
|
3238
1586
|
/**
|
|
3239
1587
|
* Recursively search the nested WeakMap structure for the value.
|
|
@@ -3287,8 +1635,8 @@ function createGrantsLookup(datasetAcl) {
|
|
|
3287
1635
|
}
|
|
3288
1636
|
return Object.fromEntries(
|
|
3289
1637
|
Object.entries(filtersByGrant).map(([grant, filters]) => {
|
|
3290
|
-
const combinedFilter = Array.from(filters).map((
|
|
3291
|
-
return combinedFilter ? [grant,
|
|
1638
|
+
const combinedFilter = Array.from(filters).map((i) => `(${i})`).join("||");
|
|
1639
|
+
return combinedFilter ? [grant, parse(`$document {"_": ${combinedFilter}}._`)] : [grant, parse("false")];
|
|
3292
1640
|
})
|
|
3293
1641
|
);
|
|
3294
1642
|
}
|
|
@@ -3299,7 +1647,7 @@ const documentsCache = new MultiKeyWeakMap(), actionsCache = /* @__PURE__ */ new
|
|
|
3299
1647
|
],
|
|
3300
1648
|
(documentStates, actions) => {
|
|
3301
1649
|
const documentIds = new Set(
|
|
3302
|
-
(Array.isArray(actions) ? actions : [actions]).map((
|
|
1650
|
+
(Array.isArray(actions) ? actions : [actions]).map((i) => i.documentId).filter((i) => typeof i == "string").flatMap((documentId) => [getPublishedId(documentId), getDraftId(documentId)])
|
|
3303
1651
|
), documents = {};
|
|
3304
1652
|
for (const documentId of documentIds) {
|
|
3305
1653
|
const local = documentStates[documentId]?.local;
|
|
@@ -3327,7 +1675,8 @@ const documentsCache = new MultiKeyWeakMap(), actionsCache = /* @__PURE__ */ new
|
|
|
3327
1675
|
}
|
|
3328
1676
|
);
|
|
3329
1677
|
function checkGrant$1(grantExpr, document2) {
|
|
3330
|
-
|
|
1678
|
+
const value = evaluateSync(grantExpr, { params: { document: document2 } });
|
|
1679
|
+
return value.type === "boolean" && value.data;
|
|
3331
1680
|
}
|
|
3332
1681
|
const enNarrowConjunction = new Intl.ListFormat("en", { style: "narrow", type: "conjunction" });
|
|
3333
1682
|
function calculatePermissions(...args) {
|
|
@@ -3382,16 +1731,17 @@ const _calculatePermissions = createSelector(
|
|
|
3382
1731
|
}
|
|
3383
1732
|
const allowed = reasons.length === 0;
|
|
3384
1733
|
if (allowed) return { allowed };
|
|
3385
|
-
const sortedReasons = reasons.map((reason, index) => ({ ...reason, index })).sort((
|
|
1734
|
+
const sortedReasons = reasons.map((reason, index) => ({ ...reason, index })).sort((a, b) => a.type !== b.type ? a.type === "access" ? -1 : 1 : a.message.localeCompare(b.message, "en-US")).map(({ index: _index, ...reason }) => reason);
|
|
3386
1735
|
return {
|
|
3387
1736
|
allowed,
|
|
3388
1737
|
reasons: sortedReasons,
|
|
3389
|
-
message: enNarrowConjunction.format(sortedReasons.map((
|
|
1738
|
+
message: enNarrowConjunction.format(sortedReasons.map((i) => i.message))
|
|
3390
1739
|
};
|
|
3391
1740
|
}
|
|
3392
1741
|
);
|
|
3393
1742
|
function checkGrant(grantExpr, document2) {
|
|
3394
|
-
|
|
1743
|
+
const value = evaluateSync(grantExpr, { params: { document: document2 } });
|
|
1744
|
+
return value.type === "boolean" && value.data;
|
|
3395
1745
|
}
|
|
3396
1746
|
class ActionError extends Error {
|
|
3397
1747
|
documentId;
|
|
@@ -3652,7 +2002,7 @@ function strengthenOnPublish(draft) {
|
|
|
3652
2002
|
..._strengthenOnPublish.weak && { _weak: !0 }
|
|
3653
2003
|
};
|
|
3654
2004
|
}
|
|
3655
|
-
return Array.isArray(value) ? value.map(strengthen) : Object.fromEntries(Object.entries(value).map(([
|
|
2005
|
+
return Array.isArray(value) ? value.map(strengthen) : Object.fromEntries(Object.entries(value).map(([k, v]) => [k, strengthen(v)]));
|
|
3656
2006
|
}
|
|
3657
2007
|
return strengthen(draft);
|
|
3658
2008
|
}
|
|
@@ -3668,13 +2018,13 @@ function queueTransaction(prev, transaction) {
|
|
|
3668
2018
|
};
|
|
3669
2019
|
}
|
|
3670
2020
|
function removeQueuedTransaction(prev, transactionId) {
|
|
3671
|
-
const transaction = prev.queued.find((
|
|
2021
|
+
const transaction = prev.queued.find((t) => t.transactionId === transactionId);
|
|
3672
2022
|
return transaction ? {
|
|
3673
2023
|
...getDocumentIdsFromActions(transaction.actions).reduce(
|
|
3674
2024
|
(acc, id) => removeSubscriptionIdFromDocument(acc, id, transactionId),
|
|
3675
2025
|
prev
|
|
3676
2026
|
),
|
|
3677
|
-
queued: prev.queued.filter((
|
|
2027
|
+
queued: prev.queued.filter((t) => transactionId !== t.transactionId)
|
|
3678
2028
|
} : prev;
|
|
3679
2029
|
}
|
|
3680
2030
|
function applyFirstQueuedTransaction(prev) {
|
|
@@ -3697,7 +2047,7 @@ function applyFirstQueuedTransaction(prev) {
|
|
|
3697
2047
|
return {
|
|
3698
2048
|
...prev,
|
|
3699
2049
|
applied: [...prev.applied, applied],
|
|
3700
|
-
queued: prev.queued.filter((
|
|
2050
|
+
queued: prev.queued.filter((t) => t.transactionId !== queued.transactionId),
|
|
3701
2051
|
documentStates: Object.entries(result.working).reduce(
|
|
3702
2052
|
(acc, [id, next]) => {
|
|
3703
2053
|
const prevDoc = acc[id];
|
|
@@ -3768,7 +2118,7 @@ function transitionAppliedTransactionsToOutgoing(prev) {
|
|
|
3768
2118
|
return {
|
|
3769
2119
|
...prev,
|
|
3770
2120
|
outgoing: transaction,
|
|
3771
|
-
applied: prev.applied.filter((
|
|
2121
|
+
applied: prev.applied.filter((i) => !consumedTransactions.includes(i.transactionId)),
|
|
3772
2122
|
documentStates: Object.entries(previousRevs).reduce(
|
|
3773
2123
|
(acc, [documentId, previousRev]) => {
|
|
3774
2124
|
if (working[documentId]?._rev === previousRev) return acc;
|
|
@@ -3805,10 +2155,10 @@ function revertOutgoingTransaction(prev) {
|
|
|
3805
2155
|
])
|
|
3806
2156
|
);
|
|
3807
2157
|
const nextApplied = [];
|
|
3808
|
-
for (const
|
|
2158
|
+
for (const t of prev.applied)
|
|
3809
2159
|
try {
|
|
3810
|
-
const next = processActions({ ...
|
|
3811
|
-
working = next.working, nextApplied.push({ ...
|
|
2160
|
+
const next = processActions({ ...t, working, grants: prev.grants });
|
|
2161
|
+
working = next.working, nextApplied.push({ ...t, ...next });
|
|
3812
2162
|
} catch (error) {
|
|
3813
2163
|
if (error instanceof ActionError) continue;
|
|
3814
2164
|
throw error;
|
|
@@ -3818,7 +2168,7 @@ function revertOutgoingTransaction(prev) {
|
|
|
3818
2168
|
applied: nextApplied,
|
|
3819
2169
|
outgoing: void 0,
|
|
3820
2170
|
documentStates: Object.fromEntries(
|
|
3821
|
-
Object.entries(prev.documentStates).filter((
|
|
2171
|
+
Object.entries(prev.documentStates).filter((e) => !!e[1]).map(([documentId, { unverifiedRevisions = {}, local, ...documentState }]) => {
|
|
3822
2172
|
const next = {
|
|
3823
2173
|
...documentState,
|
|
3824
2174
|
local: documentId in working ? working[documentId] : local,
|
|
@@ -3939,7 +2289,7 @@ function getDocumentIdsFromActions(action) {
|
|
|
3939
2289
|
const actions = Array.isArray(action) ? action : [action];
|
|
3940
2290
|
return Array.from(
|
|
3941
2291
|
new Set(
|
|
3942
|
-
actions.map((
|
|
2292
|
+
actions.map((i) => i.documentId).filter((i) => typeof i == "string").flatMap((documentId) => [getPublishedId$1(documentId), getDraftId(documentId)])
|
|
3943
2293
|
)
|
|
3944
2294
|
);
|
|
3945
2295
|
}
|
|
@@ -3993,7 +2343,7 @@ function createSharedListener(instance) {
|
|
|
3993
2343
|
),
|
|
3994
2344
|
takeUntil(dispose$),
|
|
3995
2345
|
share()
|
|
3996
|
-
), [welcome$, mutation$] = partition(events$, (
|
|
2346
|
+
), [welcome$, mutation$] = partition(events$, (e) => e.type === "welcome");
|
|
3997
2347
|
return {
|
|
3998
2348
|
events: merge(
|
|
3999
2349
|
// we replay the welcome event because that event kicks off fetching the document
|
|
@@ -4071,7 +2421,7 @@ const _resolveDocument = bindActionByDataset(
|
|
|
4071
2421
|
getDocumentState(instance, {
|
|
4072
2422
|
...docHandle,
|
|
4073
2423
|
path: void 0
|
|
4074
|
-
}).observable.pipe(filter((
|
|
2424
|
+
}).observable.pipe(filter((i) => i !== void 0))
|
|
4075
2425
|
)
|
|
4076
2426
|
), getDocumentSyncStatus = bindActionByDataset(
|
|
4077
2427
|
documentStore,
|
|
@@ -4094,7 +2444,7 @@ const _resolveDocument = bindActionByDataset(
|
|
|
4094
2444
|
), resolvePermissions = bindActionByDataset(
|
|
4095
2445
|
documentStore,
|
|
4096
2446
|
({ instance }, actions) => firstValueFrom(
|
|
4097
|
-
getPermissionsState(instance, actions).observable.pipe(filter((
|
|
2447
|
+
getPermissionsState(instance, actions).observable.pipe(filter((i) => i !== void 0))
|
|
4098
2448
|
)
|
|
4099
2449
|
), subscribeDocumentEvents = bindActionByDataset(
|
|
4100
2450
|
documentStore,
|
|
@@ -4130,10 +2480,10 @@ const _resolveDocument = bindActionByDataset(
|
|
|
4130
2480
|
const { events } = state.get();
|
|
4131
2481
|
return state.observable.pipe(
|
|
4132
2482
|
throttle(
|
|
4133
|
-
(
|
|
2483
|
+
(s) => (
|
|
4134
2484
|
// if there is no outgoing transaction, we can throttle by the
|
|
4135
2485
|
// initial outgoing throttle time…
|
|
4136
|
-
|
|
2486
|
+
s.outgoing ? (
|
|
4137
2487
|
// …otherwise, wait until the outgoing has been cleared
|
|
4138
2488
|
state.observable.pipe(first$1(({ outgoing }) => !outgoing))
|
|
4139
2489
|
) : timer(INITIAL_OUTGOING_THROTTLE_TIME)
|
|
@@ -4141,9 +2491,9 @@ const _resolveDocument = bindActionByDataset(
|
|
|
4141
2491
|
{ leading: !1, trailing: !0 }
|
|
4142
2492
|
),
|
|
4143
2493
|
map(transitionAppliedTransactionsToOutgoing),
|
|
4144
|
-
distinctUntilChanged((
|
|
2494
|
+
distinctUntilChanged((a, b) => a.outgoing?.transactionId === b.outgoing?.transactionId),
|
|
4145
2495
|
tap$1((next) => state.set("transitionAppliedTransactionsToOutgoing", next)),
|
|
4146
|
-
map((
|
|
2496
|
+
map((s) => s.outgoing),
|
|
4147
2497
|
distinctUntilChanged(),
|
|
4148
2498
|
withLatestFrom(getClientState(instance, { apiVersion: API_VERSION$3 }).observable),
|
|
4149
2499
|
concatMap(([outgoing, client]) => outgoing ? client.observable.action(outgoing.outgoingActions, {
|
|
@@ -4155,38 +2505,38 @@ const _resolveDocument = bindActionByDataset(
|
|
|
4155
2505
|
) : EMPTY),
|
|
4156
2506
|
tap$1(({ outgoing, result }) => {
|
|
4157
2507
|
state.set("cleanupOutgoingTransaction", cleanupOutgoingTransaction);
|
|
4158
|
-
for (const
|
|
2508
|
+
for (const e of getDocumentEvents(outgoing)) events.next(e);
|
|
4159
2509
|
events.next({ type: "accepted", outgoing, result });
|
|
4160
2510
|
})
|
|
4161
2511
|
).subscribe({ error: (error) => state.set("setError", { error }) });
|
|
4162
2512
|
}, subscribeToSubscriptionsAndListenToDocuments = (context) => {
|
|
4163
2513
|
const { state } = context, { events } = state.get();
|
|
4164
2514
|
return state.observable.pipe(
|
|
4165
|
-
filter((
|
|
4166
|
-
map((
|
|
2515
|
+
filter((s) => !!s.grants),
|
|
2516
|
+
map((s) => Object.keys(s.documentStates)),
|
|
4167
2517
|
distinctUntilChanged((curr, next) => {
|
|
4168
2518
|
if (curr.length !== next.length) return !1;
|
|
4169
2519
|
const currSet = new Set(curr);
|
|
4170
|
-
return next.every((
|
|
2520
|
+
return next.every((i) => currSet.has(i));
|
|
4171
2521
|
}),
|
|
4172
2522
|
startWith$1(/* @__PURE__ */ new Set()),
|
|
4173
2523
|
pairwise$1(),
|
|
4174
2524
|
switchMap((pair) => {
|
|
4175
|
-
const [curr, next] = pair.map((ids) => new Set(ids)), added = Array.from(next).filter((
|
|
2525
|
+
const [curr, next] = pair.map((ids) => new Set(ids)), added = Array.from(next).filter((i) => !curr.has(i)), removed = Array.from(curr).filter((i) => !next.has(i)), changes = [
|
|
4176
2526
|
...added.map((id) => ({ id, add: !0 })),
|
|
4177
2527
|
...removed.map((id) => ({ id, add: !1 }))
|
|
4178
|
-
].sort((
|
|
4179
|
-
const aIsDraft =
|
|
4180
|
-
return aIsDraft && bIsDraft ?
|
|
2528
|
+
].sort((a, b) => {
|
|
2529
|
+
const aIsDraft = a.id === getDraftId(a.id), bIsDraft = b.id === getDraftId(b.id);
|
|
2530
|
+
return aIsDraft && bIsDraft ? a.id.localeCompare(b.id, "en-US") : aIsDraft ? -1 : bIsDraft ? 1 : a.id.localeCompare(b.id, "en-US");
|
|
4181
2531
|
});
|
|
4182
2532
|
return of(...changes);
|
|
4183
2533
|
}),
|
|
4184
|
-
groupBy$1((
|
|
2534
|
+
groupBy$1((i) => i.id),
|
|
4185
2535
|
mergeMap$1(
|
|
4186
2536
|
(group) => group.pipe(
|
|
4187
|
-
switchMap((
|
|
2537
|
+
switchMap((e) => e.add ? listen$1(context, e.id).pipe(
|
|
4188
2538
|
catchError$1((error) => {
|
|
4189
|
-
throw error instanceof OutOfSyncError && listen$1(context,
|
|
2539
|
+
throw error instanceof OutOfSyncError && listen$1(context, e.id), error;
|
|
4190
2540
|
}),
|
|
4191
2541
|
tap$1(
|
|
4192
2542
|
(remote) => state.set(
|
|
@@ -4250,23 +2600,23 @@ async function _applyDocumentActions({ instance, state }, actionOrActions, { tra
|
|
|
4250
2600
|
actions,
|
|
4251
2601
|
...disableBatching && { disableBatching }
|
|
4252
2602
|
}, fatalError$ = state.observable.pipe(
|
|
4253
|
-
map((
|
|
2603
|
+
map((s) => s.error),
|
|
4254
2604
|
first$1(Boolean),
|
|
4255
2605
|
map((error) => ({ type: "error", error }))
|
|
4256
2606
|
), transactionError$ = events.pipe(
|
|
4257
|
-
filter((
|
|
4258
|
-
first$1((
|
|
2607
|
+
filter((e) => e.type === "error"),
|
|
2608
|
+
first$1((e) => e.transactionId === transactionId)
|
|
4259
2609
|
), appliedTransaction$ = state.observable.pipe(
|
|
4260
|
-
map((
|
|
2610
|
+
map((s) => s.applied),
|
|
4261
2611
|
distinctUntilChanged(),
|
|
4262
|
-
map((applied) => applied.find((
|
|
2612
|
+
map((applied) => applied.find((t) => t.transactionId === transactionId)),
|
|
4263
2613
|
first$1(Boolean)
|
|
4264
2614
|
), successfulTransaction$ = events.pipe(
|
|
4265
|
-
filter((
|
|
4266
|
-
first$1((
|
|
2615
|
+
filter((e) => e.type === "accepted"),
|
|
2616
|
+
first$1((e) => e.outgoing.batchedTransactionIds.includes(transactionId))
|
|
4267
2617
|
), rejectedTransaction$ = events.pipe(
|
|
4268
|
-
filter((
|
|
4269
|
-
first$1((
|
|
2618
|
+
filter((e) => e.type === "reverted"),
|
|
2619
|
+
first$1((e) => e.outgoing.batchedTransactionIds.includes(transactionId))
|
|
4270
2620
|
), appliedTransactionOrError = firstValueFrom(
|
|
4271
2621
|
race([fatalError$, transactionError$, appliedTransaction$])
|
|
4272
2622
|
), acceptedOrRejectedTransaction = firstValueFrom(
|
|
@@ -4380,22 +2730,22 @@ const favorites = createFetcherStore({
|
|
|
4380
2730
|
return () => subscription.unsubscribe();
|
|
4381
2731
|
}
|
|
4382
2732
|
}, errorHandler$1 = (state) => (error) => state.set("setError", { error }), listenForLoadMoreAndFetch = ({ state, instance }) => state.observable.pipe(
|
|
4383
|
-
map((
|
|
4384
|
-
distinctUntilChanged((curr, next) => curr.size !== next.size ? !1 : Array.from(next).every((
|
|
2733
|
+
map((s) => new Set(Object.keys(s.users))),
|
|
2734
|
+
distinctUntilChanged((curr, next) => curr.size !== next.size ? !1 : Array.from(next).every((i) => curr.has(i))),
|
|
4385
2735
|
startWith$1(/* @__PURE__ */ new Set()),
|
|
4386
2736
|
pairwise$1(),
|
|
4387
2737
|
mergeMap$1(([curr, next]) => {
|
|
4388
|
-
const added = Array.from(next).filter((
|
|
2738
|
+
const added = Array.from(next).filter((i) => !curr.has(i)), removed = Array.from(curr).filter((i) => !next.has(i));
|
|
4389
2739
|
return [
|
|
4390
2740
|
...added.map((key) => ({ key, added: !0 })),
|
|
4391
2741
|
...removed.map((key) => ({ key, added: !1 }))
|
|
4392
2742
|
];
|
|
4393
2743
|
}),
|
|
4394
|
-
groupBy$1((
|
|
2744
|
+
groupBy$1((i) => i.key),
|
|
4395
2745
|
mergeMap$1(
|
|
4396
2746
|
(group$) => group$.pipe(
|
|
4397
|
-
switchMap((
|
|
4398
|
-
if (!
|
|
2747
|
+
switchMap((e) => {
|
|
2748
|
+
if (!e.added) return EMPTY;
|
|
4399
2749
|
const { userId, batchSize, ...options } = parseUsersKey(group$.key);
|
|
4400
2750
|
if (userId) {
|
|
4401
2751
|
if (userId.startsWith("p"))
|
|
@@ -4453,15 +2803,15 @@ const favorites = createFetcherStore({
|
|
|
4453
2803
|
) : throwError(() => new Error("An organizationId or a projectId is required"));
|
|
4454
2804
|
}
|
|
4455
2805
|
const projectId = options.projectId, resourceType = options.resourceType ?? (options.organizationId ? "organization" : projectId ? "project" : "organization"), organizationId$ = options.organizationId ? of(options.organizationId) : getDashboardOrganizationId$1(instance).observable.pipe(
|
|
4456
|
-
filter((
|
|
2806
|
+
filter((i) => typeof i == "string")
|
|
4457
2807
|
), resource$ = resourceType === "project" ? projectId ? of({ type: "project", id: projectId }) : throwError(() => new Error("Project ID required for this API.")) : organizationId$.pipe(map((id) => ({ type: "organization", id }))), client$ = getClientState(instance, {
|
|
4458
2808
|
scope: "global",
|
|
4459
2809
|
apiVersion: API_VERSION$1
|
|
4460
2810
|
}).observable, loadMore$ = state.observable.pipe(
|
|
4461
|
-
map((
|
|
2811
|
+
map((s) => s.users[group$.key]?.lastLoadMoreRequest),
|
|
4462
2812
|
distinctUntilChanged()
|
|
4463
2813
|
), cursor$ = state.observable.pipe(
|
|
4464
|
-
map((
|
|
2814
|
+
map((s) => s.users[group$.key]?.nextCursor),
|
|
4465
2815
|
distinctUntilChanged(),
|
|
4466
2816
|
filter((cursor) => cursor !== null)
|
|
4467
2817
|
);
|
|
@@ -4524,7 +2874,7 @@ const favorites = createFetcherStore({
|
|
|
4524
2874
|
state.set("initializeRequest", initializeRequest(key));
|
|
4525
2875
|
const resolved$ = state.observable.pipe(
|
|
4526
2876
|
map(getCurrent),
|
|
4527
|
-
first$1((
|
|
2877
|
+
first$1((i) => i !== void 0)
|
|
4528
2878
|
);
|
|
4529
2879
|
return firstValueFrom(race([resolved$, aborted$]));
|
|
4530
2880
|
}
|
|
@@ -4538,7 +2888,7 @@ const favorites = createFetcherStore({
|
|
|
4538
2888
|
throw new Error("No more users available to load for this resource.");
|
|
4539
2889
|
const promise = firstValueFrom(
|
|
4540
2890
|
users.observable.pipe(
|
|
4541
|
-
filter((
|
|
2891
|
+
filter((i) => i !== void 0),
|
|
4542
2892
|
skip(1)
|
|
4543
2893
|
)
|
|
4544
2894
|
), timestamp = (/* @__PURE__ */ new Date()).toISOString();
|
|
@@ -4548,7 +2898,7 @@ const favorites = createFetcherStore({
|
|
|
4548
2898
|
usersStore,
|
|
4549
2899
|
({ instance }, { userId, ...options }) => getUsersState(instance, { userId, ...options }).observable.pipe(
|
|
4550
2900
|
map((res) => res?.data[0]),
|
|
4551
|
-
distinctUntilChanged((
|
|
2901
|
+
distinctUntilChanged((a, b) => a?.profile.updatedAt === b?.profile.updatedAt)
|
|
4552
2902
|
)
|
|
4553
2903
|
), resolveUser = bindActionGlobally(
|
|
4554
2904
|
usersStore,
|
|
@@ -4659,9 +3009,9 @@ const handleIncomingMessage = (event) => {
|
|
|
4659
3009
|
onSubscribe: (context) => {
|
|
4660
3010
|
const subscription = context.state.observable.pipe(
|
|
4661
3011
|
map(
|
|
4662
|
-
(state) => Array.from(state.locations.values()).map((
|
|
3012
|
+
(state) => Array.from(state.locations.values()).map((l) => l.userId).filter((id) => !!id)
|
|
4663
3013
|
),
|
|
4664
|
-
distinctUntilChanged((
|
|
3014
|
+
distinctUntilChanged((a, b) => a.length === b.length && a.every((v, i) => v === b[i]))
|
|
4665
3015
|
).pipe(
|
|
4666
3016
|
switchMap((userIds) => {
|
|
4667
3017
|
if (userIds.length === 0)
|
|
@@ -4671,7 +3021,7 @@ const handleIncomingMessage = (event) => {
|
|
|
4671
3021
|
userId,
|
|
4672
3022
|
resourceType: "project",
|
|
4673
3023
|
projectId: context.instance.config.projectId
|
|
4674
|
-
}).pipe(filter((
|
|
3024
|
+
}).pipe(filter((v) => !!v))
|
|
4675
3025
|
);
|
|
4676
3026
|
return combineLatest(userObservables);
|
|
4677
3027
|
})
|
|
@@ -4705,7 +3055,7 @@ function isWelcomeEvent(event) {
|
|
|
4705
3055
|
}
|
|
4706
3056
|
const listenQuery = (client, query, params = {}, options = {}) => {
|
|
4707
3057
|
const fetchQuery = query, listenerQuery = query, fetchOnce$ = fetch(client, fetchQuery, params, options), events$ = listen(client, listenerQuery, params, options).pipe(
|
|
4708
|
-
mergeMap((ev,
|
|
3058
|
+
mergeMap((ev, i) => i === 0 && !isWelcomeEvent(ev) ? throwError(
|
|
4709
3059
|
() => new Error(
|
|
4710
3060
|
ev.type === "reconnect" ? "Could not establish EventSource connection" : `Received unexpected type of first event "${ev.type}"`
|
|
4711
3061
|
)
|
|
@@ -4722,21 +3072,21 @@ const listenQuery = (client, query, params = {}, options = {}) => {
|
|
|
4722
3072
|
);
|
|
4723
3073
|
};
|
|
4724
3074
|
function sortReleases(releases = []) {
|
|
4725
|
-
return [...releases].sort((
|
|
4726
|
-
if (
|
|
3075
|
+
return [...releases].sort((a, b) => {
|
|
3076
|
+
if (a.metadata.releaseType === "undecided" && b.metadata.releaseType !== "undecided")
|
|
4727
3077
|
return -1;
|
|
4728
|
-
if (
|
|
3078
|
+
if (a.metadata.releaseType !== "undecided" && b.metadata.releaseType === "undecided")
|
|
4729
3079
|
return 1;
|
|
4730
|
-
if (
|
|
4731
|
-
return new Date(
|
|
4732
|
-
if (
|
|
4733
|
-
const aPublishAt =
|
|
3080
|
+
if (a.metadata.releaseType === "undecided" && b.metadata.releaseType === "undecided")
|
|
3081
|
+
return new Date(b._createdAt).getTime() - new Date(a._createdAt).getTime();
|
|
3082
|
+
if (a.metadata.releaseType === "scheduled" && b.metadata.releaseType === "scheduled") {
|
|
3083
|
+
const aPublishAt = a.publishAt || a.metadata.intendedPublishAt;
|
|
4734
3084
|
if (!aPublishAt)
|
|
4735
3085
|
return 1;
|
|
4736
|
-
const bPublishAt =
|
|
3086
|
+
const bPublishAt = b.publishAt || b.metadata.intendedPublishAt;
|
|
4737
3087
|
return bPublishAt ? new Date(bPublishAt).getTime() - new Date(aPublishAt).getTime() : -1;
|
|
4738
3088
|
}
|
|
4739
|
-
return
|
|
3089
|
+
return a.metadata.releaseType === "asap" && b.metadata.releaseType !== "asap" ? 1 : a.metadata.releaseType !== "asap" && b.metadata.releaseType === "asap" ? -1 : a.metadata.releaseType === "asap" && b.metadata.releaseType === "asap" ? new Date(b._createdAt).getTime() - new Date(a._createdAt).getTime() : 0;
|
|
4740
3090
|
});
|
|
4741
3091
|
}
|
|
4742
3092
|
const ARCHIVED_RELEASE_STATES = ["archived", "published"], releasesStore = {
|
|
@@ -4858,24 +3208,24 @@ const queryStore = {
|
|
|
4858
3208
|
};
|
|
4859
3209
|
}
|
|
4860
3210
|
}, errorHandler = (state) => (error) => state.set("setError", { error }), listenForNewSubscribersAndFetch = ({ state, instance }) => state.observable.pipe(
|
|
4861
|
-
map((
|
|
4862
|
-
distinctUntilChanged((curr, next) => curr.size !== next.size ? !1 : Array.from(next).every((
|
|
3211
|
+
map((s) => new Set(Object.keys(s.queries))),
|
|
3212
|
+
distinctUntilChanged((curr, next) => curr.size !== next.size ? !1 : Array.from(next).every((i) => curr.has(i))),
|
|
4863
3213
|
startWith$1(/* @__PURE__ */ new Set()),
|
|
4864
3214
|
pairwise$1(),
|
|
4865
3215
|
mergeMap$1(([curr, next]) => {
|
|
4866
|
-
const added = Array.from(next).filter((
|
|
3216
|
+
const added = Array.from(next).filter((i) => !curr.has(i)), removed = Array.from(curr).filter((i) => !next.has(i));
|
|
4867
3217
|
return [
|
|
4868
3218
|
...added.map((key) => ({ key, added: !0 })),
|
|
4869
3219
|
...removed.map((key) => ({ key, added: !1 }))
|
|
4870
3220
|
];
|
|
4871
3221
|
}),
|
|
4872
|
-
groupBy$1((
|
|
3222
|
+
groupBy$1((i) => i.key),
|
|
4873
3223
|
mergeMap$1(
|
|
4874
3224
|
(group$) => group$.pipe(
|
|
4875
|
-
switchMap((
|
|
4876
|
-
if (!
|
|
3225
|
+
switchMap((e) => {
|
|
3226
|
+
if (!e.added) return EMPTY;
|
|
4877
3227
|
const lastLiveEventId$ = state.observable.pipe(
|
|
4878
|
-
map((
|
|
3228
|
+
map((s) => s.queries[group$.key]?.lastLiveEventId),
|
|
4879
3229
|
distinctUntilChanged()
|
|
4880
3230
|
), {
|
|
4881
3231
|
query,
|
|
@@ -4919,18 +3269,26 @@ const queryStore = {
|
|
|
4919
3269
|
apiVersion: QUERY_STORE_API_VERSION
|
|
4920
3270
|
}).observable.pipe(
|
|
4921
3271
|
switchMap(
|
|
4922
|
-
(client) =>
|
|
3272
|
+
(client) => defer(
|
|
3273
|
+
() => client.live.events({ includeDrafts: !!client.config().token, tag: "query-store" })
|
|
3274
|
+
).pipe(
|
|
3275
|
+
catchError$1((error) => {
|
|
3276
|
+
if (error instanceof CorsOriginError)
|
|
3277
|
+
return state.set("setError", { error }), EMPTY;
|
|
3278
|
+
throw error;
|
|
3279
|
+
})
|
|
3280
|
+
)
|
|
4923
3281
|
),
|
|
4924
3282
|
share(),
|
|
4925
|
-
filter((
|
|
3283
|
+
filter((e) => e.type === "message")
|
|
4926
3284
|
);
|
|
4927
3285
|
return state.observable.pipe(
|
|
4928
|
-
mergeMap$1((
|
|
3286
|
+
mergeMap$1((s) => Object.entries(s.queries)),
|
|
4929
3287
|
groupBy$1(([key]) => key),
|
|
4930
3288
|
mergeMap$1((group$) => {
|
|
4931
3289
|
const syncTags$ = group$.pipe(
|
|
4932
3290
|
map(([, queryState]) => queryState),
|
|
4933
|
-
map((
|
|
3291
|
+
map((i) => i?.syncTags ?? EMPTY_ARRAY),
|
|
4934
3292
|
distinctUntilChanged()
|
|
4935
3293
|
);
|
|
4936
3294
|
return combineLatest([liveMessages$, syncTags$]).pipe(
|
|
@@ -4986,15 +3344,15 @@ const _resolveQuery = bindActionByDataset(
|
|
|
4986
3344
|
state.set("initializeQuery", initializeQuery(key));
|
|
4987
3345
|
const resolved$ = state.observable.pipe(
|
|
4988
3346
|
map(getCurrent),
|
|
4989
|
-
first$1((
|
|
3347
|
+
first$1((i) => i !== void 0)
|
|
4990
3348
|
);
|
|
4991
3349
|
return firstValueFrom(race([resolved$, aborted$]));
|
|
4992
3350
|
}
|
|
4993
3351
|
);
|
|
4994
3352
|
function hashString(str) {
|
|
4995
3353
|
let hash = 0;
|
|
4996
|
-
for (let
|
|
4997
|
-
hash = (hash * 31 + str.charCodeAt(
|
|
3354
|
+
for (let i = 0; i < str.length; i++)
|
|
3355
|
+
hash = (hash * 31 + str.charCodeAt(i)) % 2147483647;
|
|
4998
3356
|
return Math.abs(hash).toString(16).padStart(8, "0");
|
|
4999
3357
|
}
|
|
5000
3358
|
const TITLE_CANDIDATES = ["title", "name", "label", "heading", "header", "caption"], SUBTITLE_CANDIDATES = ["description", "subtitle", ...TITLE_CANDIDATES], PREVIEW_PROJECTION = `{
|
|
@@ -5076,8 +3434,8 @@ function processPreviewQuery({
|
|
|
5076
3434
|
...publishedResult?._updatedAt && { lastEditedPublishedAt: publishedResult._updatedAt }
|
|
5077
3435
|
};
|
|
5078
3436
|
return [id, { data: { ...preview, _status }, isPending: !1 }];
|
|
5079
|
-
} catch (
|
|
5080
|
-
return console.warn(
|
|
3437
|
+
} catch (e) {
|
|
3438
|
+
return console.warn(e), [id, STABLE_ERROR_PREVIEW];
|
|
5081
3439
|
}
|
|
5082
3440
|
})
|
|
5083
3441
|
);
|
|
@@ -5091,7 +3449,7 @@ function createPreviewQuery(documentIds) {
|
|
|
5091
3449
|
}
|
|
5092
3450
|
};
|
|
5093
3451
|
}
|
|
5094
|
-
const BATCH_DEBOUNCE_TIME$1 = 50, isSetEqual$1 = (
|
|
3452
|
+
const BATCH_DEBOUNCE_TIME$1 = 50, isSetEqual$1 = (a, b) => a.size === b.size && Array.from(a).every((i) => b.has(i)), subscribeToStateAndFetchBatches$1 = ({
|
|
5095
3453
|
state,
|
|
5096
3454
|
instance
|
|
5097
3455
|
}) => state.observable.pipe(
|
|
@@ -5191,14 +3549,24 @@ const _getPreviewState = bindActionByDataset(
|
|
|
5191
3549
|
})
|
|
5192
3550
|
), resolvePreview = bindActionByDataset(
|
|
5193
3551
|
previewStore,
|
|
5194
|
-
({ instance }, docHandle) => firstValueFrom(getPreviewState(instance, docHandle).observable.pipe(filter((
|
|
5195
|
-
)
|
|
3552
|
+
({ instance }, docHandle) => firstValueFrom(getPreviewState(instance, docHandle).observable.pipe(filter((i) => !!i.data)))
|
|
3553
|
+
), PROJECTION_TAG = "projection", PROJECTION_PERSPECTIVE = "raw", PROJECTION_STATE_CLEAR_DELAY = 1e3, STABLE_EMPTY_PROJECTION = {
|
|
3554
|
+
data: null,
|
|
3555
|
+
isPending: !1
|
|
3556
|
+
};
|
|
3557
|
+
function validateProjection(projection) {
|
|
3558
|
+
if (!projection.startsWith("{") || !projection.endsWith("}"))
|
|
3559
|
+
throw new Error(
|
|
3560
|
+
`Invalid projection format: "${projection}". Projections must be enclosed in curly braces, e.g. "{title, 'author': author.name}"`
|
|
3561
|
+
);
|
|
3562
|
+
return projection;
|
|
3563
|
+
}
|
|
5196
3564
|
function createProjectionQuery(documentIds, documentProjections) {
|
|
5197
3565
|
const projections = Array.from(documentIds).flatMap((id) => {
|
|
5198
3566
|
const projectionsForDoc = documentProjections[id];
|
|
5199
3567
|
return projectionsForDoc ? Object.entries(projectionsForDoc).map(([projectionHash, projection]) => ({
|
|
5200
3568
|
documentId: id,
|
|
5201
|
-
projection,
|
|
3569
|
+
projection: validateProjection(projection),
|
|
5202
3570
|
projectionHash
|
|
5203
3571
|
})) : [];
|
|
5204
3572
|
}).reduce((acc, { documentId, projection, projectionHash }) => {
|
|
@@ -5244,23 +3612,12 @@ function processProjectionQuery({ ids, results }) {
|
|
|
5244
3612
|
}
|
|
5245
3613
|
return finalValues;
|
|
5246
3614
|
}
|
|
5247
|
-
const
|
|
5248
|
-
data: null,
|
|
5249
|
-
isPending: !1
|
|
5250
|
-
};
|
|
5251
|
-
function validateProjection(projection) {
|
|
5252
|
-
if (!projection.startsWith("{") || !projection.endsWith("}"))
|
|
5253
|
-
throw new Error(
|
|
5254
|
-
`Invalid projection format: "${projection}". Projections must be enclosed in curly braces, e.g. "{title, 'author': author.name}"`
|
|
5255
|
-
);
|
|
5256
|
-
return projection;
|
|
5257
|
-
}
|
|
5258
|
-
const BATCH_DEBOUNCE_TIME = 50, isSetEqual = (a2, b2) => a2.size === b2.size && Array.from(a2).every((i2) => b2.has(i2)), subscribeToStateAndFetchBatches = ({
|
|
3615
|
+
const BATCH_DEBOUNCE_TIME = 50, isSetEqual = (a, b) => a.size === b.size && Array.from(a).every((i) => b.has(i)), subscribeToStateAndFetchBatches = ({
|
|
5259
3616
|
state,
|
|
5260
3617
|
instance
|
|
5261
3618
|
}) => {
|
|
5262
3619
|
const documentProjections$ = state.observable.pipe(
|
|
5263
|
-
map((
|
|
3620
|
+
map((s) => s.documentProjections),
|
|
5264
3621
|
distinctUntilChanged(isEqual)
|
|
5265
3622
|
), activeDocumentIds$ = state.observable.pipe(
|
|
5266
3623
|
map(({ subscriptions }) => new Set(Object.keys(subscriptions))),
|
|
@@ -5521,7 +3878,12 @@ function validateFilter(filter2, index) {
|
|
|
5521
3878
|
`${filterContext}: when using wildcard '*', it must be the only type in the array`
|
|
5522
3879
|
);
|
|
5523
3880
|
}
|
|
5524
|
-
|
|
3881
|
+
function getCorsErrorProjectId(error) {
|
|
3882
|
+
if (!(error instanceof CorsOriginError)) return null;
|
|
3883
|
+
const projMatch = (error.message || "").match(/manage\/project\/([^/?#]+)/);
|
|
3884
|
+
return projMatch ? projMatch[1] : null;
|
|
3885
|
+
}
|
|
3886
|
+
var version = "2.3.0";
|
|
5525
3887
|
const CORE_SDK_VERSION = getEnv("PKG_VERSION") || `${version}-development`;
|
|
5526
3888
|
export {
|
|
5527
3889
|
AuthStateType,
|
|
@@ -5543,6 +3905,7 @@ export {
|
|
|
5543
3905
|
getAuthState,
|
|
5544
3906
|
getClient,
|
|
5545
3907
|
getClientState,
|
|
3908
|
+
getCorsErrorProjectId,
|
|
5546
3909
|
getCurrentUserState,
|
|
5547
3910
|
getDashboardOrganizationId$1 as getDashboardOrganizationId,
|
|
5548
3911
|
getDatasetsState,
|