@arcgis/coding-components 4.31.0-next.2 → 4.31.0-next.21
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/css.worker.js +1 -1
- package/dist/arcgis-coding-components/assets/code-editor/html.worker.js +1 -1
- package/dist/arcgis-coding-components/assets/code-editor/json.worker.js +1 -1
- package/dist/arcgis-coding-components/assets/code-editor/sql-expr.worker.js +33 -0
- package/dist/arcgis-coding-components/assets/code-editor/ts.worker.js +1 -1
- package/dist/arcgis-coding-components/assets/language-api-panel/t9n/language-api-panel.t9n.ca.json +1 -1
- package/dist/arcgis-coding-components/assets/sql-expression-editor/api/sql-expression-api.t9n.en.json +735 -0
- package/dist/arcgis-coding-components/index.esm.js +2 -2
- package/dist/arcgis-coding-components/{p-7984ea8e.js → p-1b799777.js} +2 -2
- package/dist/arcgis-coding-components/p-4d5cf512.entry.js +6 -0
- package/dist/arcgis-coding-components/{p-60c2a820.js → p-56266a64.js} +2 -2
- package/dist/arcgis-coding-components/{p-e8211ffe.js → p-57b8bcd7.js} +1 -1
- package/dist/arcgis-coding-components/{p-9eced6fc.js → p-5b67b62b.js} +2 -2
- package/dist/arcgis-coding-components/{p-93a97573.js → p-64137fec.js} +3 -3
- package/dist/arcgis-coding-components/{p-e7ee4d64.js → p-6621a80f.js} +3 -3
- package/dist/arcgis-coding-components/p-77dd5521.js +6 -0
- package/dist/arcgis-coding-components/p-8eb7e694.js +6 -0
- package/dist/arcgis-coding-components/p-a2341e0c.js +6 -0
- package/dist/arcgis-coding-components/{p-bb7e832e.js → p-b715834b.js} +3 -3
- package/dist/arcgis-coding-components/p-cbee273f.js +6 -0
- package/dist/arcgis-coding-components/{p-5ef7cce5.js → p-cdc52d2f.js} +1 -1
- package/dist/arcgis-coding-components/{p-36fedc23.js → p-d7d1f130.js} +12 -12
- package/dist/arcgis-coding-components/p-e1f9b463.entry.js +6 -0
- package/dist/arcgis-coding-components/{p-62ee6251.js → p-e5a924a1.js} +1 -1
- package/dist/arcgis-coding-components/p-f2d64a9d.js +6 -0
- package/dist/arcgis-coding-components/{p-03ea6cd7.js → p-ff62d134.js} +3 -3
- package/dist/arcgis-coding-components/p-ffce0588.entry.js +6 -0
- package/dist/cjs/{app-globals-aee5f4b5.js → app-globals-a9ef3ca8.js} +1 -1
- package/dist/cjs/arcade-defaults-f5241680.js +349 -0
- package/dist/cjs/arcade-language-features-0b9f3947.js +274 -0
- package/dist/cjs/arcade-mode-cc08d9cd.js +335 -0
- package/dist/cjs/arcgis-arcade-editor_6.cjs.entry.js +181 -1501
- package/dist/cjs/arcgis-coding-components.cjs.js +4 -4
- package/dist/cjs/arcgis-sql-expression-editor.cjs.entry.js +81 -0
- package/dist/cjs/arcgis-sql-expression-fields.cjs.entry.js +80 -0
- package/dist/cjs/{css-7cc05f76.js → css-bb6a49ec.js} +1 -1
- package/dist/cjs/{cssMode-2b0daeae.js → cssMode-e7fac7d7.js} +3 -4
- package/dist/cjs/{html-f56911e1.js → html-7ff4071d.js} +3 -4
- package/dist/cjs/{htmlMode-43eed674.js → htmlMode-c89193ec.js} +3 -4
- package/dist/cjs/{index-b34238a6.js → index-4b7880ab.js} +9 -1
- package/dist/cjs/index.cjs.js +4 -3
- package/dist/cjs/{javascript-5115cb76.js → javascript-864c0220.js} +3 -4
- package/dist/cjs/{jsonMode-550dda36.js → jsonMode-ac4a7be7.js} +3 -4
- package/dist/cjs/{arcade-defaults-a8d8f8e2.js → language-defaults-base-57b37f9f.js} +842 -1183
- package/dist/cjs/loader.cjs.js +4 -4
- package/dist/cjs/sql-expr-defaults-245b036d.js +1347 -0
- package/dist/cjs/sql-expr-mode-304f5ce2.js +20844 -0
- package/dist/cjs/{tsMode-336306a9.js → tsMode-d30d4ab1.js} +4 -5
- package/dist/cjs/{typescript-b395242f.js → typescript-6c87ddb3.js} +3 -4
- package/dist/components/arcade-defaults.js +54 -1369
- package/dist/components/arcade-language-features.js +271 -0
- package/dist/components/arcade-mode.js +4 -264
- package/dist/components/arcade-results.js +7 -5
- package/dist/components/arcade-suggestions.js +7 -5
- package/dist/components/arcade-variables.js +8 -6
- package/dist/components/arcgis-arcade-editor.js +37 -35
- 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 +1 -1
- package/dist/components/arcgis-assets.js +1 -1
- 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.d.ts +11 -0
- package/dist/components/arcgis-sql-expression-editor.js +120 -0
- package/dist/components/arcgis-sql-expression-fields.d.ts +11 -0
- package/dist/components/arcgis-sql-expression-fields.js +11 -0
- package/dist/components/chunk-2JTWBRMN.js +1154 -0
- package/dist/components/code-editor.js +40 -13
- package/dist/components/fields.js +5 -5
- package/dist/components/index.js +1 -1
- package/dist/components/index2.js +30 -22
- package/dist/components/language-api-panel.js +13 -40
- package/dist/components/language-defaults-base.js +1309 -0
- package/dist/components/markdown.js +1 -1
- package/dist/components/sql-expr-defaults.js +196 -0
- package/dist/components/sql-expr-mode.js +20842 -0
- package/dist/components/sql-expression-fields.js +102 -0
- package/dist/components/useT9n.js +45 -8
- package/dist/components/utilities.js +1 -1
- package/dist/esm/{app-globals-59faaf33.js → app-globals-6d0ca11d.js} +1 -1
- package/dist/esm/arcade-defaults-066445c4.js +344 -0
- package/dist/esm/arcade-language-features-0e00c199.js +269 -0
- package/dist/esm/{arcade-mode-5d46035e.js → arcade-mode-abf1e1cf.js} +3 -263
- package/dist/esm/arcgis-arcade-editor_6.entry.js +127 -1447
- package/dist/esm/arcgis-coding-components.js +5 -5
- package/dist/esm/arcgis-sql-expression-editor.entry.js +77 -0
- package/dist/esm/arcgis-sql-expression-fields.entry.js +76 -0
- package/dist/esm/{css-e257dc49.js → css-c6dae12d.js} +1 -1
- package/dist/esm/{cssMode-c11f7f40.js → cssMode-052bb603.js} +2 -3
- package/dist/esm/{html-a6c37a99.js → html-572696a1.js} +2 -3
- package/dist/esm/{htmlMode-1270bc7d.js → htmlMode-fc184f2d.js} +2 -3
- package/dist/esm/{index-a970952c.js → index-0edd9846.js} +9 -1
- package/dist/esm/index.js +4 -3
- package/dist/esm/{javascript-ee179624.js → javascript-8bfc0096.js} +3 -4
- package/dist/esm/{jsonMode-07502ccb.js → jsonMode-7adf94ff.js} +2 -3
- package/dist/esm/{arcade-defaults-9eb28407.js → language-defaults-base-85a7f476.js} +833 -1179
- package/dist/esm/loader.js +5 -5
- package/dist/esm/sql-expr-defaults-be84ec7f.js +1339 -0
- package/dist/esm/sql-expr-mode-a4413e5c.js +20840 -0
- package/dist/esm/{tsMode-96749a12.js → tsMode-d10773c8.js} +2 -3
- package/dist/esm/{typescript-a3cf9881.js → typescript-9491f23e.js} +2 -3
- package/dist/loader/cdn.js +1 -1
- package/dist/loader/index.cjs.js +1 -1
- package/dist/loader/index.es2017.js +1 -1
- package/dist/loader/index.js +1 -1
- package/dist/types/components/arcade-editor/arcade-editor.d.ts +45 -10
- package/dist/types/components/arcade-results/arcade-results.d.ts +43 -1
- package/dist/types/components/arcade-suggestions/arcade-suggestions.d.ts +22 -1
- package/dist/types/components/arcade-variables/arcade-variables.d.ts +28 -1
- package/dist/types/components/code-editor/code-editor.d.ts +16 -5
- package/dist/types/components/language-api-panel/language-api-panel.d.ts +34 -8
- package/dist/types/components/sql-expression-editor/sql-expression-editor.d.ts +24 -0
- package/dist/types/components/sql-expression-fields/sql-expression-fields.d.ts +32 -0
- package/dist/types/components.d.ts +98 -24
- 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/data/actions-runner-1/_work/arcgis-web-components/arcgis-web-components/packages/coding-packages/coding-components/.stencil/stories/internal/sql-expression-editor/sql-expression-editor.stories.d.ts +13 -0
- package/dist/types/dependencies.d.ts +6 -10
- 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/language-defaults-base.d.ts +2 -9
- 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/DependentFiles/DateOnly.d.ts +41 -0
- package/dist/types/utils/sql-expr-monaco/DependentFiles/SqlInterval.d.ts +16 -0
- package/dist/types/utils/sql-expr-monaco/DependentFiles/SqlTimestampOffset.d.ts +26 -0
- package/dist/types/utils/sql-expr-monaco/DependentFiles/TimeOnly.d.ts +37 -0
- package/dist/types/utils/sql-expr-monaco/DependentFiles/UnknownTimeZone.d.ts +11 -0
- package/dist/types/utils/sql-expr-monaco/DependentFiles/WhereGrammar.d.ts +122 -0
- package/dist/types/utils/sql-expr-monaco/DependentFiles/sqlCompareUtils.d.ts +5 -0
- package/dist/types/utils/sql-expr-monaco/DependentFiles/sqlDateParsingUtils.d.ts +18 -0
- package/dist/types/utils/sql-expr-monaco/DependentFiles/sqlUtils.d.ts +6 -0
- package/dist/types/utils/sql-expr-monaco/DependentFiles/standardizedFunctions.d.ts +156 -0
- package/dist/types/utils/sql-expr-monaco/DependentFiles/support.d.ts +150 -0
- package/dist/types/utils/sql-expr-monaco/PeggyGrammar/sql92grammar.d.ts +1397 -0
- package/dist/types/utils/sql-expr-monaco/sql-expr-completion.d.ts +6 -0
- package/dist/types/utils/sql-expr-monaco/sql-expr-constants.d.ts +45 -0
- package/dist/types/utils/sql-expr-monaco/sql-expr-contribution.d.ts +1 -0
- package/dist/types/utils/sql-expr-monaco/sql-expr-defaults.d.ts +21 -0
- package/dist/types/utils/sql-expr-monaco/sql-expr-language-features.d.ts +39 -0
- package/dist/types/utils/sql-expr-monaco/sql-expr-language-syntax.d.ts +8 -0
- package/dist/types/utils/sql-expr-monaco/sql-expr-mode.d.ts +43 -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 +34 -0
- package/dist/types/utils/sql-expr-monaco/sql-expr-validation-utils.d.ts +100 -0
- package/dist/types/utils/sql-expr-monaco/sql-expr-validation.d.ts +41 -0
- package/dist/types/utils/sql-expr-monaco/sql-expr-worker-manager.d.ts +17 -0
- package/dist/types/utils/sql-expr-monaco/sql-expr.worker.d.ts +24 -0
- 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 +89 -0
- package/package.json +27 -21
- package/dist/arcgis-coding-components/p-0c6de9b3.js +0 -6
- package/dist/arcgis-coding-components/p-81c37dab.entry.js +0 -6
- package/dist/cjs/arcade-mode-b85ae7d4.js +0 -595
- package/dist/components/chunk-IHYYRFLQ.js +0 -1363
- package/dist/types/components/arcade-editor/t9n-types.d.ts +0 -8
- package/dist/types/components/arcade-results/t9n-types.d.ts +0 -13
- package/dist/types/components/arcade-suggestions/t9n-types.d.ts +0 -6
- package/dist/types/components/arcade-variables/t9n-types.d.ts +0 -8
- package/dist/types/components/language-api-panel/t9n-types.d.ts +0 -8
- package/dist/types/utils/profile/predefined-profile.d.ts +0 -2
|
@@ -1,595 +0,0 @@
|
|
|
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.2
|
|
5
|
-
*/
|
|
6
|
-
'use strict';
|
|
7
|
-
|
|
8
|
-
const arcadeDefaults = require('./arcade-defaults-a8d8f8e2.js');
|
|
9
|
-
require('./index-b34238a6.js');
|
|
10
|
-
|
|
11
|
-
var V={False:"false",Null:"null",True:"true"},f={Break:"break",Continue:"continue",Else:"else",For:"for",From:"from",Function:"function",If:"if",Import:"import",Export:"export",In:"in",Return:"return",Var:"var",While:"while"},Ee=["++","--"],Je=["-","+","!","~"],Qe=["=","/=","*=","%=","+=","-="],Ze=["||","&&"],Lt=["|","&",">>","<<",">>>","^","==","!=","<","<=",">",">=","+","-","*","/","%"];var U=[[],[],[]];Ee.forEach(t=>U[t.length-1]?.push(t));Je.forEach(t=>U[t.length-1]?.push(t));Ze.forEach(t=>U[t.length-1]?.push(t));Qe.forEach(t=>U[t.length-1]?.push(t));Lt.forEach(t=>U[t.length-1]?.push(t));var ft=Object.values(f),gt=Object.values(V);gt.map(t=>({label:t,kind:arcadeDefaults.main.exports.CompletionItemKind.Constant}));ft.map(t=>({label:t,kind:arcadeDefaults.main.exports.CompletionItemKind.Keyword}));
|
|
12
|
-
|
|
13
|
-
const operators = [
|
|
14
|
-
"<=",
|
|
15
|
-
">=",
|
|
16
|
-
"==",
|
|
17
|
-
"!=",
|
|
18
|
-
"+",
|
|
19
|
-
"-",
|
|
20
|
-
"*",
|
|
21
|
-
"/",
|
|
22
|
-
"%",
|
|
23
|
-
"++",
|
|
24
|
-
"--",
|
|
25
|
-
"<<",
|
|
26
|
-
">>",
|
|
27
|
-
">>>",
|
|
28
|
-
"&",
|
|
29
|
-
"|",
|
|
30
|
-
"^",
|
|
31
|
-
"!",
|
|
32
|
-
"~",
|
|
33
|
-
"&&",
|
|
34
|
-
"||",
|
|
35
|
-
"=",
|
|
36
|
-
"+=",
|
|
37
|
-
"-=",
|
|
38
|
-
"*=",
|
|
39
|
-
"**=",
|
|
40
|
-
"/=",
|
|
41
|
-
"%=",
|
|
42
|
-
];
|
|
43
|
-
const arcadeLanguageConfiguration = {
|
|
44
|
-
// the default separators except `@$`
|
|
45
|
-
wordPattern: /(-?\d*\.\d\w*)|([^`~!#%\^&\*\(\)\-=\+\[\{\]\}\\\|;:'",\.<>\/\?\s]+)/gu,
|
|
46
|
-
comments: {
|
|
47
|
-
lineComment: "//",
|
|
48
|
-
blockComment: ["/*", "*/"],
|
|
49
|
-
},
|
|
50
|
-
brackets: [
|
|
51
|
-
["{", "}"],
|
|
52
|
-
["[", "]"],
|
|
53
|
-
["(", ")"],
|
|
54
|
-
],
|
|
55
|
-
autoClosingPairs: [
|
|
56
|
-
{ open: "{", close: "}" },
|
|
57
|
-
{ open: "[", close: "]" },
|
|
58
|
-
{ open: "(", close: ")" },
|
|
59
|
-
{ open: '"', close: '"', notIn: ["string"] },
|
|
60
|
-
{ open: "'", close: "'", notIn: ["string", "comment"] },
|
|
61
|
-
{ open: "`", close: "`", notIn: ["string", "comment"] },
|
|
62
|
-
],
|
|
63
|
-
autoCloseBefore: ";:.,=}])` \n\t",
|
|
64
|
-
folding: {
|
|
65
|
-
markers: {
|
|
66
|
-
start: /^\s*\/\/\s*#?region\b/u,
|
|
67
|
-
end: /^\s*\/\/\s*#?endregion\b/u,
|
|
68
|
-
},
|
|
69
|
-
},
|
|
70
|
-
indentationRules: {
|
|
71
|
-
// ^(.*\*/)?\s*\}.*$
|
|
72
|
-
decreaseIndentPattern: /^((?!.*?\/\*).*\*\/)?\s*[\}\]\)].*$/u,
|
|
73
|
-
// ^.*\{[^}"']*$
|
|
74
|
-
increaseIndentPattern: /^((?!\/\/).)*(\{[^}"'`]*|\([^)"'`]*|\[[^\]"'`]*)$/u,
|
|
75
|
-
},
|
|
76
|
-
};
|
|
77
|
-
const arcadeMonarchLanguage = {
|
|
78
|
-
// Set defaultToken to invalid to see what you do not tokenize yet
|
|
79
|
-
defaultToken: "invalid",
|
|
80
|
-
tokenPostfix: ".arc",
|
|
81
|
-
// Arcade is case insensitive
|
|
82
|
-
ignoreCase: true,
|
|
83
|
-
// builtinFunctions: [...arcadeService.FunctionNames],
|
|
84
|
-
// Arcade keywords. 'from' is a special case as we want to treat it as a keyword in
|
|
85
|
-
// import statement but as an identifer in var statement.
|
|
86
|
-
keywords: ft.filter((k) => k !== "from"),
|
|
87
|
-
operators,
|
|
88
|
-
constants: ["true", "false", "null"],
|
|
89
|
-
// we include these common regular expressions
|
|
90
|
-
symbols: /[=><!~?:&|+\-*\/\^%]+/u,
|
|
91
|
-
escapes: /\\(?:[abfnrtv\\"']|x[0-9A-Fa-f]{1,4}|u[0-9A-Fa-f]{4}|U[0-9A-Fa-f]{8})/u,
|
|
92
|
-
digits: /\d+(_+\d+)*/u,
|
|
93
|
-
octaldigits: /[0-7]+(_+[0-7]+)*/u,
|
|
94
|
-
binarydigits: /[0-1]+(_+[0-1]+)*/u,
|
|
95
|
-
hexdigits: /[[0-9a-fA-F]+(_+[0-9a-fA-F]+)*/u,
|
|
96
|
-
regexpctl: /[(){}\[\]\$\^|\-*+?\.]/u,
|
|
97
|
-
regexpesc: /\\(?:[bBdDfnrstvwWn0\\\/]|@regexpctl|c[A-Z]|x[0-9a-fA-F]{2}|u[0-9a-fA-F]{4})/u,
|
|
98
|
-
// The main tokenizer for our languages
|
|
99
|
-
tokenizer: {
|
|
100
|
-
root: [[/[{}]/u, "delimiter.bracket"], { include: "common" }],
|
|
101
|
-
common: [
|
|
102
|
-
// import statement. import followed by a white space
|
|
103
|
-
[/import(?=\s)/u, { token: "keyword", next: "@import" }],
|
|
104
|
-
// identifiers and keywords
|
|
105
|
-
[
|
|
106
|
-
/[a-z_$][\w$]*/u,
|
|
107
|
-
{
|
|
108
|
-
cases: {
|
|
109
|
-
"@constants": "constant",
|
|
110
|
-
"@keywords": "keyword",
|
|
111
|
-
"@default": "identifier",
|
|
112
|
-
},
|
|
113
|
-
},
|
|
114
|
-
],
|
|
115
|
-
// whitespace
|
|
116
|
-
{ include: "@whitespace" },
|
|
117
|
-
// regular expression: ensure it is terminated before beginning (otherwise it is an opeator)
|
|
118
|
-
[
|
|
119
|
-
/\/(?=([^\\\/]|\\.)+\/([gimsuy]*)(\s*)(\.|;|\/|,|\)|\]|\}|$))/u,
|
|
120
|
-
{ token: "regexp", bracket: "@open", next: "@regexp" },
|
|
121
|
-
],
|
|
122
|
-
// delimiters and operators
|
|
123
|
-
[/[()\[\]]/u, "@brackets"],
|
|
124
|
-
[/[<>](?!@symbols)/u, "@brackets"],
|
|
125
|
-
[
|
|
126
|
-
/@symbols/u,
|
|
127
|
-
{
|
|
128
|
-
cases: {
|
|
129
|
-
"@operators": "delimiter",
|
|
130
|
-
"@default": "",
|
|
131
|
-
},
|
|
132
|
-
},
|
|
133
|
-
],
|
|
134
|
-
// numbers
|
|
135
|
-
[/(@digits)[eE]([\-+]?(@digits))?/u, "number"],
|
|
136
|
-
[/(@digits)\.(@digits)([eE][\-+]?(@digits))?/u, "number"],
|
|
137
|
-
[/0[xX](@hexdigits)/u, "number"],
|
|
138
|
-
[/0[oO]?(@octaldigits)/u, "number"],
|
|
139
|
-
[/0[bB](@binarydigits)/u, "number"],
|
|
140
|
-
[/(@digits)/u, "number"],
|
|
141
|
-
// delimiter: after number because of .\d floats
|
|
142
|
-
[/[;,.]/u, "delimiter"],
|
|
143
|
-
// strings
|
|
144
|
-
[/"([^"\\]|\\.)*$/u, "string.invalid"], // non-teminated string
|
|
145
|
-
[/'([^'\\]|\\.)*$/u, "string.invalid"], // non-teminated string
|
|
146
|
-
[/"/u, "string", "@string_double"],
|
|
147
|
-
[/'/u, "string", "@string_single"],
|
|
148
|
-
[/`/u, "string", "@string_backtick"],
|
|
149
|
-
],
|
|
150
|
-
import: [
|
|
151
|
-
// import keyword
|
|
152
|
-
[/import(?=\s)/u, { token: "keyword" }],
|
|
153
|
-
// whitespace
|
|
154
|
-
{ include: "@whitespace" },
|
|
155
|
-
// identifier
|
|
156
|
-
[/[a-z_$][\w$]*/u, "identifier"],
|
|
157
|
-
// whitespace
|
|
158
|
-
{ include: "@whitespace" },
|
|
159
|
-
// from keyword
|
|
160
|
-
[/from/u, { token: "keyword", next: "@popall" }],
|
|
161
|
-
],
|
|
162
|
-
whitespace: [
|
|
163
|
-
[/[ \t\r\n]+/u, ""],
|
|
164
|
-
[/\/\*/u, "comment", "@comment"],
|
|
165
|
-
[/\/\/.*$/u, "comment"],
|
|
166
|
-
],
|
|
167
|
-
comment: [
|
|
168
|
-
[/[^\/*]+/u, "comment"],
|
|
169
|
-
[/\*\//u, "comment", "@pop"],
|
|
170
|
-
[/[\/*]/u, "comment"],
|
|
171
|
-
],
|
|
172
|
-
// We match regular expression quite precisely
|
|
173
|
-
regexp: [
|
|
174
|
-
[/(\{)(\d+(?:,\d*)?)(\})/u, ["regexp.escape.control", "regexp.escape.control", "regexp.escape.control"]],
|
|
175
|
-
[
|
|
176
|
-
/(\[)(\^?)(?=(?:[^\]\\\/]|\\.)+)/u,
|
|
177
|
-
["regexp.escape.control", { token: "regexp.escape.control", next: "@regexrange" }],
|
|
178
|
-
],
|
|
179
|
-
[/(\()(\?:|\?=|\?!)/u, ["regexp.escape.control", "regexp.escape.control"]],
|
|
180
|
-
[/[()]/u, "regexp.escape.control"],
|
|
181
|
-
[/@regexpctl/u, "regexp.escape.control"],
|
|
182
|
-
[/[^\\\/]/u, "regexp"],
|
|
183
|
-
[/@regexpesc/u, "regexp.escape"],
|
|
184
|
-
[/\\\./u, "regexp.invalid"],
|
|
185
|
-
[/(\/)([gimsuy]*)/u, [{ token: "regexp", bracket: "@close", next: "@pop" }, "keyword.other"]],
|
|
186
|
-
],
|
|
187
|
-
regexrange: [
|
|
188
|
-
[/-/u, "regexp.escape.control"],
|
|
189
|
-
[/\^/u, "regexp.invalid"],
|
|
190
|
-
[/@regexpesc/u, "regexp.escape"],
|
|
191
|
-
[/[^\]]/u, "regexp"],
|
|
192
|
-
[/\]/u, { token: "regexp.escape.control", next: "@pop", bracket: "@close" }],
|
|
193
|
-
],
|
|
194
|
-
string_double: [
|
|
195
|
-
[/[^\\"]+/u, "string"],
|
|
196
|
-
[/@escapes/u, "string.escape"],
|
|
197
|
-
[/\\./u, "string.escape.invalid"],
|
|
198
|
-
[/"/u, "string", "@pop"],
|
|
199
|
-
],
|
|
200
|
-
string_single: [
|
|
201
|
-
[/[^\\']+/u, "string"],
|
|
202
|
-
[/@escapes/u, "string.escape"],
|
|
203
|
-
[/\\./u, "string.escape.invalid"],
|
|
204
|
-
[/'/u, "string", "@pop"],
|
|
205
|
-
],
|
|
206
|
-
string_backtick: [
|
|
207
|
-
[/\$\{/u, { token: "delimiter.bracket", next: "@bracketCounting" }],
|
|
208
|
-
[/[^\\`$]+/u, "string"],
|
|
209
|
-
[/@escapes/u, "string.escape"],
|
|
210
|
-
[/\\./u, "string.escape.invalid"],
|
|
211
|
-
[/`/u, "string", "@pop"],
|
|
212
|
-
],
|
|
213
|
-
bracketCounting: [
|
|
214
|
-
[/\{/u, "delimiter.bracket", "@bracketCounting"],
|
|
215
|
-
[/\}/u, "delimiter.bracket", "@pop"],
|
|
216
|
-
{ include: "common" },
|
|
217
|
-
],
|
|
218
|
-
},
|
|
219
|
-
};
|
|
220
|
-
|
|
221
|
-
//#region Diagnostic
|
|
222
|
-
class DiagnosticsAdapter {
|
|
223
|
-
constructor(_languageId, _worker, { defaults, diagnosticsService, }) {
|
|
224
|
-
this._languageId = _languageId;
|
|
225
|
-
this._worker = _worker;
|
|
226
|
-
this._disposables = [];
|
|
227
|
-
this._listener = new Map();
|
|
228
|
-
this._diagnosticsService = diagnosticsService;
|
|
229
|
-
this._defaults = defaults;
|
|
230
|
-
const onModelAdd = (model) => {
|
|
231
|
-
const languageId = model.getLanguageId();
|
|
232
|
-
if (languageId !== this._languageId) {
|
|
233
|
-
return;
|
|
234
|
-
}
|
|
235
|
-
const debouncedValidate = arcadeDefaults.debounce(() => {
|
|
236
|
-
this._doValidate(model, languageId).catch((err) => {
|
|
237
|
-
throw err;
|
|
238
|
-
});
|
|
239
|
-
});
|
|
240
|
-
this._listener.set(model.uri.toString(), model.onDidChangeContent(debouncedValidate));
|
|
241
|
-
this._doValidate(model, languageId).catch(console.error);
|
|
242
|
-
};
|
|
243
|
-
const onModelRemoved = (model) => {
|
|
244
|
-
const uriStr = model.uri.toString();
|
|
245
|
-
arcadeDefaults.editor.setModelMarkers(model, this._languageId, []);
|
|
246
|
-
const listener = this._listener.get(uriStr);
|
|
247
|
-
if (listener) {
|
|
248
|
-
listener.dispose();
|
|
249
|
-
this._listener.delete(uriStr);
|
|
250
|
-
}
|
|
251
|
-
};
|
|
252
|
-
this._disposables.push(arcadeDefaults.editor.onDidCreateModel(onModelAdd));
|
|
253
|
-
this._disposables.push(arcadeDefaults.editor.onWillDisposeModel((model) => {
|
|
254
|
-
onModelRemoved(model);
|
|
255
|
-
}));
|
|
256
|
-
this._disposables.push(arcadeDefaults.editor.onDidChangeModelLanguage((event) => {
|
|
257
|
-
onModelRemoved(event.model);
|
|
258
|
-
onModelAdd(event.model);
|
|
259
|
-
}));
|
|
260
|
-
this._disposables.push(defaults.onDidChange(() => {
|
|
261
|
-
arcadeDefaults.editor.getModels().forEach((model) => {
|
|
262
|
-
if (model.getLanguageId() === this._languageId) {
|
|
263
|
-
onModelRemoved(model);
|
|
264
|
-
onModelAdd(model);
|
|
265
|
-
}
|
|
266
|
-
});
|
|
267
|
-
}));
|
|
268
|
-
this._disposables.push(defaults.onModelContextDidChange((key) => {
|
|
269
|
-
arcadeDefaults.editor.getModels().forEach((model) => {
|
|
270
|
-
if (model.getLanguageId() === this._languageId && model.uri.toString() === key) {
|
|
271
|
-
this._doValidate(model, this._languageId).catch(console.error);
|
|
272
|
-
}
|
|
273
|
-
});
|
|
274
|
-
}));
|
|
275
|
-
this._disposables.push({
|
|
276
|
-
dispose: () => {
|
|
277
|
-
this._listener.forEach((value) => value.dispose());
|
|
278
|
-
this._listener.clear();
|
|
279
|
-
},
|
|
280
|
-
});
|
|
281
|
-
arcadeDefaults.editor.getModels().forEach(onModelAdd);
|
|
282
|
-
}
|
|
283
|
-
dispose() {
|
|
284
|
-
this._disposables.forEach((d) => d.dispose());
|
|
285
|
-
this._disposables = [];
|
|
286
|
-
}
|
|
287
|
-
async _doValidate(model, languageId) {
|
|
288
|
-
if (!model.isAttachedToEditor()) {
|
|
289
|
-
return;
|
|
290
|
-
}
|
|
291
|
-
try {
|
|
292
|
-
const workerProxy = await this._worker(model.uri);
|
|
293
|
-
const context = this._defaults.getApiContextForModel(model.uri);
|
|
294
|
-
const diagnostics = await workerProxy.doValidation(model.uri.toString(), context);
|
|
295
|
-
const markers = diagnostics.map((d) => toMarker(model.uri, d));
|
|
296
|
-
this._diagnosticsService.fireDiagnosticsChange(model.uri, diagnostics);
|
|
297
|
-
arcadeDefaults.editor.setModelMarkers(model, languageId, markers);
|
|
298
|
-
}
|
|
299
|
-
catch (err) {
|
|
300
|
-
console.error(err);
|
|
301
|
-
}
|
|
302
|
-
}
|
|
303
|
-
}
|
|
304
|
-
function toSeverity(languageServiceSeverity) {
|
|
305
|
-
switch (languageServiceSeverity) {
|
|
306
|
-
case arcadeDefaults.main.exports.DiagnosticSeverity.Error:
|
|
307
|
-
return arcadeDefaults.MarkerSeverity.Error;
|
|
308
|
-
case arcadeDefaults.main.exports.DiagnosticSeverity.Warning:
|
|
309
|
-
return arcadeDefaults.MarkerSeverity.Warning;
|
|
310
|
-
case arcadeDefaults.main.exports.DiagnosticSeverity.Information:
|
|
311
|
-
return arcadeDefaults.MarkerSeverity.Info;
|
|
312
|
-
case arcadeDefaults.main.exports.DiagnosticSeverity.Hint:
|
|
313
|
-
return arcadeDefaults.MarkerSeverity.Hint;
|
|
314
|
-
default:
|
|
315
|
-
return arcadeDefaults.MarkerSeverity.Info;
|
|
316
|
-
}
|
|
317
|
-
}
|
|
318
|
-
function toMarker(_resource, diag) {
|
|
319
|
-
// Diagnostics positions are zero-based, MarkerData are 1-based
|
|
320
|
-
return {
|
|
321
|
-
severity: toSeverity(diag.severity),
|
|
322
|
-
startLineNumber: diag.range.start.line + 1,
|
|
323
|
-
startColumn: diag.range.start.character + 1,
|
|
324
|
-
endLineNumber: diag.range.end.line + 1,
|
|
325
|
-
endColumn: diag.range.end.character + 1,
|
|
326
|
-
message: diag.message,
|
|
327
|
-
};
|
|
328
|
-
}
|
|
329
|
-
//#endregion
|
|
330
|
-
//#region Completion
|
|
331
|
-
function fromPosition(position) {
|
|
332
|
-
// Language service is zero based
|
|
333
|
-
return { character: position.column - 1, line: position.lineNumber - 1 };
|
|
334
|
-
}
|
|
335
|
-
function toRange(range) {
|
|
336
|
-
return new arcadeDefaults.Range(range.start.line + 1, range.start.character + 1, range.end.line + 1, range.end.character + 1);
|
|
337
|
-
}
|
|
338
|
-
function toTextEdit(textEdit) {
|
|
339
|
-
return {
|
|
340
|
-
range: toRange(textEdit.range),
|
|
341
|
-
text: textEdit.newText,
|
|
342
|
-
};
|
|
343
|
-
}
|
|
344
|
-
function isInsertReplaceEdit(edit) {
|
|
345
|
-
return (typeof edit.insert !== "undefined" &&
|
|
346
|
-
typeof edit.replace !== "undefined");
|
|
347
|
-
}
|
|
348
|
-
function toCompletionItemKind(kind) {
|
|
349
|
-
const mItemKind = arcadeDefaults.languages.CompletionItemKind;
|
|
350
|
-
switch (kind) {
|
|
351
|
-
case arcadeDefaults.main.exports.CompletionItemKind.Text:
|
|
352
|
-
return mItemKind.Text;
|
|
353
|
-
case arcadeDefaults.main.exports.CompletionItemKind.Method:
|
|
354
|
-
return mItemKind.Method;
|
|
355
|
-
case arcadeDefaults.main.exports.CompletionItemKind.Function:
|
|
356
|
-
return mItemKind.Function;
|
|
357
|
-
case arcadeDefaults.main.exports.CompletionItemKind.Constructor:
|
|
358
|
-
return mItemKind.Constructor;
|
|
359
|
-
case arcadeDefaults.main.exports.CompletionItemKind.Field:
|
|
360
|
-
return mItemKind.Field;
|
|
361
|
-
case arcadeDefaults.main.exports.CompletionItemKind.Variable:
|
|
362
|
-
return mItemKind.Variable;
|
|
363
|
-
case arcadeDefaults.main.exports.CompletionItemKind.Class:
|
|
364
|
-
return mItemKind.Class;
|
|
365
|
-
case arcadeDefaults.main.exports.CompletionItemKind.Interface:
|
|
366
|
-
return mItemKind.Interface;
|
|
367
|
-
case arcadeDefaults.main.exports.CompletionItemKind.Module:
|
|
368
|
-
return mItemKind.Module;
|
|
369
|
-
case arcadeDefaults.main.exports.CompletionItemKind.Property:
|
|
370
|
-
return mItemKind.Property;
|
|
371
|
-
case arcadeDefaults.main.exports.CompletionItemKind.Unit:
|
|
372
|
-
return mItemKind.Unit;
|
|
373
|
-
case arcadeDefaults.main.exports.CompletionItemKind.Value:
|
|
374
|
-
return mItemKind.Value;
|
|
375
|
-
case arcadeDefaults.main.exports.CompletionItemKind.Enum:
|
|
376
|
-
return mItemKind.Enum;
|
|
377
|
-
case arcadeDefaults.main.exports.CompletionItemKind.Keyword:
|
|
378
|
-
return mItemKind.Keyword;
|
|
379
|
-
case arcadeDefaults.main.exports.CompletionItemKind.Snippet:
|
|
380
|
-
return mItemKind.Snippet;
|
|
381
|
-
case arcadeDefaults.main.exports.CompletionItemKind.Color:
|
|
382
|
-
return mItemKind.Color;
|
|
383
|
-
case arcadeDefaults.main.exports.CompletionItemKind.File:
|
|
384
|
-
return mItemKind.File;
|
|
385
|
-
case arcadeDefaults.main.exports.CompletionItemKind.Reference:
|
|
386
|
-
return mItemKind.Reference;
|
|
387
|
-
case arcadeDefaults.main.exports.CompletionItemKind.Folder:
|
|
388
|
-
return mItemKind.Folder;
|
|
389
|
-
case arcadeDefaults.main.exports.CompletionItemKind.EnumMember:
|
|
390
|
-
return mItemKind.EnumMember;
|
|
391
|
-
case arcadeDefaults.main.exports.CompletionItemKind.Constant:
|
|
392
|
-
return mItemKind.Constant;
|
|
393
|
-
case arcadeDefaults.main.exports.CompletionItemKind.Struct:
|
|
394
|
-
return mItemKind.Struct;
|
|
395
|
-
case arcadeDefaults.main.exports.CompletionItemKind.Event:
|
|
396
|
-
return mItemKind.Event;
|
|
397
|
-
case arcadeDefaults.main.exports.CompletionItemKind.Operator:
|
|
398
|
-
return mItemKind.Operator;
|
|
399
|
-
case arcadeDefaults.main.exports.CompletionItemKind.TypeParameter:
|
|
400
|
-
return mItemKind.TypeParameter;
|
|
401
|
-
default:
|
|
402
|
-
return mItemKind.Property;
|
|
403
|
-
}
|
|
404
|
-
}
|
|
405
|
-
class CompletionProvider {
|
|
406
|
-
constructor(_worker, _defaults) {
|
|
407
|
-
this._worker = _worker;
|
|
408
|
-
this._defaults = _defaults;
|
|
409
|
-
this.triggerCharacters = [".", "("];
|
|
410
|
-
}
|
|
411
|
-
async provideCompletionItems(model, position) {
|
|
412
|
-
const worker = await this._worker(model.uri);
|
|
413
|
-
const context = this._defaults.getApiContextForModel(model.uri);
|
|
414
|
-
const completionList = await worker.doComplete(model.uri.toString(), fromPosition(position), context);
|
|
415
|
-
const wordInfo = model.getWordUntilPosition(position);
|
|
416
|
-
const wordRange = new arcadeDefaults.Range(position.lineNumber, wordInfo.startColumn, position.lineNumber, wordInfo.endColumn);
|
|
417
|
-
const items = completionList.items.map((entry) => {
|
|
418
|
-
const item = {
|
|
419
|
-
label: entry.label,
|
|
420
|
-
insertText: entry.insertText || entry.label,
|
|
421
|
-
sortText: entry.sortText,
|
|
422
|
-
filterText: entry.filterText,
|
|
423
|
-
detail: entry.detail,
|
|
424
|
-
range: wordRange,
|
|
425
|
-
kind: toCompletionItemKind(entry.kind),
|
|
426
|
-
};
|
|
427
|
-
if (entry.textEdit) {
|
|
428
|
-
if (isInsertReplaceEdit(entry.textEdit)) {
|
|
429
|
-
item.range = {
|
|
430
|
-
insert: toRange(entry.textEdit.insert),
|
|
431
|
-
replace: toRange(entry.textEdit.replace),
|
|
432
|
-
};
|
|
433
|
-
}
|
|
434
|
-
else {
|
|
435
|
-
item.range = toRange(entry.textEdit.range);
|
|
436
|
-
}
|
|
437
|
-
item.insertText = entry.textEdit.newText;
|
|
438
|
-
}
|
|
439
|
-
if (entry.additionalTextEdits) {
|
|
440
|
-
item.additionalTextEdits = entry.additionalTextEdits.map(toTextEdit);
|
|
441
|
-
}
|
|
442
|
-
if (entry.insertTextFormat === arcadeDefaults.main.exports.InsertTextFormat.Snippet) {
|
|
443
|
-
item.insertTextRules = arcadeDefaults.languages.CompletionItemInsertTextRule.InsertAsSnippet;
|
|
444
|
-
}
|
|
445
|
-
if (entry.documentation) {
|
|
446
|
-
if (typeof entry.documentation === "string") {
|
|
447
|
-
item.documentation = entry.documentation;
|
|
448
|
-
}
|
|
449
|
-
else {
|
|
450
|
-
item.documentation = {
|
|
451
|
-
supportThemeIcons: false,
|
|
452
|
-
value: entry.documentation.value,
|
|
453
|
-
supportHtml: true,
|
|
454
|
-
};
|
|
455
|
-
}
|
|
456
|
-
}
|
|
457
|
-
return item;
|
|
458
|
-
});
|
|
459
|
-
return {
|
|
460
|
-
incomplete: completionList.isIncomplete,
|
|
461
|
-
suggestions: items,
|
|
462
|
-
};
|
|
463
|
-
}
|
|
464
|
-
}
|
|
465
|
-
//#endregion
|
|
466
|
-
//#region Formatter
|
|
467
|
-
class FormattingProvider {
|
|
468
|
-
constructor(_worker, _defaults) {
|
|
469
|
-
this._worker = _worker;
|
|
470
|
-
this._defaults = _defaults;
|
|
471
|
-
}
|
|
472
|
-
async provideDocumentFormattingEdits(model) {
|
|
473
|
-
const worker = await this._worker(model.uri);
|
|
474
|
-
const context = this._defaults.getApiContextForModel(model.uri.toString());
|
|
475
|
-
const edits = await worker.doFormat(model.uri.toString(), context);
|
|
476
|
-
return edits.map((e) => ({ range: toRange(e.range), text: e.newText }));
|
|
477
|
-
}
|
|
478
|
-
}
|
|
479
|
-
//#endregion
|
|
480
|
-
|
|
481
|
-
/**
|
|
482
|
-
* Manager to create our arcade worker and client proxy
|
|
483
|
-
*/
|
|
484
|
-
class WorkerManager {
|
|
485
|
-
constructor(_defaults) {
|
|
486
|
-
this._defaults = _defaults;
|
|
487
|
-
this._worker = null;
|
|
488
|
-
this._client = null;
|
|
489
|
-
// Observes the arcade defaults. If modified then stop the worker.
|
|
490
|
-
this._configChangeListener = this._defaults.onDidChange(() => this.stopWorker());
|
|
491
|
-
}
|
|
492
|
-
dispose() {
|
|
493
|
-
this._configChangeListener.dispose();
|
|
494
|
-
this.stopWorker();
|
|
495
|
-
}
|
|
496
|
-
stopWorker() {
|
|
497
|
-
if (this._worker) {
|
|
498
|
-
this._worker.dispose();
|
|
499
|
-
this._worker = null;
|
|
500
|
-
}
|
|
501
|
-
this._client = null;
|
|
502
|
-
}
|
|
503
|
-
async _getClientProxy() {
|
|
504
|
-
// We used createWebWorker to create or run the web worker if it isn’t already created.
|
|
505
|
-
// Otherwise, we get and return the proxy client.
|
|
506
|
-
if (!this._client) {
|
|
507
|
-
const { languageId, languageOptions } = this._defaults;
|
|
508
|
-
this._worker = arcadeDefaults.editor.createWebWorker({
|
|
509
|
-
moduleId: "ArcadeWorker",
|
|
510
|
-
label: languageId,
|
|
511
|
-
createData: {
|
|
512
|
-
languageId,
|
|
513
|
-
languageOptions,
|
|
514
|
-
},
|
|
515
|
-
});
|
|
516
|
-
this._client = this._worker.getProxy();
|
|
517
|
-
}
|
|
518
|
-
return await this._client;
|
|
519
|
-
}
|
|
520
|
-
async getLanguageServiceWorker(...resources) {
|
|
521
|
-
const _client = await this._getClientProxy();
|
|
522
|
-
await this._worker?.withSyncedResources(resources);
|
|
523
|
-
return _client;
|
|
524
|
-
}
|
|
525
|
-
}
|
|
526
|
-
|
|
527
|
-
let arcadeWorker;
|
|
528
|
-
/**
|
|
529
|
-
* Returns the arcade worker for the model uris.
|
|
530
|
-
* @param uris The model uris for which to get the worker.
|
|
531
|
-
* @returns The arcade worker.
|
|
532
|
-
*/
|
|
533
|
-
async function getArcadeWorker(...uris) {
|
|
534
|
-
return await new Promise((resolve, reject) => {
|
|
535
|
-
if (!arcadeWorker) {
|
|
536
|
-
reject(new Error("TypeScript not registered!"));
|
|
537
|
-
return;
|
|
538
|
-
}
|
|
539
|
-
resolve(arcadeWorker(...uris));
|
|
540
|
-
});
|
|
541
|
-
}
|
|
542
|
-
/**
|
|
543
|
-
* The Arcade Language Diagnostic Service.
|
|
544
|
-
* Consumers can listen to the diagnostics change event to get notified when the diagnostics change.
|
|
545
|
-
*/
|
|
546
|
-
class ArcadeDiagnosticService {
|
|
547
|
-
constructor() {
|
|
548
|
-
this._onDiagnosticsChange = new arcadeDefaults.Emitter();
|
|
549
|
-
}
|
|
550
|
-
/**
|
|
551
|
-
* An event to signal changes to the diagnostics.
|
|
552
|
-
* The event value is the uri string and the diagnostics.
|
|
553
|
-
*/
|
|
554
|
-
get onDiagnosticsChange() {
|
|
555
|
-
return this._onDiagnosticsChange.event;
|
|
556
|
-
}
|
|
557
|
-
/**
|
|
558
|
-
* Fires the diagnostics change event.
|
|
559
|
-
* @param uri The uri of the model for which the diagnostics changed.
|
|
560
|
-
* @param diagnostics The diagnostics for the model.
|
|
561
|
-
*/
|
|
562
|
-
fireDiagnosticsChange(uri, diagnostics) {
|
|
563
|
-
this._onDiagnosticsChange.fire({ uri, diagnostics });
|
|
564
|
-
}
|
|
565
|
-
}
|
|
566
|
-
const arcadeDiagnosticService = new ArcadeDiagnosticService();
|
|
567
|
-
/**
|
|
568
|
-
* Get the Arcade Diagnostic Service.
|
|
569
|
-
* @returns The Arcade Language Diagnostic Service.
|
|
570
|
-
*/
|
|
571
|
-
function getArcadeDiagnosticService() {
|
|
572
|
-
return arcadeDiagnosticService;
|
|
573
|
-
}
|
|
574
|
-
function setupMode(arcadeDefaults$1) {
|
|
575
|
-
const client = new WorkerManager(arcadeDefaults$1);
|
|
576
|
-
const workerAccessor = async (...uris) => await client.getLanguageServiceWorker(...uris);
|
|
577
|
-
arcadeWorker = workerAccessor;
|
|
578
|
-
// Use the arcade Monarch Json to define the highlighting
|
|
579
|
-
arcadeDefaults.languages.setMonarchTokensProvider(arcadeDefaults$1.languageId, arcadeMonarchLanguage);
|
|
580
|
-
arcadeDefaults.languages.setLanguageConfiguration(arcadeDefaults$1.languageId, arcadeLanguageConfiguration);
|
|
581
|
-
// Creates and registers a Completion Adapter
|
|
582
|
-
arcadeDefaults.languages.registerCompletionItemProvider(arcadeDefaults$1.languageId, new CompletionProvider(workerAccessor, arcadeDefaults$1));
|
|
583
|
-
// Creates and registers a Formatter
|
|
584
|
-
arcadeDefaults.languages.registerDocumentFormattingEditProvider(arcadeDefaults$1.languageId, new FormattingProvider(workerAccessor, arcadeDefaults$1));
|
|
585
|
-
// Creates a Diagnostic Adapter
|
|
586
|
-
// eslint-disable-next-line no-new
|
|
587
|
-
new DiagnosticsAdapter(arcadeDefaults$1.languageId, workerAccessor, {
|
|
588
|
-
defaults: arcadeDefaults$1,
|
|
589
|
-
diagnosticsService: arcadeDiagnosticService,
|
|
590
|
-
});
|
|
591
|
-
}
|
|
592
|
-
|
|
593
|
-
exports.getArcadeDiagnosticService = getArcadeDiagnosticService;
|
|
594
|
-
exports.getArcadeWorker = getArcadeWorker;
|
|
595
|
-
exports.setupMode = setupMode;
|