@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.
Files changed (205) 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/css.worker.js +1 -1
  43. package/dist/arcgis-coding-components/assets/code-editor/html.worker.js +1 -1
  44. package/dist/arcgis-coding-components/assets/code-editor/json.worker.js +1 -1
  45. package/dist/arcgis-coding-components/assets/code-editor/sql-expr.worker.js +33 -0
  46. package/dist/arcgis-coding-components/assets/code-editor/ts.worker.js +1 -1
  47. package/dist/arcgis-coding-components/assets/language-api-panel/t9n/language-api-panel.t9n.ca.json +1 -1
  48. package/dist/arcgis-coding-components/assets/sql-expression-editor/api/sql-expression-api.t9n.en.json +735 -0
  49. package/dist/arcgis-coding-components/index.esm.js +2 -2
  50. package/dist/arcgis-coding-components/{p-7984ea8e.js → p-1b799777.js} +2 -2
  51. package/dist/arcgis-coding-components/p-4d5cf512.entry.js +6 -0
  52. package/dist/arcgis-coding-components/{p-60c2a820.js → p-56266a64.js} +2 -2
  53. package/dist/arcgis-coding-components/{p-e8211ffe.js → p-57b8bcd7.js} +1 -1
  54. package/dist/arcgis-coding-components/{p-9eced6fc.js → p-5b67b62b.js} +2 -2
  55. package/dist/arcgis-coding-components/{p-93a97573.js → p-64137fec.js} +3 -3
  56. package/dist/arcgis-coding-components/{p-e7ee4d64.js → p-6621a80f.js} +3 -3
  57. package/dist/arcgis-coding-components/p-77dd5521.js +6 -0
  58. package/dist/arcgis-coding-components/p-8eb7e694.js +6 -0
  59. package/dist/arcgis-coding-components/p-a2341e0c.js +6 -0
  60. package/dist/arcgis-coding-components/{p-bb7e832e.js → p-b715834b.js} +3 -3
  61. package/dist/arcgis-coding-components/p-cbee273f.js +6 -0
  62. package/dist/arcgis-coding-components/{p-5ef7cce5.js → p-cdc52d2f.js} +1 -1
  63. package/dist/arcgis-coding-components/{p-36fedc23.js → p-d7d1f130.js} +12 -12
  64. package/dist/arcgis-coding-components/p-e1f9b463.entry.js +6 -0
  65. package/dist/arcgis-coding-components/{p-62ee6251.js → p-e5a924a1.js} +1 -1
  66. package/dist/arcgis-coding-components/p-f2d64a9d.js +6 -0
  67. package/dist/arcgis-coding-components/{p-03ea6cd7.js → p-ff62d134.js} +3 -3
  68. package/dist/arcgis-coding-components/p-ffce0588.entry.js +6 -0
  69. package/dist/cjs/{app-globals-aee5f4b5.js → app-globals-a9ef3ca8.js} +1 -1
  70. package/dist/cjs/arcade-defaults-f5241680.js +349 -0
  71. package/dist/cjs/arcade-language-features-0b9f3947.js +274 -0
  72. package/dist/cjs/arcade-mode-cc08d9cd.js +335 -0
  73. package/dist/cjs/arcgis-arcade-editor_6.cjs.entry.js +181 -1501
  74. package/dist/cjs/arcgis-coding-components.cjs.js +4 -4
  75. package/dist/cjs/arcgis-sql-expression-editor.cjs.entry.js +81 -0
  76. package/dist/cjs/arcgis-sql-expression-fields.cjs.entry.js +80 -0
  77. package/dist/cjs/{css-7cc05f76.js → css-bb6a49ec.js} +1 -1
  78. package/dist/cjs/{cssMode-2b0daeae.js → cssMode-e7fac7d7.js} +3 -4
  79. package/dist/cjs/{html-f56911e1.js → html-7ff4071d.js} +3 -4
  80. package/dist/cjs/{htmlMode-43eed674.js → htmlMode-c89193ec.js} +3 -4
  81. package/dist/cjs/{index-b34238a6.js → index-4b7880ab.js} +9 -1
  82. package/dist/cjs/index.cjs.js +4 -3
  83. package/dist/cjs/{javascript-5115cb76.js → javascript-864c0220.js} +3 -4
  84. package/dist/cjs/{jsonMode-550dda36.js → jsonMode-ac4a7be7.js} +3 -4
  85. package/dist/cjs/{arcade-defaults-a8d8f8e2.js → language-defaults-base-57b37f9f.js} +842 -1183
  86. package/dist/cjs/loader.cjs.js +4 -4
  87. package/dist/cjs/sql-expr-defaults-245b036d.js +1347 -0
  88. package/dist/cjs/sql-expr-mode-304f5ce2.js +20844 -0
  89. package/dist/cjs/{tsMode-336306a9.js → tsMode-d30d4ab1.js} +4 -5
  90. package/dist/cjs/{typescript-b395242f.js → typescript-6c87ddb3.js} +3 -4
  91. package/dist/components/arcade-defaults.js +54 -1369
  92. package/dist/components/arcade-language-features.js +271 -0
  93. package/dist/components/arcade-mode.js +4 -264
  94. package/dist/components/arcade-results.js +7 -5
  95. package/dist/components/arcade-suggestions.js +7 -5
  96. package/dist/components/arcade-variables.js +8 -6
  97. package/dist/components/arcgis-arcade-editor.js +37 -35
  98. package/dist/components/arcgis-arcade-results.js +1 -1
  99. package/dist/components/arcgis-arcade-suggestions.js +1 -1
  100. package/dist/components/arcgis-arcade-variables.js +1 -1
  101. package/dist/components/arcgis-assets.d.ts +1 -1
  102. package/dist/components/arcgis-assets.js +1 -1
  103. package/dist/components/arcgis-code-editor.js +1 -1
  104. package/dist/components/arcgis-language-api-panel.js +1 -1
  105. package/dist/components/arcgis-sql-expression-editor.d.ts +11 -0
  106. package/dist/components/arcgis-sql-expression-editor.js +120 -0
  107. package/dist/components/arcgis-sql-expression-fields.d.ts +11 -0
  108. package/dist/components/arcgis-sql-expression-fields.js +11 -0
  109. package/dist/components/chunk-2JTWBRMN.js +1154 -0
  110. package/dist/components/code-editor.js +40 -13
  111. package/dist/components/fields.js +5 -5
  112. package/dist/components/index.js +1 -1
  113. package/dist/components/index2.js +30 -22
  114. package/dist/components/language-api-panel.js +13 -40
  115. package/dist/components/language-defaults-base.js +1309 -0
  116. package/dist/components/markdown.js +1 -1
  117. package/dist/components/sql-expr-defaults.js +196 -0
  118. package/dist/components/sql-expr-mode.js +20842 -0
  119. package/dist/components/sql-expression-fields.js +102 -0
  120. package/dist/components/useT9n.js +45 -8
  121. package/dist/components/utilities.js +1 -1
  122. package/dist/esm/{app-globals-59faaf33.js → app-globals-6d0ca11d.js} +1 -1
  123. package/dist/esm/arcade-defaults-066445c4.js +344 -0
  124. package/dist/esm/arcade-language-features-0e00c199.js +269 -0
  125. package/dist/esm/{arcade-mode-5d46035e.js → arcade-mode-abf1e1cf.js} +3 -263
  126. package/dist/esm/arcgis-arcade-editor_6.entry.js +127 -1447
  127. package/dist/esm/arcgis-coding-components.js +5 -5
  128. package/dist/esm/arcgis-sql-expression-editor.entry.js +77 -0
  129. package/dist/esm/arcgis-sql-expression-fields.entry.js +76 -0
  130. package/dist/esm/{css-e257dc49.js → css-c6dae12d.js} +1 -1
  131. package/dist/esm/{cssMode-c11f7f40.js → cssMode-052bb603.js} +2 -3
  132. package/dist/esm/{html-a6c37a99.js → html-572696a1.js} +2 -3
  133. package/dist/esm/{htmlMode-1270bc7d.js → htmlMode-fc184f2d.js} +2 -3
  134. package/dist/esm/{index-a970952c.js → index-0edd9846.js} +9 -1
  135. package/dist/esm/index.js +4 -3
  136. package/dist/esm/{javascript-ee179624.js → javascript-8bfc0096.js} +3 -4
  137. package/dist/esm/{jsonMode-07502ccb.js → jsonMode-7adf94ff.js} +2 -3
  138. package/dist/esm/{arcade-defaults-9eb28407.js → language-defaults-base-85a7f476.js} +833 -1179
  139. package/dist/esm/loader.js +5 -5
  140. package/dist/esm/sql-expr-defaults-be84ec7f.js +1339 -0
  141. package/dist/esm/sql-expr-mode-a4413e5c.js +20840 -0
  142. package/dist/esm/{tsMode-96749a12.js → tsMode-d10773c8.js} +2 -3
  143. package/dist/esm/{typescript-a3cf9881.js → typescript-9491f23e.js} +2 -3
  144. package/dist/loader/cdn.js +1 -1
  145. package/dist/loader/index.cjs.js +1 -1
  146. package/dist/loader/index.es2017.js +1 -1
  147. package/dist/loader/index.js +1 -1
  148. package/dist/types/components/arcade-editor/arcade-editor.d.ts +45 -10
  149. package/dist/types/components/arcade-results/arcade-results.d.ts +43 -1
  150. package/dist/types/components/arcade-suggestions/arcade-suggestions.d.ts +22 -1
  151. package/dist/types/components/arcade-variables/arcade-variables.d.ts +28 -1
  152. package/dist/types/components/code-editor/code-editor.d.ts +16 -5
  153. package/dist/types/components/language-api-panel/language-api-panel.d.ts +34 -8
  154. package/dist/types/components/sql-expression-editor/sql-expression-editor.d.ts +24 -0
  155. package/dist/types/components/sql-expression-fields/sql-expression-fields.d.ts +32 -0
  156. package/dist/types/components.d.ts +98 -24
  157. 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
  158. 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
  159. 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
  160. package/dist/types/dependencies.d.ts +6 -10
  161. package/dist/types/utils/arcade-monaco/arcade-language-features.d.ts +1 -0
  162. package/dist/types/utils/arcade-monaco/arcade-profile-strategy.d.ts +9 -0
  163. package/dist/types/utils/fields.d.ts +2 -2
  164. package/dist/types/utils/language-defaults-base.d.ts +2 -9
  165. package/dist/types/utils/profile/editor-profile.d.ts +7 -6
  166. package/dist/types/utils/profile/types.d.ts +53 -65
  167. package/dist/types/utils/profile/utils.d.ts +9 -8
  168. package/dist/types/utils/sql-expr-monaco/DependentFiles/DateOnly.d.ts +41 -0
  169. package/dist/types/utils/sql-expr-monaco/DependentFiles/SqlInterval.d.ts +16 -0
  170. package/dist/types/utils/sql-expr-monaco/DependentFiles/SqlTimestampOffset.d.ts +26 -0
  171. package/dist/types/utils/sql-expr-monaco/DependentFiles/TimeOnly.d.ts +37 -0
  172. package/dist/types/utils/sql-expr-monaco/DependentFiles/UnknownTimeZone.d.ts +11 -0
  173. package/dist/types/utils/sql-expr-monaco/DependentFiles/WhereGrammar.d.ts +122 -0
  174. package/dist/types/utils/sql-expr-monaco/DependentFiles/sqlCompareUtils.d.ts +5 -0
  175. package/dist/types/utils/sql-expr-monaco/DependentFiles/sqlDateParsingUtils.d.ts +18 -0
  176. package/dist/types/utils/sql-expr-monaco/DependentFiles/sqlUtils.d.ts +6 -0
  177. package/dist/types/utils/sql-expr-monaco/DependentFiles/standardizedFunctions.d.ts +156 -0
  178. package/dist/types/utils/sql-expr-monaco/DependentFiles/support.d.ts +150 -0
  179. package/dist/types/utils/sql-expr-monaco/PeggyGrammar/sql92grammar.d.ts +1397 -0
  180. package/dist/types/utils/sql-expr-monaco/sql-expr-completion.d.ts +6 -0
  181. package/dist/types/utils/sql-expr-monaco/sql-expr-constants.d.ts +45 -0
  182. package/dist/types/utils/sql-expr-monaco/sql-expr-contribution.d.ts +1 -0
  183. package/dist/types/utils/sql-expr-monaco/sql-expr-defaults.d.ts +21 -0
  184. package/dist/types/utils/sql-expr-monaco/sql-expr-language-features.d.ts +39 -0
  185. package/dist/types/utils/sql-expr-monaco/sql-expr-language-syntax.d.ts +8 -0
  186. package/dist/types/utils/sql-expr-monaco/sql-expr-mode.d.ts +43 -0
  187. package/dist/types/utils/sql-expr-monaco/sql-expr-service-accessors.d.ts +19 -0
  188. package/dist/types/utils/sql-expr-monaco/sql-expr-validation-diagnostic-adapter.d.ts +34 -0
  189. package/dist/types/utils/sql-expr-monaco/sql-expr-validation-utils.d.ts +100 -0
  190. package/dist/types/utils/sql-expr-monaco/sql-expr-validation.d.ts +41 -0
  191. package/dist/types/utils/sql-expr-monaco/sql-expr-worker-manager.d.ts +17 -0
  192. package/dist/types/utils/sql-expr-monaco/sql-expr.worker.d.ts +24 -0
  193. package/dist/types/utils/sql-expr-monaco/sql-expression-profile-strategy.d.ts +13 -0
  194. package/dist/types/utils/sql-expr-monaco/types.d.ts +89 -0
  195. package/package.json +27 -21
  196. package/dist/arcgis-coding-components/p-0c6de9b3.js +0 -6
  197. package/dist/arcgis-coding-components/p-81c37dab.entry.js +0 -6
  198. package/dist/cjs/arcade-mode-b85ae7d4.js +0 -595
  199. package/dist/components/chunk-IHYYRFLQ.js +0 -1363
  200. package/dist/types/components/arcade-editor/t9n-types.d.ts +0 -8
  201. package/dist/types/components/arcade-results/t9n-types.d.ts +0 -13
  202. package/dist/types/components/arcade-suggestions/t9n-types.d.ts +0 -6
  203. package/dist/types/components/arcade-variables/t9n-types.d.ts +0 -8
  204. package/dist/types/components/language-api-panel/t9n-types.d.ts +0 -8
  205. package/dist/types/utils/profile/predefined-profile.d.ts +0 -2
