@qoretechnologies/reqraft 0.10.50 → 0.10.51-pr.115.ga981c5f
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/design/FORM_ENGINE_EXPRESSIONS.md +110 -0
- package/dist/components/dpqlEditor/dpqlProbe.d.ts +37 -0
- package/dist/components/dpqlEditor/dpqlProbe.d.ts.map +1 -0
- package/dist/components/dpqlEditor/dpqlProbe.js +203 -0
- package/dist/components/dpqlEditor/dpqlProbe.js.map +1 -0
- package/dist/components/dpqlEditor/index.d.ts +4 -0
- package/dist/components/dpqlEditor/index.d.ts.map +1 -1
- package/dist/components/dpqlEditor/index.js +5 -1
- package/dist/components/dpqlEditor/index.js.map +1 -1
- package/dist/components/dpqlEditor/types.d.ts +29 -2
- package/dist/components/dpqlEditor/types.d.ts.map +1 -1
- package/dist/components/dpqlEditor/useDpqlProbe.d.ts +4 -0
- package/dist/components/dpqlEditor/useDpqlProbe.d.ts.map +1 -0
- package/dist/components/dpqlEditor/useDpqlProbe.js +29 -0
- package/dist/components/dpqlEditor/useDpqlProbe.js.map +1 -0
- package/dist/components/dpqlEditor/useDpqlSession.d.ts +5 -2
- package/dist/components/dpqlEditor/useDpqlSession.d.ts.map +1 -1
- package/dist/components/dpqlEditor/useDpqlSession.js +8 -2
- package/dist/components/dpqlEditor/useDpqlSession.js.map +1 -1
- package/dist/components/form/engine/CompactRow.d.ts.map +1 -1
- package/dist/components/form/engine/CompactRow.js +91 -12
- package/dist/components/form/engine/CompactRow.js.map +1 -1
- package/dist/components/form/engine/CompactToolbar.d.ts.map +1 -1
- package/dist/components/form/engine/CompactToolbar.js +5 -2
- package/dist/components/form/engine/CompactToolbar.js.map +1 -1
- package/dist/components/form/engine/FormEngine.d.ts +98 -11
- package/dist/components/form/engine/FormEngine.d.ts.map +1 -1
- package/dist/components/form/engine/FormEngine.js +211 -43
- package/dist/components/form/engine/FormEngine.js.map +1 -1
- package/dist/components/form/engine/OptionFieldMessages.d.ts +17 -2
- package/dist/components/form/engine/OptionFieldMessages.d.ts.map +1 -1
- package/dist/components/form/engine/OptionFieldMessages.js +61 -11
- package/dist/components/form/engine/OptionFieldMessages.js.map +1 -1
- package/dist/components/form/engine/_structuredData/SchemaDataView.d.ts.map +1 -1
- package/dist/components/form/engine/_structuredData/SchemaDataView.js +7 -1
- package/dist/components/form/engine/_structuredData/SchemaDataView.js.map +1 -1
- package/dist/components/form/engine/compactToolbarContext.d.ts +1 -0
- package/dist/components/form/engine/compactToolbarContext.d.ts.map +1 -1
- package/dist/components/form/engine/readFirst.d.ts +19 -1
- package/dist/components/form/engine/readFirst.d.ts.map +1 -1
- package/dist/components/form/engine/readFirst.js +45 -5
- package/dist/components/form/engine/readFirst.js.map +1 -1
- package/dist/components/form/engine/rendererTypes.d.ts +13 -0
- package/dist/components/form/engine/rendererTypes.d.ts.map +1 -1
- package/dist/components/form/engine/rendererTypes.js.map +1 -1
- package/dist/components/form/expressions/ExpressionField.d.ts.map +1 -1
- package/dist/components/form/expressions/ExpressionField.js +75 -12
- package/dist/components/form/expressions/ExpressionField.js.map +1 -1
- package/dist/components/form/expressions/dpqlMockLsp.d.ts +17 -0
- package/dist/components/form/expressions/dpqlMockLsp.d.ts.map +1 -1
- package/dist/components/form/expressions/dpqlMockLsp.js +43 -8
- package/dist/components/form/expressions/dpqlMockLsp.js.map +1 -1
- package/dist/components/form/fields/allowed-values/AllowedValues.d.ts +11 -1
- package/dist/components/form/fields/allowed-values/AllowedValues.d.ts.map +1 -1
- package/dist/components/form/fields/allowed-values/AllowedValues.js +14 -2
- package/dist/components/form/fields/allowed-values/AllowedValues.js.map +1 -1
- package/dist/components/form/fields/auto/AutoFormField.d.ts.map +1 -1
- package/dist/components/form/fields/auto/AutoFormField.js +8 -1
- package/dist/components/form/fields/auto/AutoFormField.js.map +1 -1
- package/dist/components/form/fields/template/ReadOnlyTemplateTag.d.ts +2 -1
- package/dist/components/form/fields/template/ReadOnlyTemplateTag.d.ts.map +1 -1
- package/dist/components/form/fields/template/ReadOnlyTemplateTag.js +3 -2
- package/dist/components/form/fields/template/ReadOnlyTemplateTag.js.map +1 -1
- package/dist/components/form/fields/template/TemplateField.d.ts.map +1 -1
- package/dist/components/form/fields/template/TemplateField.js +168 -2
- package/dist/components/form/fields/template/TemplateField.js.map +1 -1
- package/dist/components/smartEditor/__fixtures__/mockLspServer.d.ts.map +1 -1
- package/dist/components/smartEditor/__fixtures__/mockLspServer.js +24 -1
- package/dist/components/smartEditor/__fixtures__/mockLspServer.js.map +1 -1
- package/dist/helpers/dpqlDetection.d.ts +58 -0
- package/dist/helpers/dpqlDetection.d.ts.map +1 -0
- package/dist/helpers/dpqlDetection.js +147 -0
- package/dist/helpers/dpqlDetection.js.map +1 -0
- package/dist/helpers/optionUiTypes.d.ts +1 -1
- package/dist/helpers/templates.d.ts +21 -0
- package/dist/helpers/templates.d.ts.map +1 -1
- package/dist/helpers/templates.js +28 -1
- package/dist/helpers/templates.js.map +1 -1
- package/package.json +1 -1
- package/src/components/dpqlEditor/dpqlProbe.ts +165 -0
- package/src/components/dpqlEditor/index.ts +4 -0
- package/src/components/dpqlEditor/types.ts +26 -2
- package/src/components/dpqlEditor/useDpqlProbe.ts +33 -0
- package/src/components/dpqlEditor/useDpqlSession.ts +20 -4
- package/src/components/form/engine/CompactRow.tsx +112 -4
- package/src/components/form/engine/CompactToolbar.tsx +10 -3
- package/src/components/form/engine/FormEngine.stories.tsx +328 -6
- package/src/components/form/engine/FormEngine.tsx +248 -23
- package/src/components/form/engine/OptionFieldMessages.tsx +89 -11
- package/src/components/form/engine/_structuredData/SchemaDataView.tsx +11 -0
- package/src/components/form/engine/compactToolbarContext.ts +1 -1
- package/src/components/form/engine/readFirst.ts +52 -5
- package/src/components/form/engine/rendererTypes.ts +12 -0
- package/src/components/form/expressions/ExpressionField.stories.tsx +158 -18
- package/src/components/form/expressions/ExpressionField.tsx +108 -6
- package/src/components/form/expressions/dpqlMockLsp.ts +48 -0
- package/src/components/form/fields/allowed-values/AllowedValues.tsx +13 -2
- package/src/components/form/fields/auto/AutoFormField.tsx +7 -0
- package/src/components/form/fields/template/ReadOnlyTemplateTag.tsx +4 -2
- package/src/components/form/fields/template/TemplateField.tsx +234 -1
- package/src/components/smartEditor/__fixtures__/mockLspServer.ts +25 -1
- package/src/helpers/dpqlDetection.ts +192 -0
- package/src/helpers/templates.ts +31 -0
|
@@ -124,6 +124,116 @@ templates/return-type, and bind a provider only when the field supplies
|
|
|
124
124
|
one. Worst case, text mode still parses/serializes correctly with no
|
|
125
125
|
provider; only completions are reduced.
|
|
126
126
|
|
|
127
|
+
## Detecting an expression typed as plain text
|
|
128
|
+
|
|
129
|
+
*Added 2026-09-06. As-built.*
|
|
130
|
+
|
|
131
|
+
An author who never opens the expression view still types DPQL into the
|
|
132
|
+
ordinary editor. `TemplateField` notices, and what it does next depends on
|
|
133
|
+
the field's own type.
|
|
134
|
+
|
|
135
|
+
**A successful parse means nothing.** This is the finding the whole design
|
|
136
|
+
rests on, and it is counter-intuitive enough to be worth stating plainly.
|
|
137
|
+
Verified against the live LSP: `dpql/parse` returns `success: true` for
|
|
138
|
+
`hello`, for `42`, for `2026-09-06` and for `@a`. A bare literal is a valid
|
|
139
|
+
DPQL program, so "does it parse?" cannot separate an expression from a
|
|
140
|
+
value. What separates them is the shape of the AST that comes back:
|
|
141
|
+
|
|
142
|
+
| typed text | `exp` | verdict |
|
|
143
|
+
|---|---|---|
|
|
144
|
+
| `hello`, `42`, `2026-09-06`, `@a` | `value` | a literal |
|
|
145
|
+
| `$local:count` | `template` | a template |
|
|
146
|
+
| `@a > 5`, `"a" + "b"`, `toInt("5")`, `@n LIKE "a%"` | `>`, `+`, `toInt`, `like` | an expression |
|
|
147
|
+
|
|
148
|
+
Text that is not DPQL at all is safe on its own: `hello world`, `x@y.com`,
|
|
149
|
+
`a - b test` and `{"a":1}` all fail to parse outright.
|
|
150
|
+
|
|
151
|
+
**Three stages, in `helpers/dpqlDetection.ts`:**
|
|
152
|
+
|
|
153
|
+
1. `mightBeDpqlExpression` — a cheap lexical pass whose ONLY job is to keep
|
|
154
|
+
a server round-trip off every keystroke. It decides nothing. `-` and `/`
|
|
155
|
+
require surrounding spaces so a date or a path never triggers a probe.
|
|
156
|
+
2. `dpql/parse` on the shared probe document (below), debounced 400 ms.
|
|
157
|
+
3. `classifyTypedText` — `switch` when the text could not be a literal of
|
|
158
|
+
the field's declared type (the form's own `validateField` answers that),
|
|
159
|
+
`offer` when it could, `none` otherwise.
|
|
160
|
+
|
|
161
|
+
**Why the asymmetry.** Rewriting the string `a + b` into a concatenation on
|
|
162
|
+
a `string` field would destroy a value the author meant, so a type that
|
|
163
|
+
accepts any text is only ever OFFERED the switch. Text that could not be a
|
|
164
|
+
literal there was already an error the moment it was typed, so switching
|
|
165
|
+
costs nothing and explains the error. Every switch carries an Undo that
|
|
166
|
+
restores the exact text, and a declined text is never asked about again.
|
|
167
|
+
|
|
168
|
+
**Reachability.** The auto-switch only applies where the editor accepts free
|
|
169
|
+
text — a constrained `string` (identifier / `validation_regex`), `binary`,
|
|
170
|
+
`hash`. `int` and `float` render `input[type=number]`, which drops `@`, `>`
|
|
171
|
+
and spaces before any handler runs, so detection there is unreachable by
|
|
172
|
+
design of the editor and the ⋮ menu remains the way in. Pinned by a test.
|
|
173
|
+
|
|
174
|
+
**Template precedence.** `isValueTemplate` is deliberately loose (starts
|
|
175
|
+
with `$`, contains `:`), so `$local:count + 1` was being swallowed into
|
|
176
|
+
template mode with its arithmetic as dead text. A value that is not one
|
|
177
|
+
complete template token and carries an operator now stays in the plain
|
|
178
|
+
editor, where detection can reach it. A token standing alone
|
|
179
|
+
(`$local:count`, `$data:{1.field}`) still flips, unchanged.
|
|
180
|
+
|
|
181
|
+
**The probe document** (`components/dpqlEditor/dpqlProbe.ts`). One shared,
|
|
182
|
+
lazily-opened DPQL document for the whole app, reference-counted by
|
|
183
|
+
`useDpqlProbe` and closed when the last field using it unmounts. It is
|
|
184
|
+
cheap: `ReqraftLspClient` multiplexes every document over ONE socket per
|
|
185
|
+
endpoint and `initialize` runs once for it, so a probe is one extra
|
|
186
|
+
`didOpen` plus one server-side session — not a connection. It is still
|
|
187
|
+
shared rather than per-field, because a form with forty expression-capable
|
|
188
|
+
options would otherwise open forty sessions to ask the same question.
|
|
189
|
+
|
|
190
|
+
The document binds NO provider context; verified live, a context-less
|
|
191
|
+
`didOpen` still builds a session that `dpql/parse` answers on. It sends no
|
|
192
|
+
`target_type` either: detection asks whether the text is an expression, not
|
|
193
|
+
whether it is the right type — a mismatch is something to show the author
|
|
194
|
+
inside the editor, never a reason to refuse to open it. A probe never
|
|
195
|
+
throws; an unreachable instance simply leaves the typed text alone.
|
|
196
|
+
|
|
197
|
+
## Return-type checking
|
|
198
|
+
|
|
199
|
+
*Added 2026-09-06. As-built.*
|
|
200
|
+
|
|
201
|
+
`dpql/parse` has always been able to answer "can this expression's result
|
|
202
|
+
satisfy type X?" — it takes a `target_type` and returns `inferred_type`,
|
|
203
|
+
`type_compatible`, `auto_coercible` and a `suggested_fix`. Nothing in the
|
|
204
|
+
front end ever sent one, so it never answered.
|
|
205
|
+
|
|
206
|
+
`ExpressionField` now sends the field's own type with every parse, and
|
|
207
|
+
shows what comes back. Three outcomes, not two:
|
|
208
|
+
|
|
209
|
+
| the expression | shown |
|
|
210
|
+
|---|---|
|
|
211
|
+
| already fits | nothing |
|
|
212
|
+
| converts, and the conversion is TOTAL (a number used as text) | nothing |
|
|
213
|
+
| converts, but the conversion may FAIL (text used as a number) | a warning, with the conversion offered |
|
|
214
|
+
| cannot convert at all | a danger message, with the conversion offered |
|
|
215
|
+
|
|
216
|
+
The middle row is why the server grew `coercion_may_fail`: `canAutoCoerce()`
|
|
217
|
+
admits both kinds, and reporting a conversion that cannot fail is what
|
|
218
|
+
teaches authors to ignore the reports that matter.
|
|
219
|
+
|
|
220
|
+
`auto` and `any` are never sent as a target — they accept anything, so the
|
|
221
|
+
answer would always be "compatible" and the round trip would buy nothing. A
|
|
222
|
+
field offering a CHOICE of return types sends nothing either, rather than
|
|
223
|
+
asking about one of them arbitrarily.
|
|
224
|
+
|
|
225
|
+
**What the field cannot decide.** Whether text really denotes a number
|
|
226
|
+
depends on the text, which does not exist until the expression runs. So the
|
|
227
|
+
warning is a warning, not a refusal, and the value is checked again
|
|
228
|
+
server-side at run time — see `design/test-interface-object.md` in the qorus
|
|
229
|
+
repo. For that to be possible the FormEngine's stored envelope carries the
|
|
230
|
+
field's `type` beside `is_expression` and the AST, which is the type the
|
|
231
|
+
author was shown.
|
|
232
|
+
|
|
233
|
+
The same analysis lives in two server handlers (the LSP's `dpql/parse` and
|
|
234
|
+
the Creator WS equivalent); both were changed together. Deduplicating them
|
|
235
|
+
is a separate cleanup.
|
|
236
|
+
|
|
127
237
|
## Out of scope
|
|
128
238
|
|
|
129
239
|
- `server_expression_handling` server-function-vs-qorus-function
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
/** What a probe answers. Never throws — a failure is `success: false`. */
|
|
2
|
+
export interface IDpqlProbeResult {
|
|
3
|
+
success: boolean;
|
|
4
|
+
expression: Record<string, any> | null;
|
|
5
|
+
diagnostics: Array<{
|
|
6
|
+
severity?: number | string;
|
|
7
|
+
message?: string;
|
|
8
|
+
code?: string | number;
|
|
9
|
+
}>;
|
|
10
|
+
}
|
|
11
|
+
declare class DpqlProbe {
|
|
12
|
+
private client;
|
|
13
|
+
private opened;
|
|
14
|
+
private users;
|
|
15
|
+
private readonly cache;
|
|
16
|
+
/** Register a consumer; the document is still not opened until it probes. */
|
|
17
|
+
acquire(): void;
|
|
18
|
+
/** Drop a consumer, closing the shared document when the last one goes. */
|
|
19
|
+
release(): void;
|
|
20
|
+
/**
|
|
21
|
+
* Parse `text` on the shared probe document. Resolves to `FAILED` rather
|
|
22
|
+
* than rejecting, for any reason at all — a field must never break because
|
|
23
|
+
* the instance is unreachable.
|
|
24
|
+
*/
|
|
25
|
+
parse(text: string): Promise<IDpqlProbeResult>;
|
|
26
|
+
/** Open (once) and return the shared document's client. */
|
|
27
|
+
private open;
|
|
28
|
+
private remember;
|
|
29
|
+
private close;
|
|
30
|
+
}
|
|
31
|
+
/**
|
|
32
|
+
* The process-wide probe. Exported for tests, which reset it between cases;
|
|
33
|
+
* application code goes through `useDpqlProbe`.
|
|
34
|
+
*/
|
|
35
|
+
export declare const dpqlProbe: DpqlProbe;
|
|
36
|
+
export {};
|
|
37
|
+
//# sourceMappingURL=dpqlProbe.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"dpqlProbe.d.ts","sourceRoot":"","sources":["../../../src/components/dpqlEditor/dpqlProbe.ts"],"names":[],"mappings":"AAgCA,0EAA0E;AAC1E,MAAM,WAAW,gBAAgB;IAC/B,OAAO,EAAE,OAAO,CAAC;IACjB,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,IAAI,CAAC;IACvC,WAAW,EAAE,KAAK,CAAC;QAAE,QAAQ,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;QAAC,OAAO,CAAC,EAAE,MAAM,CAAC;QAAC,IAAI,CAAC,EAAE,MAAM,GAAG,MAAM,CAAA;KAAE,CAAC,CAAC;CAC9F;AAaD,cAAM,SAAS;IACb,OAAO,CAAC,MAAM,CAAiC;IAC/C,OAAO,CAAC,MAAM,CAA0C;IACxD,OAAO,CAAC,KAAK,CAAK;IAClB,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAuC;IAE7D,6EAA6E;IAC7E,OAAO,IAAI,IAAI;IAIf,2EAA2E;IAC3E,OAAO,IAAI,IAAI;IAQf;;;;OAIG;IACG,KAAK,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,gBAAgB,CAAC;IAgCpD,2DAA2D;IAC3D,OAAO,CAAC,IAAI;IAyBZ,OAAO,CAAC,QAAQ;IAYhB,OAAO,CAAC,KAAK;CAad;AAED;;;GAGG;AACH,eAAO,MAAM,SAAS,WAAkB,CAAC"}
|
|
@@ -0,0 +1,203 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
3
|
+
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
4
|
+
return new (P || (P = Promise))(function (resolve, reject) {
|
|
5
|
+
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
6
|
+
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
|
7
|
+
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
|
8
|
+
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
9
|
+
});
|
|
10
|
+
};
|
|
11
|
+
var __generator = (this && this.__generator) || function (thisArg, body) {
|
|
12
|
+
var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;
|
|
13
|
+
return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
|
|
14
|
+
function verb(n) { return function (v) { return step([n, v]); }; }
|
|
15
|
+
function step(op) {
|
|
16
|
+
if (f) throw new TypeError("Generator is already executing.");
|
|
17
|
+
while (g && (g = 0, op[0] && (_ = 0)), _) try {
|
|
18
|
+
if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;
|
|
19
|
+
if (y = 0, t) op = [op[0] & 2, t.value];
|
|
20
|
+
switch (op[0]) {
|
|
21
|
+
case 0: case 1: t = op; break;
|
|
22
|
+
case 4: _.label++; return { value: op[1], done: false };
|
|
23
|
+
case 5: _.label++; y = op[1]; op = [0]; continue;
|
|
24
|
+
case 7: op = _.ops.pop(); _.trys.pop(); continue;
|
|
25
|
+
default:
|
|
26
|
+
if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }
|
|
27
|
+
if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }
|
|
28
|
+
if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }
|
|
29
|
+
if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }
|
|
30
|
+
if (t[2]) _.ops.pop();
|
|
31
|
+
_.trys.pop(); continue;
|
|
32
|
+
}
|
|
33
|
+
op = body.call(thisArg, _);
|
|
34
|
+
} catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }
|
|
35
|
+
if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
|
|
36
|
+
}
|
|
37
|
+
};
|
|
38
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
39
|
+
exports.dpqlProbe = void 0;
|
|
40
|
+
// Copyright 2026 Qore Technologies, s.r.o.
|
|
41
|
+
/**
|
|
42
|
+
* One shared, lazily-opened DPQL document used to ask the server "is this
|
|
43
|
+
* text really an expression?" on behalf of plain form fields that have no
|
|
44
|
+
* editor of their own.
|
|
45
|
+
*
|
|
46
|
+
* ## Why a singleton, and why it is cheap
|
|
47
|
+
*
|
|
48
|
+
* `ReqraftLspClient` multiplexes every document over ONE socket per endpoint
|
|
49
|
+
* (`LspSharedConnection`), and `initialize` runs once for that socket. A
|
|
50
|
+
* probe is therefore not a new connection — it is one extra `didOpen`, and
|
|
51
|
+
* one `QorusDpqlActionSession` in the server's `uriToDpqlSession` map. Even
|
|
52
|
+
* so it is a single shared document rather than one per field: a form with
|
|
53
|
+
* forty expression-capable options would otherwise open forty of them to ask
|
|
54
|
+
* the same question.
|
|
55
|
+
*
|
|
56
|
+
* Nothing is opened until a field actually probes, so a form whose author
|
|
57
|
+
* never types anything expression-shaped costs nothing at all.
|
|
58
|
+
*
|
|
59
|
+
* The document is opened with NO provider context. Verified against the live
|
|
60
|
+
* server: `textDocument/didOpen` with `languageId: 'dpql'` and no metadata
|
|
61
|
+
* still builds a session, and `dpql/parse` answers on it. Record-field
|
|
62
|
+
* references (`@name`) do not resolve to a provider's fields without that
|
|
63
|
+
* context, which is fine — detection asks about the SHAPE of the expression,
|
|
64
|
+
* and the editor the author lands in binds the real context.
|
|
65
|
+
*
|
|
66
|
+
* No `target_type` is sent. Detection asks "is this an expression", not "is
|
|
67
|
+
* it the right type"; a type mismatch is a thing to show the author INSIDE
|
|
68
|
+
* the expression editor, not a reason to refuse to open it.
|
|
69
|
+
*/
|
|
70
|
+
var lspClient_1 = require("../../utils/lspClient");
|
|
71
|
+
var FAILED = { success: false, expression: null, diagnostics: [] };
|
|
72
|
+
/** Opaque, non-secret document URI — the server keys its session by this. */
|
|
73
|
+
var PROBE_URI = 'dpql://probe/detection';
|
|
74
|
+
/**
|
|
75
|
+
* How many parsed texts to remember. Typing walks through many prefixes of
|
|
76
|
+
* the same expression, and an author re-typing a value should not re-ask.
|
|
77
|
+
*/
|
|
78
|
+
var MAX_CACHE_ENTRIES = 200;
|
|
79
|
+
var DpqlProbe = /** @class */ (function () {
|
|
80
|
+
function DpqlProbe() {
|
|
81
|
+
this.client = null;
|
|
82
|
+
this.opened = null;
|
|
83
|
+
this.users = 0;
|
|
84
|
+
this.cache = new Map();
|
|
85
|
+
}
|
|
86
|
+
/** Register a consumer; the document is still not opened until it probes. */
|
|
87
|
+
DpqlProbe.prototype.acquire = function () {
|
|
88
|
+
this.users += 1;
|
|
89
|
+
};
|
|
90
|
+
/** Drop a consumer, closing the shared document when the last one goes. */
|
|
91
|
+
DpqlProbe.prototype.release = function () {
|
|
92
|
+
this.users = Math.max(0, this.users - 1);
|
|
93
|
+
if (this.users === 0) {
|
|
94
|
+
this.close();
|
|
95
|
+
}
|
|
96
|
+
};
|
|
97
|
+
/**
|
|
98
|
+
* Parse `text` on the shared probe document. Resolves to `FAILED` rather
|
|
99
|
+
* than rejecting, for any reason at all — a field must never break because
|
|
100
|
+
* the instance is unreachable.
|
|
101
|
+
*/
|
|
102
|
+
DpqlProbe.prototype.parse = function (text) {
|
|
103
|
+
return __awaiter(this, void 0, void 0, function () {
|
|
104
|
+
var cached, result, client, response, _a;
|
|
105
|
+
var _b, _c, _d;
|
|
106
|
+
return __generator(this, function (_e) {
|
|
107
|
+
switch (_e.label) {
|
|
108
|
+
case 0:
|
|
109
|
+
cached = this.cache.get(text);
|
|
110
|
+
if (cached) {
|
|
111
|
+
return [2 /*return*/, cached];
|
|
112
|
+
}
|
|
113
|
+
result = FAILED;
|
|
114
|
+
_e.label = 1;
|
|
115
|
+
case 1:
|
|
116
|
+
_e.trys.push([1, 4, , 5]);
|
|
117
|
+
return [4 /*yield*/, this.open()];
|
|
118
|
+
case 2:
|
|
119
|
+
client = _e.sent();
|
|
120
|
+
return [4 /*yield*/, client.customRequest('dpql/parse', {
|
|
121
|
+
uri: PROBE_URI,
|
|
122
|
+
text: text,
|
|
123
|
+
})];
|
|
124
|
+
case 3:
|
|
125
|
+
response = _e.sent();
|
|
126
|
+
result = {
|
|
127
|
+
success: (_b = response === null || response === void 0 ? void 0 : response.success) !== null && _b !== void 0 ? _b : false,
|
|
128
|
+
expression: (_c = response === null || response === void 0 ? void 0 : response.expression) !== null && _c !== void 0 ? _c : null,
|
|
129
|
+
diagnostics: (_d = response === null || response === void 0 ? void 0 : response.diagnostics) !== null && _d !== void 0 ? _d : [],
|
|
130
|
+
};
|
|
131
|
+
return [3 /*break*/, 5];
|
|
132
|
+
case 4:
|
|
133
|
+
_a = _e.sent();
|
|
134
|
+
// Unreachable instance, closed socket, request timeout: the field
|
|
135
|
+
// simply learns nothing and leaves the typed text exactly as it is.
|
|
136
|
+
result = FAILED;
|
|
137
|
+
return [3 /*break*/, 5];
|
|
138
|
+
case 5:
|
|
139
|
+
this.remember(text, result);
|
|
140
|
+
return [2 /*return*/, result];
|
|
141
|
+
}
|
|
142
|
+
});
|
|
143
|
+
});
|
|
144
|
+
};
|
|
145
|
+
/** Open (once) and return the shared document's client. */
|
|
146
|
+
DpqlProbe.prototype.open = function () {
|
|
147
|
+
var _this = this;
|
|
148
|
+
if (this.opened) {
|
|
149
|
+
return this.opened;
|
|
150
|
+
}
|
|
151
|
+
this.opened = (function () { return __awaiter(_this, void 0, void 0, function () {
|
|
152
|
+
var client;
|
|
153
|
+
return __generator(this, function (_a) {
|
|
154
|
+
switch (_a.label) {
|
|
155
|
+
case 0:
|
|
156
|
+
client = new lspClient_1.ReqraftLspClient({ languageId: 'dpql', uri: PROBE_URI });
|
|
157
|
+
return [4 /*yield*/, client.connect()];
|
|
158
|
+
case 1:
|
|
159
|
+
_a.sent();
|
|
160
|
+
// `didOpen` is a notification on the same socket as the request that
|
|
161
|
+
// follows it, so the server has the session by the time the parse
|
|
162
|
+
// arrives — no readiness poll needed.
|
|
163
|
+
client.didOpen('');
|
|
164
|
+
this.client = client;
|
|
165
|
+
return [2 /*return*/, client];
|
|
166
|
+
}
|
|
167
|
+
});
|
|
168
|
+
}); })().catch(function (error) {
|
|
169
|
+
// Allow a later probe to retry a connection that failed once.
|
|
170
|
+
_this.opened = null;
|
|
171
|
+
throw error;
|
|
172
|
+
});
|
|
173
|
+
return this.opened;
|
|
174
|
+
};
|
|
175
|
+
DpqlProbe.prototype.remember = function (text, result) {
|
|
176
|
+
if (this.cache.size >= MAX_CACHE_ENTRIES) {
|
|
177
|
+
var oldest = this.cache.keys().next();
|
|
178
|
+
if (!oldest.done) {
|
|
179
|
+
this.cache.delete(oldest.value);
|
|
180
|
+
}
|
|
181
|
+
}
|
|
182
|
+
this.cache.set(text, result);
|
|
183
|
+
};
|
|
184
|
+
DpqlProbe.prototype.close = function () {
|
|
185
|
+
var client = this.client;
|
|
186
|
+
this.client = null;
|
|
187
|
+
this.opened = null;
|
|
188
|
+
this.cache.clear();
|
|
189
|
+
try {
|
|
190
|
+
client === null || client === void 0 ? void 0 : client.disconnect();
|
|
191
|
+
}
|
|
192
|
+
catch (_a) {
|
|
193
|
+
// best-effort teardown
|
|
194
|
+
}
|
|
195
|
+
};
|
|
196
|
+
return DpqlProbe;
|
|
197
|
+
}());
|
|
198
|
+
/**
|
|
199
|
+
* The process-wide probe. Exported for tests, which reset it between cases;
|
|
200
|
+
* application code goes through `useDpqlProbe`.
|
|
201
|
+
*/
|
|
202
|
+
exports.dpqlProbe = new DpqlProbe();
|
|
203
|
+
//# sourceMappingURL=dpqlProbe.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"dpqlProbe.js","sourceRoot":"","sources":["../../../src/components/dpqlEditor/dpqlProbe.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,5 +1,9 @@
|
|
|
1
1
|
export { DpqlEditor } from './DpqlEditor';
|
|
2
2
|
export type { IDpqlEditorProps, IDpqlEditorRef, IDpqlParseResult, ISlateElement, ISlateText, TSlateNode, } from './types';
|
|
3
|
+
export { dpqlProbe } from './dpqlProbe';
|
|
4
|
+
export type { IDpqlProbeResult } from './dpqlProbe';
|
|
5
|
+
export { useDpqlProbe } from './useDpqlProbe';
|
|
6
|
+
export type { TDpqlProbeFn } from './useDpqlProbe';
|
|
3
7
|
export { useDpqlSession } from './useDpqlSession';
|
|
4
8
|
export type { IDpqlFieldMeta, IUseDpqlSessionOptions, IUseDpqlSessionResult, } from './useDpqlSession';
|
|
5
9
|
export { dpqlSlateConverter, getTagLabel, isTagCompletion, plainTextToSlate, slateSelectionToOffset, slateToPlainText, } from './dpqlHelpers';
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/components/dpqlEditor/index.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAC1C,YAAY,EACV,gBAAgB,EAChB,cAAc,EACd,gBAAgB,EAChB,aAAa,EACb,UAAU,EACV,UAAU,GACX,MAAM,SAAS,CAAC;AACjB,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAClD,YAAY,EACV,cAAc,EACd,sBAAsB,EACtB,qBAAqB,GACtB,MAAM,kBAAkB,CAAC;AAI1B,OAAO,EACL,kBAAkB,EAClB,WAAW,EACX,eAAe,EACf,gBAAgB,EAChB,sBAAsB,EACtB,gBAAgB,GACjB,MAAM,eAAe,CAAC;AACvB,OAAO,EACL,sBAAsB,EACtB,eAAe,EACf,eAAe,EACf,mBAAmB,GACpB,MAAM,YAAY,CAAC;AACpB,OAAO,EAAE,sBAAsB,EAAE,MAAM,gBAAgB,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/components/dpqlEditor/index.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAC1C,YAAY,EACV,gBAAgB,EAChB,cAAc,EACd,gBAAgB,EAChB,aAAa,EACb,UAAU,EACV,UAAU,GACX,MAAM,SAAS,CAAC;AACjB,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AACxC,YAAY,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAC;AACpD,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAC9C,YAAY,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AACnD,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAClD,YAAY,EACV,cAAc,EACd,sBAAsB,EACtB,qBAAqB,GACtB,MAAM,kBAAkB,CAAC;AAI1B,OAAO,EACL,kBAAkB,EAClB,WAAW,EACX,eAAe,EACf,gBAAgB,EAChB,sBAAsB,EACtB,gBAAgB,GACjB,MAAM,eAAe,CAAC;AACvB,OAAO,EACL,sBAAsB,EACtB,eAAe,EACf,eAAe,EACf,mBAAmB,GACpB,MAAM,YAAY,CAAC;AACpB,OAAO,EAAE,sBAAsB,EAAE,MAAM,gBAAgB,CAAC"}
|
|
@@ -2,9 +2,13 @@
|
|
|
2
2
|
// Copyright 2026 Qore Technologies, s.r.o.
|
|
3
3
|
// Public surface of the DpqlEditor component.
|
|
4
4
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
5
|
-
exports.dpqlCompletionInserter = exports.makeDpqlTagRenderer = exports.TEMPLATE_COLORS = exports.FIELD_REF_COLOR = exports.DEFAULT_TEMPLATE_COLOR = exports.slateToPlainText = exports.slateSelectionToOffset = exports.plainTextToSlate = exports.isTagCompletion = exports.getTagLabel = exports.dpqlSlateConverter = exports.useDpqlSession = exports.DpqlEditor = void 0;
|
|
5
|
+
exports.dpqlCompletionInserter = exports.makeDpqlTagRenderer = exports.TEMPLATE_COLORS = exports.FIELD_REF_COLOR = exports.DEFAULT_TEMPLATE_COLOR = exports.slateToPlainText = exports.slateSelectionToOffset = exports.plainTextToSlate = exports.isTagCompletion = exports.getTagLabel = exports.dpqlSlateConverter = exports.useDpqlSession = exports.useDpqlProbe = exports.dpqlProbe = exports.DpqlEditor = void 0;
|
|
6
6
|
var DpqlEditor_1 = require("./DpqlEditor");
|
|
7
7
|
Object.defineProperty(exports, "DpqlEditor", { enumerable: true, get: function () { return DpqlEditor_1.DpqlEditor; } });
|
|
8
|
+
var dpqlProbe_1 = require("./dpqlProbe");
|
|
9
|
+
Object.defineProperty(exports, "dpqlProbe", { enumerable: true, get: function () { return dpqlProbe_1.dpqlProbe; } });
|
|
10
|
+
var useDpqlProbe_1 = require("./useDpqlProbe");
|
|
11
|
+
Object.defineProperty(exports, "useDpqlProbe", { enumerable: true, get: function () { return useDpqlProbe_1.useDpqlProbe; } });
|
|
8
12
|
var useDpqlSession_1 = require("./useDpqlSession");
|
|
9
13
|
Object.defineProperty(exports, "useDpqlSession", { enumerable: true, get: function () { return useDpqlSession_1.useDpqlSession; } });
|
|
10
14
|
// `useDpqlSyntaxHighlighting` removed in 0.10.0 — syntax highlighting
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/components/dpqlEditor/index.ts"],"names":[],"mappings":";AAAA,2CAA2C;AAC3C,8CAA8C;;;AAE9C,2CAA0C;AAAjC,wGAAA,UAAU,OAAA;AASnB,mDAAkD;AAAzC,gHAAA,cAAc,OAAA;AAMvB,sEAAsE;AACtE,mEAAmE;AACnE,oCAAoC;AACpC,6CAOuB;AANrB,iHAAA,kBAAkB,OAAA;AAClB,0GAAA,WAAW,OAAA;AACX,8GAAA,eAAe,OAAA;AACf,+GAAA,gBAAgB,OAAA;AAChB,qHAAA,sBAAsB,OAAA;AACtB,+GAAA,gBAAgB,OAAA;AAElB,uCAKoB;AAJlB,kHAAA,sBAAsB,OAAA;AACtB,2GAAA,eAAe,OAAA;AACf,2GAAA,eAAe,OAAA;AACf,+GAAA,mBAAmB,OAAA;AAErB,+CAAwD;AAA/C,sHAAA,sBAAsB,OAAA"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/components/dpqlEditor/index.ts"],"names":[],"mappings":";AAAA,2CAA2C;AAC3C,8CAA8C;;;AAE9C,2CAA0C;AAAjC,wGAAA,UAAU,OAAA;AASnB,yCAAwC;AAA/B,sGAAA,SAAS,OAAA;AAElB,+CAA8C;AAArC,4GAAA,YAAY,OAAA;AAErB,mDAAkD;AAAzC,gHAAA,cAAc,OAAA;AAMvB,sEAAsE;AACtE,mEAAmE;AACnE,oCAAoC;AACpC,6CAOuB;AANrB,iHAAA,kBAAkB,OAAA;AAClB,0GAAA,WAAW,OAAA;AACX,8GAAA,eAAe,OAAA;AACf,+GAAA,gBAAgB,OAAA;AAChB,qHAAA,sBAAsB,OAAA;AACtB,+GAAA,gBAAgB,OAAA;AAElB,uCAKoB;AAJlB,kHAAA,sBAAsB,OAAA;AACtB,2GAAA,eAAe,OAAA;AACf,2GAAA,eAAe,OAAA;AACf,+GAAA,mBAAmB,OAAA;AAErB,+CAAwD;AAA/C,sHAAA,sBAAsB,OAAA"}
|
|
@@ -3,6 +3,27 @@ export type { ISlateElement, ISlateText, TSlateNode, } from '../smartEditor/type
|
|
|
3
3
|
export interface IDpqlParseResult {
|
|
4
4
|
success: boolean;
|
|
5
5
|
expression: Record<string, any> | null;
|
|
6
|
+
/** The type the server inferred for the expression's result. */
|
|
7
|
+
inferred_type?: string;
|
|
8
|
+
/** Echo of the `target_type` the request asked about, when one was sent. */
|
|
9
|
+
target_type?: string;
|
|
10
|
+
/** `true` when the inferred type already satisfies the target. */
|
|
11
|
+
type_compatible?: boolean;
|
|
12
|
+
/** `true` when a conversion to the target exists at all. */
|
|
13
|
+
auto_coercible?: boolean;
|
|
14
|
+
/**
|
|
15
|
+
* `true` when that conversion is only ATTEMPTED, not guaranteed — text used
|
|
16
|
+
* as a number, whose outcome depends on what the text turns out to hold.
|
|
17
|
+
* A total conversion (a number used as text) reports `false`, and the server
|
|
18
|
+
* emits no diagnostic for it: warning about something that cannot fail
|
|
19
|
+
* teaches authors to ignore the warnings that can.
|
|
20
|
+
*/
|
|
21
|
+
coercion_may_fail?: boolean;
|
|
22
|
+
/** The conversion that would make the expression fit, when one would. */
|
|
23
|
+
suggested_fix?: {
|
|
24
|
+
text: string;
|
|
25
|
+
description?: string;
|
|
26
|
+
};
|
|
6
27
|
diagnostics: Array<{
|
|
7
28
|
range: {
|
|
8
29
|
start: {
|
|
@@ -158,8 +179,14 @@ export interface IDpqlEditorRef {
|
|
|
158
179
|
message: string;
|
|
159
180
|
}>;
|
|
160
181
|
}>;
|
|
161
|
-
/**
|
|
162
|
-
|
|
182
|
+
/**
|
|
183
|
+
* Parse DPQL text into an expression AST via `dpql/parse`.
|
|
184
|
+
*
|
|
185
|
+
* `targetType` asks the server, in the same round trip, whether the
|
|
186
|
+
* expression's result can satisfy that type — see `coercion_may_fail` on
|
|
187
|
+
* the result. Omit it to ask only whether the text parses.
|
|
188
|
+
*/
|
|
189
|
+
parse: (text: string, targetType?: string) => Promise<IDpqlParseResult>;
|
|
163
190
|
/** Serialize an expression AST back to DPQL text via `dpql/serialize`. */
|
|
164
191
|
serialize: (expression: Record<string, any>) => Promise<string>;
|
|
165
192
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/components/dpqlEditor/types.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/components/dpqlEditor/types.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useDpqlProbe.d.ts","sourceRoot":"","sources":["../../../src/components/dpqlEditor/useDpqlProbe.ts"],"names":[],"mappings":"AAOA,OAAO,EAAa,gBAAgB,EAAE,MAAM,aAAa,CAAC;AAE1D,MAAM,MAAM,YAAY,GAAG,CAAC,IAAI,EAAE,MAAM,KAAK,OAAO,CAAC,gBAAgB,CAAC,CAAC;AAEvE,eAAO,MAAM,YAAY,QAAO,YAqB/B,CAAC"}
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.useDpqlProbe = void 0;
|
|
4
|
+
// Copyright 2026 Qore Technologies, s.r.o.
|
|
5
|
+
// React access to the shared DPQL detection probe (`dpqlProbe`). The hook
|
|
6
|
+
// itself opens nothing: a field becomes a consumer of the shared document
|
|
7
|
+
// only once it actually asks a question, and stops being one when it
|
|
8
|
+
// unmounts. A form full of fields that never see expression-shaped text
|
|
9
|
+
// therefore never opens the document at all.
|
|
10
|
+
var react_1 = require("react");
|
|
11
|
+
var dpqlProbe_1 = require("./dpqlProbe");
|
|
12
|
+
var useDpqlProbe = function () {
|
|
13
|
+
var acquired = (0, react_1.useRef)(false);
|
|
14
|
+
(0, react_1.useEffect)(function () { return function () {
|
|
15
|
+
if (acquired.current) {
|
|
16
|
+
acquired.current = false;
|
|
17
|
+
dpqlProbe_1.dpqlProbe.release();
|
|
18
|
+
}
|
|
19
|
+
}; }, []);
|
|
20
|
+
return (0, react_1.useCallback)(function (text) {
|
|
21
|
+
if (!acquired.current) {
|
|
22
|
+
acquired.current = true;
|
|
23
|
+
dpqlProbe_1.dpqlProbe.acquire();
|
|
24
|
+
}
|
|
25
|
+
return dpqlProbe_1.dpqlProbe.parse(text);
|
|
26
|
+
}, []);
|
|
27
|
+
};
|
|
28
|
+
exports.useDpqlProbe = useDpqlProbe;
|
|
29
|
+
//# sourceMappingURL=useDpqlProbe.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useDpqlProbe.js","sourceRoot":"","sources":["../../../src/components/dpqlEditor/useDpqlProbe.ts"],"names":[],"mappings":";;;AAAA,2CAA2C;AAC3C,0EAA0E;AAC1E,0EAA0E;AAC1E,qEAAqE;AACrE,wEAAwE;AACxE,6CAA6C;AAC7C,+BAAuD;AACvD,yCAA0D;AAInD,IAAM,YAAY,GAAG;IAC1B,IAAM,QAAQ,GAAG,IAAA,cAAM,EAAC,KAAK,CAAC,CAAC;IAE/B,IAAA,iBAAS,EACP,cAAM,OAAA;QACJ,IAAI,QAAQ,CAAC,OAAO,EAAE,CAAC;YACrB,QAAQ,CAAC,OAAO,GAAG,KAAK,CAAC;YACzB,qBAAS,CAAC,OAAO,EAAE,CAAC;QACtB,CAAC;IACH,CAAC,EALK,CAKL,EACD,EAAE,CACH,CAAC;IAEF,OAAO,IAAA,mBAAW,EAAC,UAAC,IAAY;QAC9B,IAAI,CAAC,QAAQ,CAAC,OAAO,EAAE,CAAC;YACtB,QAAQ,CAAC,OAAO,GAAG,IAAI,CAAC;YACxB,qBAAS,CAAC,OAAO,EAAE,CAAC;QACtB,CAAC;QAED,OAAO,qBAAS,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IAC/B,CAAC,EAAE,EAAE,CAAC,CAAC;AACT,CAAC,CAAC;AArBW,QAAA,YAAY,gBAqBvB"}
|
|
@@ -41,8 +41,11 @@ export interface IUseDpqlSessionResult {
|
|
|
41
41
|
fieldMeta: Record<string, IDpqlFieldMeta>;
|
|
42
42
|
/** Most recent `publishDiagnostics`. */
|
|
43
43
|
diagnostics: ILspDiagnostic[];
|
|
44
|
-
/**
|
|
45
|
-
|
|
44
|
+
/**
|
|
45
|
+
* `dpql/parse` — DPQL text → expression AST, and, when `targetType` is
|
|
46
|
+
* given, whether that result can satisfy the type the field declares.
|
|
47
|
+
*/
|
|
48
|
+
parse: (text: string, targetType?: string) => Promise<IDpqlParseResult>;
|
|
46
49
|
/** `dpql/serialize` — expression AST → DPQL text. */
|
|
47
50
|
serialize: (expression: Record<string, any>) => Promise<string>;
|
|
48
51
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useDpqlSession.d.ts","sourceRoot":"","sources":["../../../src/components/dpqlEditor/useDpqlSession.ts"],"names":[],"mappings":"AAQA,OAAO,EAAE,cAAc,EAAE,MAAM,6BAA6B,CAAC;AAC7D,OAAO,EAAiB,oBAAoB,EAAE,MAAM,8BAA8B,CAAC;AACnF,OAAO,EAAE,gBAAgB,EAAE,eAAe,EAAE,MAAM,SAAS,CAAC;AAE5D,MAAM,WAAW,cAAc;IAC7B,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE;QAAE,IAAI,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;CAC1B;AAED,MAAM,WAAW,sBAAsB;IACrC,kGAAkG;IAClG,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,qEAAqE;IACrE,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,mEAAmE;IACnE,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;IAC9B,mEAAmE;IACnE,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,2CAA2C;IAC3C,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB;;;;;;OAMG;IACH,mBAAmB,CAAC,EAAE,OAAO,CAAC;IAC9B;;;OAGG;IACH,UAAU,CAAC,EAAE,eAAe,CAAC;CAC9B;AAED,MAAM,WAAW,qBAAqB;IACpC,sEAAsE;IACtE,OAAO,EAAE,oBAAoB,CAAC;IAC9B,oEAAoE;IACpE,SAAS,EAAE,MAAM,CAAC,MAAM,EAAE,cAAc,CAAC,CAAC;IAC1C,wCAAwC;IACxC,WAAW,EAAE,cAAc,EAAE,CAAC;IAC9B
|
|
1
|
+
{"version":3,"file":"useDpqlSession.d.ts","sourceRoot":"","sources":["../../../src/components/dpqlEditor/useDpqlSession.ts"],"names":[],"mappings":"AAQA,OAAO,EAAE,cAAc,EAAE,MAAM,6BAA6B,CAAC;AAC7D,OAAO,EAAiB,oBAAoB,EAAE,MAAM,8BAA8B,CAAC;AACnF,OAAO,EAAE,gBAAgB,EAAE,eAAe,EAAE,MAAM,SAAS,CAAC;AAE5D,MAAM,WAAW,cAAc;IAC7B,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE;QAAE,IAAI,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;CAC1B;AAED,MAAM,WAAW,sBAAsB;IACrC,kGAAkG;IAClG,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,qEAAqE;IACrE,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,mEAAmE;IACnE,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;IAC9B,mEAAmE;IACnE,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,2CAA2C;IAC3C,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB;;;;;;OAMG;IACH,mBAAmB,CAAC,EAAE,OAAO,CAAC;IAC9B;;;OAGG;IACH,UAAU,CAAC,EAAE,eAAe,CAAC;CAC9B;AAED,MAAM,WAAW,qBAAqB;IACpC,sEAAsE;IACtE,OAAO,EAAE,oBAAoB,CAAC;IAC9B,oEAAoE;IACpE,SAAS,EAAE,MAAM,CAAC,MAAM,EAAE,cAAc,CAAC,CAAC;IAC1C,wCAAwC;IACxC,WAAW,EAAE,cAAc,EAAE,CAAC;IAC9B;;;OAGG;IACH,KAAK,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,UAAU,CAAC,EAAE,MAAM,KAAK,OAAO,CAAC,gBAAgB,CAAC,CAAC;IACxE,qDAAqD;IACrD,SAAS,EAAE,CAAC,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,KAAK,OAAO,CAAC,MAAM,CAAC,CAAC;IAChE;;;OAGG;IACH,QAAQ,EAAE,MAAM,OAAO,CAAC;QAAE,KAAK,EAAE,OAAO,CAAC;QAAC,MAAM,CAAC,EAAE,KAAK,CAAC;YAAE,OAAO,EAAE,MAAM,CAAA;SAAE,CAAC,CAAA;KAAE,CAAC,CAAC;CAClF;AAED,wBAAgB,cAAc,CAC5B,IAAI,EAAE,sBAAsB,GAC3B,qBAAqB,CA6UvB"}
|
|
@@ -294,7 +294,7 @@ function useDpqlSession(opts) {
|
|
|
294
294
|
// preserves every function reference; only this one field is
|
|
295
295
|
// overridden.
|
|
296
296
|
var wrappedSession = (0, react_1.useMemo)(function () { return (__assign(__assign({}, session), { isContextReady: isContextBound })); }, [session, isContextBound]);
|
|
297
|
-
var parse = (0, react_1.useCallback)(function (text) { return __awaiter(_this, void 0, void 0, function () {
|
|
297
|
+
var parse = (0, react_1.useCallback)(function (text, targetType) { return __awaiter(_this, void 0, void 0, function () {
|
|
298
298
|
var result, _a;
|
|
299
299
|
var _b, _c, _d;
|
|
300
300
|
return __generator(this, function (_e) {
|
|
@@ -306,12 +306,18 @@ function useDpqlSession(opts) {
|
|
|
306
306
|
_e.label = 1;
|
|
307
307
|
case 1:
|
|
308
308
|
_e.trys.push([1, 3, , 4]);
|
|
309
|
-
return [4 /*yield*/, session.client.customRequest('dpql/parse', { uri: session.uri, text: text })];
|
|
309
|
+
return [4 /*yield*/, session.client.customRequest('dpql/parse', __assign({ uri: session.uri, text: text }, (targetType ? { target_type: targetType } : {})))];
|
|
310
310
|
case 2:
|
|
311
311
|
result = _e.sent();
|
|
312
312
|
return [2 /*return*/, {
|
|
313
313
|
success: (_b = result === null || result === void 0 ? void 0 : result.success) !== null && _b !== void 0 ? _b : false,
|
|
314
314
|
expression: (_c = result === null || result === void 0 ? void 0 : result.expression) !== null && _c !== void 0 ? _c : null,
|
|
315
|
+
inferred_type: result === null || result === void 0 ? void 0 : result.inferred_type,
|
|
316
|
+
target_type: result === null || result === void 0 ? void 0 : result.target_type,
|
|
317
|
+
type_compatible: result === null || result === void 0 ? void 0 : result.type_compatible,
|
|
318
|
+
auto_coercible: result === null || result === void 0 ? void 0 : result.auto_coercible,
|
|
319
|
+
coercion_may_fail: result === null || result === void 0 ? void 0 : result.coercion_may_fail,
|
|
320
|
+
suggested_fix: result === null || result === void 0 ? void 0 : result.suggested_fix,
|
|
315
321
|
diagnostics: (_d = result === null || result === void 0 ? void 0 : result.diagnostics) !== null && _d !== void 0 ? _d : [],
|
|
316
322
|
}];
|
|
317
323
|
case 3:
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useDpqlSession.js","sourceRoot":"","sources":["../../../src/components/dpqlEditor/useDpqlSession.ts"],"names":[],"mappings":";AAAA,2CAA2C;AAC3C,qEAAqE;AACrE,wEAAwE;AACxE,wEAAwE;AACxE,2EAA2E;AAC3E,yEAAyE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAEzE,+BAA0E;AAE1E,8DAAmF;
|
|
1
|
+
{"version":3,"file":"useDpqlSession.js","sourceRoot":"","sources":["../../../src/components/dpqlEditor/useDpqlSession.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"CompactRow.d.ts","sourceRoot":"","sources":["../../../../src/components/form/engine/CompactRow.tsx"],"names":[],"mappings":"AAcA,OAAO,EACL,eAAe,EAIhB,MAAM,8BAA8B,CAAC;AAItC,OAAO,KAAe,MAAM,OAAO,CAAC;
|
|
1
|
+
{"version":3,"file":"CompactRow.d.ts","sourceRoot":"","sources":["../../../../src/components/form/engine/CompactRow.tsx"],"names":[],"mappings":"AAcA,OAAO,EACL,eAAe,EAIhB,MAAM,8BAA8B,CAAC;AAItC,OAAO,KAAe,MAAM,OAAO,CAAC;AA0HpC;;;;;;;;;;;;GAYG;AACH,eAAO,MAAM,gBAAgB,SAAU,OAAO,KAAG,MAAM,GAAG,SAG7C,CAAC;AAEd,eAAO,MAAM,UAAU,yHASlB;IACD,UAAU,EAAE,MAAM,CAAC;IACnB,WAAW,EAAE,eAAe,CAAC;IAC7B,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB;;;mBAGe;IACf,cAAc,CAAC,EAAE,MAAM,EAAE,CAAC;IAI1B,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,WAAW,CAAC,EAAE,OAAO,CAAC;CACvB,6CAyoEF,CAAC"}
|