@bitcobblers/wod-wiki-wql 0.7.37 → 0.8.39
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 +89 -61
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +46 -19
- package/dist/index.d.ts +46 -19
- package/dist/index.mjs +86 -62
- package/dist/index.mjs.map +1 -1
- package/package.json +3 -3
package/dist/index.d.cts
CHANGED
|
@@ -61,6 +61,23 @@ type WqlFindTarget = (typeof WQL_FIND_TARGETS)[number];
|
|
|
61
61
|
/** Content query scopes (in <scope>). */
|
|
62
62
|
declare const WQL_SCOPES: readonly ["journal", "collections", "feeds", "all"];
|
|
63
63
|
type WqlScope = (typeof WQL_SCOPES)[number];
|
|
64
|
+
/** Result planes — `rows:<plane>` narrows raw output-statement rows by the
|
|
65
|
+
* unified store's promoted `outputType` column. The STORE vocabulary is
|
|
66
|
+
* open (core KNOWN_OUTPUT_TYPES, ticket 002: unknowns are stored and
|
|
67
|
+
* returned); the QUERY surface is a closed enum at parse (prototype C7) —
|
|
68
|
+
* reopening toward a registry is a later, separate decision. Custom types
|
|
69
|
+
* stay addressable programmatically via hand-built ASTs. */
|
|
70
|
+
declare const WQL_RESULT_PLANES: readonly ["segment", "system", "load", "event", "compiler", "completion", "analytics", "wellness"];
|
|
71
|
+
type WqlResultPlane = (typeof WQL_RESULT_PLANES)[number];
|
|
72
|
+
/** All `rows:` targets — content planes plus result planes (rows model
|
|
73
|
+
* §1.0: every query selects rows from a target) plus `all`, the explicit
|
|
74
|
+
* no-narrowing pseudo-target (spec v2 decision 1: the bare `rows:{…}`
|
|
75
|
+
* alias retires). Content-plane targets scope by content, not outputType
|
|
76
|
+
* (C4). */
|
|
77
|
+
declare const WQL_ROWS_TARGETS: readonly ["note", "block", "effort", "segment", "system", "load", "event", "compiler", "completion", "analytics", "wellness", "all"];
|
|
78
|
+
type WqlRowsTarget = (typeof WQL_ROWS_TARGETS)[number];
|
|
79
|
+
/** Rows scope filter keys (C4): the exact-match keys a rows query filters by. */
|
|
80
|
+
declare const WQL_ROWS_SCOPE_KEYS: readonly ["result", "block", "note"];
|
|
64
81
|
/** Content-specific filter keys (beyond the analytics tag keys). */
|
|
65
82
|
declare const WQL_CONTENT_FILTER_KEYS: readonly ["type", "text", "has", "source", "catalog", "effort", "discipline", "intensity", "note", "page", "origin", "grain", "metric", "block", "result", "tags"];
|
|
66
83
|
type WqlContentFilterKey = (typeof WQL_CONTENT_FILTER_KEYS)[number];
|
|
@@ -238,7 +255,12 @@ interface FindPredicate {
|
|
|
238
255
|
unit: 'd' | 'w';
|
|
239
256
|
};
|
|
240
257
|
}
|
|
241
|
-
|
|
258
|
+
/**
|
|
259
|
+
* Result of parsing an analytics (aggregate) query — `agg:metric{filters} …`.
|
|
260
|
+
* Discriminated union member: `family === 'aggregate'` (C5).
|
|
261
|
+
*/
|
|
262
|
+
interface ParsedAggregateQuery {
|
|
263
|
+
family: 'aggregate';
|
|
242
264
|
raw: string;
|
|
243
265
|
agg: Aggregator;
|
|
244
266
|
/** Canonical Metric Key (fact row `metricKey`). */
|
|
@@ -258,8 +280,9 @@ interface ParsedQuery {
|
|
|
258
280
|
}
|
|
259
281
|
/** Result of parsing a content-discovery query (`find:target{filters} in scope`). */
|
|
260
282
|
interface ParsedFindQuery {
|
|
283
|
+
family: 'find';
|
|
261
284
|
raw: string;
|
|
262
|
-
/** Content target
|
|
285
|
+
/** Content target — a WQL_FIND_TARGETS value (C7 closed enum). */
|
|
263
286
|
target: string;
|
|
264
287
|
filters: TagFilter[];
|
|
265
288
|
/** Where to look: journal | collections | feeds | all. */
|
|
@@ -273,11 +296,13 @@ interface ParsedFindQuery {
|
|
|
273
296
|
join?: MetricPredicate;
|
|
274
297
|
error?: string;
|
|
275
298
|
}
|
|
276
|
-
type AnyParsedQuery =
|
|
299
|
+
type AnyParsedQuery = ParsedAggregateQuery | ParsedFindQuery | ParsedRowsQuery;
|
|
277
300
|
/** Type guard: true for content-discovery queries. */
|
|
278
301
|
declare function isFindQuery(parsed: AnyParsedQuery): parsed is ParsedFindQuery;
|
|
279
302
|
/** Type guard: true for rows queries. */
|
|
280
303
|
declare function isRowsQuery(parsed: AnyParsedQuery): parsed is ParsedRowsQuery;
|
|
304
|
+
/** Type guard: true for analytics (aggregate) queries. */
|
|
305
|
+
declare function isAggregateQuery(parsed: AnyParsedQuery): parsed is ParsedAggregateQuery;
|
|
281
306
|
interface SeriesPoint {
|
|
282
307
|
ts: number;
|
|
283
308
|
value: number;
|
|
@@ -290,7 +315,7 @@ interface SeriesPoint {
|
|
|
290
315
|
*/
|
|
291
316
|
interface ParsedRowsQuery {
|
|
292
317
|
raw: string;
|
|
293
|
-
/** Family discriminator
|
|
318
|
+
/** Family discriminator shared by all three query ASTs (C5). */
|
|
294
319
|
family: 'rows';
|
|
295
320
|
/** Output-statement type narrowing from the optional target (`rows:segment{…}`); undefined = all types. */
|
|
296
321
|
outputType?: string;
|
|
@@ -309,9 +334,10 @@ interface Series {
|
|
|
309
334
|
unit?: string;
|
|
310
335
|
}
|
|
311
336
|
/**
|
|
312
|
-
* Parse a WQL query string into
|
|
313
|
-
*
|
|
314
|
-
*
|
|
337
|
+
* Parse a WQL query string into one of the three query families —
|
|
338
|
+
* analytics aggregate, content find, or rows — discriminated by `family`
|
|
339
|
+
* (C5). Dispatch is textual: a leading `find:` routes to the content path,
|
|
340
|
+
* `rows` to the rows path, everything else to analytics.
|
|
315
341
|
*/
|
|
316
342
|
declare function parseQuery(raw: string): AnyParsedQuery;
|
|
317
343
|
|
|
@@ -632,7 +658,7 @@ interface FindOptions {
|
|
|
632
658
|
anchorNow?: number;
|
|
633
659
|
}
|
|
634
660
|
interface QueryResult {
|
|
635
|
-
parsed:
|
|
661
|
+
parsed: ParsedAggregateQuery;
|
|
636
662
|
series: Series[];
|
|
637
663
|
stages: {
|
|
638
664
|
selected: number;
|
|
@@ -672,9 +698,10 @@ declare class QueryService {
|
|
|
672
698
|
getFactsByTimeRange(start: number, end: number): Promise<AnalyticsDataPoint[]>;
|
|
673
699
|
runQuery(raw: string, options?: QueryOptions): Promise<QueryResult>;
|
|
674
700
|
/**
|
|
675
|
-
* Execute a rows query (rows
|
|
676
|
-
*
|
|
677
|
-
*
|
|
701
|
+
* Execute a rows query (rows:<target>{…}, #949/C4) — the session results
|
|
702
|
+
* table plane. Filter rules are validated at parse; this executes only.
|
|
703
|
+
* Reads event rows directly over the unified store: outputType narrowing
|
|
704
|
+
* hits the promoted column; content-plane targets scope by content.
|
|
678
705
|
*/
|
|
679
706
|
runRows(parsed: ParsedRowsQuery, options?: {
|
|
680
707
|
anchorNow?: number;
|
|
@@ -693,7 +720,7 @@ declare class QueryService {
|
|
|
693
720
|
* Execute a find:effort query against the effort registry.
|
|
694
721
|
*/
|
|
695
722
|
runFindEffort(parsed: ParsedFindQuery): Promise<FindQueryResult>;
|
|
696
|
-
run(parsed:
|
|
723
|
+
run(parsed: ParsedAggregateQuery, options?: QueryOptions): Promise<QueryResult>;
|
|
697
724
|
/**
|
|
698
725
|
* Stages 2–4 — BUCKET → GROUP → AGGREGATE over an already-selected +
|
|
699
726
|
* filtered `matched` set.
|
|
@@ -947,13 +974,13 @@ declare function parseFrontmatterProps(lines: string[]): Record<string, string>;
|
|
|
947
974
|
* Auto-generated build version metadata.
|
|
948
975
|
* Do not edit directly; updated by scripts/stamp-version.ts
|
|
949
976
|
*/
|
|
950
|
-
declare const VERSION = "0.
|
|
951
|
-
declare const GIT_SHA = "
|
|
952
|
-
declare const BUILD_TIME = "2026-08-
|
|
977
|
+
declare const VERSION = "0.8.39";
|
|
978
|
+
declare const GIT_SHA = "3c19185";
|
|
979
|
+
declare const BUILD_TIME = "2026-08-26T00:07:31.934Z";
|
|
953
980
|
declare const SEMVER: {
|
|
954
|
-
readonly version: "0.
|
|
955
|
-
readonly gitSha: "
|
|
956
|
-
readonly buildTime: "2026-08-
|
|
981
|
+
readonly version: "0.8.39";
|
|
982
|
+
readonly gitSha: "3c19185";
|
|
983
|
+
readonly buildTime: "2026-08-26T00:07:31.934Z";
|
|
957
984
|
};
|
|
958
985
|
|
|
959
|
-
export { type Aggregator, type AnyParsedQuery, BUILD_TIME, type BlockQueryStore, type ComparisonOp, DASHBOARD_GRID_MAX_COLS, DASHBOARD_WIDGET_TYPES, DEFAULT_DASHBOARD_TITLE, DISCIPLINE_FACTORS, type DashboardDocument, type DashboardMeta, type DashboardParsedSection, type DashboardSectionInput, type DashboardToken, type DashboardWidget, type DashboardWidgetType, EFFORT_DISCIPLINES, type EffortDiscipline, type EffortQueryStore, type EventRowIdentity, type FindOptions, type FindPredicate, type FindQueryResult, GIT_SHA, type IEffort, KG_PER_LB, type LinkWidget, type MetricPredicate, type NoteQueryStore, PLANNED_WIDGET_TYPES, type
|
|
986
|
+
export { type Aggregator, type AnyParsedQuery, BUILD_TIME, type BlockQueryStore, type ComparisonOp, DASHBOARD_GRID_MAX_COLS, DASHBOARD_WIDGET_TYPES, DEFAULT_DASHBOARD_TITLE, DISCIPLINE_FACTORS, type DashboardDocument, type DashboardMeta, type DashboardParsedSection, type DashboardSectionInput, type DashboardToken, type DashboardWidget, type DashboardWidgetType, EFFORT_DISCIPLINES, type EffortDiscipline, type EffortQueryStore, type EventRowIdentity, type FindOptions, type FindPredicate, type FindQueryResult, GIT_SHA, type IEffort, KG_PER_LB, type LinkWidget, type MetricPredicate, type NoteQueryStore, PLANNED_WIDGET_TYPES, type ParsedAggregateQuery, type ParsedFindQuery, type ParsedFrontmatter, type ParsedRowsQuery, type ParsedWqlLastSuffix, type ParsedWqlRollupSuffix, type ParsedWqlSuffixes, type QueryOptions, type QueryResult, QueryService, type QueryServiceStores, type QueryWidgetSuffix, type RowsQueryResult, type RowsRun, SEMVER, type Series, type SeriesPoint, type SummaryFactIdentity, type SummaryFactSourceOutput, type TagFilter, type TagValue, UNIT_FAMILIES, type UnifiedEventStore, type UnitFamily, type UnitFamilyDef, VERSION, WQL_AGGREGATORS, WQL_CALC_TARGETS, WQL_COMPARISON_OPS, WQL_CONTENT_FILTER_KEYS, WQL_DISPLAY_UNITS, WQL_FIND_TARGETS, WQL_GRAINS, WQL_INTENSITY_TIERS, WQL_KEYWORDS, WQL_METRIC_AGGREGATES, WQL_METRIC_FAMILIES, WQL_RESULT_PLANES, WQL_ROLLUP_PERIODS, WQL_ROWS_SCOPE_KEYS, WQL_ROWS_TARGETS, WQL_SCOPES, WQL_SOURCES, WQL_TAG_KEYS, WQL_VIRTUAL_DIMS, type WqlAggregator, type WqlCalcTarget, type WqlComparisonOp, type WqlCompletionOptions, type WqlContentFilterKey, type WqlDisplayUnit, type WqlFindTarget, type WqlGrain, type WqlIntensityTier, type WqlKeyword, type WqlMetricAggregate, type WqlMetricFamily, type WqlResultPlane, type WqlRollupPeriod, type WqlRowsTarget, type WqlScope, type WqlSource, type WqlTagKey, type WqlVirtualDim, buildDashboardDocument, buildDashboardScaffold, convert, dashboardSlug, defaultTokenValues, disciplineFactorFor, extractDashboardTokens, extractFrontmatterTags, getList, getScalar, getUnitFamily, isAggregateQuery, isDashboardMeta, isDashboardWidgetType, isEffortDiscipline, isFindQuery, isProposedMetric, isRowsQuery, normalizeSummaryFacts, parseDashboardNote, parseFlatProperties, parseFrontmatter, parseFrontmatterBody, parseFrontmatterCategories, parseFrontmatterProps, parseQuery, parseQueryWidgetSuffix, parseWqlSuffixes, projectEventToFacts, referencedTokens, resolveCanonicalMetricKey, resolveDisplayUnit, resolveWidgetType, serializeFrontmatter, setDashboardTokenValue, splitAtWhere, splitWidgetBody, staticNotesFromBlocks, staticTagIndexFromBlocks, stripFrontmatter, substituteTokens, toEventRows, toSummaryEventRows, unknownTokensMessage, unknownWidgetTypeMessage, wql, wqlCompletion, wqlCompletionSource, wqlHighlightStyle, wqlLanguage, parser as wqlParser, wql_parser_terms as wqlTerms };
|
package/dist/index.d.ts
CHANGED
|
@@ -61,6 +61,23 @@ type WqlFindTarget = (typeof WQL_FIND_TARGETS)[number];
|
|
|
61
61
|
/** Content query scopes (in <scope>). */
|
|
62
62
|
declare const WQL_SCOPES: readonly ["journal", "collections", "feeds", "all"];
|
|
63
63
|
type WqlScope = (typeof WQL_SCOPES)[number];
|
|
64
|
+
/** Result planes — `rows:<plane>` narrows raw output-statement rows by the
|
|
65
|
+
* unified store's promoted `outputType` column. The STORE vocabulary is
|
|
66
|
+
* open (core KNOWN_OUTPUT_TYPES, ticket 002: unknowns are stored and
|
|
67
|
+
* returned); the QUERY surface is a closed enum at parse (prototype C7) —
|
|
68
|
+
* reopening toward a registry is a later, separate decision. Custom types
|
|
69
|
+
* stay addressable programmatically via hand-built ASTs. */
|
|
70
|
+
declare const WQL_RESULT_PLANES: readonly ["segment", "system", "load", "event", "compiler", "completion", "analytics", "wellness"];
|
|
71
|
+
type WqlResultPlane = (typeof WQL_RESULT_PLANES)[number];
|
|
72
|
+
/** All `rows:` targets — content planes plus result planes (rows model
|
|
73
|
+
* §1.0: every query selects rows from a target) plus `all`, the explicit
|
|
74
|
+
* no-narrowing pseudo-target (spec v2 decision 1: the bare `rows:{…}`
|
|
75
|
+
* alias retires). Content-plane targets scope by content, not outputType
|
|
76
|
+
* (C4). */
|
|
77
|
+
declare const WQL_ROWS_TARGETS: readonly ["note", "block", "effort", "segment", "system", "load", "event", "compiler", "completion", "analytics", "wellness", "all"];
|
|
78
|
+
type WqlRowsTarget = (typeof WQL_ROWS_TARGETS)[number];
|
|
79
|
+
/** Rows scope filter keys (C4): the exact-match keys a rows query filters by. */
|
|
80
|
+
declare const WQL_ROWS_SCOPE_KEYS: readonly ["result", "block", "note"];
|
|
64
81
|
/** Content-specific filter keys (beyond the analytics tag keys). */
|
|
65
82
|
declare const WQL_CONTENT_FILTER_KEYS: readonly ["type", "text", "has", "source", "catalog", "effort", "discipline", "intensity", "note", "page", "origin", "grain", "metric", "block", "result", "tags"];
|
|
66
83
|
type WqlContentFilterKey = (typeof WQL_CONTENT_FILTER_KEYS)[number];
|
|
@@ -238,7 +255,12 @@ interface FindPredicate {
|
|
|
238
255
|
unit: 'd' | 'w';
|
|
239
256
|
};
|
|
240
257
|
}
|
|
241
|
-
|
|
258
|
+
/**
|
|
259
|
+
* Result of parsing an analytics (aggregate) query — `agg:metric{filters} …`.
|
|
260
|
+
* Discriminated union member: `family === 'aggregate'` (C5).
|
|
261
|
+
*/
|
|
262
|
+
interface ParsedAggregateQuery {
|
|
263
|
+
family: 'aggregate';
|
|
242
264
|
raw: string;
|
|
243
265
|
agg: Aggregator;
|
|
244
266
|
/** Canonical Metric Key (fact row `metricKey`). */
|
|
@@ -258,8 +280,9 @@ interface ParsedQuery {
|
|
|
258
280
|
}
|
|
259
281
|
/** Result of parsing a content-discovery query (`find:target{filters} in scope`). */
|
|
260
282
|
interface ParsedFindQuery {
|
|
283
|
+
family: 'find';
|
|
261
284
|
raw: string;
|
|
262
|
-
/** Content target
|
|
285
|
+
/** Content target — a WQL_FIND_TARGETS value (C7 closed enum). */
|
|
263
286
|
target: string;
|
|
264
287
|
filters: TagFilter[];
|
|
265
288
|
/** Where to look: journal | collections | feeds | all. */
|
|
@@ -273,11 +296,13 @@ interface ParsedFindQuery {
|
|
|
273
296
|
join?: MetricPredicate;
|
|
274
297
|
error?: string;
|
|
275
298
|
}
|
|
276
|
-
type AnyParsedQuery =
|
|
299
|
+
type AnyParsedQuery = ParsedAggregateQuery | ParsedFindQuery | ParsedRowsQuery;
|
|
277
300
|
/** Type guard: true for content-discovery queries. */
|
|
278
301
|
declare function isFindQuery(parsed: AnyParsedQuery): parsed is ParsedFindQuery;
|
|
279
302
|
/** Type guard: true for rows queries. */
|
|
280
303
|
declare function isRowsQuery(parsed: AnyParsedQuery): parsed is ParsedRowsQuery;
|
|
304
|
+
/** Type guard: true for analytics (aggregate) queries. */
|
|
305
|
+
declare function isAggregateQuery(parsed: AnyParsedQuery): parsed is ParsedAggregateQuery;
|
|
281
306
|
interface SeriesPoint {
|
|
282
307
|
ts: number;
|
|
283
308
|
value: number;
|
|
@@ -290,7 +315,7 @@ interface SeriesPoint {
|
|
|
290
315
|
*/
|
|
291
316
|
interface ParsedRowsQuery {
|
|
292
317
|
raw: string;
|
|
293
|
-
/** Family discriminator
|
|
318
|
+
/** Family discriminator shared by all three query ASTs (C5). */
|
|
294
319
|
family: 'rows';
|
|
295
320
|
/** Output-statement type narrowing from the optional target (`rows:segment{…}`); undefined = all types. */
|
|
296
321
|
outputType?: string;
|
|
@@ -309,9 +334,10 @@ interface Series {
|
|
|
309
334
|
unit?: string;
|
|
310
335
|
}
|
|
311
336
|
/**
|
|
312
|
-
* Parse a WQL query string into
|
|
313
|
-
*
|
|
314
|
-
*
|
|
337
|
+
* Parse a WQL query string into one of the three query families —
|
|
338
|
+
* analytics aggregate, content find, or rows — discriminated by `family`
|
|
339
|
+
* (C5). Dispatch is textual: a leading `find:` routes to the content path,
|
|
340
|
+
* `rows` to the rows path, everything else to analytics.
|
|
315
341
|
*/
|
|
316
342
|
declare function parseQuery(raw: string): AnyParsedQuery;
|
|
317
343
|
|
|
@@ -632,7 +658,7 @@ interface FindOptions {
|
|
|
632
658
|
anchorNow?: number;
|
|
633
659
|
}
|
|
634
660
|
interface QueryResult {
|
|
635
|
-
parsed:
|
|
661
|
+
parsed: ParsedAggregateQuery;
|
|
636
662
|
series: Series[];
|
|
637
663
|
stages: {
|
|
638
664
|
selected: number;
|
|
@@ -672,9 +698,10 @@ declare class QueryService {
|
|
|
672
698
|
getFactsByTimeRange(start: number, end: number): Promise<AnalyticsDataPoint[]>;
|
|
673
699
|
runQuery(raw: string, options?: QueryOptions): Promise<QueryResult>;
|
|
674
700
|
/**
|
|
675
|
-
* Execute a rows query (rows
|
|
676
|
-
*
|
|
677
|
-
*
|
|
701
|
+
* Execute a rows query (rows:<target>{…}, #949/C4) — the session results
|
|
702
|
+
* table plane. Filter rules are validated at parse; this executes only.
|
|
703
|
+
* Reads event rows directly over the unified store: outputType narrowing
|
|
704
|
+
* hits the promoted column; content-plane targets scope by content.
|
|
678
705
|
*/
|
|
679
706
|
runRows(parsed: ParsedRowsQuery, options?: {
|
|
680
707
|
anchorNow?: number;
|
|
@@ -693,7 +720,7 @@ declare class QueryService {
|
|
|
693
720
|
* Execute a find:effort query against the effort registry.
|
|
694
721
|
*/
|
|
695
722
|
runFindEffort(parsed: ParsedFindQuery): Promise<FindQueryResult>;
|
|
696
|
-
run(parsed:
|
|
723
|
+
run(parsed: ParsedAggregateQuery, options?: QueryOptions): Promise<QueryResult>;
|
|
697
724
|
/**
|
|
698
725
|
* Stages 2–4 — BUCKET → GROUP → AGGREGATE over an already-selected +
|
|
699
726
|
* filtered `matched` set.
|
|
@@ -947,13 +974,13 @@ declare function parseFrontmatterProps(lines: string[]): Record<string, string>;
|
|
|
947
974
|
* Auto-generated build version metadata.
|
|
948
975
|
* Do not edit directly; updated by scripts/stamp-version.ts
|
|
949
976
|
*/
|
|
950
|
-
declare const VERSION = "0.
|
|
951
|
-
declare const GIT_SHA = "
|
|
952
|
-
declare const BUILD_TIME = "2026-08-
|
|
977
|
+
declare const VERSION = "0.8.39";
|
|
978
|
+
declare const GIT_SHA = "3c19185";
|
|
979
|
+
declare const BUILD_TIME = "2026-08-26T00:07:31.934Z";
|
|
953
980
|
declare const SEMVER: {
|
|
954
|
-
readonly version: "0.
|
|
955
|
-
readonly gitSha: "
|
|
956
|
-
readonly buildTime: "2026-08-
|
|
981
|
+
readonly version: "0.8.39";
|
|
982
|
+
readonly gitSha: "3c19185";
|
|
983
|
+
readonly buildTime: "2026-08-26T00:07:31.934Z";
|
|
957
984
|
};
|
|
958
985
|
|
|
959
|
-
export { type Aggregator, type AnyParsedQuery, BUILD_TIME, type BlockQueryStore, type ComparisonOp, DASHBOARD_GRID_MAX_COLS, DASHBOARD_WIDGET_TYPES, DEFAULT_DASHBOARD_TITLE, DISCIPLINE_FACTORS, type DashboardDocument, type DashboardMeta, type DashboardParsedSection, type DashboardSectionInput, type DashboardToken, type DashboardWidget, type DashboardWidgetType, EFFORT_DISCIPLINES, type EffortDiscipline, type EffortQueryStore, type EventRowIdentity, type FindOptions, type FindPredicate, type FindQueryResult, GIT_SHA, type IEffort, KG_PER_LB, type LinkWidget, type MetricPredicate, type NoteQueryStore, PLANNED_WIDGET_TYPES, type
|
|
986
|
+
export { type Aggregator, type AnyParsedQuery, BUILD_TIME, type BlockQueryStore, type ComparisonOp, DASHBOARD_GRID_MAX_COLS, DASHBOARD_WIDGET_TYPES, DEFAULT_DASHBOARD_TITLE, DISCIPLINE_FACTORS, type DashboardDocument, type DashboardMeta, type DashboardParsedSection, type DashboardSectionInput, type DashboardToken, type DashboardWidget, type DashboardWidgetType, EFFORT_DISCIPLINES, type EffortDiscipline, type EffortQueryStore, type EventRowIdentity, type FindOptions, type FindPredicate, type FindQueryResult, GIT_SHA, type IEffort, KG_PER_LB, type LinkWidget, type MetricPredicate, type NoteQueryStore, PLANNED_WIDGET_TYPES, type ParsedAggregateQuery, type ParsedFindQuery, type ParsedFrontmatter, type ParsedRowsQuery, type ParsedWqlLastSuffix, type ParsedWqlRollupSuffix, type ParsedWqlSuffixes, type QueryOptions, type QueryResult, QueryService, type QueryServiceStores, type QueryWidgetSuffix, type RowsQueryResult, type RowsRun, SEMVER, type Series, type SeriesPoint, type SummaryFactIdentity, type SummaryFactSourceOutput, type TagFilter, type TagValue, UNIT_FAMILIES, type UnifiedEventStore, type UnitFamily, type UnitFamilyDef, VERSION, WQL_AGGREGATORS, WQL_CALC_TARGETS, WQL_COMPARISON_OPS, WQL_CONTENT_FILTER_KEYS, WQL_DISPLAY_UNITS, WQL_FIND_TARGETS, WQL_GRAINS, WQL_INTENSITY_TIERS, WQL_KEYWORDS, WQL_METRIC_AGGREGATES, WQL_METRIC_FAMILIES, WQL_RESULT_PLANES, WQL_ROLLUP_PERIODS, WQL_ROWS_SCOPE_KEYS, WQL_ROWS_TARGETS, WQL_SCOPES, WQL_SOURCES, WQL_TAG_KEYS, WQL_VIRTUAL_DIMS, type WqlAggregator, type WqlCalcTarget, type WqlComparisonOp, type WqlCompletionOptions, type WqlContentFilterKey, type WqlDisplayUnit, type WqlFindTarget, type WqlGrain, type WqlIntensityTier, type WqlKeyword, type WqlMetricAggregate, type WqlMetricFamily, type WqlResultPlane, type WqlRollupPeriod, type WqlRowsTarget, type WqlScope, type WqlSource, type WqlTagKey, type WqlVirtualDim, buildDashboardDocument, buildDashboardScaffold, convert, dashboardSlug, defaultTokenValues, disciplineFactorFor, extractDashboardTokens, extractFrontmatterTags, getList, getScalar, getUnitFamily, isAggregateQuery, isDashboardMeta, isDashboardWidgetType, isEffortDiscipline, isFindQuery, isProposedMetric, isRowsQuery, normalizeSummaryFacts, parseDashboardNote, parseFlatProperties, parseFrontmatter, parseFrontmatterBody, parseFrontmatterCategories, parseFrontmatterProps, parseQuery, parseQueryWidgetSuffix, parseWqlSuffixes, projectEventToFacts, referencedTokens, resolveCanonicalMetricKey, resolveDisplayUnit, resolveWidgetType, serializeFrontmatter, setDashboardTokenValue, splitAtWhere, splitWidgetBody, staticNotesFromBlocks, staticTagIndexFromBlocks, stripFrontmatter, substituteTokens, toEventRows, toSummaryEventRows, unknownTokensMessage, unknownWidgetTypeMessage, wql, wqlCompletion, wqlCompletionSource, wqlHighlightStyle, wqlLanguage, parser as wqlParser, wql_parser_terms as wqlTerms };
|
package/dist/index.mjs
CHANGED
|
@@ -1,16 +1,14 @@
|
|
|
1
|
+
import { KNOWN_OUTPUT_TYPES, MetricType } from '@bitcobblers/wod-wiki-core';
|
|
1
2
|
import { LRParser } from '@lezer/lr';
|
|
2
3
|
import { LRLanguage, HighlightStyle, LanguageSupport, syntaxHighlighting, syntaxTree } from '@codemirror/language';
|
|
3
4
|
import { autocompletion, snippetCompletion } from '@codemirror/autocomplete';
|
|
4
5
|
import { styleTags, tags } from '@lezer/highlight';
|
|
5
|
-
import { MetricType } from '@bitcobblers/wod-wiki-core';
|
|
6
6
|
|
|
7
7
|
var __defProp = Object.defineProperty;
|
|
8
8
|
var __export = (target, all) => {
|
|
9
9
|
for (var name in all)
|
|
10
10
|
__defProp(target, name, { get: all[name], enumerable: true });
|
|
11
11
|
};
|
|
12
|
-
|
|
13
|
-
// src/vocabulary.ts
|
|
14
12
|
var WQL_METRIC_FAMILIES = ["reps", "distance", "resistance", "elapsed", "power", "pace"];
|
|
15
13
|
var WQL_METRIC_AGGREGATES = ["totalVolume", "totalDistance", "tis", "sessionLoad"];
|
|
16
14
|
var WQL_AGGREGATORS = ["sum", "avg", "min", "max", "count", "last", "delta"];
|
|
@@ -56,6 +54,9 @@ var WQL_INTENSITY_TIERS = ["low", "moderate", "high"];
|
|
|
56
54
|
var WQL_GRAINS = ["summary", "event"];
|
|
57
55
|
var WQL_FIND_TARGETS = ["note", "block", "effort"];
|
|
58
56
|
var WQL_SCOPES = ["journal", "collections", "feeds", "all"];
|
|
57
|
+
var WQL_RESULT_PLANES = KNOWN_OUTPUT_TYPES;
|
|
58
|
+
var WQL_ROWS_TARGETS = [...WQL_FIND_TARGETS, ...WQL_RESULT_PLANES, "all"];
|
|
59
|
+
var WQL_ROWS_SCOPE_KEYS = ["result", "block", "note"];
|
|
59
60
|
var WQL_CONTENT_FILTER_KEYS = ["type", "text", "has", "source", "catalog", ...WQL_TAG_KEYS];
|
|
60
61
|
var WQL_SOURCES = ["journal", "collections", "feeds", "notes", "blocks", "efforts", "metrics"];
|
|
61
62
|
var WQL_ROLLUP_PERIODS = ["1d", "1w"];
|
|
@@ -232,11 +233,14 @@ function parseWqlSuffixes(raw) {
|
|
|
232
233
|
|
|
233
234
|
// src/wql.ts
|
|
234
235
|
function isFindQuery(parsed) {
|
|
235
|
-
return "
|
|
236
|
+
return parsed.family === "find";
|
|
236
237
|
}
|
|
237
238
|
function isRowsQuery(parsed) {
|
|
238
239
|
return parsed.family === "rows";
|
|
239
240
|
}
|
|
241
|
+
function isAggregateQuery(parsed) {
|
|
242
|
+
return parsed.family === "aggregate";
|
|
243
|
+
}
|
|
240
244
|
var AGGS = WQL_AGGREGATORS;
|
|
241
245
|
function cannotParse(text) {
|
|
242
246
|
return `Cannot parse "${text}". Expected agg:metric{filters} by {dims} .rollup(period)`;
|
|
@@ -276,14 +280,28 @@ function parseQuery(raw) {
|
|
|
276
280
|
return parseAnalyticsQuery(raw);
|
|
277
281
|
}
|
|
278
282
|
function cannotParseRows(text) {
|
|
279
|
-
return `Cannot parse "${text}". Expected rows:{result:\u2026|block:\u2026|note:\u2026} or rows:segment{\u2026} last 8w`;
|
|
283
|
+
return `Cannot parse "${text}". Expected rows:all{result:\u2026|block:\u2026|note:\u2026}, rows:<plane>{\u2026}, or rows:segment{\u2026} last 8w`;
|
|
284
|
+
}
|
|
285
|
+
function validateRowsFilters(filters) {
|
|
286
|
+
const scopeKeys = new Set(WQL_ROWS_SCOPE_KEYS);
|
|
287
|
+
const unsupported = filters.filter(
|
|
288
|
+
(f) => !scopeKeys.has(f.key) || f.negate || f.values.some((v) => v.wildcard)
|
|
289
|
+
);
|
|
290
|
+
if (unsupported.length > 0) {
|
|
291
|
+
return `Unsupported rows filter(s): ${unsupported.map((f) => (f.negate ? "!" : "") + f.key).join(", ")}. Rows queries support exact ${WQL_ROWS_SCOPE_KEYS.map((k) => `${k}:`).join(", ")} values.`;
|
|
292
|
+
}
|
|
293
|
+
if (!filters.some((f) => scopeKeys.has(f.key))) {
|
|
294
|
+
return `Rows query needs a scope: ${WQL_ROWS_SCOPE_KEYS.map((k) => `${k}:`).join(", ")}.`;
|
|
295
|
+
}
|
|
296
|
+
return void 0;
|
|
280
297
|
}
|
|
298
|
+
var BARE_ROWS_RETIRED = 'Bare "rows:" is retired \u2014 name a target: rows:all{\u2026} for every output type, or a plane like rows:segment{\u2026}.';
|
|
281
299
|
function parseRowsQuery(raw) {
|
|
282
300
|
const suffixes = parseWqlSuffixes(raw);
|
|
283
301
|
const { where: whereText, last, groupBy, rollup, primaryText } = suffixes;
|
|
284
302
|
const result = {
|
|
285
|
-
raw,
|
|
286
303
|
family: "rows",
|
|
304
|
+
raw,
|
|
287
305
|
filters: [],
|
|
288
306
|
last: last ? { size: last.size, unit: last.unit } : void 0
|
|
289
307
|
};
|
|
@@ -296,41 +314,48 @@ function parseRowsQuery(raw) {
|
|
|
296
314
|
return result;
|
|
297
315
|
}
|
|
298
316
|
const text = primaryText.trim();
|
|
299
|
-
|
|
300
|
-
|
|
301
|
-
|
|
302
|
-
|
|
303
|
-
|
|
304
|
-
|
|
305
|
-
|
|
306
|
-
|
|
307
|
-
|
|
308
|
-
|
|
309
|
-
} else {
|
|
317
|
+
if (/^rows:?\s*[{]?$/.test(text) || /^rows:?\s*[{]/.test(text)) {
|
|
318
|
+
result.error = BARE_ROWS_RETIRED;
|
|
319
|
+
return result;
|
|
320
|
+
}
|
|
321
|
+
const tree = parser.parse(text);
|
|
322
|
+
let syntaxError = false;
|
|
323
|
+
tree.iterate({ enter(node) {
|
|
324
|
+
if (node.type.isError) syntaxError = true;
|
|
325
|
+
} });
|
|
326
|
+
if (syntaxError) {
|
|
310
327
|
result.error = cannotParseRows(text);
|
|
311
328
|
return result;
|
|
312
329
|
}
|
|
313
|
-
|
|
314
|
-
|
|
315
|
-
|
|
316
|
-
|
|
317
|
-
|
|
318
|
-
|
|
319
|
-
|
|
320
|
-
|
|
321
|
-
|
|
322
|
-
|
|
323
|
-
|
|
324
|
-
|
|
325
|
-
|
|
326
|
-
|
|
327
|
-
|
|
328
|
-
result.
|
|
329
|
-
|
|
330
|
-
|
|
331
|
-
|
|
332
|
-
|
|
333
|
-
|
|
330
|
+
const query = tree.topNode;
|
|
331
|
+
const head = query.getChild(Head);
|
|
332
|
+
const aggNode = head?.getChild(Aggregator);
|
|
333
|
+
const metricNode = head?.getChild(Metric);
|
|
334
|
+
if (!head || !aggNode || !metricNode) {
|
|
335
|
+
result.error = BARE_ROWS_RETIRED;
|
|
336
|
+
return result;
|
|
337
|
+
}
|
|
338
|
+
const aggText = text.slice(aggNode.from, aggNode.to);
|
|
339
|
+
if (aggText !== "rows") {
|
|
340
|
+
result.error = cannotParseRows(text);
|
|
341
|
+
return result;
|
|
342
|
+
}
|
|
343
|
+
const target = text.slice(metricNode.from, metricNode.to);
|
|
344
|
+
if (!WQL_ROWS_TARGETS.includes(target)) {
|
|
345
|
+
result.error = `Unknown rows target "${target}". Try: ${WQL_ROWS_TARGETS.join(", ")}`;
|
|
346
|
+
return result;
|
|
347
|
+
}
|
|
348
|
+
if (target !== "all") result.outputType = target;
|
|
349
|
+
result.filters = extractFilters(query, text);
|
|
350
|
+
const grainError = retiredGrainRollup(result.filters);
|
|
351
|
+
if (grainError) {
|
|
352
|
+
result.error = grainError;
|
|
353
|
+
return result;
|
|
354
|
+
}
|
|
355
|
+
const filterError = validateRowsFilters(result.filters);
|
|
356
|
+
if (filterError) {
|
|
357
|
+
result.error = filterError;
|
|
358
|
+
return result;
|
|
334
359
|
}
|
|
335
360
|
return result;
|
|
336
361
|
}
|
|
@@ -371,6 +396,7 @@ function parseAnalyticsQuery(raw) {
|
|
|
371
396
|
const suffixes = parseWqlSuffixes(raw);
|
|
372
397
|
const { where: whereText, displayUnit, groupBy, rollup, primaryText: text } = suffixes;
|
|
373
398
|
const base = {
|
|
399
|
+
family: "aggregate",
|
|
374
400
|
raw,
|
|
375
401
|
agg: "sum",
|
|
376
402
|
metric: "",
|
|
@@ -438,6 +464,7 @@ function parseFindQuery(raw) {
|
|
|
438
464
|
const suffixes = parseWqlSuffixes(raw);
|
|
439
465
|
const { where: whereText, last, scope, primaryText: text } = suffixes;
|
|
440
466
|
const result = {
|
|
467
|
+
family: "find",
|
|
441
468
|
raw,
|
|
442
469
|
target: "",
|
|
443
470
|
filters: [],
|
|
@@ -471,6 +498,10 @@ function parseFindQuery(raw) {
|
|
|
471
498
|
return result;
|
|
472
499
|
}
|
|
473
500
|
result.target = text.slice(metricNode.from, metricNode.to);
|
|
501
|
+
if (!WQL_FIND_TARGETS.includes(result.target)) {
|
|
502
|
+
result.error = `Unknown find target "${result.target}". Try: ${WQL_FIND_TARGETS.join(", ")}`;
|
|
503
|
+
return result;
|
|
504
|
+
}
|
|
474
505
|
result.filters = extractFilters(query, text);
|
|
475
506
|
const findGrainError = retiredGrainRollup(result.filters);
|
|
476
507
|
if (findGrainError) {
|
|
@@ -1088,6 +1119,7 @@ function staticTagIndexFromBlocks(blocks) {
|
|
|
1088
1119
|
|
|
1089
1120
|
// src/QueryService.ts
|
|
1090
1121
|
var DAY = 864e5;
|
|
1122
|
+
var ROWS_CONTENT_PLANES = new Set(WQL_FIND_TARGETS);
|
|
1091
1123
|
function localDateString(ts) {
|
|
1092
1124
|
return new Date(ts).toLocaleDateString(void 0, { year: "numeric", month: "short", day: "numeric" });
|
|
1093
1125
|
}
|
|
@@ -1296,7 +1328,7 @@ var QueryService = class {
|
|
|
1296
1328
|
const parsed = parseQuery(raw);
|
|
1297
1329
|
if (isFindQuery(parsed)) {
|
|
1298
1330
|
return {
|
|
1299
|
-
parsed: { raw, agg: "count", metric: parsed.target, filters: [], groupBy: [] },
|
|
1331
|
+
parsed: { family: "aggregate", raw, agg: "count", metric: parsed.target, filters: [], groupBy: [] },
|
|
1300
1332
|
series: [],
|
|
1301
1333
|
stages: { selected: 0, buckets: 0, aggregated: 0, groups: 0 },
|
|
1302
1334
|
matched: []
|
|
@@ -1304,7 +1336,7 @@ var QueryService = class {
|
|
|
1304
1336
|
}
|
|
1305
1337
|
if (isRowsQuery(parsed)) {
|
|
1306
1338
|
return {
|
|
1307
|
-
parsed: { raw, agg: "count", metric: "rows", filters: [], groupBy: [] },
|
|
1339
|
+
parsed: { family: "aggregate", raw, agg: "count", metric: "rows", filters: [], groupBy: [] },
|
|
1308
1340
|
series: [],
|
|
1309
1341
|
stages: { selected: 0, buckets: 0, aggregated: 0, groups: 0 },
|
|
1310
1342
|
matched: []
|
|
@@ -1313,29 +1345,20 @@ var QueryService = class {
|
|
|
1313
1345
|
return this.run(parsed, options2);
|
|
1314
1346
|
}
|
|
1315
1347
|
/**
|
|
1316
|
-
* Execute a rows query (rows
|
|
1317
|
-
*
|
|
1318
|
-
*
|
|
1348
|
+
* Execute a rows query (rows:<target>{…}, #949/C4) — the session results
|
|
1349
|
+
* table plane. Filter rules are validated at parse; this executes only.
|
|
1350
|
+
* Reads event rows directly over the unified store: outputType narrowing
|
|
1351
|
+
* hits the promoted column; content-plane targets scope by content.
|
|
1319
1352
|
*/
|
|
1320
1353
|
async runRows(parsed, options2 = {}) {
|
|
1321
1354
|
const empty = { parsed, runs: [] };
|
|
1322
1355
|
if (parsed.error) return { ...empty, error: parsed.error };
|
|
1323
|
-
const ROWS_SCOPE_KEYS = /* @__PURE__ */ new Set(["result", "block", "note"]);
|
|
1324
|
-
const unsupported = parsed.filters.filter(
|
|
1325
|
-
(f) => !ROWS_SCOPE_KEYS.has(f.key) || f.negate || f.values.some((v) => v.wildcard)
|
|
1326
|
-
);
|
|
1327
|
-
if (unsupported.length > 0) {
|
|
1328
|
-
return {
|
|
1329
|
-
...empty,
|
|
1330
|
-
error: `Unsupported rows filter(s): ${unsupported.map((f) => (f.negate ? "!" : "") + f.key).join(", ")}. Rows queries support exact result:, block:, note: values.`
|
|
1331
|
-
};
|
|
1332
|
-
}
|
|
1333
1356
|
const scopeValues = (key) => parsed.filters.filter((f) => f.key === key).flatMap((f) => f.values.map((v) => v.value));
|
|
1334
1357
|
const resultIds = scopeValues("result");
|
|
1335
1358
|
const blockIds = scopeValues("block");
|
|
1336
1359
|
const noteIds = scopeValues("note");
|
|
1337
1360
|
if (resultIds.length + blockIds.length + noteIds.length === 0) {
|
|
1338
|
-
return { ...empty,
|
|
1361
|
+
return { ...empty, runs: [] };
|
|
1339
1362
|
}
|
|
1340
1363
|
const byResult = /* @__PURE__ */ new Map();
|
|
1341
1364
|
const collect = (rows) => {
|
|
@@ -1359,7 +1382,7 @@ var QueryService = class {
|
|
|
1359
1382
|
resultId,
|
|
1360
1383
|
noteId: rows[0].noteId,
|
|
1361
1384
|
timestamp: rows[0].timestamp,
|
|
1362
|
-
events: parsed.outputType ? rows.filter((row) => row.outputType === parsed.outputType) : rows
|
|
1385
|
+
events: parsed.outputType && !ROWS_CONTENT_PLANES.has(parsed.outputType) ? rows.filter((row) => row.outputType === parsed.outputType) : rows
|
|
1363
1386
|
})).filter((run) => run.events.length > 0);
|
|
1364
1387
|
return { parsed, runs };
|
|
1365
1388
|
}
|
|
@@ -1626,6 +1649,7 @@ var QueryService = class {
|
|
|
1626
1649
|
};
|
|
1627
1650
|
const join = parsed.join;
|
|
1628
1651
|
const findResult = await this.runFind({
|
|
1652
|
+
family: "find",
|
|
1629
1653
|
raw: "",
|
|
1630
1654
|
target: join.target,
|
|
1631
1655
|
filters: join.filters,
|
|
@@ -2044,15 +2068,15 @@ sum:$metric{} rollup:1w
|
|
|
2044
2068
|
}
|
|
2045
2069
|
|
|
2046
2070
|
// src/version.ts
|
|
2047
|
-
var VERSION = "0.
|
|
2048
|
-
var GIT_SHA = "
|
|
2049
|
-
var BUILD_TIME = "2026-08-
|
|
2071
|
+
var VERSION = "0.8.39";
|
|
2072
|
+
var GIT_SHA = "3c19185";
|
|
2073
|
+
var BUILD_TIME = "2026-08-26T00:07:31.934Z";
|
|
2050
2074
|
var SEMVER = {
|
|
2051
|
-
version: "0.
|
|
2052
|
-
gitSha: "
|
|
2053
|
-
buildTime: "2026-08-
|
|
2075
|
+
version: "0.8.39",
|
|
2076
|
+
gitSha: "3c19185",
|
|
2077
|
+
buildTime: "2026-08-26T00:07:31.934Z"
|
|
2054
2078
|
};
|
|
2055
2079
|
|
|
2056
|
-
export { BUILD_TIME, DASHBOARD_GRID_MAX_COLS, DASHBOARD_WIDGET_TYPES, DEFAULT_DASHBOARD_TITLE, DISCIPLINE_FACTORS, EFFORT_DISCIPLINES, GIT_SHA, KG_PER_LB, PLANNED_WIDGET_TYPES, QueryService, SEMVER, UNIT_FAMILIES, VERSION, WQL_AGGREGATORS, WQL_CALC_TARGETS, WQL_COMPARISON_OPS, WQL_CONTENT_FILTER_KEYS, WQL_DISPLAY_UNITS, WQL_FIND_TARGETS, WQL_GRAINS, WQL_INTENSITY_TIERS, WQL_KEYWORDS, WQL_METRIC_AGGREGATES, WQL_METRIC_FAMILIES, WQL_ROLLUP_PERIODS, WQL_SCOPES, WQL_SOURCES, WQL_TAG_KEYS, WQL_VIRTUAL_DIMS, buildDashboardDocument, buildDashboardScaffold, convert, dashboardSlug, defaultTokenValues, disciplineFactorFor, extractDashboardTokens, extractFrontmatterTags, getList, getScalar, getUnitFamily, isDashboardMeta, isDashboardWidgetType, isEffortDiscipline, isFindQuery, isProposedMetric, isRowsQuery, normalizeSummaryFacts, parseDashboardNote, parseFlatProperties, parseFrontmatter, parseFrontmatterBody, parseFrontmatterCategories, parseFrontmatterProps, parseQuery, parseQueryWidgetSuffix, parseWqlSuffixes, projectEventToFacts, referencedTokens, resolveCanonicalMetricKey, resolveDisplayUnit, resolveWidgetType, serializeFrontmatter, setDashboardTokenValue, splitAtWhere, splitWidgetBody, staticNotesFromBlocks, staticTagIndexFromBlocks, stripFrontmatter, substituteTokens, toEventRows, toSummaryEventRows, unknownTokensMessage, unknownWidgetTypeMessage, wql, wqlCompletion, wqlCompletionSource, wqlHighlightStyle, wqlLanguage, parser as wqlParser, wql_parser_terms_exports as wqlTerms };
|
|
2080
|
+
export { BUILD_TIME, DASHBOARD_GRID_MAX_COLS, DASHBOARD_WIDGET_TYPES, DEFAULT_DASHBOARD_TITLE, DISCIPLINE_FACTORS, EFFORT_DISCIPLINES, GIT_SHA, KG_PER_LB, PLANNED_WIDGET_TYPES, QueryService, SEMVER, UNIT_FAMILIES, VERSION, WQL_AGGREGATORS, WQL_CALC_TARGETS, WQL_COMPARISON_OPS, WQL_CONTENT_FILTER_KEYS, WQL_DISPLAY_UNITS, WQL_FIND_TARGETS, WQL_GRAINS, WQL_INTENSITY_TIERS, WQL_KEYWORDS, WQL_METRIC_AGGREGATES, WQL_METRIC_FAMILIES, WQL_RESULT_PLANES, WQL_ROLLUP_PERIODS, WQL_ROWS_SCOPE_KEYS, WQL_ROWS_TARGETS, WQL_SCOPES, WQL_SOURCES, WQL_TAG_KEYS, WQL_VIRTUAL_DIMS, buildDashboardDocument, buildDashboardScaffold, convert, dashboardSlug, defaultTokenValues, disciplineFactorFor, extractDashboardTokens, extractFrontmatterTags, getList, getScalar, getUnitFamily, isAggregateQuery, isDashboardMeta, isDashboardWidgetType, isEffortDiscipline, isFindQuery, isProposedMetric, isRowsQuery, normalizeSummaryFacts, parseDashboardNote, parseFlatProperties, parseFrontmatter, parseFrontmatterBody, parseFrontmatterCategories, parseFrontmatterProps, parseQuery, parseQueryWidgetSuffix, parseWqlSuffixes, projectEventToFacts, referencedTokens, resolveCanonicalMetricKey, resolveDisplayUnit, resolveWidgetType, serializeFrontmatter, setDashboardTokenValue, splitAtWhere, splitWidgetBody, staticNotesFromBlocks, staticTagIndexFromBlocks, stripFrontmatter, substituteTokens, toEventRows, toSummaryEventRows, unknownTokensMessage, unknownWidgetTypeMessage, wql, wqlCompletion, wqlCompletionSource, wqlHighlightStyle, wqlLanguage, parser as wqlParser, wql_parser_terms_exports as wqlTerms };
|
|
2057
2081
|
//# sourceMappingURL=index.mjs.map
|
|
2058
2082
|
//# sourceMappingURL=index.mjs.map
|