@arcgis/coding-components 4.30.0 → 4.31.0-next.10
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/arcgis-coding-components/arcgis-coding-components.esm.js +3 -3
- package/dist/arcgis-coding-components/assets/code-editor/arcade.worker.js +13 -13
- 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 +11 -0
- package/dist/arcgis-coding-components/assets/code-editor/ts.worker.js +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 +3 -3
- package/dist/arcgis-coding-components/p-025fda85.js +6 -0
- package/dist/arcgis-coding-components/{p-b7981062.js → p-02cae55d.js} +4 -4
- package/dist/arcgis-coding-components/p-193ac44f.js +6 -0
- package/dist/arcgis-coding-components/{p-ed5c78ce.js → p-22253750.js} +2 -2
- package/dist/arcgis-coding-components/p-4fc79a07.entry.js +6 -0
- package/dist/arcgis-coding-components/p-50484a4f.js +6 -0
- package/dist/arcgis-coding-components/p-6e28fd70.js +6 -0
- package/dist/arcgis-coding-components/p-7164c348.js +6 -0
- package/dist/arcgis-coding-components/p-767b17ee.entry.js +6 -0
- package/dist/arcgis-coding-components/{p-69ef969a.js → p-790067b1.js} +11 -11
- package/dist/arcgis-coding-components/{p-e9510c84.js → p-8196fa73.js} +3 -3
- package/dist/arcgis-coding-components/{p-f40fe9c5.js → p-8cf09bcc.js} +2 -2
- package/dist/arcgis-coding-components/{p-ca3f5530.js → p-923858b5.js} +3 -3
- package/dist/arcgis-coding-components/{p-ae0db715.js → p-960aa9dc.js} +3 -3
- package/dist/arcgis-coding-components/p-9956a574.js +6 -0
- package/dist/arcgis-coding-components/{p-9770fb37.js → p-ab78d6c4.js} +4 -4
- package/dist/arcgis-coding-components/{p-e37595ba.js → p-ad75160d.js} +4 -4
- package/dist/arcgis-coding-components/{p-24fb1d11.js → p-da9431ba.js} +3 -3
- package/dist/arcgis-coding-components/p-f452d4b8.entry.js +6 -0
- package/dist/cjs/{app-globals-18ba6880.js → app-globals-bade840e.js} +2 -2
- package/dist/cjs/arcade-defaults-8b8d6c07.js +116 -0
- package/dist/cjs/arcade-language-features-747fb1da.js +274 -0
- package/dist/cjs/arcade-mode-dce44622.js +336 -0
- package/dist/cjs/{arcgis-arcade-api_6.cjs.entry.js → arcgis-arcade-editor_6.cjs.entry.js} +3806 -5154
- package/dist/cjs/arcgis-coding-components.cjs.js +5 -5
- 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-d8a65bb9.js → css-077ba0c5.js} +2 -2
- package/dist/cjs/{cssMode-07dbb853.js → cssMode-7f2030db.js} +5 -5
- package/dist/cjs/{html-bb10cced.js → html-e3a243e9.js} +5 -5
- package/dist/cjs/{htmlMode-7df0a09d.js → htmlMode-c273d6dc.js} +5 -5
- package/dist/cjs/{index-15bcce7e.js → index-37a86ff4.js} +12 -4
- package/dist/cjs/index.cjs.js +5 -4
- package/dist/cjs/{javascript-f0dbed11.js → javascript-7a33cca7.js} +5 -5
- package/dist/cjs/{jsonMode-9e54e9b7.js → jsonMode-6b4e0850.js} +5 -5
- package/dist/cjs/{arcade-defaults-d0931224.js → language-defaults-base-b32cb091.js} +88 -144
- package/dist/cjs/loader.cjs.js +5 -5
- package/dist/cjs/sql-expr-defaults-8a5834f3.js +1280 -0
- package/dist/cjs/sql-expr-mode-a72a1f92.js +21838 -0
- package/dist/cjs/{tsMode-ca28bc5f.js → tsMode-c2edcd57.js} +6 -6
- package/dist/cjs/{typescript-39540ed7.js → typescript-c50c5516.js} +5 -5
- package/dist/components/arcade-defaults.js +47 -1537
- package/dist/components/arcade-language-features.js +271 -0
- package/dist/components/arcade-mode.js +7 -267
- package/dist/components/arcade-results.js +7 -7
- package/dist/components/arcade-suggestions.js +8 -8
- package/dist/components/arcade-variables.js +7 -7
- package/dist/components/arcgis-arcade-editor.js +49 -50
- package/dist/components/arcgis-arcade-results.js +2 -2
- package/dist/components/arcgis-arcade-suggestions.js +2 -2
- package/dist/components/arcgis-arcade-variables.js +2 -2
- package/dist/components/arcgis-assets.d.ts +2 -2
- package/dist/components/arcgis-assets.js +3 -3
- package/dist/components/arcgis-code-editor.js +2 -2
- package/dist/components/arcgis-language-api-panel.d.ts +11 -0
- package/dist/components/arcgis-language-api-panel.js +11 -0
- 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-3IUJHIAA.js +1154 -0
- package/dist/components/code-editor.js +186 -17
- package/dist/components/fields.js +3 -3
- package/dist/components/index.js +2 -2
- package/dist/components/index2.js +31 -23
- package/dist/components/{arcade-api.js → language-api-panel.js} +29 -60
- package/dist/components/language-defaults-base.js +1535 -0
- package/dist/components/markdown.js +3 -3
- package/dist/components/sql-expr-defaults.js +131 -0
- package/dist/components/sql-expr-mode.js +21836 -0
- package/dist/components/sql-expression-fields.js +102 -0
- package/dist/components/useT9n.js +46 -9
- package/dist/components/utilities.js +2 -2
- package/dist/esm/{app-globals-2a0e9afb.js → app-globals-ed47e16d.js} +2 -2
- package/dist/esm/arcade-defaults-562fe19b.js +111 -0
- package/dist/esm/arcade-language-features-8edb3527.js +269 -0
- package/dist/esm/{arcade-mode-e9728a63.js → arcade-mode-ad036f46.js} +7 -266
- package/dist/esm/{arcgis-arcade-api_6.entry.js → arcgis-arcade-editor_6.entry.js} +3793 -5141
- package/dist/esm/arcgis-coding-components.js +6 -6
- 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-61c794c2.js → css-810518f1.js} +2 -2
- package/dist/esm/{cssMode-6e0ccd51.js → cssMode-a7208024.js} +4 -4
- package/dist/esm/{html-44ad432e.js → html-e187d7d8.js} +4 -4
- package/dist/esm/{htmlMode-fd336434.js → htmlMode-06b7bae2.js} +4 -4
- package/dist/esm/{index-0d124a57.js → index-3743d31f.js} +12 -4
- package/dist/esm/index.js +5 -4
- package/dist/esm/{javascript-ac057954.js → javascript-04a3f866.js} +5 -5
- package/dist/esm/{jsonMode-ea8fa529.js → jsonMode-ee8bb2ea.js} +4 -4
- package/dist/esm/{arcade-defaults-811bdd4d.js → language-defaults-base-52a397f5.js} +82 -142
- package/dist/esm/loader.js +6 -6
- package/dist/esm/sql-expr-defaults-f7c2d5ef.js +1274 -0
- package/dist/esm/sql-expr-mode-433b4a39.js +21835 -0
- package/dist/esm/{tsMode-af9c3001.js → tsMode-c80c462e.js} +4 -4
- package/dist/esm/{typescript-baec45d6.js → typescript-a9b8caa7.js} +4 -4
- package/dist/loader/cdn.js +2 -2
- package/dist/loader/index.cjs.js +2 -2
- package/dist/loader/index.es2017.js +2 -2
- package/dist/loader/index.js +2 -2
- 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 +73 -0
- 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 +148 -70
- 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 +21 -0
- package/dist/types/utils/arcade-monaco/arcade-contribution.d.ts +1 -24
- package/dist/types/utils/arcade-monaco/arcade-defaults.d.ts +12 -49
- package/dist/types/utils/arcade-monaco/arcade-language-features.d.ts +6 -4
- package/dist/types/utils/arcade-monaco/arcade-mode.d.ts +3 -2
- package/dist/types/utils/arcade-monaco/arcade-service-accessors.d.ts +31 -0
- package/dist/types/utils/arcade-monaco/arcade-worker-manager.d.ts +3 -2
- package/dist/types/utils/arcade-monaco/arcade.worker.d.ts +5 -5
- package/dist/types/utils/arcade-monaco/types.d.ts +6 -35
- package/dist/types/utils/language-defaults-base.d.ts +69 -0
- package/dist/types/utils/profile/predefined-profile.d.ts +3 -1
- package/dist/types/utils/profile/types.d.ts +29 -69
- package/dist/types/utils/profile/utils.d.ts +4 -7
- 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/libraries/date/properties/index.d.ts +59 -0
- package/dist/types/utils/sql-expr-monaco/libraries/numeric/properties/index.d.ts +295 -0
- package/dist/types/utils/sql-expr-monaco/libraries/string/properties/index.d.ts +135 -0
- package/dist/types/utils/sql-expr-monaco/sql-expr-completion.d.ts +6 -0
- package/dist/types/utils/sql-expr-monaco/sql-expr-contribution.d.ts +11 -0
- package/dist/types/utils/sql-expr-monaco/sql-expr-defaults.d.ts +22 -0
- package/dist/types/utils/sql-expr-monaco/sql-expr-language-features.d.ts +61 -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 +10 -0
- package/dist/types/utils/sql-expr-monaco/sql-expr-validation-adapter.d.ts +3 -0
- package/dist/types/utils/sql-expr-monaco/sql-expr-validation-diagnostic-adapter.d.ts +41 -0
- package/dist/types/utils/sql-expr-monaco/sql-expr-validation-utils.d.ts +99 -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 +15 -0
- package/dist/types/utils/sql-expr-monaco/sql-expr.worker.d.ts +21 -0
- package/dist/types/utils/sql-expr-monaco/types.d.ts +91 -0
- package/dist/types/utils/sql-expr-profile/predefined-profile.d.ts +2 -0
- package/package.json +23 -17
- package/dist/arcgis-coding-components/p-98cf909d.js +0 -6
- package/dist/arcgis-coding-components/p-bf047552.entry.js +0 -6
- package/dist/arcgis-coding-components/p-f602fc86.js +0 -6
- package/dist/cjs/arcade-mode-8424eafa.js +0 -595
- package/dist/components/arcade-contribution.js +0 -181
- package/dist/components/arcgis-arcade-api.d.ts +0 -11
- package/dist/components/arcgis-arcade-api.js +0 -11
- package/dist/components/chunk-2CDDVOQU.js +0 -1364
- package/dist/types/components/arcade-api/arcade-api.d.ts +0 -45
- package/dist/types/components/arcade-api/t9n-types.d.ts +0 -8
- 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/arcgis-coding-components/assets/{arcade-api/t9n/arcade-api.t9n.ar.json → language-api-panel/t9n/language-api-panel.t9n.ar.json} +0 -0
- /package/dist/arcgis-coding-components/assets/{arcade-api/t9n/arcade-api.t9n.bg.json → language-api-panel/t9n/language-api-panel.t9n.bg.json} +0 -0
- /package/dist/arcgis-coding-components/assets/{arcade-api/t9n/arcade-api.t9n.bs.json → language-api-panel/t9n/language-api-panel.t9n.bs.json} +0 -0
- /package/dist/arcgis-coding-components/assets/{arcade-api/t9n/arcade-api.t9n.ca.json → language-api-panel/t9n/language-api-panel.t9n.ca.json} +0 -0
- /package/dist/arcgis-coding-components/assets/{arcade-api/t9n/arcade-api.t9n.cs.json → language-api-panel/t9n/language-api-panel.t9n.cs.json} +0 -0
- /package/dist/arcgis-coding-components/assets/{arcade-api/t9n/arcade-api.t9n.da.json → language-api-panel/t9n/language-api-panel.t9n.da.json} +0 -0
- /package/dist/arcgis-coding-components/assets/{arcade-api/t9n/arcade-api.t9n.de.json → language-api-panel/t9n/language-api-panel.t9n.de.json} +0 -0
- /package/dist/arcgis-coding-components/assets/{arcade-api/t9n/arcade-api.t9n.el.json → language-api-panel/t9n/language-api-panel.t9n.el.json} +0 -0
- /package/dist/arcgis-coding-components/assets/{arcade-api/t9n/arcade-api.t9n.en.json → language-api-panel/t9n/language-api-panel.t9n.en.json} +0 -0
- /package/dist/arcgis-coding-components/assets/{arcade-api/t9n/arcade-api.t9n.es.json → language-api-panel/t9n/language-api-panel.t9n.es.json} +0 -0
- /package/dist/arcgis-coding-components/assets/{arcade-api/t9n/arcade-api.t9n.et.json → language-api-panel/t9n/language-api-panel.t9n.et.json} +0 -0
- /package/dist/arcgis-coding-components/assets/{arcade-api/t9n/arcade-api.t9n.fi.json → language-api-panel/t9n/language-api-panel.t9n.fi.json} +0 -0
- /package/dist/arcgis-coding-components/assets/{arcade-api/t9n/arcade-api.t9n.fr.json → language-api-panel/t9n/language-api-panel.t9n.fr.json} +0 -0
- /package/dist/arcgis-coding-components/assets/{arcade-api/t9n/arcade-api.t9n.he.json → language-api-panel/t9n/language-api-panel.t9n.he.json} +0 -0
- /package/dist/arcgis-coding-components/assets/{arcade-api/t9n/arcade-api.t9n.hr.json → language-api-panel/t9n/language-api-panel.t9n.hr.json} +0 -0
- /package/dist/arcgis-coding-components/assets/{arcade-api/t9n/arcade-api.t9n.hu.json → language-api-panel/t9n/language-api-panel.t9n.hu.json} +0 -0
- /package/dist/arcgis-coding-components/assets/{arcade-api/t9n/arcade-api.t9n.id.json → language-api-panel/t9n/language-api-panel.t9n.id.json} +0 -0
- /package/dist/arcgis-coding-components/assets/{arcade-api/t9n/arcade-api.t9n.it.json → language-api-panel/t9n/language-api-panel.t9n.it.json} +0 -0
- /package/dist/arcgis-coding-components/assets/{arcade-api/t9n/arcade-api.t9n.ja.json → language-api-panel/t9n/language-api-panel.t9n.ja.json} +0 -0
- /package/dist/arcgis-coding-components/assets/{arcade-api/t9n/arcade-api.t9n.ko.json → language-api-panel/t9n/language-api-panel.t9n.ko.json} +0 -0
- /package/dist/arcgis-coding-components/assets/{arcade-api/t9n/arcade-api.t9n.lt.json → language-api-panel/t9n/language-api-panel.t9n.lt.json} +0 -0
- /package/dist/arcgis-coding-components/assets/{arcade-api/t9n/arcade-api.t9n.lv.json → language-api-panel/t9n/language-api-panel.t9n.lv.json} +0 -0
- /package/dist/arcgis-coding-components/assets/{arcade-api/t9n/arcade-api.t9n.nb.json → language-api-panel/t9n/language-api-panel.t9n.nb.json} +0 -0
- /package/dist/arcgis-coding-components/assets/{arcade-api/t9n/arcade-api.t9n.nl.json → language-api-panel/t9n/language-api-panel.t9n.nl.json} +0 -0
- /package/dist/arcgis-coding-components/assets/{arcade-api/t9n/arcade-api.t9n.pl.json → language-api-panel/t9n/language-api-panel.t9n.pl.json} +0 -0
- /package/dist/arcgis-coding-components/assets/{arcade-api/t9n/arcade-api.t9n.pt-BR.json → language-api-panel/t9n/language-api-panel.t9n.pt-BR.json} +0 -0
- /package/dist/arcgis-coding-components/assets/{arcade-api/t9n/arcade-api.t9n.pt-PT.json → language-api-panel/t9n/language-api-panel.t9n.pt-PT.json} +0 -0
- /package/dist/arcgis-coding-components/assets/{arcade-api/t9n/arcade-api.t9n.ro.json → language-api-panel/t9n/language-api-panel.t9n.ro.json} +0 -0
- /package/dist/arcgis-coding-components/assets/{arcade-api/t9n/arcade-api.t9n.ru.json → language-api-panel/t9n/language-api-panel.t9n.ru.json} +0 -0
- /package/dist/arcgis-coding-components/assets/{arcade-api/t9n/arcade-api.t9n.sk.json → language-api-panel/t9n/language-api-panel.t9n.sk.json} +0 -0
- /package/dist/arcgis-coding-components/assets/{arcade-api/t9n/arcade-api.t9n.sl.json → language-api-panel/t9n/language-api-panel.t9n.sl.json} +0 -0
- /package/dist/arcgis-coding-components/assets/{arcade-api/t9n/arcade-api.t9n.sr.json → language-api-panel/t9n/language-api-panel.t9n.sr.json} +0 -0
- /package/dist/arcgis-coding-components/assets/{arcade-api/t9n/arcade-api.t9n.sv.json → language-api-panel/t9n/language-api-panel.t9n.sv.json} +0 -0
- /package/dist/arcgis-coding-components/assets/{arcade-api/t9n/arcade-api.t9n.th.json → language-api-panel/t9n/language-api-panel.t9n.th.json} +0 -0
- /package/dist/arcgis-coding-components/assets/{arcade-api/t9n/arcade-api.t9n.tr.json → language-api-panel/t9n/language-api-panel.t9n.tr.json} +0 -0
- /package/dist/arcgis-coding-components/assets/{arcade-api/t9n/arcade-api.t9n.uk.json → language-api-panel/t9n/language-api-panel.t9n.uk.json} +0 -0
- /package/dist/arcgis-coding-components/assets/{arcade-api/t9n/arcade-api.t9n.vi.json → language-api-panel/t9n/language-api-panel.t9n.vi.json} +0 -0
- /package/dist/arcgis-coding-components/assets/{arcade-api/t9n/arcade-api.t9n.zh-CN.json → language-api-panel/t9n/language-api-panel.t9n.zh-CN.json} +0 -0
- /package/dist/arcgis-coding-components/assets/{arcade-api/t9n/arcade-api.t9n.zh-HK.json → language-api-panel/t9n/language-api-panel.t9n.zh-HK.json} +0 -0
- /package/dist/arcgis-coding-components/assets/{arcade-api/t9n/arcade-api.t9n.zh-TW.json → language-api-panel/t9n/language-api-panel.t9n.zh-TW.json} +0 -0
|
@@ -0,0 +1,99 @@
|
|
|
1
|
+
import * as monaco from "monaco-editor";
|
|
2
|
+
import type { SQLNode } from "./DependentFiles/WhereGrammar";
|
|
3
|
+
import type { ArcGISFieldType, PeggyError, SqlExpressionLiteral, PeggyLocation } from "./types";
|
|
4
|
+
export interface ValidationSyntaxContext {
|
|
5
|
+
token: string;
|
|
6
|
+
range: monaco.IRange;
|
|
7
|
+
startDelimiter?: boolean;
|
|
8
|
+
content?: ValidationSyntaxContext[];
|
|
9
|
+
}
|
|
10
|
+
export declare enum TokenType {
|
|
11
|
+
Single = "SINGLE",
|
|
12
|
+
EmptyField = "EMPTY_FIELD",
|
|
13
|
+
Error = "ERROR",
|
|
14
|
+
Field = "FIELD",
|
|
15
|
+
KeywordIn = "IN",
|
|
16
|
+
KeywordNotIn = "NOT IN",
|
|
17
|
+
KeywordBetween = "BETWEEN",
|
|
18
|
+
KeywordNotBetween = "NOT BETWEEN",
|
|
19
|
+
List = "LIST",
|
|
20
|
+
Negation = "NOT",
|
|
21
|
+
Number = "NUMBER",
|
|
22
|
+
Operator = "OPERATOR",
|
|
23
|
+
Parentheses = "PARENTHESES",
|
|
24
|
+
String = "STRING",
|
|
25
|
+
Unknown = "UNKNOWN"
|
|
26
|
+
}
|
|
27
|
+
export declare enum Token {
|
|
28
|
+
Case = "CASE",
|
|
29
|
+
CaseElse = "ELSE",
|
|
30
|
+
CaseThen = "THEN",
|
|
31
|
+
CaseWhen = "WHEN",
|
|
32
|
+
Comma = ",",
|
|
33
|
+
DoubleQuote = "\"",
|
|
34
|
+
Empty = "",
|
|
35
|
+
End = "END",
|
|
36
|
+
Interval = "INTERVAL",
|
|
37
|
+
LeftParentheses = "(",
|
|
38
|
+
NewLine = "\n",
|
|
39
|
+
RightParentheses = ")",
|
|
40
|
+
SingleQuote = "'",
|
|
41
|
+
WhiteSpace = " "
|
|
42
|
+
}
|
|
43
|
+
export declare enum BinaryOperator {
|
|
44
|
+
And = "AND",
|
|
45
|
+
Or = "OR",
|
|
46
|
+
Is = "IS",
|
|
47
|
+
IsNot = "ISNOT",
|
|
48
|
+
In = "IN",
|
|
49
|
+
NotIn = "NOT IN",
|
|
50
|
+
Between = "BETWEEN",
|
|
51
|
+
NotBetween = "NOTBETWEEN",
|
|
52
|
+
Like = "LIKE",
|
|
53
|
+
NotLike = "NOT LIKE",
|
|
54
|
+
NotEquals = "<>",
|
|
55
|
+
LessThan = "<",
|
|
56
|
+
GreaterThan = ">",
|
|
57
|
+
GreaterThanEqual = ">=",
|
|
58
|
+
LessThanEqual = "<=",
|
|
59
|
+
Equal = "=",
|
|
60
|
+
Multiply = "*",
|
|
61
|
+
Subtract = "-",
|
|
62
|
+
Add = "+",
|
|
63
|
+
Divide = "/",
|
|
64
|
+
Concatenate = "||"
|
|
65
|
+
}
|
|
66
|
+
export declare enum NodeReturnType {
|
|
67
|
+
Boolean = "BOOLEAN",
|
|
68
|
+
Double = "DOUBLE",
|
|
69
|
+
ExpressionList = "EXPRESSION-LIST",
|
|
70
|
+
Float = "FLOAT",
|
|
71
|
+
Integer = "INTEGER",
|
|
72
|
+
Null = "NULL",
|
|
73
|
+
Number = "NUMBER",
|
|
74
|
+
Real = "REAL",
|
|
75
|
+
String = "STRING",
|
|
76
|
+
SmallInt = "SMALLINT",
|
|
77
|
+
UnknownFunction = "UNKNOWN_FUNCTION"
|
|
78
|
+
}
|
|
79
|
+
export declare enum CallableExpressionResponse {
|
|
80
|
+
Function = "FUNCTION",
|
|
81
|
+
ExpressionList = "EXPRESSION_LIST",
|
|
82
|
+
Success = "SUCCESS",
|
|
83
|
+
NonCallable = "NON_CALLABLE"
|
|
84
|
+
}
|
|
85
|
+
export declare const tokenizationRegex: RegExp;
|
|
86
|
+
export declare const isValidIntervalValue: RegExp;
|
|
87
|
+
export declare const validOps: string[];
|
|
88
|
+
export declare const relationalTypes: SqlExpressionLiteral[];
|
|
89
|
+
export declare const qualifiers: TokenType[];
|
|
90
|
+
export declare function convertArcgisTypeToSqlReturnType(arcgisType: ArcGISFieldType): SqlExpressionLiteral;
|
|
91
|
+
export declare const identifyNodeReturnType: (node: SQLNode, fields: __esri.FeatureLayer["fields"]) => SqlExpressionLiteral | "time-only" | "unknown_function";
|
|
92
|
+
export declare const isNumericType: (type: SqlExpressionLiteral) => boolean;
|
|
93
|
+
export declare const formatListToString: (types: SqlExpressionLiteral[], delimiter: string) => string;
|
|
94
|
+
export declare const formatType: (type: string) => string;
|
|
95
|
+
export declare const getValueFromNode: (node: SQLNode) => number | string;
|
|
96
|
+
export declare const addNewMarker: (message: string, range: monaco.IRange | PeggyLocation, markers: monaco.editor.IMarkerData[], isNodeFormat?: boolean) => void;
|
|
97
|
+
export declare const validateTypeMatch: (node: SQLNode, expectedType: NodeReturnType, markers: monaco.editor.IMarkerData[], fields: __esri.FeatureLayer["fields"]) => void;
|
|
98
|
+
export declare function isSyntaxError(error: PeggyError): boolean;
|
|
99
|
+
export declare function formatSyntaxError(error: PeggyError): string;
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
import type { SQLNode } from "./DependentFiles/WhereGrammar";
|
|
2
|
+
import type { editor } from "monaco-editor";
|
|
3
|
+
import type { ApiCategory } from "@arcgis/languages-api-utils";
|
|
4
|
+
export declare class SQLExpressionValidation {
|
|
5
|
+
private layer;
|
|
6
|
+
private callStack;
|
|
7
|
+
private _sdkFunctions;
|
|
8
|
+
markers: editor.IMarkerData[];
|
|
9
|
+
constructor(layer: __esri.FeatureLayer, sdkLibrary: ApiCategory[]);
|
|
10
|
+
/**
|
|
11
|
+
* validates the SQL Expression by generating an AST and traversing it
|
|
12
|
+
* @param modelContent The SQL Expression to validate
|
|
13
|
+
*/
|
|
14
|
+
validateModel(modelContent: string): void;
|
|
15
|
+
/**
|
|
16
|
+
* a DFS traversal of the SQL Expression AST
|
|
17
|
+
* @param node The node to traverse, start with the root node
|
|
18
|
+
*/
|
|
19
|
+
traverse(node: SQLNode): void;
|
|
20
|
+
/**
|
|
21
|
+
* Validates a nodes syntax and types
|
|
22
|
+
* @param node The node to validate
|
|
23
|
+
*/
|
|
24
|
+
private _validateNode;
|
|
25
|
+
private _handleParserFailure;
|
|
26
|
+
/**
|
|
27
|
+
* Formats a node's range into a Monaco IRange object.
|
|
28
|
+
* @param node
|
|
29
|
+
*/
|
|
30
|
+
private _getRange;
|
|
31
|
+
/**
|
|
32
|
+
* finds the function in the SDK library.
|
|
33
|
+
* @param name name of the function
|
|
34
|
+
*/
|
|
35
|
+
private _getFunction;
|
|
36
|
+
/**
|
|
37
|
+
* looks at the node and finds any children attached to it. If there are children, it will traverse them.
|
|
38
|
+
* @param node The current node to traverse
|
|
39
|
+
*/
|
|
40
|
+
private _traverseChildren;
|
|
41
|
+
}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import type { Uri } from "monaco-editor";
|
|
2
|
+
import type { ISqlExprWorker } from "./types";
|
|
3
|
+
import type { SqlExprDefaults } from "./sql-expr-defaults";
|
|
4
|
+
/**
|
|
5
|
+
* Manager to create our sql-expression worker and client proxy
|
|
6
|
+
*/
|
|
7
|
+
export declare class SqlExprWorkerManager {
|
|
8
|
+
private _defaults;
|
|
9
|
+
private _worker;
|
|
10
|
+
private _client;
|
|
11
|
+
constructor(_defaults: SqlExprDefaults);
|
|
12
|
+
stopWorker(): void;
|
|
13
|
+
private _getClientProxy;
|
|
14
|
+
getLanguageServiceWorker(...resources: Uri[]): Promise<ISqlExprWorker>;
|
|
15
|
+
}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import { type languages, type worker } from "monaco-editor";
|
|
2
|
+
import type { ISqlExprWorker } from "./types";
|
|
3
|
+
type TodoFixMe = any;
|
|
4
|
+
type Diagnostic = TodoFixMe;
|
|
5
|
+
interface IWorkerData {
|
|
6
|
+
languageId: string;
|
|
7
|
+
languageOptions?: TodoFixMe;
|
|
8
|
+
}
|
|
9
|
+
/**
|
|
10
|
+
* The ArcGIS SQL Expression Web Worker is leveraging the Arcade Language Service to provide the editor functionalities.
|
|
11
|
+
* The ArcGIS SQL Expression Web Worker is proxied by the Monaco worker server.
|
|
12
|
+
*/
|
|
13
|
+
export declare class SqlExprWorker implements ISqlExprWorker {
|
|
14
|
+
private _ctx;
|
|
15
|
+
private _languageId;
|
|
16
|
+
constructor(_ctx: worker.IWorkerContext, { languageId }: IWorkerData);
|
|
17
|
+
doValidation(modelId: string): Promise<Diagnostic[]>;
|
|
18
|
+
doComplete(modelId: string): Promise<languages.CompletionList>;
|
|
19
|
+
private _getTextDocument;
|
|
20
|
+
}
|
|
21
|
+
export {};
|
|
@@ -0,0 +1,91 @@
|
|
|
1
|
+
import type { Thenable, Uri, languages } from "monaco-editor";
|
|
2
|
+
import type { Position } from "vscode-languageserver-types";
|
|
3
|
+
import type { PeggySyntaxError, FileRange } from "./PeggyGrammar/sql92grammar";
|
|
4
|
+
import type { DataTypeNode, SQLNode } from "./DependentFiles/WhereGrammar";
|
|
5
|
+
import type { ApiContext } from "@arcgis/languages-api-utils";
|
|
6
|
+
type TodoFixMe = any;
|
|
7
|
+
type Diagnostic = TodoFixMe;
|
|
8
|
+
export interface ISqlExprWorker {
|
|
9
|
+
doValidation: (modelId: string, context: ApiContext) => Thenable<Diagnostic[]>;
|
|
10
|
+
doComplete: (modelId: string, position: Position) => Thenable<languages.CompletionList>;
|
|
11
|
+
}
|
|
12
|
+
export type ISqlExprWorkerAccessor = (...more: Uri[]) => Thenable<ISqlExprWorker>;
|
|
13
|
+
export interface ApiContextType {
|
|
14
|
+
description: string;
|
|
15
|
+
parameters: {
|
|
16
|
+
name: string;
|
|
17
|
+
type: string[] | string;
|
|
18
|
+
description: string;
|
|
19
|
+
}[];
|
|
20
|
+
returnValue: string[] | string;
|
|
21
|
+
examples: {
|
|
22
|
+
code: string;
|
|
23
|
+
description: string;
|
|
24
|
+
}[];
|
|
25
|
+
snippet: string[] | string;
|
|
26
|
+
name: string;
|
|
27
|
+
bundle: string;
|
|
28
|
+
}
|
|
29
|
+
/**
|
|
30
|
+
* SQL Expression Literal. These are the types that occur within nodes of the AST generated by the peggy parser.
|
|
31
|
+
**/
|
|
32
|
+
export type SqlExpressionLiteral =
|
|
33
|
+
/**
|
|
34
|
+
* "date"
|
|
35
|
+
* "float"
|
|
36
|
+
* "integer"
|
|
37
|
+
* "real"
|
|
38
|
+
* "smallint"
|
|
39
|
+
* "time"
|
|
40
|
+
* "timestamp"
|
|
41
|
+
* "varchar"
|
|
42
|
+
*/
|
|
43
|
+
DataTypeNode["value"]["type"]
|
|
44
|
+
/**
|
|
45
|
+
* "case-expression"
|
|
46
|
+
* "when-clause"
|
|
47
|
+
* "parameter"
|
|
48
|
+
* "expression-list"
|
|
49
|
+
* "unary-expression"
|
|
50
|
+
* "binary-expression"
|
|
51
|
+
* "null"
|
|
52
|
+
* "boolean"
|
|
53
|
+
* "string"
|
|
54
|
+
* "number"
|
|
55
|
+
* "date"
|
|
56
|
+
* "time"
|
|
57
|
+
* "timestamp"
|
|
58
|
+
* "column-reference"
|
|
59
|
+
* "current-time"
|
|
60
|
+
* "interval"
|
|
61
|
+
* "interval-qualifier"
|
|
62
|
+
* "interval-period"
|
|
63
|
+
* "function"
|
|
64
|
+
* "data-type"
|
|
65
|
+
*/
|
|
66
|
+
| SQLNode["type"];
|
|
67
|
+
export type ArcGISFieldType =
|
|
68
|
+
/**
|
|
69
|
+
* "string"
|
|
70
|
+
* "date"
|
|
71
|
+
* "integer"
|
|
72
|
+
* "small-integer"
|
|
73
|
+
* "big-integer"
|
|
74
|
+
* "single"
|
|
75
|
+
* "double"
|
|
76
|
+
* "long"
|
|
77
|
+
* "date-only"
|
|
78
|
+
* "time-only"
|
|
79
|
+
* "timestamp-offset"
|
|
80
|
+
* "oid"
|
|
81
|
+
* "geometry"
|
|
82
|
+
* "blob"
|
|
83
|
+
* "raster"
|
|
84
|
+
* "guid"
|
|
85
|
+
* "global-id"
|
|
86
|
+
* "xml"
|
|
87
|
+
*/
|
|
88
|
+
__esri.Field["type"];
|
|
89
|
+
export type PeggyError = PeggySyntaxError;
|
|
90
|
+
export type PeggyLocation = FileRange;
|
|
91
|
+
export {};
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@arcgis/coding-components",
|
|
3
|
-
"version": "4.
|
|
3
|
+
"version": "4.31.0-next.10",
|
|
4
4
|
"description": "Contains components for editing code in different languages. The currently supported languages are html, css, json, TypeScript, JavaScript, and Arcade.",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"ArcGIS",
|
|
@@ -37,64 +37,70 @@
|
|
|
37
37
|
"build:components": "stencil build",
|
|
38
38
|
"build:components:dev": "stencil build --dev",
|
|
39
39
|
"build:monaco-workers": "tsx ./scripts/build-monaco-workers.ts",
|
|
40
|
-
"
|
|
40
|
+
"build:peggy": "peggy --plugin ../../../node_modules/ts-pegjs/dist/tspegjs -o ./src/utils/sql-expr-monaco/PeggyGrammar/sql92grammar.ts ./src/utils/sql-expr-monaco/PeggyGrammar/sql92grammar.peggy",
|
|
41
|
+
"test": "stencil test --spec --no-build",
|
|
41
42
|
"test:e2e": "stencil test --e2e",
|
|
43
|
+
"test:spec": "stencil test --spec",
|
|
42
44
|
"test.watch": "stencil test --spec --e2e --watchAll",
|
|
43
45
|
"clean": "rimraf ./node_modules ./storybook-static ./storybook-static-external ./turbo ./dist ./www",
|
|
44
|
-
"pre": "rimraf ./dist ./www && yarn
|
|
46
|
+
"pre": "rimraf ./dist ./www && yarn build:monaco-workers",
|
|
45
47
|
"pre:dev": "yarn pre --sourcemap && yarn awc create-mock-doc",
|
|
46
48
|
"update:storybook": "npx storybook@latest upgrade",
|
|
47
49
|
"generate": "stencil generate"
|
|
48
50
|
},
|
|
49
51
|
"dependencies": {
|
|
50
|
-
"@arcgis/arcade-languageservice": "4.
|
|
51
|
-
"@arcgis/components-controllers": "4.
|
|
52
|
-
"@arcgis/components-utils": "4.
|
|
52
|
+
"@arcgis/arcade-languageservice": "4.31.0-next.10",
|
|
53
|
+
"@arcgis/components-controllers": "4.31.0-next.10",
|
|
54
|
+
"@arcgis/components-utils": "4.31.0-next.10",
|
|
55
|
+
"@arcgis/languages-api-utils": "4.31.0-next.10",
|
|
53
56
|
"@stencil/core": "4.17.1",
|
|
54
57
|
"monaco-editor": "0.45.0",
|
|
55
58
|
"vscode-languageserver-types": "^3.17.5"
|
|
56
59
|
},
|
|
57
60
|
"devDependencies": {
|
|
58
|
-
"@arcgis/components-plugins": "4.
|
|
59
|
-
"@arcgis/core": "
|
|
60
|
-
"@arcgis/core-adapter": "4.
|
|
61
|
-
"@arcgis/storybook-utils": "4.
|
|
62
|
-
"@arcgis/typescript-config": "4.
|
|
61
|
+
"@arcgis/components-plugins": "4.31.0-next.10",
|
|
62
|
+
"@arcgis/core": ">=4.31.0-next <4.32",
|
|
63
|
+
"@arcgis/core-adapter": "4.31.0-next.10",
|
|
64
|
+
"@arcgis/storybook-utils": "4.31.0-next.10",
|
|
65
|
+
"@arcgis/typescript-config": "4.31.0-next.10",
|
|
63
66
|
"@esri/calcite-components": "^2.8.0",
|
|
64
67
|
"@stencil/angular-output-target": "0.8.4",
|
|
65
68
|
"@stencil/react-output-target": "0.5.3",
|
|
66
69
|
"@stencil/sass": "^3.0.0",
|
|
67
70
|
"@types/estree": "^1.0.0",
|
|
68
71
|
"@types/jest": "^29.5.0",
|
|
72
|
+
"@types/luxon": "^3",
|
|
69
73
|
"@types/marked": "^5.0.2",
|
|
70
74
|
"@types/node": "^20.2.5",
|
|
71
75
|
"@types/postcss-url": "^10.0.0",
|
|
72
76
|
"@types/resize-observer-browser": "^0.1.7",
|
|
73
77
|
"chromatic": "^11.3.0",
|
|
74
|
-
"esbuild": "^0.
|
|
78
|
+
"esbuild": "^0.21.4",
|
|
75
79
|
"eslint": "^8.55.0",
|
|
76
80
|
"jest": "^29.5.0",
|
|
77
81
|
"jest-cli": "^29.5.0",
|
|
78
82
|
"magic-string": "^0.30.0",
|
|
79
83
|
"marked": "^5.1.2",
|
|
84
|
+
"peggy": "3.0.2",
|
|
80
85
|
"postcss": ">=8.4.31",
|
|
81
86
|
"postcss-discard-comments": "^5.1.2",
|
|
82
87
|
"postcss-url": "^10.1.3",
|
|
83
88
|
"puppeteer": "^21.9.0",
|
|
84
89
|
"resolve-pkg": "^2.0.0",
|
|
85
90
|
"rimraf": "^5.0.0",
|
|
86
|
-
"rollup": "^
|
|
91
|
+
"rollup": "^4.13.0",
|
|
87
92
|
"rollup-plugin-import-css": "^3.1.0",
|
|
88
93
|
"rollup-plugin-node-polyfills": "^0.2.1",
|
|
89
|
-
"storybook": "^8.
|
|
94
|
+
"storybook": "^8.1.10",
|
|
95
|
+
"ts-pegjs": "^4.2.1",
|
|
90
96
|
"tsx": "^4.7.0",
|
|
91
|
-
"typescript": "~5.
|
|
97
|
+
"typescript": "~5.4.0",
|
|
92
98
|
"vscode-languageserver-textdocument": "^1.0.11",
|
|
93
99
|
"yargs": "^17.1.1"
|
|
94
100
|
},
|
|
95
101
|
"peerDependencies": {
|
|
96
|
-
"@arcgis/core": "
|
|
102
|
+
"@arcgis/core": ">=4.31.0-next <4.32",
|
|
97
103
|
"@esri/calcite-components": "^2.8.0"
|
|
98
104
|
},
|
|
99
|
-
"gitHead": "
|
|
105
|
+
"gitHead": "9da75874fced6f0633cf2052218547d2c4627ee2"
|
|
100
106
|
}
|
|
@@ -1,6 +0,0 @@
|
|
|
1
|
-
/*!
|
|
2
|
-
* All material copyright Esri, All Rights Reserved, unless otherwise specified.
|
|
3
|
-
* See https://js.arcgis.com/4.30/esri/copyright.txt for details.
|
|
4
|
-
* v4.30.0
|
|
5
|
-
*/
|
|
6
|
-
import{E as e,e as t,M as s,R as n,m as r,F as i,G as o}from"./p-69ef969a.js";import"./p-ed5c78ce.js";var a=[[],[],[]];["++","--"].forEach((e=>a[e.length-1]?.push(e))),["-","+","!","~"].forEach((e=>a[e.length-1]?.push(e))),["||","&&"].forEach((e=>a[e.length-1]?.push(e))),["=","/=","*=","%=","+=","-="].forEach((e=>a[e.length-1]?.push(e))),["|","&",">>","<<",">>>","^","==","!=","<","<=",">",">=","+","-","*","/","%"].forEach((e=>a[e.length-1]?.push(e)));var c=Object.values({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"});Object.values({False:"false",Null:"null",True:"true"}).map((t=>({label:t,kind:e.exports.CompletionItemKind.Constant}))),c.map((t=>({label:t,kind:e.exports.CompletionItemKind.Keyword})));const u={wordPattern:/(-?\d*\.\d\w*)|([^`~!#%\^&\*\(\)\-=\+\[\{\]\}\\\|;:'",\.<>\/\?\s]+)/gu,comments:{lineComment:"//",blockComment:["/*","*/"]},brackets:[["{","}"],["[","]"],["(",")"]],autoClosingPairs:[{open:"{",close:"}"},{open:"[",close:"]"},{open:"(",close:")"},{open:'"',close:'"',notIn:["string"]},{open:"'",close:"'",notIn:["string","comment"]},{open:"`",close:"`",notIn:["string","comment"]}],autoCloseBefore:";:.,=}])` \n\t",folding:{markers:{start:/^\s*\/\/\s*#?region\b/u,end:/^\s*\/\/\s*#?endregion\b/u}},indentationRules:{decreaseIndentPattern:/^((?!.*?\/\*).*\*\/)?\s*[\}\]\)].*$/u,increaseIndentPattern:/^((?!\/\/).)*(\{[^}"'`]*|\([^)"'`]*|\[[^\]"'`]*)$/u}},l={defaultToken:"invalid",tokenPostfix:".arc",ignoreCase:!0,keywords:c.filter((e=>"from"!==e)),operators:["<=",">=","==","!=","+","-","*","/","%","++","--","<<",">>",">>>","&","|","^","!","~","&&","||","=","+=","-=","*=","**=","/=","%="],constants:["true","false","null"],symbols:/[=><!~?:&|+\-*\/\^%]+/u,escapes:/\\(?:[abfnrtv\\"']|x[0-9A-Fa-f]{1,4}|u[0-9A-Fa-f]{4}|U[0-9A-Fa-f]{8})/u,digits:/\d+(_+\d+)*/u,octaldigits:/[0-7]+(_+[0-7]+)*/u,binarydigits:/[0-1]+(_+[0-1]+)*/u,hexdigits:/[[0-9a-fA-F]+(_+[0-9a-fA-F]+)*/u,regexpctl:/[(){}\[\]\$\^|\-*+?\.]/u,regexpesc:/\\(?:[bBdDfnrstvwWn0\\\/]|@regexpctl|c[A-Z]|x[0-9a-fA-F]{2}|u[0-9a-fA-F]{4})/u,tokenizer:{root:[[/[{}]/u,"delimiter.bracket"],{include:"common"}],common:[[/import(?=\s)/u,{token:"keyword",next:"@import"}],[/[a-z_$][\w$]*/u,{cases:{"@constants":"constant","@keywords":"keyword","@default":"identifier"}}],{include:"@whitespace"},[/\/(?=([^\\\/]|\\.)+\/([gimsuy]*)(\s*)(\.|;|\/|,|\)|\]|\}|$))/u,{token:"regexp",bracket:"@open",next:"@regexp"}],[/[()\[\]]/u,"@brackets"],[/[<>](?!@symbols)/u,"@brackets"],[/@symbols/u,{cases:{"@operators":"delimiter","@default":""}}],[/(@digits)[eE]([\-+]?(@digits))?/u,"number"],[/(@digits)\.(@digits)([eE][\-+]?(@digits))?/u,"number"],[/0[xX](@hexdigits)/u,"number"],[/0[oO]?(@octaldigits)/u,"number"],[/0[bB](@binarydigits)/u,"number"],[/(@digits)/u,"number"],[/[;,.]/u,"delimiter"],[/"([^"\\]|\\.)*$/u,"string.invalid"],[/'([^'\\]|\\.)*$/u,"string.invalid"],[/"/u,"string","@string_double"],[/'/u,"string","@string_single"],[/`/u,"string","@string_backtick"]],import:[[/import(?=\s)/u,{token:"keyword"}],{include:"@whitespace"},[/[a-z_$][\w$]*/u,"identifier"],{include:"@whitespace"},[/from/u,{token:"keyword",next:"@popall"}]],whitespace:[[/[ \t\r\n]+/u,""],[/\/\*/u,"comment","@comment"],[/\/\/.*$/u,"comment"]],comment:[[/[^\/*]+/u,"comment"],[/\*\//u,"comment","@pop"],[/[\/*]/u,"comment"]],regexp:[[/(\{)(\d+(?:,\d*)?)(\})/u,["regexp.escape.control","regexp.escape.control","regexp.escape.control"]],[/(\[)(\^?)(?=(?:[^\]\\\/]|\\.)+)/u,["regexp.escape.control",{token:"regexp.escape.control",next:"@regexrange"}]],[/(\()(\?:|\?=|\?!)/u,["regexp.escape.control","regexp.escape.control"]],[/[()]/u,"regexp.escape.control"],[/@regexpctl/u,"regexp.escape.control"],[/[^\\\/]/u,"regexp"],[/@regexpesc/u,"regexp.escape"],[/\\\./u,"regexp.invalid"],[/(\/)([gimsuy]*)/u,[{token:"regexp",bracket:"@close",next:"@pop"},"keyword.other"]]],regexrange:[[/-/u,"regexp.escape.control"],[/\^/u,"regexp.invalid"],[/@regexpesc/u,"regexp.escape"],[/[^\]]/u,"regexp"],[/\]/u,{token:"regexp.escape.control",next:"@pop",bracket:"@close"}]],string_double:[[/[^\\"]+/u,"string"],[/@escapes/u,"string.escape"],[/\\./u,"string.escape.invalid"],[/"/u,"string","@pop"]],string_single:[[/[^\\']+/u,"string"],[/@escapes/u,"string.escape"],[/\\./u,"string.escape.invalid"],[/'/u,"string","@pop"]],string_backtick:[[/\$\{/u,{token:"delimiter.bracket",next:"@bracketCounting"}],[/[^\\`$]+/u,"string"],[/@escapes/u,"string.escape"],[/\\./u,"string.escape.invalid"],[/`/u,"string","@pop"]],bracketCounting:[[/\{/u,"delimiter.bracket","@bracketCounting"],[/\}/u,"delimiter.bracket","@pop"],{include:"common"}]}};class g{constructor(e,s,{defaults:n,diagnosticsService:r}){this._languageId=e,this._worker=s,this._disposables=[],this._listener=new Map,this._diagnosticsService=r,this._defaults=n;const o=e=>{const t=e.getLanguageId();if(t!==this._languageId)return;const s=i((()=>{this._doValidate(e,t).catch((e=>{throw e}))}));this._listener.set(e.uri.toString(),e.onDidChangeContent(s)),this._doValidate(e,t).catch(console.error)},a=e=>{const s=e.uri.toString();t.setModelMarkers(e,this._languageId,[]);const n=this._listener.get(s);n&&(n.dispose(),this._listener.delete(s))};this._disposables.push(t.onDidCreateModel(o)),this._disposables.push(t.onWillDisposeModel((e=>{a(e)}))),this._disposables.push(t.onDidChangeModelLanguage((e=>{a(e.model),o(e.model)}))),this._disposables.push(n.onDidChange((()=>{t.getModels().forEach((e=>{e.getLanguageId()===this._languageId&&(a(e),o(e))}))}))),this._disposables.push(n.onModelContextDidChange((e=>{t.getModels().forEach((t=>{t.getLanguageId()===this._languageId&&t.uri.toString()===e&&this._doValidate(t,this._languageId).catch(console.error)}))}))),this._disposables.push({dispose:()=>{this._listener.forEach((e=>e.dispose())),this._listener.clear()}}),t.getModels().forEach(o)}dispose(){this._disposables.forEach((e=>e.dispose())),this._disposables=[]}async _doValidate(e,s){if(e.isAttachedToEditor())try{const n=await this._worker(e.uri),r=this._defaults.getApiContextForModel(e.uri),i=await n.doValidation(e.uri.toString(),r),o=i.map((e=>{return{severity:p((t=e).severity),startLineNumber:t.range.start.line+1,startColumn:t.range.start.character+1,endLineNumber:t.range.end.line+1,endColumn:t.range.end.character+1,message:t.message};var t}));this._diagnosticsService.fireDiagnosticsChange(e.uri,i),t.setModelMarkers(e,s,o)}catch(e){console.error(e)}}}function p(t){switch(t){case e.exports.DiagnosticSeverity.Error:return s.Error;case e.exports.DiagnosticSeverity.Warning:return s.Warning;case e.exports.DiagnosticSeverity.Information:return s.Info;case e.exports.DiagnosticSeverity.Hint:return s.Hint;default:return s.Info}}function d(e){return new n(e.start.line+1,e.start.character+1,e.end.line+1,e.end.character+1)}function h(e){return{range:d(e.range),text:e.newText}}function m(t){const s=r.CompletionItemKind;switch(t){case e.exports.CompletionItemKind.Text:return s.Text;case e.exports.CompletionItemKind.Method:return s.Method;case e.exports.CompletionItemKind.Function:return s.Function;case e.exports.CompletionItemKind.Constructor:return s.Constructor;case e.exports.CompletionItemKind.Field:return s.Field;case e.exports.CompletionItemKind.Variable:return s.Variable;case e.exports.CompletionItemKind.Class:return s.Class;case e.exports.CompletionItemKind.Interface:return s.Interface;case e.exports.CompletionItemKind.Module:return s.Module;case e.exports.CompletionItemKind.Property:return s.Property;case e.exports.CompletionItemKind.Unit:return s.Unit;case e.exports.CompletionItemKind.Value:return s.Value;case e.exports.CompletionItemKind.Enum:return s.Enum;case e.exports.CompletionItemKind.Keyword:return s.Keyword;case e.exports.CompletionItemKind.Snippet:return s.Snippet;case e.exports.CompletionItemKind.Color:return s.Color;case e.exports.CompletionItemKind.File:return s.File;case e.exports.CompletionItemKind.Reference:return s.Reference;case e.exports.CompletionItemKind.Folder:return s.Folder;case e.exports.CompletionItemKind.EnumMember:return s.EnumMember;case e.exports.CompletionItemKind.Constant:return s.Constant;case e.exports.CompletionItemKind.Struct:return s.Struct;case e.exports.CompletionItemKind.Event:return s.Event;case e.exports.CompletionItemKind.Operator:return s.Operator;case e.exports.CompletionItemKind.TypeParameter:return s.TypeParameter;default:return s.Property}}class x{constructor(e,t){this._worker=e,this._defaults=t,this.triggerCharacters=[".","("]}async provideCompletionItems(t,s){const i=await this._worker(t.uri),o=this._defaults.getApiContextForModel(t.uri),a=await i.doComplete(t.uri.toString(),function(e){return{character:e.column-1,line:e.lineNumber-1}}(s),o),c=t.getWordUntilPosition(s),u=new n(s.lineNumber,c.startColumn,s.lineNumber,c.endColumn),l=a.items.map((t=>{const s={label:t.label,insertText:t.insertText||t.label,sortText:t.sortText,filterText:t.filterText,detail:t.detail,range:u,kind:m(t.kind)};var n;return t.textEdit&&(s.range=void 0!==(n=t.textEdit).insert&&void 0!==n.replace?{insert:d(t.textEdit.insert),replace:d(t.textEdit.replace)}:d(t.textEdit.range),s.insertText=t.textEdit.newText),t.additionalTextEdits&&(s.additionalTextEdits=t.additionalTextEdits.map(h)),t.insertTextFormat===e.exports.InsertTextFormat.Snippet&&(s.insertTextRules=r.CompletionItemInsertTextRule.InsertAsSnippet),t.documentation&&(s.documentation="string"==typeof t.documentation?t.documentation:{supportThemeIcons:!1,value:t.documentation.value,supportHtml:!0}),s}));return{incomplete:a.isIncomplete,suggestions:l}}}class f{constructor(e,t){this._worker=e,this._defaults=t}async provideDocumentFormattingEdits(e){const t=await this._worker(e.uri),s=this._defaults.getApiContextForModel(e.uri.toString());return(await t.doFormat(e.uri.toString(),s)).map((e=>({range:d(e.range),text:e.newText})))}}class k{constructor(e){this._defaults=e,this._worker=null,this._client=null,this._configChangeListener=this._defaults.onDidChange((()=>this.stopWorker()))}dispose(){this._configChangeListener.dispose(),this.stopWorker()}stopWorker(){this._worker&&(this._worker.dispose(),this._worker=null),this._client=null}async _getClientProxy(){if(!this._client){const{languageId:e,languageOptions:s}=this._defaults;this._worker=t.createWebWorker({moduleId:"ArcadeWorker",label:e,createData:{languageId:e,languageOptions:s}}),this._client=this._worker.getProxy()}return await this._client}async getLanguageServiceWorker(...e){const t=await this._getClientProxy();return await(this._worker?.withSyncedResources(e)),t}}let b;async function w(...e){return await new Promise(((t,s)=>{b?t(b(...e)):s(new Error("TypeScript not registered!"))}))}const y=new class{constructor(){this._onDiagnosticsChange=new o}get onDiagnosticsChange(){return this._onDiagnosticsChange.event}fireDiagnosticsChange(e,t){this._onDiagnosticsChange.fire({uri:e,diagnostics:t})}};function v(){return y}function C(e){const t=new k(e),s=async(...e)=>await t.getLanguageServiceWorker(...e);b=s,r.setMonarchTokensProvider(e.languageId,l),r.setLanguageConfiguration(e.languageId,u),r.registerCompletionItemProvider(e.languageId,new x(s,e)),r.registerDocumentFormattingEditProvider(e.languageId,new f(s,e)),new g(e.languageId,s,{defaults:e,diagnosticsService:y})}export{v as getArcadeDiagnosticService,w as getArcadeWorker,C as setupMode}
|