@@ -0,0 +1,269 @@
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.21
5
+ */
6
+ import { g as editor, P as MarkerSeverity, m as main, R as Range, z as languages, Q as debounce } from './language-defaults-base-85a7f476.js';
7
+
8
+ //#region Diagnostic
9
+ class DiagnosticsAdapter {
10
+ constructor(_languageId, _worker, { defaults, diagnosticsService, }) {
11
+ this._languageId = _languageId;
12
+ this._worker = _worker;
13
+ this._disposables = [];
14
+ this._listener = new Map();
15
+ this._diagnosticsService = diagnosticsService;
16
+ this._defaults = defaults;
17
+ const onModelAdd = (model) => {
18
+ const languageId = model.getLanguageId();
19
+ if (languageId !== this._languageId) {
20
+ return;
21
+ }
22
+ const debouncedValidate = debounce(() => {
23
+ this._doValidate(model, languageId).catch((err) => {
24
+ throw err;
25
+ });
26
+ });
27
+ this._listener.set(model.uri.toString(), model.onDidChangeContent(debouncedValidate));
28
+ this._doValidate(model, languageId).catch(console.error);
29
+ };
30
+ const onModelRemoved = (model) => {
31
+ const uriStr = model.uri.toString();
32
+ editor.setModelMarkers(model, this._languageId, []);
33
+ const listener = this._listener.get(uriStr);
34
+ if (listener) {
35
+ listener.dispose();
36
+ this._listener.delete(uriStr);
37
+ }
38
+ };
39
+ this._disposables.push(editor.onDidCreateModel(onModelAdd));
40
+ this._disposables.push(editor.onWillDisposeModel((model) => {
41
+ onModelRemoved(model);
42
+ }));
43
+ this._disposables.push(editor.onDidChangeModelLanguage((event) => {
44
+ onModelRemoved(event.model);
45
+ onModelAdd(event.model);
46
+ }));
47
+ this._disposables.push(defaults.onDidChange(() => {
48
+ editor.getModels().forEach((model) => {
49
+ if (model.getLanguageId() === this._languageId) {
50
+ onModelRemoved(model);
51
+ onModelAdd(model);
52
+ }
53
+ });
54
+ }));
55
+ this._disposables.push(defaults.onModelContextDidChange((key) => {
56
+ editor.getModels().forEach((model) => {
57
+ if (model.getLanguageId() === this._languageId && model.uri.toString() === key) {
58
+ this._doValidate(model, this._languageId).catch(console.error);
59
+ }
60
+ });
61
+ }));
62
+ this._disposables.push({
63
+ dispose: () => {
64
+ this._listener.forEach((value) => value.dispose());
65
+ this._listener.clear();
66
+ },
67
+ });
68
+ editor.getModels().forEach(onModelAdd);
69
+ }
70
+ dispose() {
71
+ this._disposables.forEach((d) => d.dispose());
72
+ this._disposables = [];
73
+ }
74
+ async _doValidate(model, languageId) {
75
+ if (!model.isAttachedToEditor()) {
76
+ return;
77
+ }
78
+ try {
79
+ const workerProxy = await this._worker(model.uri);
80
+ const context = this._defaults.getApiContextForModel(model.uri);
81
+ const diagnostics = await workerProxy.doValidation(model.uri.toString(), context);
82
+ const markers = diagnostics.map((d) => toMarker(model.uri, d));
83
+ this._diagnosticsService.fireDiagnosticsChange(model.uri, diagnostics);
84
+ editor.setModelMarkers(model, languageId, markers);
85
+ }
86
+ catch (err) {
87
+ console.error(err);
88
+ }
89
+ }
90
+ }
91
+ function toSeverity(languageServiceSeverity) {
92
+ switch (languageServiceSeverity) {
93
+ case main.exports.DiagnosticSeverity.Error:
94
+ return MarkerSeverity.Error;
95
+ case main.exports.DiagnosticSeverity.Warning:
96
+ return MarkerSeverity.Warning;
97
+ case main.exports.DiagnosticSeverity.Information:
98
+ return MarkerSeverity.Info;
99
+ case main.exports.DiagnosticSeverity.Hint:
100
+ return MarkerSeverity.Hint;
101
+ default:
102
+ return MarkerSeverity.Info;
103
+ }
104
+ }
105
+ function toMarker(_resource, diag) {
106
+ // Diagnostics positions are zero-based, MarkerData are 1-based
107
+ return {
108
+ severity: toSeverity(diag.severity),
109
+ startLineNumber: diag.range.start.line + 1,
110
+ startColumn: diag.range.start.character + 1,
111
+ endLineNumber: diag.range.end.line + 1,
112
+ endColumn: diag.range.end.character + 1,
113
+ message: diag.message,
114
+ };
115
+ }
116
+ //#endregion
117
+ //#region Completion
118
+ function fromPosition(position) {
119
+ // Language service is zero based
120
+ return { character: position.column - 1, line: position.lineNumber - 1 };
121
+ }
122
+ function toRange(range) {
123
+ return new Range(range.start.line + 1, range.start.character + 1, range.end.line + 1, range.end.character + 1);
124
+ }
125
+ function toTextEdit(textEdit) {
126
+ return {
127
+ range: toRange(textEdit.range),
128
+ text: textEdit.newText,
129
+ };
130
+ }
131
+ function isInsertReplaceEdit(edit) {
132
+ return (typeof edit.insert !== "undefined" &&
133
+ typeof edit.replace !== "undefined");
134
+ }
135
+ // TODO: extract this function to common util
136
+ function toCompletionItemKind(kind) {
137
+ const mItemKind = languages.CompletionItemKind;
138
+ switch (kind) {
139
+ case main.exports.CompletionItemKind.Text:
140
+ return mItemKind.Text;
141
+ case main.exports.CompletionItemKind.Method:
142
+ return mItemKind.Method;
143
+ case main.exports.CompletionItemKind.Function:
144
+ return mItemKind.Function;
145
+ case main.exports.CompletionItemKind.Constructor:
146
+ return mItemKind.Constructor;
147
+ case main.exports.CompletionItemKind.Field:
148
+ return mItemKind.Field;
149
+ case main.exports.CompletionItemKind.Variable:
150
+ return mItemKind.Variable;
151
+ case main.exports.CompletionItemKind.Class:
152
+ return mItemKind.Class;
153
+ case main.exports.CompletionItemKind.Interface:
154
+ return mItemKind.Interface;
155
+ case main.exports.CompletionItemKind.Module:
156
+ return mItemKind.Module;
157
+ case main.exports.CompletionItemKind.Property:
158
+ return mItemKind.Property;
159
+ case main.exports.CompletionItemKind.Unit:
160
+ return mItemKind.Unit;
161
+ case main.exports.CompletionItemKind.Value:
162
+ return mItemKind.Value;
163
+ case main.exports.CompletionItemKind.Enum:
164
+ return mItemKind.Enum;
165
+ case main.exports.CompletionItemKind.Keyword:
166
+ return mItemKind.Keyword;
167
+ case main.exports.CompletionItemKind.Snippet:
168
+ return mItemKind.Snippet;
169
+ case main.exports.CompletionItemKind.Color:
170
+ return mItemKind.Color;
171
+ case main.exports.CompletionItemKind.File:
172
+ return mItemKind.File;
173
+ case main.exports.CompletionItemKind.Reference:
174
+ return mItemKind.Reference;
175
+ case main.exports.CompletionItemKind.Folder:
176
+ return mItemKind.Folder;
177
+ case main.exports.CompletionItemKind.EnumMember:
178
+ return mItemKind.EnumMember;
179
+ case main.exports.CompletionItemKind.Constant:
180
+ return mItemKind.Constant;
181
+ case main.exports.CompletionItemKind.Struct:
182
+ return mItemKind.Struct;
183
+ case main.exports.CompletionItemKind.Event:
184
+ return mItemKind.Event;
185
+ case main.exports.CompletionItemKind.Operator:
186
+ return mItemKind.Operator;
187
+ case main.exports.CompletionItemKind.TypeParameter:
188
+ return mItemKind.TypeParameter;
189
+ default:
190
+ return mItemKind.Property;
191
+ }
192
+ }
193
+ class CompletionProvider {
194
+ constructor(_worker, _defaults) {
195
+ this._worker = _worker;
196
+ this._defaults = _defaults;
197
+ this.triggerCharacters = [".", "("];
198
+ }
199
+ async provideCompletionItems(model, position) {
200
+ const worker = await this._worker(model.uri);
201
+ const context = this._defaults.getApiContextForModel(model.uri);
202
+ const completionList = await worker.doComplete(model.uri.toString(), fromPosition(position), context);
203
+ const wordInfo = model.getWordUntilPosition(position);
204
+ const wordRange = new Range(position.lineNumber, wordInfo.startColumn, position.lineNumber, wordInfo.endColumn);
205
+ const items = completionList.items.map((entry) => {
206
+ const item = {
207
+ label: entry.label,
208
+ insertText: entry.insertText || entry.label,
209
+ sortText: entry.sortText,
210
+ filterText: entry.filterText,
211
+ detail: entry.detail,
212
+ range: wordRange,
213
+ kind: toCompletionItemKind(entry.kind),
214
+ };
215
+ if (entry.textEdit) {
216
+ if (isInsertReplaceEdit(entry.textEdit)) {
217
+ item.range = {
218
+ insert: toRange(entry.textEdit.insert),
219
+ replace: toRange(entry.textEdit.replace),
220
+ };
221
+ }
222
+ else {
223
+ item.range = toRange(entry.textEdit.range);
224
+ }
225
+ item.insertText = entry.textEdit.newText;
226
+ }
227
+ if (entry.additionalTextEdits) {
228
+ item.additionalTextEdits = entry.additionalTextEdits.map(toTextEdit);
229
+ }
230
+ if (entry.insertTextFormat === main.exports.InsertTextFormat.Snippet) {
231
+ item.insertTextRules = languages.CompletionItemInsertTextRule.InsertAsSnippet;
232
+ }
233
+ if (entry.documentation) {
234
+ if (typeof entry.documentation === "string") {
235
+ item.documentation = entry.documentation;
236
+ }
237
+ else {
238
+ item.documentation = {
239
+ supportThemeIcons: false,
240
+ value: entry.documentation.value,
241
+ supportHtml: true,
242
+ };
243
+ }
244
+ }
245
+ return item;
246
+ });
247
+ return {
248
+ incomplete: completionList.isIncomplete,
249
+ suggestions: items,
250
+ };
251
+ }
252
+ }
253
+ //#endregion
254
+ //#region Formatter
255
+ class FormattingProvider {
256
+ constructor(_worker, _defaults) {
257
+ this._worker = _worker;
258
+ this._defaults = _defaults;
259
+ }
260
+ async provideDocumentFormattingEdits(model) {
261
+ const worker = await this._worker(model.uri);
262
+ const context = this._defaults.getApiContextForModel(model.uri.toString());
263
+ const edits = await worker.doFormat(model.uri.toString(), context);
264
+ return edits.map((e) => ({ range: toRange(e.range), text: e.newText }));
265
+ }
266
+ }
267
+ //#endregion
268
+
269
+ export { CompletionProvider as C, DiagnosticsAdapter as D, FormattingProvider as F, toCompletionItemKind as t };
@@ -1,10 +1,10 @@
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.2
4
+ * v4.31.0-next.21
5
5
  */
