@arcgis/coding-components 4.31.0-next.4 → 4.31.0-next.41
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/README.md +22 -3
- package/dist/arcgis-coding-components/arcgis-coding-components.esm.js +2 -2
- package/dist/arcgis-coding-components/assets/arcade-language/t9n/profile.t9n.ar.json +1 -1
- package/dist/arcgis-coding-components/assets/arcade-language/t9n/profile.t9n.bg.json +1 -1
- package/dist/arcgis-coding-components/assets/arcade-language/t9n/profile.t9n.bs.json +1 -1
- package/dist/arcgis-coding-components/assets/arcade-language/t9n/profile.t9n.ca.json +6 -6
- package/dist/arcgis-coding-components/assets/arcade-language/t9n/profile.t9n.cs.json +1 -1
- package/dist/arcgis-coding-components/assets/arcade-language/t9n/profile.t9n.da.json +1 -1
- package/dist/arcgis-coding-components/assets/arcade-language/t9n/profile.t9n.de.json +1 -1
- package/dist/arcgis-coding-components/assets/arcade-language/t9n/profile.t9n.el.json +1 -1
- package/dist/arcgis-coding-components/assets/arcade-language/t9n/profile.t9n.es.json +1 -1
- package/dist/arcgis-coding-components/assets/arcade-language/t9n/profile.t9n.et.json +1 -1
- package/dist/arcgis-coding-components/assets/arcade-language/t9n/profile.t9n.fi.json +1 -1
- package/dist/arcgis-coding-components/assets/arcade-language/t9n/profile.t9n.fr.json +1 -1
- package/dist/arcgis-coding-components/assets/arcade-language/t9n/profile.t9n.he.json +1 -1
- package/dist/arcgis-coding-components/assets/arcade-language/t9n/profile.t9n.hr.json +1 -1
- package/dist/arcgis-coding-components/assets/arcade-language/t9n/profile.t9n.id.json +1 -1
- package/dist/arcgis-coding-components/assets/arcade-language/t9n/profile.t9n.it.json +1 -1
- package/dist/arcgis-coding-components/assets/arcade-language/t9n/profile.t9n.ko.json +1 -1
- package/dist/arcgis-coding-components/assets/arcade-language/t9n/profile.t9n.nb.json +1 -1
- package/dist/arcgis-coding-components/assets/arcade-language/t9n/profile.t9n.nl.json +1 -1
- package/dist/arcgis-coding-components/assets/arcade-language/t9n/profile.t9n.pl.json +1 -1
- package/dist/arcgis-coding-components/assets/arcade-language/t9n/profile.t9n.pt-BR.json +1 -1
- package/dist/arcgis-coding-components/assets/arcade-language/t9n/profile.t9n.pt-PT.json +1 -1
- package/dist/arcgis-coding-components/assets/arcade-language/t9n/profile.t9n.ru.json +1 -1
- package/dist/arcgis-coding-components/assets/arcade-language/t9n/profile.t9n.sk.json +1 -1
- package/dist/arcgis-coding-components/assets/arcade-language/t9n/profile.t9n.sl.json +1 -1
- package/dist/arcgis-coding-components/assets/arcade-language/t9n/profile.t9n.sr.json +1 -1
- package/dist/arcgis-coding-components/assets/arcade-language/t9n/profile.t9n.sv.json +1 -1
- package/dist/arcgis-coding-components/assets/arcade-language/t9n/profile.t9n.th.json +1 -1
- package/dist/arcgis-coding-components/assets/arcade-language/t9n/profile.t9n.tr.json +1 -1
- package/dist/arcgis-coding-components/assets/arcade-language/t9n/profile.t9n.uk.json +5 -5
- package/dist/arcgis-coding-components/assets/arcade-language/t9n/profile.t9n.vi.json +1 -1
- package/dist/arcgis-coding-components/assets/arcade-language/t9n/profile.t9n.zh-CN.json +1 -1
- package/dist/arcgis-coding-components/assets/arcade-language/t9n/profile.t9n.zh-HK.json +1 -1
- package/dist/arcgis-coding-components/assets/arcade-language/t9n/profile.t9n.zh-TW.json +1 -1
- package/dist/arcgis-coding-components/assets/arcade-results/t9n/arcade-results.t9n.ca.json +2 -2
- package/dist/arcgis-coding-components/assets/arcade-results/t9n/arcade-results.t9n.de.json +1 -1
- package/dist/arcgis-coding-components/assets/arcade-results/t9n/arcade-results.t9n.he.json +1 -1
- package/dist/arcgis-coding-components/assets/arcade-variables/t9n/arcade-variables.t9n.ca.json +1 -1
- package/dist/arcgis-coding-components/assets/arcade-variables/t9n/arcade-variables.t9n.it.json +1 -1
- package/dist/arcgis-coding-components/assets/code-editor/sql-expr.worker.js +446 -7
- package/dist/arcgis-coding-components/assets/language-api-panel/t9n/language-api-panel.t9n.ca.json +1 -1
- package/dist/arcgis-coding-components/index.esm.js +2 -2
- package/dist/arcgis-coding-components/{p-b23a3f4e.entry.js → p-1da63080.entry.js} +2 -2
- package/dist/arcgis-coding-components/p-1e1caadf.js +7 -0
- package/dist/arcgis-coding-components/{p-736d890c.js → p-4cc71357.js} +3 -3
- package/dist/arcgis-coding-components/p-51b2fc72.js +6 -0
- package/dist/arcgis-coding-components/{p-4e56f8ae.js → p-5c89b15d.js} +1 -1
- package/dist/arcgis-coding-components/{p-5e173b51.entry.js → p-5f567b03.entry.js} +2 -2
- package/dist/arcgis-coding-components/{p-a256ee9c.js → p-64bbd36c.js} +12 -12
- package/dist/arcgis-coding-components/{p-8d67b196.js → p-71191013.js} +3 -3
- package/dist/arcgis-coding-components/{p-86625411.js → p-83b29033.js} +2 -2
- package/dist/arcgis-coding-components/p-909bbd87.entry.js +6 -0
- package/dist/arcgis-coding-components/p-9413c464.js +6 -0
- package/dist/arcgis-coding-components/p-9bb6dd26.js +6 -0
- package/dist/arcgis-coding-components/{p-ab0f6db7.js → p-ba1ec66d.js} +3 -3
- package/dist/arcgis-coding-components/p-bb851fa6.js +6 -0
- package/dist/arcgis-coding-components/{p-b570d7af.js → p-bd267380.js} +2 -2
- package/dist/arcgis-coding-components/{p-5da03560.js → p-d597b9ea.js} +1 -1
- package/dist/arcgis-coding-components/{p-26c67f7c.js → p-e1c8570a.js} +2 -2
- package/dist/arcgis-coding-components/{p-8e93417c.js → p-f4af9e3a.js} +2 -2
- package/dist/cjs/{app-globals-209c2310.js → app-globals-5b428a6f.js} +1 -1
- package/dist/cjs/arcade-defaults-c88dcbd9.js +349 -0
- package/dist/cjs/{arcade-mode-f2c3951e.js → arcade-mode-a369164c.js} +3 -3
- package/dist/cjs/arcgis-arcade-editor_6.cjs.entry.js +20 -26
- package/dist/cjs/arcgis-coding-components.cjs.js +5 -5
- package/dist/cjs/arcgis-sql-expression-editor.cjs.entry.js +4 -4
- package/dist/cjs/arcgis-sql-expression-fields.cjs.entry.js +4 -4
- package/dist/cjs/{css-bbd000cd.js → css-db73fa85.js} +1 -1
- package/dist/cjs/{cssMode-ad163e66.js → cssMode-714f53d0.js} +2 -3
- package/dist/cjs/{html-5c67b9d0.js → html-881afd14.js} +2 -3
- package/dist/cjs/{htmlMode-e32a97bd.js → htmlMode-d513ae10.js} +2 -3
- package/dist/cjs/{index-8b891c40.js → index-fd58ccf1.js} +43 -15
- package/dist/cjs/index.cjs.js +4 -4
- package/dist/cjs/{javascript-e159fa2f.js → javascript-8ea0cace.js} +3 -4
- package/dist/cjs/{jsonMode-5c107443.js → jsonMode-345b67b0.js} +2 -3
- package/dist/cjs/{language-defaults-base-4300e691.js → language-defaults-base-cd5a367b.js} +822 -1062
- package/dist/cjs/loader.cjs.js +4 -4
- package/dist/cjs/{sql-expr-defaults-783d9c24.js → sql-expr-defaults-5ab67e9d.js} +114 -52
- package/dist/cjs/sql-expr-mode-aaf5cadf.js +467 -0
- package/dist/cjs/{tsMode-83c4587f.js → tsMode-085f051d.js} +2 -3
- package/dist/cjs/{typescript-f6ca5d84.js → typescript-3adfcc8d.js} +2 -3
- package/dist/components/arcade-defaults.js +238 -4
- package/dist/components/arcade-mode.js +2 -1
- package/dist/components/arcade-results.js +3 -3
- package/dist/components/arcade-suggestions.js +2 -2
- package/dist/components/arcade-variables.js +2 -2
- package/dist/components/arcgis-arcade-editor.js +7 -6
- package/dist/components/arcgis-arcade-results.js +1 -1
- package/dist/components/arcgis-arcade-suggestions.js +1 -1
- package/dist/components/arcgis-arcade-variables.js +1 -1
- package/dist/components/arcgis-assets.d.ts +26 -26
- package/dist/components/arcgis-assets.js +2 -2
- package/dist/components/arcgis-code-editor.js +1 -1
- package/dist/components/arcgis-language-api-panel.js +1 -1
- package/dist/components/arcgis-sql-expression-editor.js +2 -2
- package/dist/components/arcgis-sql-expression-fields.js +1 -1
- package/dist/components/{chunk-6TARY3NN.js → chunk-ZZIYM65N.js} +38 -30
- package/dist/components/code-editor.js +16 -23
- package/dist/components/fields.js +4 -4
- package/dist/components/index.js +1 -1
- package/dist/components/index2.js +2 -2
- package/dist/components/language-api-panel.js +2 -2
- package/dist/components/language-defaults-base.js +81 -323
- package/dist/components/markdown.js +1 -1
- package/dist/components/sql-expr-defaults.js +77 -24
- package/dist/components/sql-expr-mode.js +282 -24951
- package/dist/components/sql-expression-fields.js +2 -2
- package/dist/components/useT9n.js +2 -2
- package/dist/components/utilities.js +1 -1
- package/dist/esm/{app-globals-60a61d0d.js → app-globals-9b5f37f3.js} +1 -1
- package/dist/esm/arcade-defaults-23d01109.js +344 -0
- package/dist/esm/{arcade-mode-7e6764ac.js → arcade-mode-30a9597a.js} +3 -3
- package/dist/esm/arcgis-arcade-editor_6.entry.js +21 -27
- package/dist/esm/arcgis-coding-components.js +6 -6
- package/dist/esm/arcgis-sql-expression-editor.entry.js +4 -4
- package/dist/esm/arcgis-sql-expression-fields.entry.js +4 -4
- package/dist/esm/{css-7d75b7ca.js → css-442d4a5a.js} +1 -1
- package/dist/esm/{cssMode-95305ae2.js → cssMode-8833e7da.js} +2 -3
- package/dist/esm/{html-84fc596c.js → html-1adb92d5.js} +2 -3
- package/dist/esm/{htmlMode-c961f619.js → htmlMode-d45f4634.js} +2 -3
- package/dist/esm/{index-1c1754c0.js → index-d9b2b45b.js} +43 -15
- package/dist/esm/index.js +4 -4
- package/dist/esm/{javascript-0aa4505f.js → javascript-5bf60fbf.js} +3 -4
- package/dist/esm/{jsonMode-86b234eb.js → jsonMode-cba63cda.js} +2 -3
- package/dist/esm/{language-defaults-base-949fa7fb.js → language-defaults-base-49508cc9.js} +819 -1062
- package/dist/esm/loader.js +5 -5
- package/dist/esm/{sql-expr-defaults-f2f50289.js → sql-expr-defaults-ba682a85.js} +114 -53
- package/dist/esm/sql-expr-mode-5da1d4c8.js +463 -0
- package/dist/esm/{tsMode-ee945c40.js → tsMode-23360d7b.js} +2 -3
- package/dist/esm/{typescript-8bd2bb48.js → typescript-d1e4a590.js} +2 -3
- package/dist/loader/cdn.js +2 -3
- package/dist/loader/index.cjs.js +2 -3
- package/dist/loader/index.es2017.js +2 -3
- package/dist/loader/index.js +2 -3
- package/dist/types/components/arcade-editor/arcade-editor.d.ts +13 -3
- package/dist/types/components/arcade-results/arcade-results.d.ts +1 -1
- package/dist/types/components/arcade-suggestions/arcade-suggestions.d.ts +1 -1
- package/dist/types/components/arcade-variables/arcade-variables.d.ts +1 -1
- package/dist/types/components/code-editor/code-editor.d.ts +14 -4
- package/dist/types/components/language-api-panel/language-api-panel.d.ts +1 -1
- package/dist/types/components.d.ts +13 -13
- package/dist/types/data/actions-runner-1/_work/arcgis-web-components/arcgis-web-components/packages/coding-packages/coding-components/.stencil/stories/internal/arcade-editor/arcade-editor.stories.d.ts +8 -1
- package/dist/types/data/actions-runner-1/_work/arcgis-web-components/arcgis-web-components/packages/coding-packages/coding-components/.stencil/stories/internal/arcade-editor/editorContext.d.ts +5 -1
- package/dist/types/stencil-public-runtime.d.ts +3 -8
- package/dist/types/utils/arcade-monaco/arcade-language-features.d.ts +1 -0
- package/dist/types/utils/arcade-monaco/arcade-profile-strategy.d.ts +9 -0
- package/dist/types/utils/fields.d.ts +2 -2
- package/dist/types/utils/profile/editor-profile.d.ts +7 -6
- package/dist/types/utils/profile/types.d.ts +53 -65
- package/dist/types/utils/profile/utils.d.ts +9 -8
- package/dist/types/utils/sql-expr-monaco/sql-expr-completion.d.ts +56 -5
- package/dist/types/utils/sql-expr-monaco/sql-expr-constants.d.ts +61 -0
- package/dist/types/utils/sql-expr-monaco/sql-expr-contribution.d.ts +1 -11
- package/dist/types/utils/sql-expr-monaco/sql-expr-defaults.d.ts +0 -1
- package/dist/types/utils/sql-expr-monaco/sql-expr-language-features.d.ts +18 -534
- package/dist/types/utils/sql-expr-monaco/sql-expr-mode.d.ts +34 -1
- package/dist/types/utils/sql-expr-monaco/sql-expr-parser-utils.d.ts +30 -0
- package/dist/types/utils/sql-expr-monaco/sql-expr-service-accessors.d.ts +19 -0
- package/dist/types/utils/sql-expr-monaco/sql-expr-validation-diagnostic-adapter.d.ts +0 -7
- package/dist/types/utils/sql-expr-monaco/sql-expr-validation-utils.d.ts +73 -77
- package/dist/types/utils/sql-expr-monaco/sql-expr-validation.d.ts +5 -6
- package/dist/types/utils/sql-expr-monaco/sql-expr-worker-manager.d.ts +2 -0
- package/dist/types/utils/sql-expr-monaco/sql-expr.worker.d.ts +11 -8
- package/dist/types/utils/sql-expr-monaco/sql-expression-profile-strategy.d.ts +13 -0
- package/dist/types/utils/sql-expr-monaco/types.d.ts +30 -28
- package/package.json +19 -19
- package/dist/arcgis-coding-components/p-103bdac3.js +0 -6
- package/dist/arcgis-coding-components/p-2d14950e.js +0 -7
- package/dist/arcgis-coding-components/p-374b59c1.js +0 -6
- package/dist/arcgis-coding-components/p-a36c357f.js +0 -6
- package/dist/arcgis-coding-components/p-de5cabbb.js +0 -6
- package/dist/arcgis-coding-components/p-e6cac921.entry.js +0 -6
- package/dist/cjs/arcade-defaults-ee308e3a.js +0 -116
- package/dist/cjs/sql-expr-mode-6cac37ed.js +0 -25135
- package/dist/esm/arcade-defaults-b1a5f013.js +0 -111
- package/dist/esm/polyfills/core-js.js +0 -11
- package/dist/esm/polyfills/dom.js +0 -79
- package/dist/esm/polyfills/es5-html-element.js +0 -1
- package/dist/esm/polyfills/index.js +0 -34
- package/dist/esm/polyfills/system.js +0 -6
- package/dist/esm/sql-expr-mode-14c94be3.js +0 -25132
- package/dist/types/utils/profile/predefined-profile.d.ts +0 -4
- package/dist/types/utils/sql-expr-monaco/DependentFiles/DateOnly.d.ts +0 -41
- package/dist/types/utils/sql-expr-monaco/DependentFiles/SqlInterval.d.ts +0 -16
- package/dist/types/utils/sql-expr-monaco/DependentFiles/SqlTimestampOffset.d.ts +0 -26
- package/dist/types/utils/sql-expr-monaco/DependentFiles/TimeOnly.d.ts +0 -37
- package/dist/types/utils/sql-expr-monaco/DependentFiles/UnknownTimeZone.d.ts +0 -11
- package/dist/types/utils/sql-expr-monaco/DependentFiles/WhereGrammar.d.ts +0 -122
- package/dist/types/utils/sql-expr-monaco/DependentFiles/sqlCompareUtils.d.ts +0 -5
- package/dist/types/utils/sql-expr-monaco/DependentFiles/sqlDateParsingUtils.d.ts +0 -18
- package/dist/types/utils/sql-expr-monaco/DependentFiles/sqlUtils.d.ts +0 -6
- package/dist/types/utils/sql-expr-monaco/DependentFiles/standardizedFunctions.d.ts +0 -156
- package/dist/types/utils/sql-expr-monaco/DependentFiles/support.d.ts +0 -150
- package/dist/types/utils/sql-expr-monaco/PeggyGrammar/sql92grammar.d.ts +0 -1397
- package/dist/types/utils/sql-expr-monaco/libraries/date/properties/index.d.ts +0 -59
- package/dist/types/utils/sql-expr-monaco/libraries/numeric/properties/index.d.ts +0 -295
- package/dist/types/utils/sql-expr-monaco/libraries/string/properties/index.d.ts +0 -135
- package/dist/types/utils/sql-expr-monaco/sql-expr-validation-adapter.d.ts +0 -3
- package/dist/types/utils/sql-expr-profile/predefined-profile.d.ts +0 -2
|
@@ -0,0 +1,467 @@
|
|
|
1
|
+
/*!
|
|
2
|
+
* All material copyright Esri, All Rights Reserved, unless otherwise specified.
|
|
3
|
+
* See https://js.arcgis.com/4.31/esri/copyright.txt for details.
|
|
4
|
+
* v4.31.0-next.41
|
|
5
|
+
*/
|
|
6
|
+
'use strict';
|
|
7
|
+
|
|
8
|
+
const languageDefaultsBase = require('./language-defaults-base-cd5a367b.js');
|
|
9
|
+
const sqlExprDefaults = require('./sql-expr-defaults-5ab67e9d.js');
|
|
10
|
+
require('./index-fd58ccf1.js');
|
|
11
|
+
|
|
12
|
+
/**
|
|
13
|
+
* Manager to create our sql-expression worker and client proxy
|
|
14
|
+
*/
|
|
15
|
+
class SqlExprWorkerManager {
|
|
16
|
+
constructor(_defaults) {
|
|
17
|
+
this._defaults = _defaults;
|
|
18
|
+
this._worker = null;
|
|
19
|
+
this._client = null;
|
|
20
|
+
// Observes the sql-expression defaults. If modified then stop the worker.
|
|
21
|
+
this._configChangeListener = this._defaults.onDidChange(() => this.stopWorker());
|
|
22
|
+
}
|
|
23
|
+
dispose() {
|
|
24
|
+
this._configChangeListener.dispose();
|
|
25
|
+
this.stopWorker();
|
|
26
|
+
}
|
|
27
|
+
stopWorker() {
|
|
28
|
+
if (this._worker) {
|
|
29
|
+
this._worker.dispose();
|
|
30
|
+
this._worker = null;
|
|
31
|
+
}
|
|
32
|
+
this._client = null;
|
|
33
|
+
}
|
|
34
|
+
async _getClientProxy() {
|
|
35
|
+
// We used createWebWorker to create or run the web worker if it isn’t already created.
|
|
36
|
+
// Otherwise, we get and return the proxy client.
|
|
37
|
+
if (!this._client) {
|
|
38
|
+
const { languageId, languageOptions } = this._defaults;
|
|
39
|
+
this._worker = languageDefaultsBase.editor.createWebWorker({
|
|
40
|
+
moduleId: "SqlExprWorker",
|
|
41
|
+
label: languageId,
|
|
42
|
+
createData: {
|
|
43
|
+
languageId,
|
|
44
|
+
languageOptions,
|
|
45
|
+
},
|
|
46
|
+
});
|
|
47
|
+
this._client = this._worker.getProxy();
|
|
48
|
+
}
|
|
49
|
+
return await this._client;
|
|
50
|
+
}
|
|
51
|
+
async getLanguageServiceWorker(...resources) {
|
|
52
|
+
const _client = await this._getClientProxy();
|
|
53
|
+
await this._worker?.withSyncedResources(resources);
|
|
54
|
+
return _client;
|
|
55
|
+
}
|
|
56
|
+
}
|
|
57
|
+
|
|
58
|
+
// list of properties that sit on a SQLNode and can have children
|
|
59
|
+
var ChildBearingProperties;
|
|
60
|
+
(function (ChildBearingProperties) {
|
|
61
|
+
ChildBearingProperties["ARGS"] = "args";
|
|
62
|
+
ChildBearingProperties["CLAUSES"] = "clauses";
|
|
63
|
+
ChildBearingProperties["ELSE"] = "else";
|
|
64
|
+
ChildBearingProperties["END"] = "end";
|
|
65
|
+
ChildBearingProperties["EXPR"] = "expr";
|
|
66
|
+
ChildBearingProperties["LEFT"] = "left";
|
|
67
|
+
ChildBearingProperties["OPERAND"] = "operand";
|
|
68
|
+
ChildBearingProperties["QUALIFIER"] = "qualifier";
|
|
69
|
+
ChildBearingProperties["RIGHT"] = "right";
|
|
70
|
+
ChildBearingProperties["START"] = "start";
|
|
71
|
+
ChildBearingProperties["VALUE"] = "value";
|
|
72
|
+
})(ChildBearingProperties || (ChildBearingProperties = {}));
|
|
73
|
+
// list of node types that can have children
|
|
74
|
+
var ChildBearingNodeTypes;
|
|
75
|
+
(function (ChildBearingNodeTypes) {
|
|
76
|
+
ChildBearingNodeTypes["CASE_EXPRESSION"] = "case-expression";
|
|
77
|
+
ChildBearingNodeTypes["EXPRESSION_LIST"] = "expression-list";
|
|
78
|
+
ChildBearingNodeTypes["FUNCTION"] = "function";
|
|
79
|
+
ChildBearingNodeTypes["INTERVAL"] = "interval";
|
|
80
|
+
ChildBearingNodeTypes["INTERVAL_QUALIFIER"] = "interval-qualifier";
|
|
81
|
+
ChildBearingNodeTypes["WHEN_CLAUSE"] = "when-clause";
|
|
82
|
+
ChildBearingNodeTypes["UNARY_EXPRESSION"] = "unary-expression";
|
|
83
|
+
ChildBearingNodeTypes["BINARY_EXPRESSION"] = "binary-expression";
|
|
84
|
+
})(ChildBearingNodeTypes || (ChildBearingNodeTypes = {}));
|
|
85
|
+
// use object to ensure the list matches the types from the JS api
|
|
86
|
+
const castDataTypesDict = {
|
|
87
|
+
date: "DATE",
|
|
88
|
+
float: "FLOAT",
|
|
89
|
+
integer: "INTEGER",
|
|
90
|
+
real: "REAL",
|
|
91
|
+
smallint: "SMALLINT",
|
|
92
|
+
time: "TIME",
|
|
93
|
+
timestamp: "TIMESTAMP",
|
|
94
|
+
varchar: "VARCHAR",
|
|
95
|
+
};
|
|
96
|
+
// convert the object to a list of strings for easier use, but keep type information
|
|
97
|
+
Object.values(castDataTypesDict);
|
|
98
|
+
const sqlExprKeywords = [
|
|
99
|
+
"AND",
|
|
100
|
+
"AS",
|
|
101
|
+
"BETWEEN",
|
|
102
|
+
"BOTH",
|
|
103
|
+
"CASE",
|
|
104
|
+
"CAST",
|
|
105
|
+
"CURRENT_DATE",
|
|
106
|
+
"CURRENT_TIME",
|
|
107
|
+
"CURRENT_TIMESTAMP",
|
|
108
|
+
"DATE",
|
|
109
|
+
"DAY",
|
|
110
|
+
"ELSE",
|
|
111
|
+
"END",
|
|
112
|
+
"ESCAPE",
|
|
113
|
+
"FALSE",
|
|
114
|
+
"FLOAT",
|
|
115
|
+
"FOR",
|
|
116
|
+
"FROM",
|
|
117
|
+
"HOUR",
|
|
118
|
+
"IN",
|
|
119
|
+
"INTEGER",
|
|
120
|
+
"INTERVAL",
|
|
121
|
+
"IS",
|
|
122
|
+
"LEADING",
|
|
123
|
+
"LIKE",
|
|
124
|
+
"MINUTE",
|
|
125
|
+
"MONTH",
|
|
126
|
+
"NOT",
|
|
127
|
+
"NULL",
|
|
128
|
+
"OR",
|
|
129
|
+
"POSITION",
|
|
130
|
+
"REAL",
|
|
131
|
+
"SECOND",
|
|
132
|
+
"SMALLINT",
|
|
133
|
+
"SUBSTRING",
|
|
134
|
+
"THEN",
|
|
135
|
+
"TIME",
|
|
136
|
+
"TIMESTAMP",
|
|
137
|
+
"TIMEZONE_HOUR",
|
|
138
|
+
"TIMEZONE_MINUTE",
|
|
139
|
+
"TO",
|
|
140
|
+
"TRAILING",
|
|
141
|
+
"TRIM",
|
|
142
|
+
"TRUE",
|
|
143
|
+
"VARCHAR",
|
|
144
|
+
"WHEN",
|
|
145
|
+
"WITH",
|
|
146
|
+
"YEAR",
|
|
147
|
+
"ZONE",
|
|
148
|
+
];
|
|
149
|
+
const sqlExprOperators = [
|
|
150
|
+
// Logical
|
|
151
|
+
"AND",
|
|
152
|
+
"BETWEEN",
|
|
153
|
+
"IN",
|
|
154
|
+
"LIKE",
|
|
155
|
+
"NOT",
|
|
156
|
+
"OR",
|
|
157
|
+
// Predicates
|
|
158
|
+
"IS",
|
|
159
|
+
"NULL",
|
|
160
|
+
];
|
|
161
|
+
const sqlExprFunctions = [
|
|
162
|
+
// Conversion
|
|
163
|
+
"CAST",
|
|
164
|
+
// Datetime
|
|
165
|
+
"EXTRACT",
|
|
166
|
+
"CURRENT_DATE",
|
|
167
|
+
"CURRENT_TIME",
|
|
168
|
+
"CURRENT_TIMESTAMP",
|
|
169
|
+
// Mathematical
|
|
170
|
+
"ABS",
|
|
171
|
+
"ACOS",
|
|
172
|
+
"ASIN",
|
|
173
|
+
"ATAN",
|
|
174
|
+
"CEILING",
|
|
175
|
+
"COS",
|
|
176
|
+
"FLOOR",
|
|
177
|
+
"LOG",
|
|
178
|
+
"LOG10",
|
|
179
|
+
"POWER",
|
|
180
|
+
"ROUND",
|
|
181
|
+
"SIGN",
|
|
182
|
+
"SIN",
|
|
183
|
+
"TAN",
|
|
184
|
+
// String
|
|
185
|
+
"CHAR_LENGTH",
|
|
186
|
+
"COALESCE",
|
|
187
|
+
"CONCAT",
|
|
188
|
+
"LOWER",
|
|
189
|
+
"POSITION",
|
|
190
|
+
"TRIM",
|
|
191
|
+
"UPPER",
|
|
192
|
+
];
|
|
193
|
+
|
|
194
|
+
const sqlExprLanguageConfig = {
|
|
195
|
+
comments: {
|
|
196
|
+
lineComment: "--",
|
|
197
|
+
blockComment: ["/*", "*/"],
|
|
198
|
+
},
|
|
199
|
+
brackets: [
|
|
200
|
+
["{", "}"],
|
|
201
|
+
["[", "]"],
|
|
202
|
+
["(", ")"],
|
|
203
|
+
],
|
|
204
|
+
autoClosingPairs: [
|
|
205
|
+
{ open: "{", close: "}" },
|
|
206
|
+
{ open: "[", close: "]" },
|
|
207
|
+
{ open: "(", close: ")" },
|
|
208
|
+
{ open: '"', close: '"' },
|
|
209
|
+
{ open: "'", close: "'" },
|
|
210
|
+
],
|
|
211
|
+
surroundingPairs: [
|
|
212
|
+
{ open: "{", close: "}" },
|
|
213
|
+
{ open: "[", close: "]" },
|
|
214
|
+
{ open: "(", close: ")" },
|
|
215
|
+
{ open: '"', close: '"' },
|
|
216
|
+
{ open: "'", close: "'" },
|
|
217
|
+
],
|
|
218
|
+
};
|
|
219
|
+
// TODO: trim down
|
|
220
|
+
const sqlExprLanguageSyntax = {
|
|
221
|
+
defaultToken: "",
|
|
222
|
+
tokenPostfix: ".sql",
|
|
223
|
+
ignoreCase: true,
|
|
224
|
+
brackets: [
|
|
225
|
+
{ open: "[", close: "]", token: "delimiter.square" },
|
|
226
|
+
{ open: "(", close: ")", token: "delimiter.parenthesis" },
|
|
227
|
+
],
|
|
228
|
+
keywords: sqlExprKeywords,
|
|
229
|
+
operators: sqlExprOperators,
|
|
230
|
+
builtinFunctions: sqlExprFunctions,
|
|
231
|
+
builtinVariables: [],
|
|
232
|
+
tokenizer: {
|
|
233
|
+
root: [
|
|
234
|
+
{ include: "@comments" },
|
|
235
|
+
{ include: "@whitespace" },
|
|
236
|
+
{ include: "@numbers" },
|
|
237
|
+
{ include: "@strings" },
|
|
238
|
+
{ include: "@complexIdentifiers" },
|
|
239
|
+
{ include: "@scopes" },
|
|
240
|
+
[/[;,.]/, "delimiter"],
|
|
241
|
+
[/[()]/, "@brackets"],
|
|
242
|
+
[
|
|
243
|
+
/[\w@#$]+/,
|
|
244
|
+
{
|
|
245
|
+
cases: {
|
|
246
|
+
"@operators": "operator",
|
|
247
|
+
"@builtinVariables": "predefined",
|
|
248
|
+
"@builtinFunctions": "predefined",
|
|
249
|
+
"@keywords": "keyword",
|
|
250
|
+
"@default": "identifier",
|
|
251
|
+
},
|
|
252
|
+
},
|
|
253
|
+
],
|
|
254
|
+
[/[<>=!%&+\-*/|~^]/, "operator"],
|
|
255
|
+
],
|
|
256
|
+
whitespace: [[/\s+/, "white"]],
|
|
257
|
+
comments: [
|
|
258
|
+
[/--+.*/, "comment"],
|
|
259
|
+
[/\/\*/, { token: "comment.quote", next: "@comment" }],
|
|
260
|
+
],
|
|
261
|
+
comment: [
|
|
262
|
+
[/[^*/]+/, "comment"],
|
|
263
|
+
// Not supporting nested comments, as nested comments seem to not be standard?
|
|
264
|
+
// i.e. http://stackoverflow.com/questions/728172/are-there-multiline-comment-delimiters-in-sql-that-are-vendor-agnostic
|
|
265
|
+
// [/\/\*/, { token: 'comment.quote', next: '@push' }], // nested comment not allowed :-(
|
|
266
|
+
[/\*\//, { token: "comment.quote", next: "@pop" }],
|
|
267
|
+
[/./, "comment"],
|
|
268
|
+
],
|
|
269
|
+
numbers: [
|
|
270
|
+
[/0[xX][0-9a-fA-F]*/, "number"],
|
|
271
|
+
[/[$][+-]*\d*(\.\d*)?/, "number"],
|
|
272
|
+
[/((\d+(\.\d*)?)|(\.\d+))([eE][\-+]?\d+)?/, "number"],
|
|
273
|
+
],
|
|
274
|
+
strings: [
|
|
275
|
+
[/N'/, { token: "string", next: "@string" }],
|
|
276
|
+
[/'/, { token: "string", next: "@string" }],
|
|
277
|
+
],
|
|
278
|
+
string: [
|
|
279
|
+
[/[^']+/, "string"],
|
|
280
|
+
[/''/, "string"],
|
|
281
|
+
[/'/, { token: "string", next: "@pop" }],
|
|
282
|
+
],
|
|
283
|
+
complexIdentifiers: [[/"/, { token: "identifier.quote", next: "@quotedIdentifier" }]],
|
|
284
|
+
quotedIdentifier: [
|
|
285
|
+
[/[^"]+/, "identifier"],
|
|
286
|
+
[/""/, "identifier"],
|
|
287
|
+
[/"/, { token: "identifier.quote", next: "@pop" }],
|
|
288
|
+
],
|
|
289
|
+
scopes: [
|
|
290
|
+
[/(BEGIN|CASE)\b/i, { token: "keyword.block" }],
|
|
291
|
+
[/END\b/i, { token: "keyword.block" }],
|
|
292
|
+
[/WHEN\b/i, { token: "keyword.choice" }],
|
|
293
|
+
[/THEN\b/i, { token: "keyword.choice" }],
|
|
294
|
+
],
|
|
295
|
+
},
|
|
296
|
+
};
|
|
297
|
+
|
|
298
|
+
class SqlExprCompletionProvider {
|
|
299
|
+
constructor(_worker, _defaults) {
|
|
300
|
+
this._worker = _worker;
|
|
301
|
+
this._defaults = _defaults;
|
|
302
|
+
}
|
|
303
|
+
async provideCompletionItems(model, position) {
|
|
304
|
+
try {
|
|
305
|
+
const worker = await this._worker(model.uri);
|
|
306
|
+
const word = model.getWordUntilPosition(position);
|
|
307
|
+
const range = {
|
|
308
|
+
startLineNumber: position.lineNumber,
|
|
309
|
+
endLineNumber: position.lineNumber,
|
|
310
|
+
startColumn: word.startColumn,
|
|
311
|
+
endColumn: word.endColumn,
|
|
312
|
+
};
|
|
313
|
+
const apiContext = this._defaults.getApiContextForModel(model.uri);
|
|
314
|
+
return await worker.doComplete(model.uri.toString(), range, position, apiContext);
|
|
315
|
+
}
|
|
316
|
+
catch (err) {
|
|
317
|
+
console.error(err);
|
|
318
|
+
return { suggestions: [] };
|
|
319
|
+
}
|
|
320
|
+
}
|
|
321
|
+
}
|
|
322
|
+
// TODO: create DiagnosticsAdapter common class
|
|
323
|
+
class SqlExprDiagnosticsAdapter {
|
|
324
|
+
constructor(_languageId, _worker, { defaults, diagnosticService, }) {
|
|
325
|
+
this._languageId = _languageId;
|
|
326
|
+
this._worker = _worker;
|
|
327
|
+
this._disposables = [];
|
|
328
|
+
this._listener = new Map();
|
|
329
|
+
this._diagnosticsService = diagnosticService;
|
|
330
|
+
this._defaults = defaults;
|
|
331
|
+
const onModelAdd = (model) => {
|
|
332
|
+
const languageId = model.getLanguageId();
|
|
333
|
+
if (languageId !== this._languageId) {
|
|
334
|
+
return;
|
|
335
|
+
}
|
|
336
|
+
const debouncedValidate = languageDefaultsBase.debounce(() => {
|
|
337
|
+
this._doValidate(model, languageId).catch((err) => {
|
|
338
|
+
throw err;
|
|
339
|
+
});
|
|
340
|
+
});
|
|
341
|
+
this._listener.set(model.uri.toString(), model.onDidChangeContent(debouncedValidate));
|
|
342
|
+
this._doValidate(model, languageId).catch(console.error);
|
|
343
|
+
};
|
|
344
|
+
const onModelRemoved = (model) => {
|
|
345
|
+
const uri = model.uri.toString();
|
|
346
|
+
languageDefaultsBase.editor.setModelMarkers(model, this._languageId, []);
|
|
347
|
+
const listener = this._listener.get(uri);
|
|
348
|
+
if (listener) {
|
|
349
|
+
listener.dispose();
|
|
350
|
+
this._listener.delete(uri);
|
|
351
|
+
}
|
|
352
|
+
};
|
|
353
|
+
this._disposables.push(languageDefaultsBase.editor.onDidCreateModel(onModelAdd));
|
|
354
|
+
this._disposables.push(languageDefaultsBase.editor.onWillDisposeModel((model) => onModelRemoved(model)));
|
|
355
|
+
this._disposables.push(languageDefaultsBase.editor.onDidChangeModelLanguage((event) => {
|
|
356
|
+
onModelRemoved(event.model);
|
|
357
|
+
onModelAdd(event.model);
|
|
358
|
+
}));
|
|
359
|
+
this._disposables.push(defaults.onDidChange(() => {
|
|
360
|
+
languageDefaultsBase.editor.getModels().forEach((model) => {
|
|
361
|
+
if (model.getLanguageId() === this._languageId) {
|
|
362
|
+
onModelRemoved(model);
|
|
363
|
+
onModelAdd(model);
|
|
364
|
+
}
|
|
365
|
+
});
|
|
366
|
+
}));
|
|
367
|
+
this._disposables.push(defaults.onModelContextDidChange((key) => {
|
|
368
|
+
languageDefaultsBase.editor.getModels().forEach((model) => {
|
|
369
|
+
if (model.getLanguageId() === this._languageId && model.uri.toString() === key) {
|
|
370
|
+
this._doValidate(model, this._languageId).catch(console.error);
|
|
371
|
+
}
|
|
372
|
+
});
|
|
373
|
+
}));
|
|
374
|
+
this._disposables.push({
|
|
375
|
+
dispose: () => {
|
|
376
|
+
this._listener.forEach((value) => value.dispose());
|
|
377
|
+
this._listener.clear();
|
|
378
|
+
},
|
|
379
|
+
});
|
|
380
|
+
languageDefaultsBase.editor.getModels().forEach(onModelAdd);
|
|
381
|
+
}
|
|
382
|
+
async _doValidate(model, languageId) {
|
|
383
|
+
if (!model.isAttachedToEditor()) {
|
|
384
|
+
return;
|
|
385
|
+
}
|
|
386
|
+
try {
|
|
387
|
+
const workerProxy = await this._worker(model.uri);
|
|
388
|
+
const context = this._defaults.getApiContextForModel(model.uri);
|
|
389
|
+
const diagnostics = await workerProxy.doValidation(model.uri.toString(), context);
|
|
390
|
+
this._diagnosticsService.fireDiagnosticsChange(model.uri, diagnostics);
|
|
391
|
+
languageDefaultsBase.editor.setModelMarkers(model, languageId, diagnostics);
|
|
392
|
+
}
|
|
393
|
+
catch (err) {
|
|
394
|
+
console.error(err);
|
|
395
|
+
}
|
|
396
|
+
}
|
|
397
|
+
}
|
|
398
|
+
|
|
399
|
+
let sqlExprWorker;
|
|
400
|
+
/**
|
|
401
|
+
* Returns the sql-expression worker for the model uris.
|
|
402
|
+
* @param uris The model uris for which to get the worker.
|
|
403
|
+
* @returns The sql-expression worker.
|
|
404
|
+
*/
|
|
405
|
+
async function getSqlExprWorker(...uris) {
|
|
406
|
+
return await new Promise((resolve, reject) => {
|
|
407
|
+
if (!sqlExprWorker) {
|
|
408
|
+
reject(new Error("sql expression worker not registered!"));
|
|
409
|
+
return;
|
|
410
|
+
}
|
|
411
|
+
resolve(sqlExprWorker(...uris));
|
|
412
|
+
});
|
|
413
|
+
}
|
|
414
|
+
class SqlExprDiagnosticService {
|
|
415
|
+
constructor() {
|
|
416
|
+
this._onDiagnosticsChange = new languageDefaultsBase.Emitter();
|
|
417
|
+
}
|
|
418
|
+
/**
|
|
419
|
+
* An event to signal changes to the diagnostics.
|
|
420
|
+
* The event value is the uri string and the diagnostics.
|
|
421
|
+
*/
|
|
422
|
+
get onDiagnosticsChange() {
|
|
423
|
+
return this._onDiagnosticsChange.event;
|
|
424
|
+
}
|
|
425
|
+
/**
|
|
426
|
+
* Fires the diagnostics change event.
|
|
427
|
+
* @param uri The uri of the model for which the diagnostics changed.
|
|
428
|
+
* @param diagnostics The diagnostics for the model.
|
|
429
|
+
*/
|
|
430
|
+
fireDiagnosticsChange(uri, diagnostics) {
|
|
431
|
+
this._onDiagnosticsChange.fire({ uri, diagnostics });
|
|
432
|
+
}
|
|
433
|
+
}
|
|
434
|
+
const sqlExprDiagnosticService = new SqlExprDiagnosticService();
|
|
435
|
+
/**
|
|
436
|
+
*
|
|
437
|
+
* @returns The Sql Expression Diagnostic Service.
|
|
438
|
+
*/
|
|
439
|
+
function getSqlExprDiagnosticService() {
|
|
440
|
+
return sqlExprDiagnosticService;
|
|
441
|
+
}
|
|
442
|
+
function setupMode(defaults) {
|
|
443
|
+
const client = new SqlExprWorkerManager(defaults);
|
|
444
|
+
const workerAccessor = async (...uris) => await client.getLanguageServiceWorker(...uris);
|
|
445
|
+
sqlExprWorker = workerAccessor;
|
|
446
|
+
// Use the sql-expression Monarch Json to define the highlighting
|
|
447
|
+
languageDefaultsBase.languages.setMonarchTokensProvider(sqlExprDefaults.sqlExprDefaults.languageId, sqlExprLanguageSyntax);
|
|
448
|
+
languageDefaultsBase.languages.setLanguageConfiguration(sqlExprDefaults.sqlExprDefaults.languageId, sqlExprLanguageConfig);
|
|
449
|
+
const completionProvider = new SqlExprCompletionProvider(workerAccessor, sqlExprDefaults.sqlExprDefaults);
|
|
450
|
+
languageDefaultsBase.languages.registerCompletionItemProvider(sqlExprDefaults.sqlExprDefaults.languageId, completionProvider);
|
|
451
|
+
// Creates and registers a Completion Adapter
|
|
452
|
+
// Registers a completion item provider for our custom language
|
|
453
|
+
// TODO: Creates and registers a Formatter
|
|
454
|
+
// languages.registerDocumentFormattingEditProvider(
|
|
455
|
+
// SqlExprDefaults.languageId,
|
|
456
|
+
// new FormattingProvider(workerAccessor, SqlExprDefaults),
|
|
457
|
+
// );
|
|
458
|
+
// eslint-disable-next-line no-new
|
|
459
|
+
new SqlExprDiagnosticsAdapter(defaults.languageId, workerAccessor, {
|
|
460
|
+
defaults,
|
|
461
|
+
diagnosticService: sqlExprDiagnosticService,
|
|
462
|
+
});
|
|
463
|
+
}
|
|
464
|
+
|
|
465
|
+
exports.getSqlExprDiagnosticService = getSqlExprDiagnosticService;
|
|
466
|
+
exports.getSqlExprWorker = getSqlExprWorker;
|
|
467
|
+
exports.setupMode = setupMode;
|
|
@@ -1,12 +1,11 @@
|
|
|
1
1
|
/*!
|
|
2
2
|
* All material copyright Esri, All Rights Reserved, unless otherwise specified.
|
|
3
3
|
* See https://js.arcgis.com/4.31/esri/copyright.txt for details.
|
|
4
|
-
* v4.31.0-next.
|
|
4
|
+
* v4.31.0-next.41
|
|
5
5
|
*/
|
|
6
6
|
'use strict';
|
|
7
7
|
|
|
8
|
-
const languageDefaultsBase = require('./language-defaults-base-
|
|
9
|
-
require('./index-8b891c40.js');
|
|
8
|
+
const languageDefaultsBase = require('./language-defaults-base-cd5a367b.js');
|
|
10
9
|
|
|
11
10
|
/*!-----------------------------------------------------------------------------
|
|
12
11
|
* Copyright (c) Microsoft Corporation. All rights reserved.
|
|
@@ -1,12 +1,11 @@
|
|
|
1
1
|
/*!
|
|
2
2
|
* All material copyright Esri, All Rights Reserved, unless otherwise specified.
|
|
3
3
|
* See https://js.arcgis.com/4.31/esri/copyright.txt for details.
|
|
4
|
-
* v4.31.0-next.
|
|
4
|
+
* v4.31.0-next.41
|
|
5
5
|
*/
|
|
6
6
|
'use strict';
|
|
7
7
|
|
|
8
|
-
const languageDefaultsBase = require('./language-defaults-base-
|
|
9
|
-
require('./index-8b891c40.js');
|
|
8
|
+
const languageDefaultsBase = require('./language-defaults-base-cd5a367b.js');
|
|
10
9
|
|
|
11
10
|
/*!-----------------------------------------------------------------------------
|
|
12
11
|
* Copyright (c) Microsoft Corporation. All rights reserved.
|