@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.
Files changed (201) hide show
  1. package/README.md +22 -3
  2. package/dist/arcgis-coding-components/arcgis-coding-components.esm.js +2 -2
  3. package/dist/arcgis-coding-components/assets/arcade-language/t9n/profile.t9n.ar.json +1 -1
  4. package/dist/arcgis-coding-components/assets/arcade-language/t9n/profile.t9n.bg.json +1 -1
  5. package/dist/arcgis-coding-components/assets/arcade-language/t9n/profile.t9n.bs.json +1 -1
  6. package/dist/arcgis-coding-components/assets/arcade-language/t9n/profile.t9n.ca.json +6 -6
  7. package/dist/arcgis-coding-components/assets/arcade-language/t9n/profile.t9n.cs.json +1 -1
  8. package/dist/arcgis-coding-components/assets/arcade-language/t9n/profile.t9n.da.json +1 -1
  9. package/dist/arcgis-coding-components/assets/arcade-language/t9n/profile.t9n.de.json +1 -1
  10. package/dist/arcgis-coding-components/assets/arcade-language/t9n/profile.t9n.el.json +1 -1
  11. package/dist/arcgis-coding-components/assets/arcade-language/t9n/profile.t9n.es.json +1 -1
  12. package/dist/arcgis-coding-components/assets/arcade-language/t9n/profile.t9n.et.json +1 -1
  13. package/dist/arcgis-coding-components/assets/arcade-language/t9n/profile.t9n.fi.json +1 -1
  14. package/dist/arcgis-coding-components/assets/arcade-language/t9n/profile.t9n.fr.json +1 -1
  15. package/dist/arcgis-coding-components/assets/arcade-language/t9n/profile.t9n.he.json +1 -1
  16. package/dist/arcgis-coding-components/assets/arcade-language/t9n/profile.t9n.hr.json +1 -1
  17. package/dist/arcgis-coding-components/assets/arcade-language/t9n/profile.t9n.id.json +1 -1
  18. package/dist/arcgis-coding-components/assets/arcade-language/t9n/profile.t9n.it.json +1 -1
  19. package/dist/arcgis-coding-components/assets/arcade-language/t9n/profile.t9n.ko.json +1 -1
  20. package/dist/arcgis-coding-components/assets/arcade-language/t9n/profile.t9n.nb.json +1 -1
  21. package/dist/arcgis-coding-components/assets/arcade-language/t9n/profile.t9n.nl.json +1 -1
  22. package/dist/arcgis-coding-components/assets/arcade-language/t9n/profile.t9n.pl.json +1 -1
  23. package/dist/arcgis-coding-components/assets/arcade-language/t9n/profile.t9n.pt-BR.json +1 -1
  24. package/dist/arcgis-coding-components/assets/arcade-language/t9n/profile.t9n.pt-PT.json +1 -1
  25. package/dist/arcgis-coding-components/assets/arcade-language/t9n/profile.t9n.ru.json +1 -1
  26. package/dist/arcgis-coding-components/assets/arcade-language/t9n/profile.t9n.sk.json +1 -1
  27. package/dist/arcgis-coding-components/assets/arcade-language/t9n/profile.t9n.sl.json +1 -1
  28. package/dist/arcgis-coding-components/assets/arcade-language/t9n/profile.t9n.sr.json +1 -1
  29. package/dist/arcgis-coding-components/assets/arcade-language/t9n/profile.t9n.sv.json +1 -1
  30. package/dist/arcgis-coding-components/assets/arcade-language/t9n/profile.t9n.th.json +1 -1
  31. package/dist/arcgis-coding-components/assets/arcade-language/t9n/profile.t9n.tr.json +1 -1
  32. package/dist/arcgis-coding-components/assets/arcade-language/t9n/profile.t9n.uk.json +5 -5
  33. package/dist/arcgis-coding-components/assets/arcade-language/t9n/profile.t9n.vi.json +1 -1
  34. package/dist/arcgis-coding-components/assets/arcade-language/t9n/profile.t9n.zh-CN.json +1 -1
  35. package/dist/arcgis-coding-components/assets/arcade-language/t9n/profile.t9n.zh-HK.json +1 -1
  36. package/dist/arcgis-coding-components/assets/arcade-language/t9n/profile.t9n.zh-TW.json +1 -1
  37. package/dist/arcgis-coding-components/assets/arcade-results/t9n/arcade-results.t9n.ca.json +2 -2
  38. package/dist/arcgis-coding-components/assets/arcade-results/t9n/arcade-results.t9n.de.json +1 -1
  39. package/dist/arcgis-coding-components/assets/arcade-results/t9n/arcade-results.t9n.he.json +1 -1
  40. package/dist/arcgis-coding-components/assets/arcade-variables/t9n/arcade-variables.t9n.ca.json +1 -1
  41. package/dist/arcgis-coding-components/assets/arcade-variables/t9n/arcade-variables.t9n.it.json +1 -1
  42. package/dist/arcgis-coding-components/assets/code-editor/sql-expr.worker.js +446 -7
  43. package/dist/arcgis-coding-components/assets/language-api-panel/t9n/language-api-panel.t9n.ca.json +1 -1
  44. package/dist/arcgis-coding-components/index.esm.js +2 -2
  45. package/dist/arcgis-coding-components/{p-b23a3f4e.entry.js → p-1da63080.entry.js} +2 -2
  46. package/dist/arcgis-coding-components/p-1e1caadf.js +7 -0
  47. package/dist/arcgis-coding-components/{p-736d890c.js → p-4cc71357.js} +3 -3
  48. package/dist/arcgis-coding-components/p-51b2fc72.js +6 -0
  49. package/dist/arcgis-coding-components/{p-4e56f8ae.js → p-5c89b15d.js} +1 -1
  50. package/dist/arcgis-coding-components/{p-5e173b51.entry.js → p-5f567b03.entry.js} +2 -2
  51. package/dist/arcgis-coding-components/{p-a256ee9c.js → p-64bbd36c.js} +12 -12
  52. package/dist/arcgis-coding-components/{p-8d67b196.js → p-71191013.js} +3 -3
  53. package/dist/arcgis-coding-components/{p-86625411.js → p-83b29033.js} +2 -2
  54. package/dist/arcgis-coding-components/p-909bbd87.entry.js +6 -0
  55. package/dist/arcgis-coding-components/p-9413c464.js +6 -0
  56. package/dist/arcgis-coding-components/p-9bb6dd26.js +6 -0
  57. package/dist/arcgis-coding-components/{p-ab0f6db7.js → p-ba1ec66d.js} +3 -3
  58. package/dist/arcgis-coding-components/p-bb851fa6.js +6 -0
  59. package/dist/arcgis-coding-components/{p-b570d7af.js → p-bd267380.js} +2 -2
  60. package/dist/arcgis-coding-components/{p-5da03560.js → p-d597b9ea.js} +1 -1
  61. package/dist/arcgis-coding-components/{p-26c67f7c.js → p-e1c8570a.js} +2 -2
  62. package/dist/arcgis-coding-components/{p-8e93417c.js → p-f4af9e3a.js} +2 -2
  63. package/dist/cjs/{app-globals-209c2310.js → app-globals-5b428a6f.js} +1 -1
  64. package/dist/cjs/arcade-defaults-c88dcbd9.js +349 -0
  65. package/dist/cjs/{arcade-mode-f2c3951e.js → arcade-mode-a369164c.js} +3 -3
  66. package/dist/cjs/arcgis-arcade-editor_6.cjs.entry.js +20 -26
  67. package/dist/cjs/arcgis-coding-components.cjs.js +5 -5
  68. package/dist/cjs/arcgis-sql-expression-editor.cjs.entry.js +4 -4
  69. package/dist/cjs/arcgis-sql-expression-fields.cjs.entry.js +4 -4
  70. package/dist/cjs/{css-bbd000cd.js → css-db73fa85.js} +1 -1
  71. package/dist/cjs/{cssMode-ad163e66.js → cssMode-714f53d0.js} +2 -3
  72. package/dist/cjs/{html-5c67b9d0.js → html-881afd14.js} +2 -3
  73. package/dist/cjs/{htmlMode-e32a97bd.js → htmlMode-d513ae10.js} +2 -3
  74. package/dist/cjs/{index-8b891c40.js → index-fd58ccf1.js} +43 -15
  75. package/dist/cjs/index.cjs.js +4 -4
  76. package/dist/cjs/{javascript-e159fa2f.js → javascript-8ea0cace.js} +3 -4
  77. package/dist/cjs/{jsonMode-5c107443.js → jsonMode-345b67b0.js} +2 -3
  78. package/dist/cjs/{language-defaults-base-4300e691.js → language-defaults-base-cd5a367b.js} +822 -1062
  79. package/dist/cjs/loader.cjs.js +4 -4
  80. package/dist/cjs/{sql-expr-defaults-783d9c24.js → sql-expr-defaults-5ab67e9d.js} +114 -52
  81. package/dist/cjs/sql-expr-mode-aaf5cadf.js +467 -0
  82. package/dist/cjs/{tsMode-83c4587f.js → tsMode-085f051d.js} +2 -3
  83. package/dist/cjs/{typescript-f6ca5d84.js → typescript-3adfcc8d.js} +2 -3
  84. package/dist/components/arcade-defaults.js +238 -4
  85. package/dist/components/arcade-mode.js +2 -1
  86. package/dist/components/arcade-results.js +3 -3
  87. package/dist/components/arcade-suggestions.js +2 -2
  88. package/dist/components/arcade-variables.js +2 -2
  89. package/dist/components/arcgis-arcade-editor.js +7 -6
  90. package/dist/components/arcgis-arcade-results.js +1 -1
  91. package/dist/components/arcgis-arcade-suggestions.js +1 -1
  92. package/dist/components/arcgis-arcade-variables.js +1 -1
  93. package/dist/components/arcgis-assets.d.ts +26 -26
  94. package/dist/components/arcgis-assets.js +2 -2
  95. package/dist/components/arcgis-code-editor.js +1 -1
  96. package/dist/components/arcgis-language-api-panel.js +1 -1
  97. package/dist/components/arcgis-sql-expression-editor.js +2 -2
  98. package/dist/components/arcgis-sql-expression-fields.js +1 -1
  99. package/dist/components/{chunk-6TARY3NN.js → chunk-ZZIYM65N.js} +38 -30
  100. package/dist/components/code-editor.js +16 -23
  101. package/dist/components/fields.js +4 -4
  102. package/dist/components/index.js +1 -1
  103. package/dist/components/index2.js +2 -2
  104. package/dist/components/language-api-panel.js +2 -2
  105. package/dist/components/language-defaults-base.js +81 -323
  106. package/dist/components/markdown.js +1 -1
  107. package/dist/components/sql-expr-defaults.js +77 -24
  108. package/dist/components/sql-expr-mode.js +282 -24951
  109. package/dist/components/sql-expression-fields.js +2 -2
  110. package/dist/components/useT9n.js +2 -2
  111. package/dist/components/utilities.js +1 -1
  112. package/dist/esm/{app-globals-60a61d0d.js → app-globals-9b5f37f3.js} +1 -1
  113. package/dist/esm/arcade-defaults-23d01109.js +344 -0
  114. package/dist/esm/{arcade-mode-7e6764ac.js → arcade-mode-30a9597a.js} +3 -3
  115. package/dist/esm/arcgis-arcade-editor_6.entry.js +21 -27
  116. package/dist/esm/arcgis-coding-components.js +6 -6
  117. package/dist/esm/arcgis-sql-expression-editor.entry.js +4 -4
  118. package/dist/esm/arcgis-sql-expression-fields.entry.js +4 -4
  119. package/dist/esm/{css-7d75b7ca.js → css-442d4a5a.js} +1 -1
  120. package/dist/esm/{cssMode-95305ae2.js → cssMode-8833e7da.js} +2 -3
  121. package/dist/esm/{html-84fc596c.js → html-1adb92d5.js} +2 -3
  122. package/dist/esm/{htmlMode-c961f619.js → htmlMode-d45f4634.js} +2 -3
  123. package/dist/esm/{index-1c1754c0.js → index-d9b2b45b.js} +43 -15
  124. package/dist/esm/index.js +4 -4
  125. package/dist/esm/{javascript-0aa4505f.js → javascript-5bf60fbf.js} +3 -4
  126. package/dist/esm/{jsonMode-86b234eb.js → jsonMode-cba63cda.js} +2 -3
  127. package/dist/esm/{language-defaults-base-949fa7fb.js → language-defaults-base-49508cc9.js} +819 -1062
  128. package/dist/esm/loader.js +5 -5
  129. package/dist/esm/{sql-expr-defaults-f2f50289.js → sql-expr-defaults-ba682a85.js} +114 -53
  130. package/dist/esm/sql-expr-mode-5da1d4c8.js +463 -0
  131. package/dist/esm/{tsMode-ee945c40.js → tsMode-23360d7b.js} +2 -3
  132. package/dist/esm/{typescript-8bd2bb48.js → typescript-d1e4a590.js} +2 -3
  133. package/dist/loader/cdn.js +2 -3
  134. package/dist/loader/index.cjs.js +2 -3
  135. package/dist/loader/index.es2017.js +2 -3
  136. package/dist/loader/index.js +2 -3
  137. package/dist/types/components/arcade-editor/arcade-editor.d.ts +13 -3
  138. package/dist/types/components/arcade-results/arcade-results.d.ts +1 -1
  139. package/dist/types/components/arcade-suggestions/arcade-suggestions.d.ts +1 -1
  140. package/dist/types/components/arcade-variables/arcade-variables.d.ts +1 -1
  141. package/dist/types/components/code-editor/code-editor.d.ts +14 -4
  142. package/dist/types/components/language-api-panel/language-api-panel.d.ts +1 -1
  143. package/dist/types/components.d.ts +13 -13
  144. 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
  145. 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
  146. package/dist/types/stencil-public-runtime.d.ts +3 -8
  147. package/dist/types/utils/arcade-monaco/arcade-language-features.d.ts +1 -0
  148. package/dist/types/utils/arcade-monaco/arcade-profile-strategy.d.ts +9 -0
  149. package/dist/types/utils/fields.d.ts +2 -2
  150. package/dist/types/utils/profile/editor-profile.d.ts +7 -6
  151. package/dist/types/utils/profile/types.d.ts +53 -65
  152. package/dist/types/utils/profile/utils.d.ts +9 -8
  153. package/dist/types/utils/sql-expr-monaco/sql-expr-completion.d.ts +56 -5
  154. package/dist/types/utils/sql-expr-monaco/sql-expr-constants.d.ts +61 -0
  155. package/dist/types/utils/sql-expr-monaco/sql-expr-contribution.d.ts +1 -11
  156. package/dist/types/utils/sql-expr-monaco/sql-expr-defaults.d.ts +0 -1
  157. package/dist/types/utils/sql-expr-monaco/sql-expr-language-features.d.ts +18 -534
  158. package/dist/types/utils/sql-expr-monaco/sql-expr-mode.d.ts +34 -1
  159. package/dist/types/utils/sql-expr-monaco/sql-expr-parser-utils.d.ts +30 -0
  160. package/dist/types/utils/sql-expr-monaco/sql-expr-service-accessors.d.ts +19 -0
  161. package/dist/types/utils/sql-expr-monaco/sql-expr-validation-diagnostic-adapter.d.ts +0 -7
  162. package/dist/types/utils/sql-expr-monaco/sql-expr-validation-utils.d.ts +73 -77
  163. package/dist/types/utils/sql-expr-monaco/sql-expr-validation.d.ts +5 -6
  164. package/dist/types/utils/sql-expr-monaco/sql-expr-worker-manager.d.ts +2 -0
  165. package/dist/types/utils/sql-expr-monaco/sql-expr.worker.d.ts +11 -8
  166. package/dist/types/utils/sql-expr-monaco/sql-expression-profile-strategy.d.ts +13 -0
  167. package/dist/types/utils/sql-expr-monaco/types.d.ts +30 -28
  168. package/package.json +19 -19
  169. package/dist/arcgis-coding-components/p-103bdac3.js +0 -6
  170. package/dist/arcgis-coding-components/p-2d14950e.js +0 -7
  171. package/dist/arcgis-coding-components/p-374b59c1.js +0 -6
  172. package/dist/arcgis-coding-components/p-a36c357f.js +0 -6
  173. package/dist/arcgis-coding-components/p-de5cabbb.js +0 -6
  174. package/dist/arcgis-coding-components/p-e6cac921.entry.js +0 -6
  175. package/dist/cjs/arcade-defaults-ee308e3a.js +0 -116
  176. package/dist/cjs/sql-expr-mode-6cac37ed.js +0 -25135
  177. package/dist/esm/arcade-defaults-b1a5f013.js +0 -111
  178. package/dist/esm/polyfills/core-js.js +0 -11
  179. package/dist/esm/polyfills/dom.js +0 -79
  180. package/dist/esm/polyfills/es5-html-element.js +0 -1
  181. package/dist/esm/polyfills/index.js +0 -34
  182. package/dist/esm/polyfills/system.js +0 -6
  183. package/dist/esm/sql-expr-mode-14c94be3.js +0 -25132
  184. package/dist/types/utils/profile/predefined-profile.d.ts +0 -4
  185. package/dist/types/utils/sql-expr-monaco/DependentFiles/DateOnly.d.ts +0 -41
  186. package/dist/types/utils/sql-expr-monaco/DependentFiles/SqlInterval.d.ts +0 -16
  187. package/dist/types/utils/sql-expr-monaco/DependentFiles/SqlTimestampOffset.d.ts +0 -26
  188. package/dist/types/utils/sql-expr-monaco/DependentFiles/TimeOnly.d.ts +0 -37
  189. package/dist/types/utils/sql-expr-monaco/DependentFiles/UnknownTimeZone.d.ts +0 -11
  190. package/dist/types/utils/sql-expr-monaco/DependentFiles/WhereGrammar.d.ts +0 -122
  191. package/dist/types/utils/sql-expr-monaco/DependentFiles/sqlCompareUtils.d.ts +0 -5
  192. package/dist/types/utils/sql-expr-monaco/DependentFiles/sqlDateParsingUtils.d.ts +0 -18
  193. package/dist/types/utils/sql-expr-monaco/DependentFiles/sqlUtils.d.ts +0 -6
  194. package/dist/types/utils/sql-expr-monaco/DependentFiles/standardizedFunctions.d.ts +0 -156
  195. package/dist/types/utils/sql-expr-monaco/DependentFiles/support.d.ts +0 -150
  196. package/dist/types/utils/sql-expr-monaco/PeggyGrammar/sql92grammar.d.ts +0 -1397
  197. package/dist/types/utils/sql-expr-monaco/libraries/date/properties/index.d.ts +0 -59
  198. package/dist/types/utils/sql-expr-monaco/libraries/numeric/properties/index.d.ts +0 -295
  199. package/dist/types/utils/sql-expr-monaco/libraries/string/properties/index.d.ts +0 -135
  200. package/dist/types/utils/sql-expr-monaco/sql-expr-validation-adapter.d.ts +0 -3
  201. 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
4
+ * v4.31.0-next.41
5
5
  */
6
6
  'use strict';
7
7
 
8
- const languageDefaultsBase = require('./language-defaults-base-4300e691.js');
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
4
+ * v4.31.0-next.41
5
5
  */
6
6
  'use strict';
7
7
 
8
- const languageDefaultsBase = require('./language-defaults-base-4300e691.js');
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.