@arcgis/languages-sdk-spec 4.32.0-next.82

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/LICENSE.md ADDED
@@ -0,0 +1,13 @@
1
+ # Licensing
2
+
3
+ COPYRIGHT © 2024 Esri
4
+
5
+ All rights reserved under the copyright laws of the United States and applicable international laws, treaties, and conventions.
6
+
7
+ This material is licensed for use under the Esri Master License Agreement (MLA), and is bound by the terms of that agreement. You may redistribute and use this code without modification, provided you adhere to the terms of the MLA and include this copyright notice.
8
+
9
+ See use restrictions at http://www.esri.com/legal/pdfs/mla_e204_e300/english
10
+
11
+ For additional information, contact: Environmental Systems Research Institute, Inc. Attn: Contracts and Legal Services Department 380 New York Street Redlands, California, USA 92373 USA
12
+
13
+ email: contracts@esri.com
package/README.md ADDED
@@ -0,0 +1,21 @@
1
+ # ArcGIS Maps SDK for JavaScript - Languages SDK Spec
2
+
3
+ **No Esri Technical Support included.**
4
+
5
+ Package that is part of the [ArcGIS Maps SDK for JavaScript](https://developers.arcgis.com/javascript).
6
+
7
+ It is not intended to be used directly, but rather used as a dependency by other packages in the SDK.
8
+
9
+ ## License
10
+
11
+ COPYRIGHT © 2024 Esri
12
+
13
+ All rights reserved under the copyright laws of the United States and applicable international laws, treaties, and conventions.
14
+
15
+ This material is licensed for use under the Esri Master License Agreement (MLA), and is bound by the terms of that agreement. You may redistribute and use this code without modification, provided you adhere to the terms of the MLA and include this copyright notice.
16
+
17
+ See use restrictions at <http://www.esri.com/legal/pdfs/mla_e204_e300/english>
18
+
19
+ For additional information, contact: Environmental Systems Research Institute, Inc. Attn: Contracts and Legal Services Department 380 New York Street Redlands, California, USA 92373 USA
20
+
21
+ email: contracts@esri.com
@@ -0,0 +1,422 @@
1
+ import { CompletionItem } from 'vscode-languageserver-types';
2
+ export { CompletionItem } from 'vscode-languageserver-types';
3
+
4
+ /**
5
+ * Supported function bundles
6
+ */
7
+ type SqlBundleType = "core";
8
+ /**
9
+ * Supported sql profile names
10
+ */
11
+ type SqlProfileType = "Field Calculation";
12
+ /**
13
+ * Narrowed schema item type for sql
14
+ */
15
+ type SqlSchemaItemBase = GenericSchemaItemBase<SqlBundleType, SqlProfileType>;
16
+ /**
17
+ * Narrowed api item type for sql
18
+ */
19
+ type SqlApiItem = BaseSchemaApiItem<SqlBundleType, SqlProfileType>;
20
+ /**
21
+ * Narrowed api function type for sql
22
+ */
23
+ type SqlApiFunction = BaseSchemaApiFunction<SqlBundleType, SqlProfileType>;
24
+
25
+ /**
26
+ * This file contains union types that are used to constrain
27
+ * base schema types. It's a bit of a chicken and egg scenario
28
+ * where fields in the base schema types need a reference
29
+ * to the language specific Bundle and Profile types, creating
30
+ * a bit of circular dependency. This file breaks that cycle.
31
+ */
32
+ /**
33
+ * Union of bundle types that can be used in any sdk schema
34
+ */
35
+ type BundleType = ArcadeBundleType | SqlBundleType;
36
+ /**
37
+ * Union of profile types that can be used in any sdk schema
38
+ */
39
+ type ProfileType = ArcadeProfileType | SqlProfileType;
40
+
41
+ /**
42
+ * Definition for a schema category
43
+ */
44
+ interface SchemaCategory {
45
+ title: string;
46
+ description: string[] | string;
47
+ page: string;
48
+ hideSummaryList?: boolean;
49
+ }
50
+ /**
51
+ * The collection of supported types.
52
+ */
53
+ type SchemaValueType = "Any" | "Array<Any>" | "Array<Attachment>" | "Array<Boolean>" | "Array<Date>" | "Array<DateOnly>" | "Array<Dictionary>" | "Array<Extent>" | "Array<Feature>" | "Array<Geometry>" | "Array<KnowledgeGraph>" | "Array<Multipoint>" | "Array<Number>" | "Array<Number|Text>" | "Array<Point>" | "Array<Polygon>" | "Array<Polyline>" | "Array<Text>" | "Array<Time>" | "Attachment" | "Boolean" | "Date" | "DateOnly" | "Dictionary" | "Extent" | "Feature" | "FeatureSet" | "FeatureSetCollection" | "Function" | "Geometry" | "KnowledgeGraph" | "Multipoint" | "Null" | "Number" | "Point" | "Polygon" | "Polyline" | "Portal" | "Text" | "Time";
54
+ interface GenericSchemaItemBase<Bundle extends BundleType, Profile extends ProfileType> {
55
+ /**
56
+ * The name of the function or constant. Must start with a capital letter.
57
+ * @pattern ^[A-Z]+[a-zA-Z0-9.]*$
58
+ */
59
+ name: string;
60
+ /**
61
+ * A nice description for the constant or function. It can leverage Github Flavored Markdown formatting.
62
+ */
63
+ description: string[] | string;
64
+ /**
65
+ * Version string. Format x.y.
66
+ * @pattern ^1\.\d+$
67
+ */
68
+ sinceVersion?: string;
69
+ /**
70
+ * Indicates if the item should not be documented.
71
+ */
72
+ disableDocumentation?: boolean;
73
+ /**
74
+ * The profiles the constant or the function belongs to.
75
+ */
76
+ profiles?: Profile[];
77
+ /**
78
+ * The bundle the constant or the function belongs to.
79
+ */
80
+ bundle: Bundle;
81
+ /**
82
+ * The relative path to an image to illustate the constant or the function.
83
+ */
84
+ image?: string;
85
+ /**
86
+ * The code that will be injected in the classic editor. Must start with a capital letter and match the name of the funtion or constant.
87
+ * @pattern ^[A-Z]+.*$
88
+ */
89
+ snippet: string;
90
+ /**
91
+ * The collection of examples
92
+ */
93
+ examples?: SchemaExample[];
94
+ /**
95
+ * A collection of links to resources
96
+ */
97
+ resourceLinks?: SchemaResourceLink[];
98
+ }
99
+ /**
100
+ * Describes an Api Constant
101
+ */
102
+ interface BaseSchemaApiConstant<Bundle extends BundleType = BundleType, Profile extends ProfileType = ProfileType> extends GenericSchemaItemBase<Bundle, Profile> {
103
+ /**
104
+ * For constant, the property is mandatory and always true
105
+ */
106
+ isConstant: true;
107
+ }
108
+ type SchemaReturnValue = SchemaReturnDefinition | SchemaValueType | SchemaValueType[];
109
+ /**
110
+ * Describes an Api Function.
111
+ */
112
+ interface BaseSchemaApiFunction<Bundle extends BundleType, Profile extends ProfileType> extends GenericSchemaItemBase<Bundle, Profile> {
113
+ /**
114
+ * For function this property is optional and always false.
115
+ */
116
+ isConstant?: false;
117
+ /**
118
+ * The set of function parameters.
119
+ */
120
+ parameters?: SchemaProperty[];
121
+ /**
122
+ * The type of data returned by the function.
123
+ */
124
+ returnValue?: SchemaReturnValue;
125
+ }
126
+ /**
127
+ * Describes the properties for the type Property
128
+ */
129
+ interface SchemaProperty {
130
+ /**
131
+ * The name of the property.
132
+ * @pattern ^([a-z]+[a-zA-Z0-9_]*|\[.*\])$
133
+ */
134
+ name: string;
135
+ /**
136
+ * The data type of the property value. If the property supports more than one type then use an array.
137
+ */
138
+ type: SchemaValueType | SchemaValueType[];
139
+ /**
140
+ * The description for the property.
141
+ */
142
+ description: string[] | string;
143
+ /**
144
+ * Indicates if the property is optional.
145
+ */
146
+ optional?: boolean;
147
+ /**
148
+ * The properties if the type is Dictionary.
149
+ */
150
+ properties?: SchemaProperty[];
151
+ }
152
+ /**
153
+ * Describes the type fo data returned by a function.
154
+ */
155
+ interface SchemaReturnDefinition {
156
+ /**
157
+ * The data type of the value returned.
158
+ */
159
+ type: SchemaValueType;
160
+ /**
161
+ * A description for for the value returned.
162
+ */
163
+ description?: string[] | string;
164
+ /**
165
+ * The properties if the type returned is a Dictionary
166
+ */
167
+ properties?: SchemaProperty[];
168
+ }
169
+ /**
170
+ * Describes an example
171
+ */
172
+ interface SchemaExample {
173
+ /**
174
+ * A description for the example.
175
+ */
176
+ description?: string[] | string;
177
+ /**
178
+ * Either a single line string or an array of strings.
179
+ */
180
+ code: string[] | string;
181
+ }
182
+ /**
183
+ * Describes a link to additional resources
184
+ */
185
+ interface SchemaResourceLink {
186
+ /**
187
+ * The text used to describe the resource link.
188
+ */
189
+ linkText: string;
190
+ /**
191
+ * The url to the resource.
192
+ */
193
+ url: string;
194
+ }
195
+ /**
196
+ * Definition for simple item
197
+ */
198
+ type SchemaSimpleApiItem<Bundle extends BundleType = BundleType, Profile extends ProfileType = ProfileType> = BaseSchemaApiConstant<Bundle, Profile> | BaseSchemaApiFunction<Bundle, Profile>;
199
+ /**
200
+ * Definition for a constant or a function.
201
+ * An Api Item can be either a constant, a function, or an array of functions
202
+ */
203
+ type BaseSchemaApiItem<Bundle extends BundleType, Profile extends ProfileType = ProfileType> = BaseSchemaApiFunction<Bundle, Profile>[] | SchemaSimpleApiItem<Bundle, Profile>;
204
+
205
+ /**
206
+ * Supported function bundles
207
+ */
208
+ type ArcadeBundleType = "core" | "data-access" | "database" | "geometry" | "knowledge-graph" | "portal-access" | "track";
209
+ /**
210
+ * The profile names this definition belongs to
211
+ */
212
+ type ArcadeProfileType = "Attribute Rule Calculation" | "Attribute Rules" | "Dashboard Data" | "Field Calculation" | "Form Calculation" | "GeoAnalytics" | "Popups" | "Tasks" | "Velocity";
213
+ type ArcadeSchemaItemBase = GenericSchemaItemBase<ArcadeBundleType, ArcadeProfileType>;
214
+ type ArcadeApiItem = BaseSchemaApiItem<ArcadeBundleType, ArcadeProfileType>;
215
+ type ArcadeApiFunction = BaseSchemaApiFunction<ArcadeBundleType, ArcadeProfileType>;
216
+
217
+ /**
218
+ * Describes a profile
219
+ */
220
+ interface BaseSdkPredefinedProfile<ProfileId extends string, Bundle extends string> {
221
+ /**
222
+ * Profile name for UI
223
+ */
224
+ name: string;
225
+ /**
226
+ * Profile id for docs
227
+ */
228
+ id: ProfileId;
229
+ /**
230
+ * Function bundles enabled for this profile
231
+ */
232
+ bundles: Bundle[];
233
+ /**
234
+ * Variable describing name, type, and providing description
235
+ */
236
+ variables: SdkVariable[];
237
+ }
238
+ /**
239
+ * Supported profile variable types
240
+ */
241
+ type SdkVariableType = "array" | "boolean" | "date" | "dateOnly" | "dictionary" | "feature" | "featureSet" | "featureSetCollection" | "geometry" | "knowledgeGraph" | "number" | "text" | "time";
242
+ /**
243
+ * Describes variables
244
+ */
245
+ interface SdkVariableBase {
246
+ /**
247
+ * Name of the variable.
248
+ */
249
+ name: string;
250
+ /**
251
+ * Type of the variable.
252
+ */
253
+ type: SdkVariableType;
254
+ /**
255
+ * Description of the variable.
256
+ */
257
+ description?: string;
258
+ }
259
+ /**
260
+ * A variable that represents a simple type (boolean, number, feature, etc.)
261
+ */
262
+ interface SdkValueVariable extends SdkVariableBase {
263
+ type: Exclude<SdkVariableType, "dictionary">;
264
+ }
265
+ /**
266
+ * A dictionary variable
267
+ */
268
+ interface SdkDictionaryVariable extends SdkVariableBase {
269
+ type: "dictionary";
270
+ properties: SdkVariable[];
271
+ }
272
+ /**
273
+ * Profile variable
274
+ */
275
+ type SdkVariable = SdkDictionaryVariable | SdkValueVariable;
276
+
277
+ /**
278
+ * The list of supported profiles
279
+ */
280
+ type ArcadeProfileId = "aggregate-field" | "alias" | "attribute-rule-calculation" | "attribute-rule-constraint" | "attribute-rule-validation" | "dashboard-data" | "dashboard-indicator-formatting" | "dashboard-list-formatting" | "dashboard-table-formatting" | "data-pipelines" | "dictionary-renderer" | "feature-display-title" | "feature-z" | "field-calculation" | "field-mapping" | "form-calculation" | "form-constraint" | "geoanalytics" | "geotrigger-notification" | "labeling" | "layout" | "location-update-constraint" | "measure-visualization" | "minimalist" | "model-builder" | "popup-element-feature-reduction" | "popup-element" | "popup-feature-reduction" | "popup" | "quick-capture" | "tasks" | "velocity" | "visualization";
281
+ /**
282
+ * The predefined profiles for the Arcade language
283
+ */
284
+ type ArcadeSdkPredefinedProfile = BaseSdkPredefinedProfile<ArcadeProfileId, ArcadeBundleType>;
285
+ type ArcadeSdkPredefinedProfiles = BaseSdkPredefinedProfile<ArcadeProfileId, ArcadeBundleType>[];
286
+
287
+ /**
288
+ * The list of supported profiles
289
+ */
290
+ type SqlProfileId = "field-calculation";
291
+ /**
292
+ * The predefined profiles for the SQL language
293
+ */
294
+ type SqlSdkPredefinedProfile = BaseSdkPredefinedProfile<SqlProfileId, SqlBundleType>;
295
+ type SqlSdkPredefinedProfiles = BaseSdkPredefinedProfile<SqlProfileId, SqlBundleType>[];
296
+
297
+ type SdkPredefinedProfile = ArcadeSdkPredefinedProfile | SqlSdkPredefinedProfile;
298
+ type SdkPredefinedProfiles = SdkPredefinedProfile[];
299
+ /**
300
+ * A union of all language profile ids
301
+ */
302
+ type ProfileId = ArcadeProfileId | SqlProfileId;
303
+
304
+ /**
305
+ * Union of API items that can be used in any sdk schema
306
+ */
307
+ type SchemaApiItem = ArcadeApiItem | SqlApiItem;
308
+ /**
309
+ * Union of API functions that can be used in any sdk schema
310
+ */
311
+ type SchemaApiFunction = ArcadeApiFunction | SqlApiFunction;
312
+ /**
313
+ * Union of schema items that can be used in any sdk schema
314
+ */
315
+ type SchemaItemBase = ArcadeSchemaItemBase | SqlSchemaItemBase;
316
+
317
+ /**
318
+ * Represents an api category and its items
319
+ */
320
+ interface SdkCategory {
321
+ /**
322
+ * The unique ID for the category
323
+ */
324
+ id: string;
325
+ /**
326
+ * The title for the category
327
+ */
328
+ title: string;
329
+ /**
330
+ * The collection of api items for the category
331
+ */
332
+ items: SdkItem[];
333
+ }
334
+ interface SdkItemBase {
335
+ /**
336
+ * The name of the function or constant.
337
+ */
338
+ name: string;
339
+ /**
340
+ * The version string when the api item was introduced. If undefined then it was from the origin.
341
+ */
342
+ sinceVersion?: string;
343
+ /**
344
+ * The api bundle this item belongs to.
345
+ */
346
+ bundle: BundleType;
347
+ /**
348
+ * Markdown description of the item.
349
+ */
350
+ description: string;
351
+ /**
352
+ * Markdown containing examples.
353
+ */
354
+ examples: string;
355
+ /**
356
+ * Link for additional information about the item.
357
+ */
358
+ link: string;
359
+ /**
360
+ * Completion item directly leveraged by the editor.
361
+ */
362
+ completion: CompletionItem;
363
+ /**
364
+ * Indicates if the documentation for this item should be disabled.
365
+ */
366
+ disableDocumentation?: boolean;
367
+ }
368
+ /**
369
+ * Represents a constant in the arcade api.
370
+ */
371
+ interface SdkConstant extends SdkItemBase {
372
+ type: "constant";
373
+ }
374
+ /**
375
+ * Represents a function in the arcade api
376
+ */
377
+ interface SdkFunction extends SdkItemBase {
378
+ type: "function";
379
+ /**
380
+ * Information leveraged by the editor to validate function call.
381
+ * Indicates the minimum number of expected parameters and the maximum number of parameters expected.
382
+ */
383
+ parametersInfo: {
384
+ min: number;
385
+ max: number;
386
+ };
387
+ }
388
+ /**
389
+ * Represents an item in the arcade api.
390
+ */
391
+ type SdkItem = SdkConstant | SdkFunction | SdkFunction[];
392
+
393
+ interface T9NApiRoot {
394
+ resources: Record<string, string>;
395
+ categories: T9NCategories;
396
+ }
397
+ type T9NCategories = Record<string, T9NCategory>;
398
+ interface T9NCategory {
399
+ title: string;
400
+ description?: Record<string, string>;
401
+ items: T9NApiItems;
402
+ }
403
+ type T9NResource = Record<string, string>;
404
+ type T9NApiItems = Record<string, Record<string, T9NApiItem> | T9NApiItem>;
405
+ interface T9NProperty {
406
+ description?: Record<string, string>;
407
+ properties?: Record<string, T9NProperty>;
408
+ }
409
+ interface T9NApiItem {
410
+ description: Record<string, string>;
411
+ examples?: Record<string, Record<string, string>>;
412
+ parameters?: Record<string, T9NProperty>;
413
+ returnValue?: T9NProperty;
414
+ }
415
+ type T9NProfiles = Record<string, T9NProfileVariables>;
416
+ type T9NProfileVariables = Record<string, T9NProfileVariable>;
417
+ interface T9NProfileVariable {
418
+ description?: string;
419
+ properties?: T9NProfileVariables;
420
+ }
421
+
422
+ export type { ArcadeProfileId, ArcadeSdkPredefinedProfile, ArcadeSdkPredefinedProfiles, BaseSchemaApiConstant, BaseSchemaApiFunction, BaseSchemaApiItem, BaseSdkPredefinedProfile, BundleType, GenericSchemaItemBase, ProfileId, ProfileType, SchemaApiFunction, SchemaApiItem, SchemaCategory, SchemaExample, SchemaItemBase, SchemaProperty, SchemaResourceLink, SchemaReturnDefinition, SchemaReturnValue, SchemaSimpleApiItem, SchemaValueType, SdkCategory, SdkConstant, SdkDictionaryVariable, SdkFunction, SdkItem, SdkItemBase, SdkPredefinedProfile, SdkPredefinedProfiles, SdkValueVariable, SdkVariable, SdkVariableBase, SdkVariableType, SqlProfileId, SqlSdkPredefinedProfile, SqlSdkPredefinedProfiles, T9NApiItem, T9NApiItems, T9NApiRoot, T9NCategories, T9NCategory, T9NProfileVariable, T9NProfileVariables, T9NProfiles, T9NProperty, T9NResource };
package/dist/index.js ADDED
File without changes
@@ -0,0 +1,40 @@
1
+ {
2
+ "$schema": "http://json-schema.org/draft-07/schema#",
3
+ "$ref": "#/definitions/SchemaCategory",
4
+ "definitions": {
5
+ "SchemaCategory": {
6
+ "type": "object",
7
+ "properties": {
8
+ "title": {
9
+ "type": "string"
10
+ },
11
+ "description": {
12
+ "anyOf": [
13
+ {
14
+ "type": "array",
15
+ "items": {
16
+ "type": "string"
17
+ }
18
+ },
19
+ {
20
+ "type": "string"
21
+ }
22
+ ]
23
+ },
24
+ "page": {
25
+ "type": "string"
26
+ },
27
+ "hideSummaryList": {
28
+ "type": "boolean"
29
+ }
30
+ },
31
+ "required": [
32
+ "title",
33
+ "description",
34
+ "page"
35
+ ],
36
+ "additionalProperties": false,
37
+ "description": "Definition for a schema category"
38
+ }
39
+ }
40
+ }