@qoretechnologies/reqraft 0.10.53 → 0.10.54-pr.115.g9bc96ed
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/.claude/CLAUDE.md +25 -0
- package/.tasks/INDEX.md +1 -0
- package/.tasks/STORY_NETWORK_ISOLATION.md +98 -0
- package/README.md +1 -1
- package/design/FORM_ENGINE_EXPRESSIONS.md +110 -0
- package/design/FORM_ENGINE_FIELD_MIGRATION.md +56 -1
- package/design/RENDER_EXPRESSION_TRANSPORT.md +76 -10
- package/design/SMART_EDITOR_UX.md +21 -0
- package/dist/components/dpqlEditor/DpqlEditor.d.ts.map +1 -1
- package/dist/components/dpqlEditor/DpqlEditor.js +3 -3
- package/dist/components/dpqlEditor/DpqlEditor.js.map +1 -1
- package/dist/components/dpqlEditor/dpqlHelpers.d.ts +6 -0
- package/dist/components/dpqlEditor/dpqlHelpers.d.ts.map +1 -1
- package/dist/components/dpqlEditor/dpqlHelpers.js +21 -2
- package/dist/components/dpqlEditor/dpqlHelpers.js.map +1 -1
- 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/dpqlTags.d.ts +8 -0
- package/dist/components/dpqlEditor/dpqlTags.d.ts.map +1 -1
- package/dist/components/dpqlEditor/dpqlTags.js +5 -1
- package/dist/components/dpqlEditor/dpqlTags.js.map +1 -1
- 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 +42 -2
- package/dist/components/dpqlEditor/types.d.ts.map +1 -1
- package/dist/components/dpqlEditor/types.js +0 -4
- package/dist/components/dpqlEditor/types.js.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 +192 -45
- 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 +160 -12
- package/dist/components/form/engine/FormEngine.d.ts.map +1 -1
- package/dist/components/form/engine/FormEngine.js +376 -75
- package/dist/components/form/engine/FormEngine.js.map +1 -1
- package/dist/components/form/engine/FormFieldsSkeleton.d.ts +48 -0
- package/dist/components/form/engine/FormFieldsSkeleton.d.ts.map +1 -0
- package/dist/components/form/engine/FormFieldsSkeleton.js +38 -0
- package/dist/components/form/engine/FormFieldsSkeleton.js.map +1 -0
- 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 +42 -1
- package/dist/components/form/engine/readFirst.d.ts.map +1 -1
- package/dist/components/form/engine/readFirst.js +74 -7
- 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/engine/rowMenuContext.d.ts +78 -0
- package/dist/components/form/engine/rowMenuContext.d.ts.map +1 -0
- package/dist/components/form/engine/rowMenuContext.js +103 -0
- package/dist/components/form/engine/rowMenuContext.js.map +1 -0
- package/dist/components/form/engine/typeChoices.d.ts +37 -0
- package/dist/components/form/engine/typeChoices.d.ts.map +1 -0
- package/dist/components/form/engine/typeChoices.js +25 -0
- package/dist/components/form/engine/typeChoices.js.map +1 -0
- package/dist/components/form/expressions/DpqlRendering.d.ts +26 -0
- package/dist/components/form/expressions/DpqlRendering.d.ts.map +1 -0
- package/dist/components/form/expressions/DpqlRendering.js +53 -0
- package/dist/components/form/expressions/DpqlRendering.js.map +1 -0
- package/dist/components/form/expressions/ExpressionField.d.ts +7 -1
- package/dist/components/form/expressions/ExpressionField.d.ts.map +1 -1
- package/dist/components/form/expressions/ExpressionField.js +202 -45
- package/dist/components/form/expressions/ExpressionField.js.map +1 -1
- package/dist/components/form/expressions/argumentPresence.d.ts +97 -0
- package/dist/components/form/expressions/argumentPresence.d.ts.map +1 -0
- package/dist/components/form/expressions/argumentPresence.js +203 -0
- package/dist/components/form/expressions/argumentPresence.js.map +1 -0
- package/dist/components/form/expressions/builder/argumentLabel.d.ts.map +1 -1
- package/dist/components/form/expressions/builder/argumentLabel.js +9 -4
- package/dist/components/form/expressions/builder/argumentLabel.js.map +1 -1
- package/dist/components/form/expressions/builder/index.d.ts +15 -2
- package/dist/components/form/expressions/builder/index.d.ts.map +1 -1
- package/dist/components/form/expressions/builder/index.js +20 -58
- package/dist/components/form/expressions/builder/index.js.map +1 -1
- package/dist/components/form/expressions/builder/renderTemplate.d.ts +4 -1
- package/dist/components/form/expressions/builder/renderTemplate.d.ts.map +1 -1
- package/dist/components/form/expressions/builder/renderTemplate.js +10 -67
- package/dist/components/form/expressions/builder/renderTemplate.js.map +1 -1
- package/dist/components/form/expressions/dpqlMockLanguage.d.ts +76 -0
- package/dist/components/form/expressions/dpqlMockLanguage.d.ts.map +1 -0
- package/dist/components/form/expressions/dpqlMockLanguage.js +525 -0
- package/dist/components/form/expressions/dpqlMockLanguage.js.map +1 -0
- package/dist/components/form/expressions/dpqlMockLsp.d.ts +31 -2
- package/dist/components/form/expressions/dpqlMockLsp.d.ts.map +1 -1
- package/dist/components/form/expressions/dpqlMockLsp.js +86 -80
- package/dist/components/form/expressions/dpqlMockLsp.js.map +1 -1
- package/dist/components/form/expressions/mockExpressions.d.ts.map +1 -1
- package/dist/components/form/expressions/mockExpressions.js +8 -4
- package/dist/components/form/expressions/mockExpressions.js.map +1 -1
- package/dist/components/form/expressions/renderExpressionToText.d.ts +1 -1
- package/dist/components/form/expressions/renderExpressionToText.d.ts.map +1 -1
- package/dist/components/form/expressions/renderExpressionToText.js +95 -19
- package/dist/components/form/expressions/renderExpressionToText.js.map +1 -1
- package/dist/components/form/expressions/types.d.ts +7 -0
- package/dist/components/form/expressions/types.d.ts.map +1 -1
- package/dist/components/form/expressions/useRenderExpression.d.ts +7 -16
- package/dist/components/form/expressions/useRenderExpression.d.ts.map +1 -1
- package/dist/components/form/expressions/useRenderExpression.js +50 -126
- package/dist/components/form/expressions/useRenderExpression.js.map +1 -1
- package/dist/components/form/fields/Field.d.ts.map +1 -1
- package/dist/components/form/fields/Field.js +3 -1
- package/dist/components/form/fields/Field.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 +32 -8
- package/dist/components/form/fields/auto/AutoFormField.js.map +1 -1
- package/dist/components/form/fields/date/Date.d.ts +1 -1
- package/dist/components/form/fields/date/Date.d.ts.map +1 -1
- package/dist/components/form/fields/date/Date.js +16 -2
- package/dist/components/form/fields/date/Date.js.map +1 -1
- package/dist/components/form/fields/rich-text/RichText.d.ts +21 -1
- package/dist/components/form/fields/rich-text/RichText.d.ts.map +1 -1
- package/dist/components/form/fields/rich-text/RichText.js +140 -8
- package/dist/components/form/fields/rich-text/RichText.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 +31 -1
- package/dist/components/form/fields/template/TemplateField.d.ts.map +1 -1
- package/dist/components/form/fields/template/TemplateField.js +528 -50
- package/dist/components/form/fields/template/TemplateField.js.map +1 -1
- package/dist/components/form/index.d.ts +1 -0
- package/dist/components/form/index.d.ts.map +1 -1
- package/dist/components/form/index.js +1 -0
- package/dist/components/form/index.js.map +1 -1
- package/dist/components/smartEditor/SmartEditor.d.ts.map +1 -1
- package/dist/components/smartEditor/SmartEditor.js +29 -8
- package/dist/components/smartEditor/SmartEditor.js.map +1 -1
- package/dist/components/smartEditor/__fixtures__/mockLspServer.d.ts +8 -0
- package/dist/components/smartEditor/__fixtures__/mockLspServer.d.ts.map +1 -1
- package/dist/components/smartEditor/__fixtures__/mockLspServer.js +53 -10
- package/dist/components/smartEditor/__fixtures__/mockLspServer.js.map +1 -1
- package/dist/components/smartEditor/useLspSession.d.ts +5 -1
- package/dist/components/smartEditor/useLspSession.d.ts.map +1 -1
- package/dist/components/smartEditor/useLspSession.js +16 -2
- package/dist/components/smartEditor/useLspSession.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 +164 -0
- package/dist/helpers/dpqlDetection.js.map +1 -0
- package/dist/helpers/optionUiTypes.d.ts +3 -3
- package/dist/helpers/options.d.ts +37 -0
- package/dist/helpers/options.d.ts.map +1 -1
- package/dist/helpers/options.js +78 -1
- package/dist/helpers/options.js.map +1 -1
- package/dist/helpers/templateItems.d.ts +47 -0
- package/dist/helpers/templateItems.d.ts.map +1 -0
- package/dist/helpers/templateItems.js +88 -0
- package/dist/helpers/templateItems.js.map +1 -0
- package/dist/helpers/templateText.d.ts +37 -0
- package/dist/helpers/templateText.d.ts.map +1 -0
- package/dist/helpers/templateText.js +64 -0
- package/dist/helpers/templateText.js.map +1 -0
- package/dist/helpers/templates.d.ts +19 -11
- package/dist/helpers/templates.d.ts.map +1 -1
- package/dist/helpers/templates.js +46 -29
- package/dist/helpers/templates.js.map +1 -1
- package/dist/helpers/validations.d.ts.map +1 -1
- package/dist/helpers/validations.js +56 -9
- package/dist/helpers/validations.js.map +1 -1
- package/dist/hooks/useArgSchema.d.ts +2 -1
- package/dist/hooks/useArgSchema.d.ts.map +1 -1
- package/dist/hooks/useFetch/useFetch.d.ts +3 -1
- package/dist/hooks/useFetch/useFetch.d.ts.map +1 -1
- package/dist/hooks/useFetch/useFetch.js +47 -9
- package/dist/hooks/useFetch/useFetch.js.map +1 -1
- package/dist/hooks/useTemplates.d.ts +20 -0
- package/dist/hooks/useTemplates.d.ts.map +1 -1
- package/dist/hooks/useTemplates.js +34 -2
- package/dist/hooks/useTemplates.js.map +1 -1
- package/dist/index.d.ts +2 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +5 -1
- package/dist/index.js.map +1 -1
- package/dist/stories/storyNetwork.d.ts +36 -0
- package/dist/stories/storyNetwork.d.ts.map +1 -0
- package/dist/stories/storyNetwork.js +82 -0
- package/dist/stories/storyNetwork.js.map +1 -0
- package/dist/utils/fetch.d.ts +151 -1
- package/dist/utils/fetch.d.ts.map +1 -1
- package/dist/utils/fetch.js +256 -44
- package/dist/utils/fetch.js.map +1 -1
- package/dist/utils/lspClient.d.ts +6 -0
- package/dist/utils/lspClient.d.ts.map +1 -1
- package/dist/utils/lspClient.js +62 -11
- package/dist/utils/lspClient.js.map +1 -1
- package/dist/utils/websocket.d.ts +6 -0
- package/dist/utils/websocket.d.ts.map +1 -1
- package/dist/utils/websocket.js +15 -7
- package/dist/utils/websocket.js.map +1 -1
- package/package.json +2 -2
- package/src/components/dpqlEditor/DpqlEditor.stories.tsx +3 -119
- package/src/components/dpqlEditor/DpqlEditor.tsx +5 -2
- package/src/components/dpqlEditor/dpqlHelpers.ts +20 -1
- package/src/components/dpqlEditor/dpqlProbe.ts +165 -0
- package/src/components/dpqlEditor/dpqlTags.ts +13 -0
- package/src/components/dpqlEditor/index.ts +4 -0
- package/src/components/dpqlEditor/types.ts +38 -2
- package/src/components/dpqlEditor/useDpqlProbe.ts +33 -0
- package/src/components/dpqlEditor/useDpqlSession.ts +20 -4
- package/src/components/form/engine/CompactRow.tsx +240 -51
- package/src/components/form/engine/CompactToolbar.tsx +10 -3
- package/src/components/form/engine/FormEngine.stories.tsx +423 -120
- package/src/components/form/engine/FormEngine.tsx +504 -87
- package/src/components/form/engine/FormFieldsSkeleton.tsx +76 -0
- 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 +86 -7
- package/src/components/form/engine/rendererTypes.ts +12 -0
- package/src/components/form/engine/rowMenuContext.ts +159 -0
- package/src/components/form/engine/typeChoices.ts +55 -0
- package/src/components/form/expressions/DpqlRendering.tsx +85 -0
- package/src/components/form/expressions/ExpressionField.stories.tsx +826 -48
- package/src/components/form/expressions/ExpressionField.tsx +265 -54
- package/src/components/form/expressions/argumentPresence.ts +200 -0
- package/src/components/form/expressions/builder/ExpressionBuilder.stories.tsx +20 -4
- package/src/components/form/expressions/builder/argumentLabel.tsx +10 -4
- package/src/components/form/expressions/builder/index.tsx +39 -77
- package/src/components/form/expressions/builder/renderTemplate.tsx +23 -56
- package/src/components/form/expressions/dpqlMockLanguage.ts +565 -0
- package/src/components/form/expressions/dpqlMockLsp.ts +109 -83
- package/src/components/form/expressions/mockExpressions.ts +8 -4
- package/src/components/form/expressions/renderExpressionToText.ts +112 -22
- package/src/components/form/expressions/types.ts +7 -0
- package/src/components/form/expressions/useRenderExpression.ts +43 -127
- package/src/components/form/fields/Field.tsx +3 -2
- package/src/components/form/fields/allowed-values/AllowedValues.tsx +13 -2
- package/src/components/form/fields/auto/AutoFormField.stories.tsx +27 -20
- package/src/components/form/fields/auto/AutoFormField.tsx +33 -9
- package/src/components/form/fields/date/Date.tsx +17 -1
- package/src/components/form/fields/rich-text/RichText.tsx +199 -22
- package/src/components/form/fields/template/ReadOnlyTemplateTag.tsx +4 -2
- package/src/components/form/fields/template/TemplateField.stories.tsx +31 -9
- package/src/components/form/fields/template/TemplateField.tsx +714 -122
- package/src/components/form/index.tsx +1 -0
- package/src/components/log/Log.stories.tsx +2 -1
- package/src/components/smartEditor/SmartEditor.tsx +41 -9
- package/src/components/smartEditor/__fixtures__/mockLspServer.ts +52 -3
- package/src/components/smartEditor/useLspSession.ts +21 -3
- package/src/helpers/dpqlDetection.ts +209 -0
- package/src/helpers/options.ts +70 -0
- package/src/helpers/templateItems.ts +81 -0
- package/src/helpers/templateText.ts +92 -0
- package/src/helpers/templates.ts +47 -37
- package/src/helpers/validations.ts +59 -9
- package/src/hooks/useFetch/useFetch.stories.tsx +6 -5
- package/src/hooks/useFetch/useFetch.tsx +53 -7
- package/src/hooks/useStorage/useStorage.stories.tsx +2 -1
- package/src/hooks/useTemplates.ts +41 -0
- package/src/hooks/useWebSocket/useWebsocket.stories.tsx +2 -1
- package/src/index.tsx +14 -1
- package/src/stores/currentUser/currentUser.stories.tsx +2 -1
- package/src/stories/storyNetwork.ts +92 -0
- package/src/utils/fetch.ts +311 -21
- package/src/utils/lspClient.ts +68 -11
- package/src/utils/websocket.ts +20 -9
|
@@ -0,0 +1,525 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __extends = (this && this.__extends) || (function () {
|
|
3
|
+
var extendStatics = function (d, b) {
|
|
4
|
+
extendStatics = Object.setPrototypeOf ||
|
|
5
|
+
({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
|
|
6
|
+
function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };
|
|
7
|
+
return extendStatics(d, b);
|
|
8
|
+
};
|
|
9
|
+
return function (d, b) {
|
|
10
|
+
if (typeof b !== "function" && b !== null)
|
|
11
|
+
throw new TypeError("Class extends value " + String(b) + " is not a constructor or null");
|
|
12
|
+
extendStatics(d, b);
|
|
13
|
+
function __() { this.constructor = d; }
|
|
14
|
+
d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
|
|
15
|
+
};
|
|
16
|
+
})();
|
|
17
|
+
var __assign = (this && this.__assign) || function () {
|
|
18
|
+
__assign = Object.assign || function(t) {
|
|
19
|
+
for (var s, i = 1, n = arguments.length; i < n; i++) {
|
|
20
|
+
s = arguments[i];
|
|
21
|
+
for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
|
|
22
|
+
t[p] = s[p];
|
|
23
|
+
}
|
|
24
|
+
return t;
|
|
25
|
+
};
|
|
26
|
+
return __assign.apply(this, arguments);
|
|
27
|
+
};
|
|
28
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
29
|
+
exports.mockRenderDpql = exports.mockSerializeDpql = exports.dpqlMockRichtext = exports.mockParseDpql = exports.inferDpqlMockType = exports.mockTokenizeDpql = void 0;
|
|
30
|
+
// Copyright 2026 Qore Technologies, s.r.o.
|
|
31
|
+
// The DPQL the story language server speaks: tokens, parse, type analysis,
|
|
32
|
+
// serialize and render, as pure functions.
|
|
33
|
+
//
|
|
34
|
+
// A mock that answers every request with a fixed shape makes stories assert
|
|
35
|
+
// its artefacts instead of the product. The one this replaced parsed ANY text
|
|
36
|
+
// into `text == ""`, so `1 + 2 ==` — which the real server rejects — previewed
|
|
37
|
+
// as `"1 + 2 ==" == ""` and a bool field reported "returns string". Each
|
|
38
|
+
// answer here follows what the Qorus `/lsp` handler actually returned for the
|
|
39
|
+
// same input, recorded in `__tests__/dpqlMockLanguage.test.ts`; only the subset
|
|
40
|
+
// the stories exercise is modelled.
|
|
41
|
+
var mockExpressions_1 = require("./mockExpressions");
|
|
42
|
+
// ─── Catalogue ───────────────────────────────────────────────────────────────
|
|
43
|
+
/* The server parses, serializes and renders by the expression catalogue — an
|
|
44
|
+
expression's symbol, type, group and `render_template` — so this reads the
|
|
45
|
+
stories' catalogue for the same answers. */
|
|
46
|
+
var CATALOGUE = new Map(mockExpressions_1.mockExpressions.map(function (info) { return [info.name, info]; }));
|
|
47
|
+
/** `DET_Function`: a rendering calls it by name. */
|
|
48
|
+
var DET_FUNCTION = 2;
|
|
49
|
+
/** `DET_Operator`. */
|
|
50
|
+
var DET_OPERATOR = 1;
|
|
51
|
+
var WORD = /^[A-Za-z_]\w*$/;
|
|
52
|
+
/** An expression's DPQL spelling: its symbol without a display `()`, else its name. */
|
|
53
|
+
var symbolOf = function (name) { var _a, _b; return ((_b = (_a = CATALOGUE.get(name)) === null || _a === void 0 ? void 0 : _a.symbol) === null || _b === void 0 ? void 0 : _b.replace(/\(\)$/, '')) || name; };
|
|
54
|
+
/**
|
|
55
|
+
* A two-argument catalogue comparison is written infix by its symbol:
|
|
56
|
+
* `"test" startsWith "t"`. With any other number of arguments it is a call.
|
|
57
|
+
* `regex` is the exception the server spells `=~ /…/`, which is not modelled.
|
|
58
|
+
*/
|
|
59
|
+
var isInfixComparison = function (name, argCount) {
|
|
60
|
+
var _a;
|
|
61
|
+
var info = CATALOGUE.get(name);
|
|
62
|
+
return (argCount === 2 &&
|
|
63
|
+
(info === null || info === void 0 ? void 0 : info.type) === DET_OPERATOR &&
|
|
64
|
+
!!((_a = info.groups) === null || _a === void 0 ? void 0 : _a.includes('Comparison')) &&
|
|
65
|
+
name !== 'regex');
|
|
66
|
+
};
|
|
67
|
+
/** Expression names by the word DPQL spells them with: `startsWith` → `starts-with`. */
|
|
68
|
+
var NAME_BY_SYMBOL = new Map(mockExpressions_1.mockExpressions
|
|
69
|
+
.filter(function (info) { return WORD.test(symbolOf(info.name)); })
|
|
70
|
+
.map(function (info) { return [symbolOf(info.name), info.name]; }));
|
|
71
|
+
// ─── Semantic tokens ─────────────────────────────────────────────────────────
|
|
72
|
+
var DPQL_KEYWORDS = new Set(['in', 'not', 'between', 'and', 'like', 'true', 'false', 'null']);
|
|
73
|
+
var DPQL_FUNCTIONS = new Set([
|
|
74
|
+
'abs', 'round', 'floor', 'ceil', 'trim', 'ltrim', 'rtrim', 'concat', 'split', 'substr',
|
|
75
|
+
'coalesce', 'nullif', 'now', 'days', 'hours', 'minutes', 'seconds', 'milliseconds',
|
|
76
|
+
'microseconds', 'years', 'months', 'weeks', 'get_year', 'get_month', 'get_day', 'get_hour',
|
|
77
|
+
'get_minute', 'get_second', 'format_date', 'format_number', 'map', 'hash_map', 'contains',
|
|
78
|
+
'ignore', 'case', 'toString', 'toInt', 'toFloat', 'toBool', 'startsWith', 'endsWith',
|
|
79
|
+
]);
|
|
80
|
+
/**
|
|
81
|
+
* `textDocument/semanticTokens/full` for `text`: the LSP delta-encoded 5-tuple
|
|
82
|
+
* array, with type indices into `SEMANTIC_TOKENS_LEGEND`. It covers readable
|
|
83
|
+
* renderings as well as DPQL, as the server's does — `contains` and
|
|
84
|
+
* `(ignore case)` in an explanation are coloured too.
|
|
85
|
+
*/
|
|
86
|
+
function mockTokenizeDpql(text) {
|
|
87
|
+
// Longer operators must come first so `==` isn't matched as two `=`.
|
|
88
|
+
var TOKEN_RE = new RegExp([
|
|
89
|
+
"(\"(?:\\\\.|[^\"\\\\])*\")", // 1: double-quoted string
|
|
90
|
+
"('(?:\\\\.|[^'\\\\])*')", // 2: single-quoted string
|
|
91
|
+
"(/(?:\\\\.|[^/\\\\])*/[gimsux]*)", // 3: regex literal /…/flags
|
|
92
|
+
"(@\"(?:\\\\.|[^\"\\\\])*\"|@[A-Za-z_][\\w.]*)", // 4: @field
|
|
93
|
+
"(\\$[A-Za-z_-][\\w-]*:(?:\\{[^}]*\\}|[\\w.{}]+))", // 5: $context:value
|
|
94
|
+
"(\\b\\d+(?:\\.\\d+)?(?:[eE][+-]?\\d+)?\\b)", // 6: number
|
|
95
|
+
"(==|!=|<=|>=|&&|\\|\\||=~|!~|[+\\-*/%<>!=])", // 7: operator
|
|
96
|
+
// 8: punctuation — matched so it is not misread, but the server leaves it uncoloured
|
|
97
|
+
"(\\.\\.|[,(){}\\[\\].])",
|
|
98
|
+
"(\\b[A-Za-z_][\\w]*\\b)",
|
|
99
|
+
].join('|'), 'g');
|
|
100
|
+
var tokens = [];
|
|
101
|
+
text.split('\n').forEach(function (line, lineIdx) {
|
|
102
|
+
TOKEN_RE.lastIndex = 0;
|
|
103
|
+
var match;
|
|
104
|
+
while ((match = TOKEN_RE.exec(line)) !== null) {
|
|
105
|
+
var type = -1;
|
|
106
|
+
if (match[1] || match[2])
|
|
107
|
+
type = 11; // string
|
|
108
|
+
else if (match[3])
|
|
109
|
+
type = 13; // regexp
|
|
110
|
+
else if (match[4])
|
|
111
|
+
type = 4; // variable
|
|
112
|
+
else if (match[5])
|
|
113
|
+
type = 2; // class (template)
|
|
114
|
+
else if (match[6])
|
|
115
|
+
type = 12; // number
|
|
116
|
+
else if (match[7])
|
|
117
|
+
type = 14; // operator
|
|
118
|
+
else if (match[9]) {
|
|
119
|
+
var word = match[9];
|
|
120
|
+
if (DPQL_KEYWORDS.has(word.toLowerCase()))
|
|
121
|
+
type = 8; // keyword
|
|
122
|
+
else if (DPQL_FUNCTIONS.has(word) || DPQL_FUNCTIONS.has(word.toLowerCase()))
|
|
123
|
+
type = 6; // function
|
|
124
|
+
}
|
|
125
|
+
if (type >= 0) {
|
|
126
|
+
tokens.push({ line: lineIdx, char: match.index, length: match[0].length, type: type });
|
|
127
|
+
}
|
|
128
|
+
}
|
|
129
|
+
});
|
|
130
|
+
var data = [];
|
|
131
|
+
var prevLine = 0;
|
|
132
|
+
var prevChar = 0;
|
|
133
|
+
for (var _i = 0, tokens_1 = tokens; _i < tokens_1.length; _i++) {
|
|
134
|
+
var t = tokens_1[_i];
|
|
135
|
+
var deltaLine = t.line - prevLine;
|
|
136
|
+
data.push(deltaLine, deltaLine === 0 ? t.char - prevChar : t.char, t.length, t.type, 0);
|
|
137
|
+
prevLine = t.line;
|
|
138
|
+
prevChar = t.char;
|
|
139
|
+
}
|
|
140
|
+
return data;
|
|
141
|
+
}
|
|
142
|
+
exports.mockTokenizeDpql = mockTokenizeDpql;
|
|
143
|
+
var LEX_RE = /\s*(?:("(?:\\.|[^"\\])*")|(\$[A-Za-z_-][\w-]*:[\w.{}]+)|(\d+(?:\.\d+)?)|([A-Za-z_]\w*)|(==|!=|<=|>=|&&|\|\||[-+*/<>!(),]))/y;
|
|
144
|
+
/** Binary operators, loosest first — the precedence the server parenthesises by. */
|
|
145
|
+
var BINARY_PRECEDENCE = {
|
|
146
|
+
'||': 1,
|
|
147
|
+
'&&': 2,
|
|
148
|
+
'==': 3,
|
|
149
|
+
'!=': 3,
|
|
150
|
+
'<': 3,
|
|
151
|
+
'>': 3,
|
|
152
|
+
'<=': 3,
|
|
153
|
+
'>=': 3,
|
|
154
|
+
'+': 4,
|
|
155
|
+
'-': 4,
|
|
156
|
+
'*': 5,
|
|
157
|
+
'/': 5,
|
|
158
|
+
};
|
|
159
|
+
var RETURN_TYPES = {
|
|
160
|
+
toString: 'string',
|
|
161
|
+
toInt: 'int',
|
|
162
|
+
toFloat: 'float',
|
|
163
|
+
toBool: 'bool',
|
|
164
|
+
};
|
|
165
|
+
var DpqlMockSyntaxError = /** @class */ (function (_super) {
|
|
166
|
+
__extends(DpqlMockSyntaxError, _super);
|
|
167
|
+
function DpqlMockSyntaxError(message, column) {
|
|
168
|
+
var _this = _super.call(this, message) || this;
|
|
169
|
+
_this.column = column;
|
|
170
|
+
return _this;
|
|
171
|
+
}
|
|
172
|
+
return DpqlMockSyntaxError;
|
|
173
|
+
}(Error));
|
|
174
|
+
var tokenize = function (text) {
|
|
175
|
+
var tokens = [];
|
|
176
|
+
LEX_RE.lastIndex = 0;
|
|
177
|
+
while (LEX_RE.lastIndex < text.length) {
|
|
178
|
+
var start = LEX_RE.lastIndex;
|
|
179
|
+
var m = LEX_RE.exec(text);
|
|
180
|
+
if (!m) {
|
|
181
|
+
if (text.slice(start).trim() === '')
|
|
182
|
+
break;
|
|
183
|
+
throw new DpqlMockSyntaxError('Unexpected character', start + 1);
|
|
184
|
+
}
|
|
185
|
+
var tokenStart = start + m[0].length - m[0].trimStart().length;
|
|
186
|
+
if (m[1])
|
|
187
|
+
tokens.push({ kind: 'string', text: m[1], start: tokenStart });
|
|
188
|
+
else if (m[2])
|
|
189
|
+
tokens.push({ kind: 'template', text: m[2], start: tokenStart });
|
|
190
|
+
else if (m[3])
|
|
191
|
+
tokens.push({ kind: 'number', text: m[3], start: tokenStart });
|
|
192
|
+
else if (m[4])
|
|
193
|
+
tokens.push({ kind: 'word', text: m[4], start: tokenStart });
|
|
194
|
+
else if (m[5])
|
|
195
|
+
tokens.push({ kind: 'op', text: m[5], start: tokenStart });
|
|
196
|
+
}
|
|
197
|
+
return tokens;
|
|
198
|
+
};
|
|
199
|
+
var templateArg = function (raw) {
|
|
200
|
+
var _a;
|
|
201
|
+
var _b = (_a = raw.match(/^\$([^:]+):(.*)$/)) !== null && _a !== void 0 ? _a : [], context = _b[1], value = _b[2];
|
|
202
|
+
return { type: 'auto', value: { tmpl_context: context, tmpl_value: value, raw: raw } };
|
|
203
|
+
};
|
|
204
|
+
/** An operand: a bare argument, or a nested expression wrapped as the server wraps it. */
|
|
205
|
+
var asOperand = function (node) {
|
|
206
|
+
return node.exp ? { is_expression: true, value: node } : node;
|
|
207
|
+
};
|
|
208
|
+
var parseTokens = function (tokens, endColumn) {
|
|
209
|
+
var pos = 0;
|
|
210
|
+
var peek = function () { return tokens[pos]; };
|
|
211
|
+
var fail = function () {
|
|
212
|
+
var token = peek();
|
|
213
|
+
throw new DpqlMockSyntaxError(token ? "Unexpected token '".concat(token.text, "'") : 'Unexpected end of input, expected value', token ? token.start + 1 : endColumn);
|
|
214
|
+
};
|
|
215
|
+
var primary = function () {
|
|
216
|
+
var _a, _b, _c, _d, _e;
|
|
217
|
+
var token = peek();
|
|
218
|
+
if (!token)
|
|
219
|
+
return fail();
|
|
220
|
+
pos++;
|
|
221
|
+
switch (token.kind) {
|
|
222
|
+
case 'number':
|
|
223
|
+
return token.text.includes('.')
|
|
224
|
+
? { type: 'float', value: parseFloat(token.text) }
|
|
225
|
+
: { type: 'int', value: parseInt(token.text, 10) };
|
|
226
|
+
case 'string':
|
|
227
|
+
return { type: 'string', value: JSON.parse(token.text) };
|
|
228
|
+
case 'template':
|
|
229
|
+
return templateArg(token.text);
|
|
230
|
+
case 'word': {
|
|
231
|
+
if (token.text === 'true' || token.text === 'false') {
|
|
232
|
+
return { type: 'bool', value: token.text === 'true' };
|
|
233
|
+
}
|
|
234
|
+
if (token.text === 'null') {
|
|
235
|
+
return { type: 'any', value: null };
|
|
236
|
+
}
|
|
237
|
+
if (((_a = peek()) === null || _a === void 0 ? void 0 : _a.text) === '(') {
|
|
238
|
+
pos++;
|
|
239
|
+
var args = [];
|
|
240
|
+
while (peek() && peek().text !== ')') {
|
|
241
|
+
args.push(asOperand(binary(1)));
|
|
242
|
+
if (((_b = peek()) === null || _b === void 0 ? void 0 : _b.text) === ',') {
|
|
243
|
+
pos++;
|
|
244
|
+
}
|
|
245
|
+
}
|
|
246
|
+
if (((_c = peek()) === null || _c === void 0 ? void 0 : _c.text) !== ')')
|
|
247
|
+
return fail();
|
|
248
|
+
pos++;
|
|
249
|
+
return { exp: (_d = NAME_BY_SYMBOL.get(token.text)) !== null && _d !== void 0 ? _d : token.text, args: args };
|
|
250
|
+
}
|
|
251
|
+
return { type: 'string', value: token.text };
|
|
252
|
+
}
|
|
253
|
+
case 'op':
|
|
254
|
+
if (token.text === '(') {
|
|
255
|
+
var inner = binary(1);
|
|
256
|
+
if (((_e = peek()) === null || _e === void 0 ? void 0 : _e.text) !== ')')
|
|
257
|
+
return fail();
|
|
258
|
+
pos++;
|
|
259
|
+
return inner;
|
|
260
|
+
}
|
|
261
|
+
if (token.text === '!') {
|
|
262
|
+
return { exp: '!', args: [asOperand(primary())] };
|
|
263
|
+
}
|
|
264
|
+
pos--;
|
|
265
|
+
return fail();
|
|
266
|
+
}
|
|
267
|
+
return fail();
|
|
268
|
+
};
|
|
269
|
+
var binary = function (minPrecedence) {
|
|
270
|
+
var left = primary();
|
|
271
|
+
for (;;) {
|
|
272
|
+
var op = peek();
|
|
273
|
+
// A word comparison (`"a" contains "b"`) binds as the symbol comparisons do.
|
|
274
|
+
var wordComparison = (op === null || op === void 0 ? void 0 : op.kind) === 'word' && NAME_BY_SYMBOL.has(op.text) &&
|
|
275
|
+
isInfixComparison(NAME_BY_SYMBOL.get(op.text), 2)
|
|
276
|
+
? NAME_BY_SYMBOL.get(op.text)
|
|
277
|
+
: undefined;
|
|
278
|
+
var precedence = (op === null || op === void 0 ? void 0 : op.kind) === 'op' ? BINARY_PRECEDENCE[op.text]
|
|
279
|
+
: wordComparison ? BINARY_PRECEDENCE['==']
|
|
280
|
+
: undefined;
|
|
281
|
+
if (precedence === undefined || precedence < minPrecedence) {
|
|
282
|
+
return left;
|
|
283
|
+
}
|
|
284
|
+
pos++;
|
|
285
|
+
var right = binary(precedence + 1);
|
|
286
|
+
left = { exp: wordComparison !== null && wordComparison !== void 0 ? wordComparison : op.text, args: [asOperand(left), asOperand(right)] };
|
|
287
|
+
}
|
|
288
|
+
};
|
|
289
|
+
var root = binary(1);
|
|
290
|
+
if (pos < tokens.length)
|
|
291
|
+
fail();
|
|
292
|
+
return root;
|
|
293
|
+
};
|
|
294
|
+
var nodeOf = function (operand) {
|
|
295
|
+
return operand.is_expression ? operand.value : operand;
|
|
296
|
+
};
|
|
297
|
+
/** The type an expression returns, as far as the server can tell before it runs. */
|
|
298
|
+
var inferDpqlMockType = function (node) {
|
|
299
|
+
var _a, _b;
|
|
300
|
+
if (!node.exp) {
|
|
301
|
+
return node.type === 'auto' ? 'auto' : ((_a = node.type) !== null && _a !== void 0 ? _a : 'auto');
|
|
302
|
+
}
|
|
303
|
+
if (node.exp === 'value')
|
|
304
|
+
return 'auto';
|
|
305
|
+
if (RETURN_TYPES[node.exp])
|
|
306
|
+
return RETURN_TYPES[node.exp];
|
|
307
|
+
if (['==', '!=', '<', '>', '<=', '>=', '&&', '||', '!'].includes(node.exp))
|
|
308
|
+
return 'bool';
|
|
309
|
+
if (['+', '-', '*', '/'].includes(node.exp)) {
|
|
310
|
+
var operandTypes = ((_b = node.args) !== null && _b !== void 0 ? _b : []).map(function (arg) { return (0, exports.inferDpqlMockType)(nodeOf(arg)); });
|
|
311
|
+
if (operandTypes.includes('auto'))
|
|
312
|
+
return 'auto';
|
|
313
|
+
if (node.exp === '+' && operandTypes.includes('string'))
|
|
314
|
+
return 'string';
|
|
315
|
+
return operandTypes.includes('float') ? 'float' : 'int';
|
|
316
|
+
}
|
|
317
|
+
return 'auto';
|
|
318
|
+
};
|
|
319
|
+
exports.inferDpqlMockType = inferDpqlMockType;
|
|
320
|
+
var capitalise = function (word) { return word[0].toUpperCase() + word.slice(1); };
|
|
321
|
+
/** What a successful parse says about fitting `target`, shaped as the server's answer. */
|
|
322
|
+
var analyse = function (text, inferred, target) {
|
|
323
|
+
var base = { inferred_type: inferred, target_type: target };
|
|
324
|
+
if (inferred === 'auto' || target === 'auto' || target === 'any' || inferred === target) {
|
|
325
|
+
return __assign(__assign({}, base), { type_compatible: true, auto_coercible: true, coercion_may_fail: false, diagnostics: [] });
|
|
326
|
+
}
|
|
327
|
+
// Text can become anything but may not parse on the day; a number or a bool
|
|
328
|
+
// always becomes text; nothing else converts implicitly.
|
|
329
|
+
var coercible = inferred === 'string' || target === 'string';
|
|
330
|
+
var mayFail = inferred === 'string';
|
|
331
|
+
var span = { line: 1, column: 1, end_line: 1, end_column: text.length + 1 };
|
|
332
|
+
return __assign(__assign(__assign(__assign({}, base), { type_compatible: false, auto_coercible: coercible, coercion_may_fail: mayFail }), (coercible
|
|
333
|
+
? {
|
|
334
|
+
suggested_fix: {
|
|
335
|
+
text: "to".concat(capitalise(target), "(").concat(text, ")"),
|
|
336
|
+
description: "Convert ".concat(inferred, " to ").concat(target, " using to").concat(capitalise(target), "()"),
|
|
337
|
+
},
|
|
338
|
+
}
|
|
339
|
+
: {})), { diagnostics: [
|
|
340
|
+
__assign({ severity: coercible ? 'warning' : 'error', message: coercible
|
|
341
|
+
? "Expression returns '".concat(inferred, "' but target expects '").concat(target, "' (auto-coercion available)")
|
|
342
|
+
: "Expression returns '".concat(inferred, "' but target expects '").concat(target, "'"), code: 'TYPE_MISMATCH' }, span),
|
|
343
|
+
] });
|
|
344
|
+
};
|
|
345
|
+
/** `dpql/parse`: the AST for `text`, or the diagnostic the server reports. */
|
|
346
|
+
var mockParseDpql = function (text, target) {
|
|
347
|
+
var trimmed = text.trim();
|
|
348
|
+
try {
|
|
349
|
+
var tokens = tokenize(trimmed);
|
|
350
|
+
var node = parseTokens(tokens, trimmed.length + 1);
|
|
351
|
+
// A lone value is wrapped in `value(...)`, which is how the server tells a
|
|
352
|
+
// literal apart from an expression.
|
|
353
|
+
var root = node.exp ? node : { exp: 'value', args: [node] };
|
|
354
|
+
var inferred = (0, exports.inferDpqlMockType)(root);
|
|
355
|
+
return __assign({ success: true, expression: { is_expression: true, value: root } }, (target ? analyse(trimmed, inferred, target) : { inferred_type: inferred, diagnostics: [] }));
|
|
356
|
+
}
|
|
357
|
+
catch (err) {
|
|
358
|
+
var column = err instanceof DpqlMockSyntaxError ? err.column : 1;
|
|
359
|
+
return {
|
|
360
|
+
success: false,
|
|
361
|
+
diagnostics: [
|
|
362
|
+
{
|
|
363
|
+
severity: 'error',
|
|
364
|
+
message: err instanceof Error ? err.message : String(err),
|
|
365
|
+
code: 'DPQL-E001',
|
|
366
|
+
line: 1,
|
|
367
|
+
column: column,
|
|
368
|
+
end_line: 1,
|
|
369
|
+
end_column: column,
|
|
370
|
+
},
|
|
371
|
+
],
|
|
372
|
+
};
|
|
373
|
+
}
|
|
374
|
+
};
|
|
375
|
+
exports.mockParseDpql = mockParseDpql;
|
|
376
|
+
// ─── Serialize and render ────────────────────────────────────────────────────
|
|
377
|
+
var TEMPLATE_TOKEN = /^\$[A-Za-z_-][\w-]*:[\w.{}]+$/;
|
|
378
|
+
/** An argument's own value, for a rendering that asks whether it is set. */
|
|
379
|
+
var argumentValue = function (arg) {
|
|
380
|
+
return arg && !arg.exp && !arg.is_expression ? arg.value : arg;
|
|
381
|
+
};
|
|
382
|
+
var printLiteral = function (value, readable) {
|
|
383
|
+
if (value && typeof value === 'object' && 'raw' in value) {
|
|
384
|
+
return String(value.raw);
|
|
385
|
+
}
|
|
386
|
+
if (typeof value === 'string') {
|
|
387
|
+
// Serialized DPQL keeps a string a string; a readable rendering shows a
|
|
388
|
+
// reference the string holds as the reference, which the server's does too.
|
|
389
|
+
return readable && TEMPLATE_TOKEN.test(value) ? value : JSON.stringify(value);
|
|
390
|
+
}
|
|
391
|
+
return value === null || value === undefined ? 'null' : String(value);
|
|
392
|
+
};
|
|
393
|
+
/**
|
|
394
|
+
* `parentPrecedence` is the context: a nested operator binding looser than it
|
|
395
|
+
* is parenthesised. `0` never parenthesises (a call's own commas delimit its
|
|
396
|
+
* arguments); `Infinity` always does, which is how the server substitutes an
|
|
397
|
+
* argument into a `render_template`.
|
|
398
|
+
*/
|
|
399
|
+
var printArg = function (arg, parentPrecedence, readable) {
|
|
400
|
+
var _a;
|
|
401
|
+
if (arg.is_expression) {
|
|
402
|
+
var inner = arg.value;
|
|
403
|
+
var printed = printNode(inner, readable);
|
|
404
|
+
var precedence = BINARY_PRECEDENCE[(_a = inner.exp) !== null && _a !== void 0 ? _a : ''];
|
|
405
|
+
return precedence !== undefined && precedence < parentPrecedence ? "(".concat(printed, ")") : printed;
|
|
406
|
+
}
|
|
407
|
+
if (arg.exp)
|
|
408
|
+
return printNode(arg, readable);
|
|
409
|
+
return printLiteral(arg.value, readable);
|
|
410
|
+
};
|
|
411
|
+
/** `render_template` substitution, in the server's order. */
|
|
412
|
+
var renderTemplate = function (info, args) {
|
|
413
|
+
var argument = function (n) {
|
|
414
|
+
var _a, _b;
|
|
415
|
+
if (n < args.length)
|
|
416
|
+
return printArg(args[n], Infinity, true);
|
|
417
|
+
// A missing argument reads as its default, or as nothing.
|
|
418
|
+
var fallback = (_b = (_a = info.args) === null || _a === void 0 ? void 0 : _a[n]) === null || _b === void 0 ? void 0 : _b.default_value;
|
|
419
|
+
return fallback === undefined ? '' : printLiteral(fallback, true);
|
|
420
|
+
};
|
|
421
|
+
return info
|
|
422
|
+
.render_template.split('$symbol')
|
|
423
|
+
.join(info.symbol)
|
|
424
|
+
.split('$args')
|
|
425
|
+
.join(args.map(function (_, n) { return argument(n); }).join(', '))
|
|
426
|
+
.replace(/\$arg\[(\d+)\]/g, function (_, n) { return argument(Number(n)); })
|
|
427
|
+
.replace(/\$\{arg\[(\d+)\](?:\s*\?([^:}]*):([^}]*))?\}/g, function (_, n, whenSet, whenUnset) {
|
|
428
|
+
var _a, _b;
|
|
429
|
+
if (whenSet === void 0) { whenSet = ''; }
|
|
430
|
+
if (whenUnset === void 0) { whenUnset = ''; }
|
|
431
|
+
/* The argument decides when it was given, its default only when it was
|
|
432
|
+
not — as the expression evaluates. An explicit `false` on a
|
|
433
|
+
default-true argument reads as unset (Qore `5f3d9b491`). */
|
|
434
|
+
var given = args[Number(n)];
|
|
435
|
+
var isSet = given !== undefined ? argumentValue(given) : (_b = (_a = info.args) === null || _a === void 0 ? void 0 : _a[Number(n)]) === null || _b === void 0 ? void 0 : _b.default_value;
|
|
436
|
+
return isSet ? whenSet : whenUnset;
|
|
437
|
+
});
|
|
438
|
+
};
|
|
439
|
+
/** A node as `dpql/serialize` writes it: DPQL that parses back to the same node. */
|
|
440
|
+
var serializeNode = function (args, name) {
|
|
441
|
+
if (isInfixComparison(name, args.length) && WORD.test(symbolOf(name))) {
|
|
442
|
+
// Not in the server's precedence table, so its operands are rendered in the
|
|
443
|
+
// tightest context: any operator inside one is parenthesised.
|
|
444
|
+
return "".concat(printArg(args[0], Infinity, false), " ").concat(symbolOf(name), " ").concat(printArg(args[1], Infinity, false));
|
|
445
|
+
}
|
|
446
|
+
return "".concat(symbolOf(name), "(").concat(args.map(function (arg) { return printArg(arg, 0, false); }).join(', '), ")");
|
|
447
|
+
};
|
|
448
|
+
/** A node as `dpql/renderExpression` reads it: a function by name, else its template. */
|
|
449
|
+
var renderNode = function (args, name) {
|
|
450
|
+
var info = CATALOGUE.get(name);
|
|
451
|
+
if ((info === null || info === void 0 ? void 0 : info.type) === DET_FUNCTION) {
|
|
452
|
+
return "".concat(name, "(").concat(args.map(function (arg) { return printArg(arg, 0, true); }).join(', '), ")");
|
|
453
|
+
}
|
|
454
|
+
return (info === null || info === void 0 ? void 0 : info.render_template) ? renderTemplate(info, args) : undefined;
|
|
455
|
+
};
|
|
456
|
+
var printNode = function (node, readable) {
|
|
457
|
+
var _a, _b;
|
|
458
|
+
var args = (_a = node.args) !== null && _a !== void 0 ? _a : [];
|
|
459
|
+
var name = (_b = node.exp) !== null && _b !== void 0 ? _b : '';
|
|
460
|
+
if (name === 'value' && args.length === 1)
|
|
461
|
+
return printArg(args[0], 0, readable);
|
|
462
|
+
var rendered = readable ? renderNode(args, name) : undefined;
|
|
463
|
+
if (rendered !== undefined)
|
|
464
|
+
return rendered;
|
|
465
|
+
var precedence = BINARY_PRECEDENCE[name];
|
|
466
|
+
if (precedence !== undefined && args.length === 2) {
|
|
467
|
+
return "".concat(printArg(args[0], precedence, readable), " ").concat(name, " ").concat(printArg(args[1], precedence + 1, readable));
|
|
468
|
+
}
|
|
469
|
+
// The builder stores an AND/OR group as ONE node with every member as an
|
|
470
|
+
// argument; it reads as the members joined by the operator.
|
|
471
|
+
if ((name === '&&' || name === '||') && args.length !== 2) {
|
|
472
|
+
return args.map(function (arg) { return printArg(arg, precedence + 1, readable); }).join(" ".concat(name, " "));
|
|
473
|
+
}
|
|
474
|
+
if (name === '!')
|
|
475
|
+
return "!".concat(printArg(args[0], 6, readable));
|
|
476
|
+
if (!readable)
|
|
477
|
+
return serializeNode(args, name);
|
|
478
|
+
// Any other catalogue operator reads as its arguments joined by its symbol.
|
|
479
|
+
var info = CATALOGUE.get(name);
|
|
480
|
+
if (info) {
|
|
481
|
+
return args.length === 1 ?
|
|
482
|
+
"".concat(info.symbol, " ").concat(printArg(args[0], 0, true))
|
|
483
|
+
: args.map(function (arg) { return printArg(arg, precedence !== null && precedence !== void 0 ? precedence : 0, true); }).join(" ".concat(info.symbol, " "));
|
|
484
|
+
}
|
|
485
|
+
return "".concat(name, "(").concat(args.map(function (arg) { return printArg(arg, 0, true); }).join(', '), ")");
|
|
486
|
+
};
|
|
487
|
+
var rootOf = function (expression) {
|
|
488
|
+
return (expression === null || expression === void 0 ? void 0 : expression.value) && !expression.exp ? expression.value : (expression !== null && expression !== void 0 ? expression : {});
|
|
489
|
+
};
|
|
490
|
+
/** The richtext the server sends beside a rendering: each `$context:value` becomes a chip. */
|
|
491
|
+
var dpqlMockRichtext = function (text) {
|
|
492
|
+
var children = [];
|
|
493
|
+
var reference = /\$([A-Za-z_-][\w-]*):([\w.{}]+)/g;
|
|
494
|
+
var last = 0;
|
|
495
|
+
var match;
|
|
496
|
+
while ((match = reference.exec(text)) !== null) {
|
|
497
|
+
if (match.index > last)
|
|
498
|
+
children.push({ text: text.slice(last, match.index) });
|
|
499
|
+
children.push({
|
|
500
|
+
type: 'tag',
|
|
501
|
+
value: match[0],
|
|
502
|
+
label: match[2],
|
|
503
|
+
children: [{ text: '' }],
|
|
504
|
+
metadata: { displayName: "".concat(capitalise(match[1]), " Context") },
|
|
505
|
+
});
|
|
506
|
+
last = match.index + match[0].length;
|
|
507
|
+
}
|
|
508
|
+
if (last < text.length || !children.length)
|
|
509
|
+
children.push({ text: text.slice(last) });
|
|
510
|
+
return { type: 'richtext', value: [{ type: 'paragraph', children: children }] };
|
|
511
|
+
};
|
|
512
|
+
exports.dpqlMockRichtext = dpqlMockRichtext;
|
|
513
|
+
/** `dpql/serialize`: DPQL text that parses back to the same expression. */
|
|
514
|
+
var mockSerializeDpql = function (expression) {
|
|
515
|
+
var dpql = printNode(rootOf(expression), false);
|
|
516
|
+
return { dpql: dpql, richtext: (0, exports.dpqlMockRichtext)(dpql) };
|
|
517
|
+
};
|
|
518
|
+
exports.mockSerializeDpql = mockSerializeDpql;
|
|
519
|
+
/** `dpql/renderExpression`: the readable rendering shown in previews and explanations. */
|
|
520
|
+
var mockRenderDpql = function (expression) {
|
|
521
|
+
var rendered = printNode(rootOf(expression), true);
|
|
522
|
+
return { rendered: rendered, richtext: (0, exports.dpqlMockRichtext)(rendered) };
|
|
523
|
+
};
|
|
524
|
+
exports.mockRenderDpql = mockRenderDpql;
|
|
525
|
+
//# sourceMappingURL=dpqlMockLanguage.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"dpqlMockLanguage.js","sourceRoot":"","sources":["../../../../src/components/form/expressions/dpqlMockLanguage.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,3 +1,32 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
1
|
+
import { IMockLspServer, TMockLspHandler } from '../../smartEditor/__fixtures__/mockLspServer';
|
|
2
|
+
/**
|
|
3
|
+
* Every `dpql/parse` the mock answered, in order, for diagnosis.
|
|
4
|
+
*
|
|
5
|
+
* The type-analysis stories depend on the front end SENDING `target_type` —
|
|
6
|
+
* the mock returns analysis only when it is present, exactly as the server
|
|
7
|
+
* behaves. When one of those stories fails there are two very different
|
|
8
|
+
* causes, and the rendered DOM cannot tell them apart: the request never
|
|
9
|
+
* carried a target, or it did and the answer was not rendered. This records
|
|
10
|
+
* which, and the story reports it in its assertion message so the answer
|
|
11
|
+
* survives into a CI log.
|
|
12
|
+
*/
|
|
13
|
+
export interface IDpqlMockParseCall {
|
|
14
|
+
text: string;
|
|
15
|
+
target?: string;
|
|
16
|
+
analysed: boolean;
|
|
17
|
+
}
|
|
18
|
+
export declare const dpqlMockParseCalls: IDpqlMockParseCall[];
|
|
19
|
+
export interface IStartDpqlMockLspOptions {
|
|
20
|
+
/** Handlers to use instead of, or beside, the default ones. */
|
|
21
|
+
handlers?: Record<string, TMockLspHandler>;
|
|
22
|
+
/** Per-method response delays in ms. */
|
|
23
|
+
delays?: Record<string, number>;
|
|
24
|
+
}
|
|
25
|
+
/** Start the mock DPQL language server; returns the server and a teardown. */
|
|
26
|
+
export declare const startDpqlMockLspServer: (options?: IStartDpqlMockLspOptions) => {
|
|
27
|
+
lsp: IMockLspServer;
|
|
28
|
+
stop: () => void;
|
|
29
|
+
};
|
|
30
|
+
/** Start the mock DPQL language server; returns a teardown function. */
|
|
31
|
+
export declare const startDpqlMockLsp: (options?: IStartDpqlMockLspOptions) => (() => void);
|
|
3
32
|
//# sourceMappingURL=dpqlMockLsp.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"dpqlMockLsp.d.ts","sourceRoot":"","sources":["../../../../src/components/form/expressions/dpqlMockLsp.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"dpqlMockLsp.d.ts","sourceRoot":"","sources":["../../../../src/components/form/expressions/dpqlMockLsp.ts"],"names":[],"mappings":"AASA,OAAO,EAGL,cAAc,EAEd,eAAe,EAChB,MAAM,8CAA8C,CAAC;AAStD;;;;;;;;;;GAUG;AACH,MAAM,WAAW,kBAAkB;IACjC,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,QAAQ,EAAE,OAAO,CAAC;CACnB;AACD,eAAO,MAAM,kBAAkB,EAAE,kBAAkB,EAAO,CAAC;AAyD3D,MAAM,WAAW,wBAAwB;IACvC,+DAA+D;IAC/D,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,eAAe,CAAC,CAAC;IAC3C,wCAAwC;IACxC,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CACjC;AAED,8EAA8E;AAC9E,eAAO,MAAM,sBAAsB,aACxB,wBAAwB,KAChC;IAAE,GAAG,EAAE,cAAc,CAAC;IAAC,IAAI,EAAE,MAAM,IAAI,CAAA;CAczC,CAAC;AAEF,wEAAwE;AACxE,eAAO,MAAM,gBAAgB,aAAc,wBAAwB,KAAG,CAAC,MAAM,IAAI,CAC3C,CAAC"}
|