@elaraai/e3-ui 1.0.84 → 1.0.85
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/src/bind/data.d.ts +4 -3
- package/dist/src/bind/data.d.ts.map +1 -1
- package/dist/src/bind/data.js +4 -3
- package/dist/src/bind/data.js.map +1 -1
- package/dist/src/bind/record.d.ts +5 -2
- package/dist/src/bind/record.d.ts.map +1 -1
- package/dist/src/bind/record.js +5 -2
- package/dist/src/bind/record.js.map +1 -1
- package/dist/src/bind/sources.d.ts +148 -0
- package/dist/src/bind/sources.d.ts.map +1 -0
- package/dist/src/bind/sources.js +116 -0
- package/dist/src/bind/sources.js.map +1 -0
- package/dist/src/index.d.ts +2 -0
- package/dist/src/index.d.ts.map +1 -1
- package/dist/src/index.js +5 -0
- package/dist/src/index.js.map +1 -1
- package/dist/src/internal.d.ts +2 -0
- package/dist/src/internal.d.ts.map +1 -1
- package/dist/src/internal.js +6 -0
- package/dist/src/internal.js.map +1 -1
- package/dist/src/query/builder.d.ts +3257 -0
- package/dist/src/query/builder.d.ts.map +1 -0
- package/dist/src/query/builder.js +126 -0
- package/dist/src/query/builder.js.map +1 -0
- package/dist/src/query/index.d.ts +108 -0
- package/dist/src/query/index.d.ts.map +1 -0
- package/dist/src/query/index.js +76 -0
- package/dist/src/query/index.js.map +1 -0
- package/dist/src/query/library.d.ts +3241 -0
- package/dist/src/query/library.d.ts.map +1 -0
- package/dist/src/query/library.js +114 -0
- package/dist/src/query/library.js.map +1 -0
- package/dist/src/query/queries.d.ts +4696 -0
- package/dist/src/query/queries.d.ts.map +1 -0
- package/dist/src/query/queries.js +129 -0
- package/dist/src/query/queries.js.map +1 -0
- package/dist/src/query/saved.d.ts +72 -0
- package/dist/src/query/saved.d.ts.map +1 -0
- package/dist/src/query/saved.js +84 -0
- package/dist/src/query/saved.js.map +1 -0
- package/dist/src/query/steps.d.ts +613 -0
- package/dist/src/query/steps.d.ts.map +1 -0
- package/dist/src/query/steps.js +316 -0
- package/dist/src/query/steps.js.map +1 -0
- package/dist/src/query/types.d.ts +444 -0
- package/dist/src/query/types.d.ts.map +1 -0
- package/dist/src/query/types.js +113 -0
- package/dist/src/query/types.js.map +1 -0
- package/dist/src/ui.d.ts +16 -3
- package/dist/src/ui.d.ts.map +1 -1
- package/dist/src/ui.js +21 -1
- package/dist/src/ui.js.map +1 -1
- package/dist/test/bind/data/data.examples.d.ts +76 -1
- package/dist/test/bind/data/data.examples.d.ts.map +1 -1
- package/dist/test/bind/data/data.examples.js +176 -3
- package/dist/test/bind/data/data.examples.js.map +1 -1
- package/dist/test/bind/func/func.examples.d.ts +8 -0
- package/dist/test/bind/func/func.examples.d.ts.map +1 -1
- package/dist/test/bind/func/func.examples.js +4 -3
- package/dist/test/bind/func/func.examples.js.map +1 -1
- package/dist/test/query/query.examples.d.ts +5022 -0
- package/dist/test/query/query.examples.d.ts.map +1 -0
- package/dist/test/query/query.examples.js +467 -0
- package/dist/test/query/query.examples.js.map +1 -0
- package/package.json +9 -9
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"builder.d.ts","sourceRoot":"","sources":["../../../src/query/builder.ts"],"names":[],"mappings":"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;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAAgF,CAAC;AAMnH;;;;;;;GAOG;AACH,MAAM,WAAW,mBAAmB;IAChC,wGAAwG;IACxG,OAAO,EAAE,aAAa,CAAC;IACvB;;;;OAIG;IACH,QAAQ,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,WAAW,CAAC,CAAC,CAAC;IAChD;;;;;OAKG;IACH,KAAK,CAAC,EAAE,kBAAkB,CAAC,UAAU,CAAC,CAAC;IACvC,yIAAyI;IACzI,EAAE,CAAC,EAAE,MAAM,CAAC;CACf;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA0CG;AACH,iBAAS,aAAa,CAAC,OAAO,EAAE,mBAAmB,GAAG,QAAQ,CAAC,eAAe,CAAC,CAO9E;AAMD;;;GAGG;AACH,eAAO,MAAM,YAAY,EAAE,MAAM,CAAC,YAAY,CAAC,OAAO,aAAa,CAAC,CAA6B,CAAC"}
|
|
@@ -0,0 +1,126 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Copyright (c) 2025 Elara AI Pty Ltd
|
|
3
|
+
* Dual-licensed under AGPL-3.0 and commercial license. See LICENSE for details.
|
|
4
|
+
*/
|
|
5
|
+
/**
|
|
6
|
+
* `<Query.Builder>` (#935) — the query builder as one component: the open
|
|
7
|
+
* query's steps, or its jq, in a pane beside its results, under one toolbar.
|
|
8
|
+
*
|
|
9
|
+
* The builder is an interface — the saved queries record bound with its
|
|
10
|
+
* patch, the data sources it may read, and its name — which the
|
|
11
|
+
* `QueryBuilder` renderer draws. Its only data sources are the bindings it is
|
|
12
|
+
* handed: a query over the page reads exactly those, by the page's names.
|
|
13
|
+
* `<Query.Library>` opens queries in it, shared by `id`.
|
|
14
|
+
*
|
|
15
|
+
* @packageDocumentation
|
|
16
|
+
*/
|
|
17
|
+
import { ArrayType, OptionType, StringType, StructType, none, some, } from "@elaraai/east";
|
|
18
|
+
import { EastUI, optionsTag, } from "@elaraai/east-ui/internal";
|
|
19
|
+
import { DataSourceType, dataSources } from "../bind/sources.js";
|
|
20
|
+
import { QueriesHandleType } from "./queries.js";
|
|
21
|
+
// ============================================================================
|
|
22
|
+
// The builder's shared keys
|
|
23
|
+
// ============================================================================
|
|
24
|
+
/**
|
|
25
|
+
* The names a query builder shares, by its `id`: the UI store key of the
|
|
26
|
+
* query open in it — which the query library writes when it opens a query —
|
|
27
|
+
* the key of this viewer's recent runs, and the drag-source id of the query
|
|
28
|
+
* library's cards.
|
|
29
|
+
*
|
|
30
|
+
* @remarks
|
|
31
|
+
* A builder and a query library with the same `id` open one query together,
|
|
32
|
+
* as Studio's builder and page library open one page (`builderKeys`).
|
|
33
|
+
*
|
|
34
|
+
* @param id - The builder's name, when a surface holds more than one; omitted, the one builder
|
|
35
|
+
* @returns The keys and the id
|
|
36
|
+
*/
|
|
37
|
+
export function queryKeys(id) {
|
|
38
|
+
const suffix = id === undefined ? "" : `.${id}`;
|
|
39
|
+
return {
|
|
40
|
+
query: `query.builder${suffix}.query`,
|
|
41
|
+
recent: `query.builder${suffix}.recent`,
|
|
42
|
+
library: `query.library${suffix}`,
|
|
43
|
+
};
|
|
44
|
+
}
|
|
45
|
+
// ============================================================================
|
|
46
|
+
// The renderer's payload
|
|
47
|
+
// ============================================================================
|
|
48
|
+
/**
|
|
49
|
+
* The `QueryBuilder` renderer's payload — the builder's interface.
|
|
50
|
+
*
|
|
51
|
+
* @property queries - The saved queries record, bound with its patch — what the builder reads, and saves through
|
|
52
|
+
* @property datasets - The data sources a query may read, by the names it reads them
|
|
53
|
+
* @property query - The saved query the builder opens first, by name; none, a new query on the first data source
|
|
54
|
+
* @property id - Names the builder, when a surface holds two — and the query library that opens queries in it
|
|
55
|
+
*/
|
|
56
|
+
export const QueryBuilderPayloadType = StructType({
|
|
57
|
+
queries: QueriesHandleType,
|
|
58
|
+
datasets: ArrayType(DataSourceType),
|
|
59
|
+
query: OptionType(StringType),
|
|
60
|
+
id: OptionType(StringType),
|
|
61
|
+
});
|
|
62
|
+
/**
|
|
63
|
+
* Internal {@link EastUI.component} carrier. The React renderer registers
|
|
64
|
+
* against this in `@elaraai/e3-ui-components` via `implementUIComponent`.
|
|
65
|
+
*/
|
|
66
|
+
export const QueryBuilderComponent = EastUI.component("QueryBuilder", QueryBuilderPayloadType, { optional: true });
|
|
67
|
+
/**
|
|
68
|
+
* The query builder: the open query's steps in plain words, or its jq, checked
|
|
69
|
+
* as they are edited, and run to read the result.
|
|
70
|
+
*
|
|
71
|
+
* @remarks
|
|
72
|
+
* - **The data sources** are the bindings it is handed, by their names: a
|
|
73
|
+
* query over `datasets={{ orders, customers }}` reads `.orders` and
|
|
74
|
+
* `.customers`, and nothing else. They are in the surface's manifest
|
|
75
|
+
* already, so the builder declares nothing of its own. A large dataset bound
|
|
76
|
+
* with `Data.bindPaged` is never downloaded whole: a query runs on e3.
|
|
77
|
+
* - **The pane**, before the results, has the tabs Query — the steps or the
|
|
78
|
+
* jq — Datasets and Library.
|
|
79
|
+
* - **Every edit is a draft** of the shared editing session, one per open
|
|
80
|
+
* query, which the history item in the one toolbar undoes, redoes and
|
|
81
|
+
* discards; Apply saves the open query as one patch commit on the record. A
|
|
82
|
+
* query saves only once it checks.
|
|
83
|
+
*
|
|
84
|
+
* The builder fills its parent's height and draws no border around itself.
|
|
85
|
+
* It opens `query`, a saved query, when one is named, else a new query on the
|
|
86
|
+
* first data source. The query open in it is shared by `id` with a
|
|
87
|
+
* `<Query.Library>`, which opens queries in it.
|
|
88
|
+
*
|
|
89
|
+
* @param options - The bound record, the data sources, the query it opens first and the builder's name ({@link QueryBuilderOptions})
|
|
90
|
+
* @returns An East expression of type `UIComponentType`
|
|
91
|
+
* @throws {Error} When `datasets` is empty, or a name is not a jq identifier
|
|
92
|
+
*
|
|
93
|
+
* @example
|
|
94
|
+
* ```tsx
|
|
95
|
+
* import { East } from "@elaraai/east";
|
|
96
|
+
* import { Reactive, UIComponentType } from "@elaraai/east-ui";
|
|
97
|
+
* import { Data, Query, Record, ui } from "@elaraai/e3-ui";
|
|
98
|
+
*
|
|
99
|
+
* // The builder, for operators: it queries the data sources it is handed, and saves through the record.
|
|
100
|
+
* export const builder = ui("query_builder", [], East.function([], UIComponentType, _$ => (
|
|
101
|
+
* <Reactive>{$ => {
|
|
102
|
+
* const orders = $.let(Data.bindPaged(d.orders));
|
|
103
|
+
* const customers = $.let(Data.bind(d.customers));
|
|
104
|
+
* const saved = $.let(Record.bind(d.queries, [d.queriesPatch]));
|
|
105
|
+
* return <Query.Builder queries={saved} datasets={{ orders, customers }} query="Top shipped orders, 2026" />;
|
|
106
|
+
* }}</Reactive>
|
|
107
|
+
* )));
|
|
108
|
+
* ```
|
|
109
|
+
*/
|
|
110
|
+
function createBuilder(options) {
|
|
111
|
+
return QueryBuilderComponent.Root({
|
|
112
|
+
queries: { read: options.queries.read, history: options.queries.history, commit: { patch: options.queries.commit.patch } },
|
|
113
|
+
datasets: dataSources("Query.Builder", options.datasets),
|
|
114
|
+
query: options.query === undefined ? none : some(options.query),
|
|
115
|
+
id: options.id === undefined ? none : some(options.id),
|
|
116
|
+
});
|
|
117
|
+
}
|
|
118
|
+
// ============================================================================
|
|
119
|
+
// Tag
|
|
120
|
+
// ============================================================================
|
|
121
|
+
/**
|
|
122
|
+
* `<Query.Builder>` — the query builder: the open query's steps or its jq,
|
|
123
|
+
* checked as they are edited, beside its results. See {@link createBuilder}.
|
|
124
|
+
*/
|
|
125
|
+
export const QueryBuilder = optionsTag(createBuilder);
|
|
126
|
+
//# sourceMappingURL=builder.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"builder.js","sourceRoot":"","sources":["../../../src/query/builder.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH;;;;;;;;;;;GAWG;AAEH,OAAO,EACH,SAAS,EACT,UAAU,EACV,UAAU,EACV,UAAU,EACV,IAAI,EACJ,IAAI,GAGP,MAAM,eAAe,CAAC;AACvB,OAAO,EACH,MAAM,EACN,UAAU,GAIb,MAAM,2BAA2B,CAAC;AACnC,OAAO,EAAE,cAAc,EAAE,WAAW,EAAoB,MAAM,oBAAoB,CAAC;AACnF,OAAO,EAAE,iBAAiB,EAAsB,MAAM,cAAc,CAAC;AAErE,+EAA+E;AAC/E,4BAA4B;AAC5B,+EAA+E;AAE/E;;;;;;;;;;;;GAYG;AACH,MAAM,UAAU,SAAS,CAAC,EAAsB;IAQ5C,MAAM,MAAM,GAAG,EAAE,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC;IAChD,OAAO;QACH,KAAK,EAAE,gBAAgB,MAAM,QAAQ;QACrC,MAAM,EAAE,gBAAgB,MAAM,SAAS;QACvC,OAAO,EAAE,gBAAgB,MAAM,EAAE;KACpC,CAAC;AACN,CAAC;AAED,+EAA+E;AAC/E,yBAAyB;AACzB,+EAA+E;AAE/E;;;;;;;GAOG;AACH,MAAM,CAAC,MAAM,uBAAuB,GAAG,UAAU,CAAC;IAC9C,OAAO,EAAE,iBAAiB;IAC1B,QAAQ,EAAE,SAAS,CAAC,cAAc,CAAC;IACnC,KAAK,EAAE,UAAU,CAAC,UAAU,CAAC;IAC7B,EAAE,EAAE,UAAU,CAAC,UAAU,CAAC;CAC7B,CAAC,CAAC;AAKH;;;GAGG;AACH,MAAM,CAAC,MAAM,qBAAqB,GAAG,MAAM,CAAC,SAAS,CAAC,cAAc,EAAE,uBAAuB,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC,CAAC;AAkCnH;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA0CG;AACH,SAAS,aAAa,CAAC,OAA4B;IAC/C,OAAO,qBAAqB,CAAC,IAAI,CAAC;QAC9B,OAAO,EAAE,EAAE,IAAI,EAAE,OAAO,CAAC,OAAO,CAAC,IAAI,EAAE,OAAO,EAAE,OAAO,CAAC,OAAO,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE,KAAK,EAAE,OAAO,CAAC,OAAO,CAAC,MAAM,CAAC,KAAK,EAAE,EAAE;QAC1H,QAAQ,EAAE,WAAW,CAAC,eAAe,EAAE,OAAO,CAAC,QAAQ,CAAC;QACxD,KAAK,EAAE,OAAO,CAAC,KAAK,KAAK,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC;QAC/D,EAAE,EAAE,OAAO,CAAC,EAAE,KAAK,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC;KACzD,CAAC,CAAC;AACP,CAAC;AAED,+EAA+E;AAC/E,MAAM;AACN,+EAA+E;AAE/E;;;GAGG;AACH,MAAM,CAAC,MAAM,YAAY,GAA+C,UAAU,CAAC,aAAa,CAAC,CAAC"}
|
|
@@ -0,0 +1,108 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Copyright (c) 2025 Elara AI Pty Ltd
|
|
3
|
+
* Dual-licensed under AGPL-3.0 and commercial license. See LICENSE for details.
|
|
4
|
+
*/
|
|
5
|
+
/**
|
|
6
|
+
* The query builder (#875) — typed jq queries over the datasets a page binds,
|
|
7
|
+
* built as steps in plain words or written as jq, and saved as one record.
|
|
8
|
+
*
|
|
9
|
+
* @packageDocumentation
|
|
10
|
+
*/
|
|
11
|
+
import { DataSourceType } from "../bind/sources.js";
|
|
12
|
+
import { nameWriteRefusal } from "../studio/library.js";
|
|
13
|
+
import { QueryBuilder, QueryBuilderComponent, QueryBuilderPayloadType } from "./builder.js";
|
|
14
|
+
import { QueryLibrary, QueryLibraryComponent, QueryLibraryPayloadType } from "./library.js";
|
|
15
|
+
import { QueriesHandleType, QueryRootBoundType, rootBound, saveQuery } from "./queries.js";
|
|
16
|
+
import { savedQueriesValue } from "./saved.js";
|
|
17
|
+
import { QueryAggregateType, QueryComparisonType, QueryConditionType, QueryMatchType, QueryStepInputType, QueryStepType, QueryStepValueType, QueryStepsType } from "./steps.js";
|
|
18
|
+
import { QueryInputType, QueryResultType, QueryRootEntryType, SavedQueriesType, SavedQueryType } from "./types.js";
|
|
19
|
+
export { QueryAggregateFunctionType, QueryAggregateType, QueryComparisonType, QueryConditionType, QueryDatePartType, QueryGroupByType, QueryMatchType, QueryPickFieldType, QuerySortDirectionType, QueryStepInputType, QueryStepType, QueryStepValueType, QueryStepsType, } from "./steps.js";
|
|
20
|
+
export { QueryInputType, QueryResultType, QueryRootEntryType, SavedQueriesType, SavedQueryType, } from "./types.js";
|
|
21
|
+
export { QueriesHandleType, QueryRootBoundType, SavedQueriesPatchType, rootBound, saveQuery, type QueriesHandle, } from "./queries.js";
|
|
22
|
+
export { savedQueriesValue, type SavedQueryInput } from "./saved.js";
|
|
23
|
+
export { QueryBuilder, QueryBuilderComponent, QueryBuilderPayloadType, queryKeys, type QueryBuilderOptions, } from "./builder.js";
|
|
24
|
+
export { QueryLibrary, QueryLibraryComponent, QueryLibraryPayloadType, type QueryLibraryOptions, } from "./library.js";
|
|
25
|
+
/** The query builder's East types — what a solution declares its saved queries record with. */
|
|
26
|
+
export interface QueryTypes {
|
|
27
|
+
/** The saved queries record's type — every saved query, by name ({@link SavedQueriesType}). */
|
|
28
|
+
Saved: typeof SavedQueriesType;
|
|
29
|
+
/** A saved query ({@link SavedQueryType}). */
|
|
30
|
+
SavedQuery: typeof SavedQueryType;
|
|
31
|
+
/** A data source a query may read, as the builder is handed it ({@link DataSourceType}). */
|
|
32
|
+
DataSource: typeof DataSourceType;
|
|
33
|
+
/** A data source of a query's root: its name and its dataset's path ({@link QueryRootEntryType}). */
|
|
34
|
+
RootEntry: typeof QueryRootEntryType;
|
|
35
|
+
/** A dataset a run read, pinned at its hash ({@link QueryInputType}). */
|
|
36
|
+
Input: typeof QueryInputType;
|
|
37
|
+
/** What a run of a query answered ({@link QueryResultType}). */
|
|
38
|
+
Result: typeof QueryResultType;
|
|
39
|
+
/** A query as steps: its data source and its steps ({@link QueryStepsType}). */
|
|
40
|
+
Steps: typeof QueryStepsType;
|
|
41
|
+
/** One step of a query ({@link QueryStepType}). */
|
|
42
|
+
Step: typeof QueryStepType;
|
|
43
|
+
/** A condition of a Keep rows where step ({@link QueryConditionType}). */
|
|
44
|
+
Condition: typeof QueryConditionType;
|
|
45
|
+
/** How a condition compares a field ({@link QueryComparisonType}). */
|
|
46
|
+
Comparison: typeof QueryComparisonType;
|
|
47
|
+
/** How conditions combine ({@link QueryMatchType}). */
|
|
48
|
+
Match: typeof QueryMatchType;
|
|
49
|
+
/** One total of a Group and total step ({@link QueryAggregateType}). */
|
|
50
|
+
Aggregate: typeof QueryAggregateType;
|
|
51
|
+
/** A value a step compares with or fills in ({@link QueryStepValueType}). */
|
|
52
|
+
StepValue: typeof QueryStepValueType;
|
|
53
|
+
/** A count or a bound a step takes ({@link QueryStepInputType}). */
|
|
54
|
+
StepInput: typeof QueryStepInputType;
|
|
55
|
+
}
|
|
56
|
+
/** The type of the {@link Query} namespace — what a solution mounts and declares. */
|
|
57
|
+
export interface QueryNamespace {
|
|
58
|
+
/** `<Query.Builder>` — the query builder: the open query's steps or its jq, beside its results. */
|
|
59
|
+
Builder: typeof QueryBuilder;
|
|
60
|
+
/** `<Query.Library>` — every saved query, as a gallery of wireframes, and where new queries start. */
|
|
61
|
+
Library: typeof QueryLibrary;
|
|
62
|
+
/** The saved queries record's value: the queries a solution ships in it, by name, each checked against the data sources it may read ({@link savedQueriesValue}). */
|
|
63
|
+
value: typeof savedQueriesValue;
|
|
64
|
+
/** The query builder's East types. */
|
|
65
|
+
Types: QueryTypes;
|
|
66
|
+
}
|
|
67
|
+
/**
|
|
68
|
+
* The query builder and the query library — the components a solution mounts
|
|
69
|
+
* (`<Query.Builder>`, `<Query.Library>`), and the East types it declares its
|
|
70
|
+
* saved queries record with (`Query.Types`), and its value, the queries it
|
|
71
|
+
* ships in it (`Query.value`).
|
|
72
|
+
*/
|
|
73
|
+
export declare const Query: QueryNamespace;
|
|
74
|
+
/**
|
|
75
|
+
* The type of the internal query namespace — the public one, the East behind
|
|
76
|
+
* the builder's reads and writes, and the carriers.
|
|
77
|
+
*/
|
|
78
|
+
export interface QueryInternalNamespace extends Omit<QueryNamespace, "Types"> {
|
|
79
|
+
/** Saves a query — the patch of the entries it writes ({@link saveQuery}). */
|
|
80
|
+
save: typeof saveQuery;
|
|
81
|
+
/** What refused a write under a new name — a save of a query never saved, or under another name. */
|
|
82
|
+
nameWriteRefusal: typeof nameWriteRefusal;
|
|
83
|
+
/** Whether a saved query's data sources are bound where it would open, and if not, why not ({@link rootBound}). */
|
|
84
|
+
rootBound: typeof rootBound;
|
|
85
|
+
/** The `QueryBuilder` carrier ({@link QueryBuilderComponent}). */
|
|
86
|
+
BuilderComponent: typeof QueryBuilderComponent;
|
|
87
|
+
/** The `QueryLibrary` carrier ({@link QueryLibraryComponent}). */
|
|
88
|
+
LibraryComponent: typeof QueryLibraryComponent;
|
|
89
|
+
/** The query builder's East types, and those of the bound record, the builder's and the library's payloads and a root's binding. */
|
|
90
|
+
Types: QueryTypes & {
|
|
91
|
+
/** The saved queries record, bound with its patch ({@link QueriesHandleType}). */
|
|
92
|
+
Handle: typeof QueriesHandleType;
|
|
93
|
+
/** The `QueryBuilder` renderer's payload ({@link QueryBuilderPayloadType}). */
|
|
94
|
+
BuilderPayload: typeof QueryBuilderPayloadType;
|
|
95
|
+
/** The `QueryLibrary` renderer's payload ({@link QueryLibraryPayloadType}). */
|
|
96
|
+
LibraryPayload: typeof QueryLibraryPayloadType;
|
|
97
|
+
/** Whether a saved query's data sources are bound ({@link QueryRootBoundType}). */
|
|
98
|
+
RootBound: typeof QueryRootBoundType;
|
|
99
|
+
};
|
|
100
|
+
}
|
|
101
|
+
/**
|
|
102
|
+
* The internal query namespace — `@elaraai/e3-ui/internal`'s `Query`: the
|
|
103
|
+
* public namespace, and the East the renderers and the tests call.
|
|
104
|
+
*
|
|
105
|
+
* @internal
|
|
106
|
+
*/
|
|
107
|
+
export declare const QueryInternal: QueryInternalNamespace;
|
|
108
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/query/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,76 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Copyright (c) 2025 Elara AI Pty Ltd
|
|
3
|
+
* Dual-licensed under AGPL-3.0 and commercial license. See LICENSE for details.
|
|
4
|
+
*/
|
|
5
|
+
/**
|
|
6
|
+
* The query builder (#875) — typed jq queries over the datasets a page binds,
|
|
7
|
+
* built as steps in plain words or written as jq, and saved as one record.
|
|
8
|
+
*
|
|
9
|
+
* @packageDocumentation
|
|
10
|
+
*/
|
|
11
|
+
import { DataSourceType } from "../bind/sources.js";
|
|
12
|
+
import { nameWriteRefusal } from "../studio/library.js";
|
|
13
|
+
import { QueryBuilder, QueryBuilderComponent, QueryBuilderPayloadType } from "./builder.js";
|
|
14
|
+
import { QueryLibrary, QueryLibraryComponent, QueryLibraryPayloadType } from "./library.js";
|
|
15
|
+
import { QueriesHandleType, QueryRootBoundType, rootBound, saveQuery } from "./queries.js";
|
|
16
|
+
import { savedQueriesValue } from "./saved.js";
|
|
17
|
+
import { QueryAggregateType, QueryComparisonType, QueryConditionType, QueryMatchType, QueryStepInputType, QueryStepType, QueryStepValueType, QueryStepsType, } from "./steps.js";
|
|
18
|
+
import { QueryInputType, QueryResultType, QueryRootEntryType, SavedQueriesType, SavedQueryType } from "./types.js";
|
|
19
|
+
export { QueryAggregateFunctionType, QueryAggregateType, QueryComparisonType, QueryConditionType, QueryDatePartType, QueryGroupByType, QueryMatchType, QueryPickFieldType, QuerySortDirectionType, QueryStepInputType, QueryStepType, QueryStepValueType, QueryStepsType, } from "./steps.js";
|
|
20
|
+
export { QueryInputType, QueryResultType, QueryRootEntryType, SavedQueriesType, SavedQueryType, } from "./types.js";
|
|
21
|
+
export { QueriesHandleType, QueryRootBoundType, SavedQueriesPatchType, rootBound, saveQuery, } from "./queries.js";
|
|
22
|
+
export { savedQueriesValue } from "./saved.js";
|
|
23
|
+
export { QueryBuilder, QueryBuilderComponent, QueryBuilderPayloadType, queryKeys, } from "./builder.js";
|
|
24
|
+
export { QueryLibrary, QueryLibraryComponent, QueryLibraryPayloadType, } from "./library.js";
|
|
25
|
+
const types = {
|
|
26
|
+
Saved: SavedQueriesType,
|
|
27
|
+
SavedQuery: SavedQueryType,
|
|
28
|
+
DataSource: DataSourceType,
|
|
29
|
+
RootEntry: QueryRootEntryType,
|
|
30
|
+
Input: QueryInputType,
|
|
31
|
+
Result: QueryResultType,
|
|
32
|
+
Steps: QueryStepsType,
|
|
33
|
+
Step: QueryStepType,
|
|
34
|
+
Condition: QueryConditionType,
|
|
35
|
+
Comparison: QueryComparisonType,
|
|
36
|
+
Match: QueryMatchType,
|
|
37
|
+
Aggregate: QueryAggregateType,
|
|
38
|
+
StepValue: QueryStepValueType,
|
|
39
|
+
StepInput: QueryStepInputType,
|
|
40
|
+
};
|
|
41
|
+
/**
|
|
42
|
+
* The query builder and the query library — the components a solution mounts
|
|
43
|
+
* (`<Query.Builder>`, `<Query.Library>`), and the East types it declares its
|
|
44
|
+
* saved queries record with (`Query.Types`), and its value, the queries it
|
|
45
|
+
* ships in it (`Query.value`).
|
|
46
|
+
*/
|
|
47
|
+
export const Query = {
|
|
48
|
+
Builder: QueryBuilder,
|
|
49
|
+
Library: QueryLibrary,
|
|
50
|
+
value: savedQueriesValue,
|
|
51
|
+
Types: types,
|
|
52
|
+
};
|
|
53
|
+
/**
|
|
54
|
+
* The internal query namespace — `@elaraai/e3-ui/internal`'s `Query`: the
|
|
55
|
+
* public namespace, and the East the renderers and the tests call.
|
|
56
|
+
*
|
|
57
|
+
* @internal
|
|
58
|
+
*/
|
|
59
|
+
export const QueryInternal = {
|
|
60
|
+
Builder: QueryBuilder,
|
|
61
|
+
Library: QueryLibrary,
|
|
62
|
+
value: savedQueriesValue,
|
|
63
|
+
save: saveQuery,
|
|
64
|
+
nameWriteRefusal,
|
|
65
|
+
rootBound,
|
|
66
|
+
BuilderComponent: QueryBuilderComponent,
|
|
67
|
+
LibraryComponent: QueryLibraryComponent,
|
|
68
|
+
Types: {
|
|
69
|
+
...types,
|
|
70
|
+
Handle: QueriesHandleType,
|
|
71
|
+
BuilderPayload: QueryBuilderPayloadType,
|
|
72
|
+
LibraryPayload: QueryLibraryPayloadType,
|
|
73
|
+
RootBound: QueryRootBoundType,
|
|
74
|
+
},
|
|
75
|
+
};
|
|
76
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/query/index.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH;;;;;GAKG;AAEH,OAAO,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AACpD,OAAO,EAAE,gBAAgB,EAAE,MAAM,sBAAsB,CAAC;AACxD,OAAO,EAAE,YAAY,EAAE,qBAAqB,EAAE,uBAAuB,EAAE,MAAM,cAAc,CAAC;AAC5F,OAAO,EAAE,YAAY,EAAE,qBAAqB,EAAE,uBAAuB,EAAE,MAAM,cAAc,CAAC;AAC5F,OAAO,EAAE,iBAAiB,EAAE,kBAAkB,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AAC3F,OAAO,EAAE,iBAAiB,EAAE,MAAM,YAAY,CAAC;AAC/C,OAAO,EACH,kBAAkB,EAClB,mBAAmB,EACnB,kBAAkB,EAClB,cAAc,EACd,kBAAkB,EAClB,aAAa,EACb,kBAAkB,EAClB,cAAc,GACjB,MAAM,YAAY,CAAC;AACpB,OAAO,EAAE,cAAc,EAAE,eAAe,EAAE,kBAAkB,EAAE,gBAAgB,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AAEnH,OAAO,EACH,0BAA0B,EAC1B,kBAAkB,EAClB,mBAAmB,EACnB,kBAAkB,EAClB,iBAAiB,EACjB,gBAAgB,EAChB,cAAc,EACd,kBAAkB,EAClB,sBAAsB,EACtB,kBAAkB,EAClB,aAAa,EACb,kBAAkB,EAClB,cAAc,GACjB,MAAM,YAAY,CAAC;AACpB,OAAO,EACH,cAAc,EACd,eAAe,EACf,kBAAkB,EAClB,gBAAgB,EAChB,cAAc,GACjB,MAAM,YAAY,CAAC;AACpB,OAAO,EACH,iBAAiB,EACjB,kBAAkB,EAClB,qBAAqB,EACrB,SAAS,EACT,SAAS,GAEZ,MAAM,cAAc,CAAC;AACtB,OAAO,EAAE,iBAAiB,EAAwB,MAAM,YAAY,CAAC;AACrE,OAAO,EACH,YAAY,EACZ,qBAAqB,EACrB,uBAAuB,EACvB,SAAS,GAEZ,MAAM,cAAc,CAAC;AACtB,OAAO,EACH,YAAY,EACZ,qBAAqB,EACrB,uBAAuB,GAE1B,MAAM,cAAc,CAAC;AA8CtB,MAAM,KAAK,GAAe;IACtB,KAAK,EAAE,gBAAgB;IACvB,UAAU,EAAE,cAAc;IAC1B,UAAU,EAAE,cAAc;IAC1B,SAAS,EAAE,kBAAkB;IAC7B,KAAK,EAAE,cAAc;IACrB,MAAM,EAAE,eAAe;IACvB,KAAK,EAAE,cAAc;IACrB,IAAI,EAAE,aAAa;IACnB,SAAS,EAAE,kBAAkB;IAC7B,UAAU,EAAE,mBAAmB;IAC/B,KAAK,EAAE,cAAc;IACrB,SAAS,EAAE,kBAAkB;IAC7B,SAAS,EAAE,kBAAkB;IAC7B,SAAS,EAAE,kBAAkB;CAChC,CAAC;AAEF;;;;;GAKG;AACH,MAAM,CAAC,MAAM,KAAK,GAAmB;IACjC,OAAO,EAAE,YAAY;IACrB,OAAO,EAAE,YAAY;IACrB,KAAK,EAAE,iBAAiB;IACxB,KAAK,EAAE,KAAK;CACf,CAAC;AA8BF;;;;;GAKG;AACH,MAAM,CAAC,MAAM,aAAa,GAA2B;IACjD,OAAO,EAAE,YAAY;IACrB,OAAO,EAAE,YAAY;IACrB,KAAK,EAAE,iBAAiB;IACxB,IAAI,EAAE,SAAS;IACf,gBAAgB;IAChB,SAAS;IACT,gBAAgB,EAAE,qBAAqB;IACvC,gBAAgB,EAAE,qBAAqB;IACvC,KAAK,EAAE;QACH,GAAG,KAAK;QACR,MAAM,EAAE,iBAAiB;QACzB,cAAc,EAAE,uBAAuB;QACvC,cAAc,EAAE,uBAAuB;QACvC,SAAS,EAAE,kBAAkB;KAChC;CACJ,CAAC"}
|