@bitcobblers/wod-wiki-wql 0.45.2166 → 0.46.2168
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.cjs +172 -18
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +33 -10
- package/dist/index.d.ts +33 -10
- package/dist/index.mjs +170 -19
- package/dist/index.mjs.map +1 -1
- package/package.json +3 -3
package/dist/index.cjs
CHANGED
|
@@ -31,7 +31,7 @@ var WQL_TAG_KEYS = [
|
|
|
31
31
|
"result",
|
|
32
32
|
"tags"
|
|
33
33
|
];
|
|
34
|
-
var WQL_CONTENT_ONLY_KEYS = ["type", "text", "source", "notebook", "contributes"];
|
|
34
|
+
var WQL_CONTENT_ONLY_KEYS = ["type", "text", "source", "notebook", "contributes", "feed", "subscribed"];
|
|
35
35
|
var WQL_EFFORT_FILTER_KEYS = ["effort", "discipline", "intensity", "origin", "text"];
|
|
36
36
|
var WQL_VIRTUAL_DIMS = ["day", "week", "session", "round"];
|
|
37
37
|
var WQL_CALC_TARGETS = [
|
|
@@ -92,7 +92,7 @@ var WQL_FUNCTION_HEADS = WQL_AGGREGATORS;
|
|
|
92
92
|
var WQL_CHART_HEADS = ["timeseries", "bar", "table", "donut", "toplist", "value"];
|
|
93
93
|
var WQL_STANDARD_DATASETS = ["@session", "@today"];
|
|
94
94
|
var WQL_RESULT_PLANES = wodWikiCore.KNOWN_OUTPUT_TYPES;
|
|
95
|
-
var WQL_CONTENT_FILTER_KEYS = ["type", "text", "source", "notebook", "page", "contributes", ...WQL_TAG_KEYS];
|
|
95
|
+
var WQL_CONTENT_FILTER_KEYS = ["type", "text", "source", "notebook", "page", "contributes", "feed", "subscribed", ...WQL_TAG_KEYS];
|
|
96
96
|
var WQL_SOURCES = WQL_FIND_TARGETS;
|
|
97
97
|
var WQL_ROLLUP_PERIODS = ["2w", "4w"];
|
|
98
98
|
var WQL_DISPLAY_UNITS = ["kg", "lb"];
|
|
@@ -114,7 +114,7 @@ var WQL_KEYWORDS = [
|
|
|
114
114
|
];
|
|
115
115
|
|
|
116
116
|
// src/capabilities.ts
|
|
117
|
-
var CONTENT_GROUPING_DIMENSIONS = ["date", "day", "week", "month", "year", "discipline", "origin", "source", "notebook", "kind", "type", "tag"];
|
|
117
|
+
var CONTENT_GROUPING_DIMENSIONS = ["date", "day", "week", "month", "year", "discipline", "origin", "source", "notebook", "kind", "type", "tag", "feed"];
|
|
118
118
|
var STRUCTURAL_TYPES = { time: true, groupby: true, rollup: true, unit: true, where: true, agg: true };
|
|
119
119
|
var FACT_KEYS = WQL_TAG_KEYS.filter((key) => key !== "metric");
|
|
120
120
|
var TABLE_KEYS = WQL_TAG_KEYS.filter((key) => key !== "tags");
|
|
@@ -132,9 +132,9 @@ var TARGET_TYPES = {
|
|
|
132
132
|
// The notebook plane IS the note plane (its executor delegates), so both
|
|
133
133
|
// advertise the same member-criteria keys — container criteria (tags:,
|
|
134
134
|
// effort:, typed tags, text:) narrow notebook results, never ignored.
|
|
135
|
-
notebook: /* @__PURE__ */ new Set(["text", "notebook", "tag", "effort", ...WQL_TYPED_TAG_KEYS, "type", "page", "source", "note", "time", "groupby", "where"]),
|
|
136
|
-
note: /* @__PURE__ */ new Set(["text", "notebook", "tag", "effort", ...WQL_TYPED_TAG_KEYS, "type", "page", "source", "note", "time", "groupby", "where"]),
|
|
137
|
-
block: /* @__PURE__ */ new Set(["text", "notebook", "tag", "effort", "type", "source", "note", "time", "groupby", "where"]),
|
|
135
|
+
notebook: /* @__PURE__ */ new Set(["text", "notebook", "tag", "effort", ...WQL_TYPED_TAG_KEYS, "type", "page", "source", "note", "time", "groupby", "where", "feed", "subscribed"]),
|
|
136
|
+
note: /* @__PURE__ */ new Set(["text", "notebook", "tag", "effort", ...WQL_TYPED_TAG_KEYS, "type", "page", "source", "note", "time", "groupby", "where", "feed", "subscribed"]),
|
|
137
|
+
block: /* @__PURE__ */ new Set(["text", "notebook", "tag", "effort", "type", "source", "note", "time", "groupby", "where", "feed", "subscribed"]),
|
|
138
138
|
effort: /* @__PURE__ */ new Set([...WQL_EFFORT_FILTER_KEYS, "groupby"]),
|
|
139
139
|
session: /* @__PURE__ */ new Set(["result", "block", "note", "plane", "time", "groupby"]),
|
|
140
140
|
segment: /* @__PURE__ */ new Set([...TABLE_KEYS, "time", "groupby", "unit"]),
|
|
@@ -179,9 +179,9 @@ function supportsWqlFilterKey(target, family, rawKey) {
|
|
|
179
179
|
}
|
|
180
180
|
var parser = lr.LRParser.deserialize({
|
|
181
181
|
version: 14,
|
|
182
|
-
states: "
|
|
183
|
-
stateData: ")
|
|
184
|
-
goto: "$^oPPps|P!T![!`!dP!j!q!wPP#OPp#TP#W#^PP#d#n#t#z$Q$WRWOQVOQk^R!
|
|
182
|
+
states: "+dOVQPOOOOQO'#Cb'#CbObQPO'#C`OgQPO'#C`OlQPO'#ClOqQQO'#C_OOQO'#C_'#C_O!SQQO'#CnQOQPOOOOQO,58z,58zO!bQPO,58zOOQO,59W,59WO!gQPO'#CdOOQO,58y,58yOVQPO,58xO!rQPO'#CoO!wQPO'#CrOOQO,59Y,59YO!|QPO,59YO#UQQO'#CcOOQO1G.f1G.fOOQO'#Cg'#CgO#jQPO'#CeO#oQPO'#CeOOQO,59O,59OO#tQPO,59OO#|QPO'#C_O$XQPO1G.dO$aQPO,59ZO$iQQO,59^OOQO1G.t1G.tO$nQPO'#CuO$sQQO,58}O%XQPO,59PO%dQPO,59PO%iQPO'#CxO%qQPO1G.jOOQO1G.j1G.jOVQPO'#CyO%yQPO7+$OOOQO'#Cq'#CqOOQO1G.u1G.uO&RQPO1G.uO&ZQPO1G.xOOQO,59a,59aOOQO-E6s-E6sOOQO'#Ci'#CiO&`QPO'#CiO&tQPO'#CiO'SQPO'#ChOOQO1G.k1G.kO%XQPO1G.kOOQO,59d,59dOOQO-E6v-E6vOOQO7+$U7+$UO'_QPO'#CcOOQO,59e,59eOOQO-E6w-E6wO'mQPO'#CzO'rQPO7+$aOOQO7+$a7+$aO'zQPO7+$dO(PQPO'#CvO(UQPO,59TOOQO,59T,59TO%XQPO'#CwO(jQPO,59SOOQO7+$V7+$VO(uQPO,58}OOQO,59f,59fOOQO-E6x-E6xOOQO<<G{<<G{OOQO<<HO<<HOOOQO,59b,59bOOQO-E6t-E6tOOQO1G.o1G.oOOQO,59c,59cOOQO-E6u-E6uO)TQPO,58zO)YQPO'#C`",
|
|
183
|
+
stateData: ")_~OqOS~OTPOaSOrQO~OTXO~OrYO~OTZO~Ot[OdRXgRXoRXuRX~Od_Og`Ou^OobX~OTcO~OTeOYgOwhO~OtlO~OxmO~Og`Ooba~OsoOdVXgVXoVXtVXuVX~OrqO~OTeO~OvsOwuO~Ot[OoRXuRX~OuvOoQi~OTxOwyO~Oh{O~OT|O~OsoOdVagVaoVatVauVa~OT!PO^!OO_!QO~Or!TO~OTeOYgO~OvsOw!WO~OuvOoQq~Ov![Ow!^O~OT!_O~O^!bOr!`Os!`Ou]Xv]Xw]X~O^!bOu]Xv]Xw]X~Ou!cOv[Xw[X~OsoOoVXtVXuVX~OTxO~Ov![Ow!iO~Oy!jO~OT!kO~O^!mOr!`Os!`Ou]av]aw]a~Ou!cOv[aw[a~OsoOoVatVauVa~OT!XO~Or!pO~O",
|
|
184
|
+
goto: "$^oPPps|P!T![!`!dP!j!q!wPP#OPp#TP#W#^PP#d#n#t#z$Q$WRWOQVOQk^R!YvQTOTj^vQROT!q^vTdY!pT]TjQi[R!UsSf[sRrgQ!SqR!e!TS!Rq!TR!n!cVUO^vRbVQzlR!g![QaVRnbQpcS}p!fR!f!XQ!a!PR!l!aQ!d!RR!o!dQtiR!VtQwkR!ZwQ!]zR!h!]",
|
|
185
185
|
nodeNames: "\u26A0 Query Pipeline Stage Head Word Aggregator Metric Filters Filter Negate TagKey TagValue Value Star Quoted DatasetReference At Single GroupBy By Dimension Rollup RollupDot Int",
|
|
186
186
|
maxTerm: 41,
|
|
187
187
|
skippedNodes: [0],
|
|
@@ -671,7 +671,7 @@ function validateSourceFilter(filters) {
|
|
|
671
671
|
return `source:notebook is retired \u2014 :notebook{} is the notebook plane (every notebook); narrow it with the notebook: filter, e.g. :notebook{notebook:journal}.`;
|
|
672
672
|
}
|
|
673
673
|
if (val === "feed" || val === "feeds" || val.startsWith("feed:")) {
|
|
674
|
-
return `source:${val} is retired \u2014 the feed corpus is the notebook plane; use source:notebooks
|
|
674
|
+
return `source:${val} is retired \u2014 the feed corpus is the notebook plane; use feed:<feedId> or source:notebooks.`;
|
|
675
675
|
}
|
|
676
676
|
if (val === "collection" || val === "collections" || val.startsWith("collection:")) {
|
|
677
677
|
return `source:${val} is retired \u2014 collections are notebooks; use source:notebooks or notebook:<slug>.`;
|
|
@@ -684,6 +684,28 @@ function validateSourceFilter(filters) {
|
|
|
684
684
|
}
|
|
685
685
|
return void 0;
|
|
686
686
|
}
|
|
687
|
+
function validateSubscribedFilter(filters) {
|
|
688
|
+
for (const f of filters) {
|
|
689
|
+
if (f.key !== "subscribed") continue;
|
|
690
|
+
for (const v of f.values) {
|
|
691
|
+
if (v.value !== "true" && v.value !== "false") {
|
|
692
|
+
return `Invalid subscribed: value '${v.value}' \u2014 expected true or false`;
|
|
693
|
+
}
|
|
694
|
+
}
|
|
695
|
+
}
|
|
696
|
+
return void 0;
|
|
697
|
+
}
|
|
698
|
+
function validateFeedFilter(filters) {
|
|
699
|
+
for (const f of filters) {
|
|
700
|
+
if (f.key !== "feed") continue;
|
|
701
|
+
for (const v of f.values) {
|
|
702
|
+
if (!v.value && !v.wildcard) {
|
|
703
|
+
return `Invalid feed: value \u2014 expected a non-empty feed identifier or wildcard`;
|
|
704
|
+
}
|
|
705
|
+
}
|
|
706
|
+
}
|
|
707
|
+
return void 0;
|
|
708
|
+
}
|
|
687
709
|
function extractPipes(raw) {
|
|
688
710
|
let pipeIndex = -1;
|
|
689
711
|
let depth = 0;
|
|
@@ -755,7 +777,7 @@ function extractFilters(query, text) {
|
|
|
755
777
|
let value = quoted ? raw.slice(1, -1) : raw;
|
|
756
778
|
const wildcard = quoted ? false : value.endsWith("*");
|
|
757
779
|
if (wildcard) value = value.slice(0, -1);
|
|
758
|
-
if (!value) continue;
|
|
780
|
+
if (!value && !wildcard) continue;
|
|
759
781
|
values.push({ value, wildcard });
|
|
760
782
|
}
|
|
761
783
|
if (values.length === 0) continue;
|
|
@@ -1000,6 +1022,16 @@ function parseFindQuery(raw, opts) {
|
|
|
1000
1022
|
result.error = sourceError;
|
|
1001
1023
|
return result;
|
|
1002
1024
|
}
|
|
1025
|
+
const subscribedError = validateSubscribedFilter(result.filters);
|
|
1026
|
+
if (subscribedError) {
|
|
1027
|
+
result.error = subscribedError;
|
|
1028
|
+
return result;
|
|
1029
|
+
}
|
|
1030
|
+
const feedError = validateFeedFilter(result.filters);
|
|
1031
|
+
if (feedError) {
|
|
1032
|
+
result.error = feedError;
|
|
1033
|
+
return result;
|
|
1034
|
+
}
|
|
1003
1035
|
const findGrainError = retiredGrainRollup(result.filters);
|
|
1004
1036
|
if (findGrainError) {
|
|
1005
1037
|
result.error = findGrainError;
|
|
@@ -2975,6 +3007,29 @@ function notebookOriginOfItem(item) {
|
|
|
2975
3007
|
if (notebook === "notebook/journal" || notebook === "notebook/playground") return "default";
|
|
2976
3008
|
return "feed";
|
|
2977
3009
|
}
|
|
3010
|
+
function feedIdOfItem(item) {
|
|
3011
|
+
const origin = notebookOriginOfItem(item);
|
|
3012
|
+
if (origin === "user") return "local";
|
|
3013
|
+
if (item.feedSourceId) return item.feedSourceId;
|
|
3014
|
+
if (origin === "default") return "local";
|
|
3015
|
+
return "core";
|
|
3016
|
+
}
|
|
3017
|
+
function chunkIdOfItem(item) {
|
|
3018
|
+
if (item.seedChunkId) return item.seedChunkId;
|
|
3019
|
+
const nb = notebookOfItem(item);
|
|
3020
|
+
if (!nb) return void 0;
|
|
3021
|
+
const slug = nb.replace(/^notebook\//, "");
|
|
3022
|
+
return `notebook.${slug}`;
|
|
3023
|
+
}
|
|
3024
|
+
function isItemSubscribed(item, isNotebookSubscribedFn) {
|
|
3025
|
+
const origin = item.origin ?? notebookOriginOfItem(item);
|
|
3026
|
+
if (origin === "user" || origin === "default") return true;
|
|
3027
|
+
if (!isNotebookSubscribedFn) return true;
|
|
3028
|
+
const feedId = feedIdOfItem(item);
|
|
3029
|
+
const chunkId = chunkIdOfItem(item);
|
|
3030
|
+
if (!chunkId) return true;
|
|
3031
|
+
return isNotebookSubscribedFn(feedId, chunkId);
|
|
3032
|
+
}
|
|
2978
3033
|
function isJournalRow(item) {
|
|
2979
3034
|
const sourceId = item.sourceId;
|
|
2980
3035
|
if (item.type === "playground" || item.id?.startsWith("playground/") || item.noteId?.startsWith("playground/")) return false;
|
|
@@ -3387,6 +3442,7 @@ var QueryService = class {
|
|
|
3387
3442
|
pageStore;
|
|
3388
3443
|
relationStore;
|
|
3389
3444
|
datasetStore;
|
|
3445
|
+
isNotebookSubscribed;
|
|
3390
3446
|
// Optional storage seam properties for block_efforts and typed tag resolution.
|
|
3391
3447
|
// Injected by the app adapter (`services/queryService.ts`); tests can supply fakes.
|
|
3392
3448
|
blockEffortsStore = {
|
|
@@ -3411,6 +3467,7 @@ var QueryService = class {
|
|
|
3411
3467
|
if (stores.blockEffortsStore) this.blockEffortsStore = stores.blockEffortsStore;
|
|
3412
3468
|
if (stores.tagsStore) this.tagsStore = stores.tagsStore;
|
|
3413
3469
|
if (stores.noteTagsStore) this.noteTagsStore = stores.noteTagsStore;
|
|
3470
|
+
if (stores.isNotebookSubscribed) this.isNotebookSubscribed = stores.isNotebookSubscribed;
|
|
3414
3471
|
} else {
|
|
3415
3472
|
this.store = storesOrEventStore ?? defaultEventStore;
|
|
3416
3473
|
this.noteStore = noteStore ?? defaultNoteStore;
|
|
@@ -3814,6 +3871,38 @@ var QueryService = class {
|
|
|
3814
3871
|
}
|
|
3815
3872
|
}
|
|
3816
3873
|
notes = applyNotebookFilter(notes, parsed.filters);
|
|
3874
|
+
const isSubscribedFn = options2.isNotebookSubscribed ?? this.isNotebookSubscribed ?? (() => true);
|
|
3875
|
+
for (const filter of parsed.filters) {
|
|
3876
|
+
if (filter.key === "feed") {
|
|
3877
|
+
const wanted = new Set(filter.values.map((v) => v.value));
|
|
3878
|
+
const hasWildcard = filter.values.some((v) => v.wildcard);
|
|
3879
|
+
notes = notes.filter((n) => {
|
|
3880
|
+
const fid = feedIdOfItem(n);
|
|
3881
|
+
const hit = hasWildcard ? fid !== "local" : wanted.has(fid);
|
|
3882
|
+
return filter.negate ? !hit : hit;
|
|
3883
|
+
});
|
|
3884
|
+
}
|
|
3885
|
+
}
|
|
3886
|
+
const subscribedFilter = parsed.filters.find((f) => f.key === "subscribed");
|
|
3887
|
+
if (subscribedFilter) {
|
|
3888
|
+
const wantedValues = new Set(subscribedFilter.values.map((v) => v.value));
|
|
3889
|
+
const wantsTrue = wantedValues.has("true");
|
|
3890
|
+
const wantsFalse = wantedValues.has("false");
|
|
3891
|
+
notes = notes.filter((n) => {
|
|
3892
|
+
const isSub = isItemSubscribed(n, isSubscribedFn);
|
|
3893
|
+
let match = false;
|
|
3894
|
+
if (wantsTrue && wantsFalse) {
|
|
3895
|
+
match = true;
|
|
3896
|
+
} else if (wantsTrue) {
|
|
3897
|
+
match = isSub;
|
|
3898
|
+
} else if (wantsFalse) {
|
|
3899
|
+
match = !isSub;
|
|
3900
|
+
}
|
|
3901
|
+
return subscribedFilter.negate ? !match : match;
|
|
3902
|
+
});
|
|
3903
|
+
} else if (parsed.target === "notebook" || parsed.raw.startsWith(":notebook")) {
|
|
3904
|
+
notes = notes.filter((n) => isItemSubscribed(n, isSubscribedFn));
|
|
3905
|
+
}
|
|
3817
3906
|
for (const filter of parsed.filters) {
|
|
3818
3907
|
if (filter.key === "note") {
|
|
3819
3908
|
const wanted = new Set(filter.values.map((v) => v.value));
|
|
@@ -3952,6 +4041,36 @@ var QueryService = class {
|
|
|
3952
4041
|
}
|
|
3953
4042
|
}
|
|
3954
4043
|
blocks = applyNotebookFilter(blocks, parsed.filters);
|
|
4044
|
+
const isSubscribedFn = options2.isNotebookSubscribed ?? this.isNotebookSubscribed ?? (() => true);
|
|
4045
|
+
for (const filter of parsed.filters) {
|
|
4046
|
+
if (filter.key === "feed") {
|
|
4047
|
+
const wanted = new Set(filter.values.map((v) => v.value));
|
|
4048
|
+
const hasWildcard = filter.values.some((v) => v.wildcard);
|
|
4049
|
+
blocks = blocks.filter((b) => {
|
|
4050
|
+
const fid = feedIdOfItem(b);
|
|
4051
|
+
const hit = hasWildcard ? fid !== "local" : wanted.has(fid);
|
|
4052
|
+
return filter.negate ? !hit : hit;
|
|
4053
|
+
});
|
|
4054
|
+
}
|
|
4055
|
+
}
|
|
4056
|
+
const subscribedFilter = parsed.filters.find((f) => f.key === "subscribed");
|
|
4057
|
+
if (subscribedFilter) {
|
|
4058
|
+
const wantedValues = new Set(subscribedFilter.values.map((v) => v.value));
|
|
4059
|
+
const wantsTrue = wantedValues.has("true");
|
|
4060
|
+
const wantsFalse = wantedValues.has("false");
|
|
4061
|
+
blocks = blocks.filter((b) => {
|
|
4062
|
+
const isSub = isItemSubscribed(b, isSubscribedFn);
|
|
4063
|
+
let match = false;
|
|
4064
|
+
if (wantsTrue && wantsFalse) {
|
|
4065
|
+
match = true;
|
|
4066
|
+
} else if (wantsTrue) {
|
|
4067
|
+
match = isSub;
|
|
4068
|
+
} else if (wantsFalse) {
|
|
4069
|
+
match = !isSub;
|
|
4070
|
+
}
|
|
4071
|
+
return subscribedFilter.negate ? !match : match;
|
|
4072
|
+
});
|
|
4073
|
+
}
|
|
3955
4074
|
for (const filter of parsed.filters) {
|
|
3956
4075
|
if (isTagLabelKey(filter.key) && !filter.negate) {
|
|
3957
4076
|
const matchingNoteIds = /* @__PURE__ */ new Set();
|
|
@@ -5053,7 +5172,39 @@ function parseMetaLines(lines) {
|
|
|
5053
5172
|
items.push(itemMatch[1].trim());
|
|
5054
5173
|
i++;
|
|
5055
5174
|
}
|
|
5056
|
-
|
|
5175
|
+
if (items.length > 0) {
|
|
5176
|
+
meta[key] = items;
|
|
5177
|
+
} else if (key === "metrics" || key === "summaries") {
|
|
5178
|
+
while (i + 1 < lines.length) {
|
|
5179
|
+
const childLine = lines[i + 1];
|
|
5180
|
+
if (/^\s*(?:#.*)?$/.test(childLine)) {
|
|
5181
|
+
i++;
|
|
5182
|
+
continue;
|
|
5183
|
+
}
|
|
5184
|
+
const childMatch = childLine.match(/^\s{2,}([A-Za-z][\w.-]*)\s*:(.*)$/);
|
|
5185
|
+
if (!childMatch) break;
|
|
5186
|
+
i++;
|
|
5187
|
+
const childKey = `${key}.${childMatch[1]}`;
|
|
5188
|
+
const childRaw = childMatch[2].trim();
|
|
5189
|
+
if (childRaw === "") {
|
|
5190
|
+
const childItems = [];
|
|
5191
|
+
while (i + 1 < lines.length) {
|
|
5192
|
+
const listMatch = lines[i + 1].match(/^\s{4,}-\s+(.+)$/);
|
|
5193
|
+
if (!listMatch) break;
|
|
5194
|
+
childItems.push(listMatch[1].trim());
|
|
5195
|
+
i++;
|
|
5196
|
+
}
|
|
5197
|
+
meta[childKey] = childItems.length > 0 ? childItems : "";
|
|
5198
|
+
} else {
|
|
5199
|
+
const wasQuoted = /^(['"])(.*)\1$/.test(childRaw);
|
|
5200
|
+
const value = unquote(childRaw);
|
|
5201
|
+
const num = Number(value);
|
|
5202
|
+
meta[childKey] = !wasQuoted && value !== "" && !isNaN(num) ? num : value;
|
|
5203
|
+
}
|
|
5204
|
+
}
|
|
5205
|
+
} else {
|
|
5206
|
+
meta[key] = "";
|
|
5207
|
+
}
|
|
5057
5208
|
} else {
|
|
5058
5209
|
const wasQuoted = /^(['"])(.*)\1$/.test(rawVal);
|
|
5059
5210
|
const value = unquote(rawVal);
|
|
@@ -5478,13 +5629,13 @@ ${query}
|
|
|
5478
5629
|
}
|
|
5479
5630
|
|
|
5480
5631
|
// src/version.ts
|
|
5481
|
-
var VERSION = "0.
|
|
5482
|
-
var GIT_SHA = "
|
|
5483
|
-
var BUILD_TIME = "2026-10-
|
|
5632
|
+
var VERSION = "0.46.2168";
|
|
5633
|
+
var GIT_SHA = "109e0ec";
|
|
5634
|
+
var BUILD_TIME = "2026-10-26T22:17:26.224Z";
|
|
5484
5635
|
var SEMVER = {
|
|
5485
|
-
version: "0.
|
|
5486
|
-
gitSha: "
|
|
5487
|
-
buildTime: "2026-10-
|
|
5636
|
+
version: "0.46.2168",
|
|
5637
|
+
gitSha: "109e0ec",
|
|
5638
|
+
buildTime: "2026-10-26T22:17:26.224Z"
|
|
5488
5639
|
};
|
|
5489
5640
|
|
|
5490
5641
|
Object.defineProperty(exports, "DEFAULT_NOTEBOOK_SLUGS", {
|
|
@@ -5579,6 +5730,7 @@ exports.buildDashboardDocument = buildDashboardDocument;
|
|
|
5579
5730
|
exports.buildDashboardScaffold = buildDashboardScaffold;
|
|
5580
5731
|
exports.buildDrillDownQuery = buildDrillDownQuery;
|
|
5581
5732
|
exports.captureContext = captureContext;
|
|
5733
|
+
exports.chunkIdOfItem = chunkIdOfItem;
|
|
5582
5734
|
exports.civilDateAdd = civilDateAdd;
|
|
5583
5735
|
exports.civilDateDiff = civilDateDiff;
|
|
5584
5736
|
exports.civilDateOf = civilDateOf;
|
|
@@ -5594,6 +5746,7 @@ exports.duplicateWidget = duplicateWidget;
|
|
|
5594
5746
|
exports.eventsToStoredLogs = eventsToStoredLogs;
|
|
5595
5747
|
exports.extractDashboardTokens = extractDashboardTokens;
|
|
5596
5748
|
exports.extractFrontmatterTags = extractFrontmatterTags;
|
|
5749
|
+
exports.feedIdOfItem = feedIdOfItem;
|
|
5597
5750
|
exports.feedOfItem = feedOfItem;
|
|
5598
5751
|
exports.findTargetAdvisories = findTargetAdvisories;
|
|
5599
5752
|
exports.getList = getList;
|
|
@@ -5606,6 +5759,7 @@ exports.isDashboardMeta = isDashboardMeta;
|
|
|
5606
5759
|
exports.isDashboardWidgetType = isDashboardWidgetType;
|
|
5607
5760
|
exports.isEffortDiscipline = isEffortDiscipline;
|
|
5608
5761
|
exports.isFindQuery = isFindQuery;
|
|
5762
|
+
exports.isItemSubscribed = isItemSubscribed;
|
|
5609
5763
|
exports.isPipelineQuery = isPipelineQuery;
|
|
5610
5764
|
exports.isProposedMetric = isProposedMetric;
|
|
5611
5765
|
exports.migrateLegacyChunkId = migrateLegacyChunkId;
|