6
- import { G as main, e as editor, M as MarkerSeverity, R as Range, y as languages, H as debounce, J as Emitter } from './arcade-defaults-9eb28407.js';
7
- import './index-a970952c.js';
6
+ import { m as main, g as editor, z as languages, O as Emitter } from './language-defaults-base-85a7f476.js';
7
+ import { C as CompletionProvider, F as FormattingProvider, D as DiagnosticsAdapter } from './arcade-language-features-0e00c199.js';
8
8
 
9
9
  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:main.exports.CompletionItemKind.Constant}));ft.map(t=>({label:t,kind:main.exports.CompletionItemKind.Keyword}));
10
10
 
@@ -216,266 +216,6 @@ const arcadeMonarchLanguage = {
216
216
  },
217
217
  };
218
218
 
219
- //#region Diagnostic
220
- class DiagnosticsAdapter {
221
- constructor(_languageId, _worker, { defaults, diagnosticsService, }) {
222
- this._languageId = _languageId;
223
- this._worker = _worker;
224
- this._disposables = [];
225
- this._listener = new Map();
226
- this._diagnosticsService = diagnosticsService;
227
- this._defaults = defaults;
228
- const onModelAdd = (model) => {
229
- const languageId = model.getLanguageId();
230
- if (languageId !== this._languageId) {
231
- return;
232
- }
233
- const debouncedValidate = debounce(() => {
234
- this._doValidate(model, languageId).catch((err) => {
235
- throw err;
236
- });
237
- });
238
- this._listener.set(model.uri.toString(), model.onDidChangeContent(debouncedValidate));
239
- this._doValidate(model, languageId).catch(console.error);
240
- };
241
- const onModelRemoved = (model) => {
242
- const uriStr = model.uri.toString();
243
- editor.setModelMarkers(model, this._languageId, []);
244
- const listener = this._listener.get(uriStr);
245
- if (listener) {
246
- listener.dispose();
247
- this._listener.delete(uriStr);
248
- }
249
- };
250
- this._disposables.push(editor.onDidCreateModel(onModelAdd));
251
- this._disposables.push(editor.onWillDisposeModel((model) => {
252
- onModelRemoved(model);
253
- }));
254
- this._disposables.push(editor.onDidChangeModelLanguage((event) => {
255
- onModelRemoved(event.model);
256
- onModelAdd(event.model);
257
- }));
258
- this._disposables.push(defaults.onDidChange(() => {
259
- editor.getModels().forEach((model) => {
260
- if (model.getLanguageId() === this._languageId) {
261
- onModelRemoved(model);
262
- onModelAdd(model);
263
- }
264
- });
265
- }));
266
- this._disposables.push(defaults.onModelContextDidChange((key) => {
267
- editor.getModels().forEach((model) => {
268
- if (model.getLanguageId() === this._languageId && model.uri.toString() === key) {
269
- this._doValidate(model, this._languageId).catch(console.error);
270
- }
271
- });
272
- }));
273
- this._disposables.push({
274
- dispose: () => {
275
- this._listener.forEach((value) => value.dispose());
276
- this._listener.clear();
277
- },
278
- });
279
- editor.getModels().forEach(onModelAdd);
280
- }
281
- dispose() {
282
- this._disposables.forEach((d) => d.dispose());
283
- this._disposables = [];
284
- }
285
- async _doValidate(model, languageId) {
286
- if (!model.isAttachedToEditor()) {
287
- return;
288
- }
289
- try {
290
- const workerProxy = await this._worker(model.uri);
291
- const context = this._defaults.getApiContextForModel(model.uri);
292
- const diagnostics = await workerProxy.doValidation(model.uri.toString(), context);
293
- const markers = diagnostics.map((d) => toMarker(model.uri, d));
294
- this._diagnosticsService.fireDiagnosticsChange(model.uri, diagnostics);
295
- editor.setModelMarkers(model, languageId, markers);
296
- }
297
- catch (err) {
298
- console.error(err);
299
- }
300
- }
301
- }
302
- function toSeverity(languageServiceSeverity) {
303
- switch (languageServiceSeverity) {
304
- case main.exports.DiagnosticSeverity.Error:
305
- return MarkerSeverity.Error;
306
- case main.exports.DiagnosticSeverity.Warning:
307
- return MarkerSeverity.Warning;
308
- case main.exports.DiagnosticSeverity.Information:
309
- return MarkerSeverity.Info;
310
- case main.exports.DiagnosticSeverity.Hint:
311
- return MarkerSeverity.Hint;
312
- default:
313
- return MarkerSeverity.Info;
314
- }
315
- }
316
- function toMarker(_resource, diag) {
317
- // Diagnostics positions are zero-based, MarkerData are 1-based
318
- return {
319
- severity: toSeverity(diag.severity),
320
- startLineNumber: diag.range.start.line + 1,
321
- startColumn: diag.range.start.character + 1,
322
- endLineNumber: diag.range.end.line + 1,
323
- endColumn: diag.range.end.character + 1,
324
- message: diag.message,
325
- };
326
- }
327
- //#endregion
328
- //#region Completion
329
- function fromPosition(position) {
330
- // Language service is zero based
331
- return { character: position.column - 1, line: position.lineNumber - 1 };
332
- }
333
- function toRange(range) {
334
- return new Range(range.start.line + 1, range.start.character + 1, range.end.line + 1, range.end.character + 1);
335
- }
336
- function toTextEdit(textEdit) {
337
- return {
338
- range: toRange(textEdit.range),
339
- text: textEdit.newText,
340
- };
341
- }
342
- function isInsertReplaceEdit(edit) {
343
- return (typeof edit.insert !== "undefined" &&
344
- typeof edit.replace !== "undefined");
345
- }
346
- function toCompletionItemKind(kind) {
347
- const mItemKind = languages.CompletionItemKind;
348
- switch (kind) {
349
- case main.exports.CompletionItemKind.Text:
350
- return mItemKind.Text;
351
- case main.exports.CompletionItemKind.Method:
352
- return mItemKind.Method;
353
- case main.exports.CompletionItemKind.Function:
354
- return mItemKind.Function;
355
- case main.exports.CompletionItemKind.Constructor:
356
- return mItemKind.Constructor;
357
- case main.exports.CompletionItemKind.Field:
358
- return mItemKind.Field;
359
- case main.exports.CompletionItemKind.Variable:
360
- return mItemKind.Variable;
361
- case main.exports.CompletionItemKind.Class:
362
- return mItemKind.Class;
363
- case main.exports.CompletionItemKind.Interface:
364
- return mItemKind.Interface;
365
- case main.exports.CompletionItemKind.Module:
366
- return mItemKind.Module;
367
- case main.exports.CompletionItemKind.Property:
368
- return mItemKind.Property;
369
- case main.exports.CompletionItemKind.Unit:
370
- return mItemKind.Unit;
371
- case main.exports.CompletionItemKind.Value:
372
- return mItemKind.Value;
373
- case main.exports.CompletionItemKind.Enum:
374
- return mItemKind.Enum;
375
- case main.exports.CompletionItemKind.Keyword:
376
- return mItemKind.Keyword;
377
- case main.exports.CompletionItemKind.Snippet:
378
- return mItemKind.Snippet;
379
- case main.exports.CompletionItemKind.Color:
380
- return mItemKind.Color;
381
- case main.exports.CompletionItemKind.File:
382
- return mItemKind.File;
383
- case main.exports.CompletionItemKind.Reference:
384
- return mItemKind.Reference;
385
- case main.exports.CompletionItemKind.Folder:
386
- return mItemKind.Folder;
387
- case main.exports.CompletionItemKind.EnumMember:
388
- return mItemKind.EnumMember;
389
- case main.exports.CompletionItemKind.Constant:
390
- return mItemKind.Constant;
391
- case main.exports.CompletionItemKind.Struct:
392
- return mItemKind.Struct;
393
- case main.exports.CompletionItemKind.Event:
394
- return mItemKind.Event;
395
- case main.exports.CompletionItemKind.Operator:
396
- return mItemKind.Operator;
397
- case main.exports.CompletionItemKind.TypeParameter:
398
- return mItemKind.TypeParameter;
399
- default:
400
- return mItemKind.Property;
401
- }
402
- }
403
- class CompletionProvider {
404
- constructor(_worker, _defaults) {
405
- this._worker = _worker;
406
- this._defaults = _defaults;
407
- this.triggerCharacters = [".", "("];
408
- }
409
- async provideCompletionItems(model, position) {
410
- const worker = await this._worker(model.uri);
411
- const context = this._defaults.getApiContextForModel(model.uri);
412
- const completionList = await worker.doComplete(model.uri.toString(), fromPosition(position), context);
413
- const wordInfo = model.getWordUntilPosition(position);
414
- const wordRange = new Range(position.lineNumber, wordInfo.startColumn, position.lineNumber, wordInfo.endColumn);
415
- const items = completionList.items.map((entry) => {
416
- const item = {
417
- label: entry.label,
418
- insertText: entry.insertText || entry.label,
419
- sortText: entry.sortText,
420
- filterText: entry.filterText,
421
- detail: entry.detail,
422
- range: wordRange,
423
- kind: toCompletionItemKind(entry.kind),
424
- };
425
- if (entry.textEdit) {
426
- if (isInsertReplaceEdit(entry.textEdit)) {
427
- item.range = {
428
- insert: toRange(entry.textEdit.insert),
429
- replace: toRange(entry.textEdit.replace),
430
- };
431
- }
432
- else {
433
- item.range = toRange(entry.textEdit.range);
434
- }
435
- item.insertText = entry.textEdit.newText;
436
- }
437
- if (entry.additionalTextEdits) {
438
- item.additionalTextEdits = entry.additionalTextEdits.map(toTextEdit);
439
- }
440
- if (entry.insertTextFormat === main.exports.InsertTextFormat.Snippet) {
441
- item.insertTextRules = languages.CompletionItemInsertTextRule.InsertAsSnippet;
442
- }
443
- if (entry.documentation) {
444
- if (typeof entry.documentation === "string") {
445
- item.documentation = entry.documentation;
446
- }
447
- else {
448
- item.documentation = {
449
- supportThemeIcons: false,
450
- value: entry.documentation.value,
451
- supportHtml: true,
452
- };
453
- }
454
- }
455
- return item;
456
- });
457
- return {
458
- incomplete: completionList.isIncomplete,
459
- suggestions: items,
460
- };
461
- }
462
- }
463
- //#endregion
464
- //#region Formatter
465
- class FormattingProvider {
466
- constructor(_worker, _defaults) {
467
- this._worker = _worker;
468
- this._defaults = _defaults;
469
- }
470
- async provideDocumentFormattingEdits(model) {
471
- const worker = await this._worker(model.uri);
472
- const context = this._defaults.getApiContextForModel(model.uri.toString());
473
- const edits = await worker.doFormat(model.uri.toString(), context);
474
- return edits.map((e) => ({ range: toRange(e.range), text: e.newText }));
475
- }
476
- }
477
- //#endregion
478
-
479
219
  /**
480
220
  * Manager to create our arcade worker and client proxy
481
221
  */