lucid-extension-sdk 0.0.3 → 0.0.4

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 (49) hide show
  1. package/package.json +2 -1
  2. package/sdk/commandtypes.d.ts +89 -2
  3. package/sdk/core/checks.d.ts +8 -0
  4. package/sdk/core/checks.js +14 -1
  5. package/sdk/core/data/fieldtypedefinition/basefieldtypedefinition.d.ts +13 -0
  6. package/sdk/core/data/fieldtypedefinition/basefieldtypedefinition.js +58 -0
  7. package/sdk/core/data/fieldtypedefinition/collectionenumfieldtype.d.ts +30 -0
  8. package/sdk/core/data/fieldtypedefinition/collectionenumfieldtype.js +45 -0
  9. package/sdk/core/data/fieldtypedefinition/fieldtypearray.d.ts +16 -0
  10. package/sdk/core/data/fieldtypedefinition/fieldtypearray.js +50 -0
  11. package/sdk/core/data/fieldtypedefinition/fieldtypedefinition.d.ts +13 -0
  12. package/sdk/core/data/fieldtypedefinition/fieldtypedefinition.js +156 -0
  13. package/sdk/core/data/fieldtypedefinition/literalfieldtype.d.ts +17 -0
  14. package/sdk/core/data/fieldtypedefinition/literalfieldtype.js +60 -0
  15. package/sdk/core/data/fieldtypedefinition/ndimensionalfieldtypearray.d.ts +17 -0
  16. package/sdk/core/data/fieldtypedefinition/ndimensionalfieldtypearray.js +51 -0
  17. package/sdk/core/data/fieldtypedefinition/scalarfieldtype.d.ts +14 -0
  18. package/sdk/core/data/fieldtypedefinition/scalarfieldtype.js +33 -0
  19. package/sdk/core/data/referencekeys/serializedreferencekey.d.ts +24 -0
  20. package/sdk/core/data/referencekeys/serializedreferencekey.js +5 -0
  21. package/sdk/core/data/serializedfield/serializeddataitems.d.ts +5 -0
  22. package/sdk/core/data/serializedfield/serializeddataitems.js +9 -0
  23. package/sdk/core/data/serializedfield/serializedfielddefinition.d.ts +19 -0
  24. package/sdk/core/data/serializedfield/serializedfielddefinition.js +12 -0
  25. package/sdk/core/{serializedfields.d.ts → data/serializedfield/serializedfields.d.ts} +0 -0
  26. package/sdk/core/{serializedfields.js → data/serializedfield/serializedfields.js} +1 -1
  27. package/sdk/core/data/serializedfield/serializedschema.d.ts +9 -0
  28. package/sdk/core/data/serializedfield/serializedschema.js +2 -0
  29. package/sdk/data/collectionproxy.d.ts +6 -0
  30. package/sdk/data/collectionproxy.js +15 -0
  31. package/sdk/data/dataproxy.d.ts +12 -0
  32. package/sdk/data/dataproxy.js +11 -0
  33. package/sdk/data/datasourceproxy.d.ts +9 -0
  34. package/sdk/data/datasourceproxy.js +20 -0
  35. package/sdk/data/referencekeydefinition.d.ts +17 -0
  36. package/sdk/data/referencekeydefinition.js +27 -0
  37. package/sdk/data/referencekeyproxy.d.ts +9 -0
  38. package/sdk/data/referencekeyproxy.js +12 -0
  39. package/sdk/data/schemadefinition.d.ts +11 -0
  40. package/sdk/data/schemadefinition.js +14 -0
  41. package/sdk/document/blockdefinition.d.ts +10 -0
  42. package/sdk/document/elementproxy.d.ts +5 -0
  43. package/sdk/document/elementproxy.js +13 -0
  44. package/sdk/document/pageproxy.js +4 -0
  45. package/sdk/document/shapedataproxy.d.ts +1 -1
  46. package/sdk/editorclient.d.ts +31 -0
  47. package/sdk/editorclient.js +42 -0
  48. package/sdk/index.d.ts +1 -1
  49. package/sdk/index.js +1 -1
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "lucid-extension-sdk",
3
- "version": "0.0.3",
3
+ "version": "0.0.4",
4
4
  "description": "Utility classes for writing Lucid Software editor extensions",
5
5
  "main": "sdk/index.js",
6
6
  "types": "sdk/index.d.ts",
@@ -9,6 +9,7 @@
9
9
  "declaration": true,
10
10
  "devDependencies": {
11
11
  "@bazel/typescript": "2.0.1",
12
+ "@types/jasmine": "^3.10.3",
12
13
  "@types/node": "^16.11.11",
13
14
  "typedoc": "^0.22.11",
14
15
  "typescript": "4.3.5"
@@ -1,7 +1,9 @@
1
- import { JsonSerializable } from './core/jsonserializable';
1
+ import { SerializedFieldTypeDefinition } from './core/data/fieldtypedefinition/fieldtypedefinition';
2
+ import { SerializedReferenceKeyType } from './core/data/referencekeys/serializedreferencekey';
3
+ import { SerializedFieldType } from './core/data/serializedfield/serializedfields';
4
+ import { JsonObject, JsonSerializable } from './core/jsonserializable';
2
5
  import { LinearOffsetType } from './core/offsettype';
3
6
  import { SerializedDataError } from './core/serializeddataerror';
4
- import { SerializedFieldType } from './core/serializedfields';
5
7
  import { ShapeDataInheritance } from './core/shapedatainheritance';
6
8
  import { Box, Point } from './math';
7
9
  import { MenuLocation, MenuType } from './ui/menu';
@@ -10,6 +12,8 @@ export declare const enum CommandName {
10
12
  AddShapeData = "asd",
11
13
  AnimateViewport = "av",
12
14
  CreateBlock = "cb",
15
+ CreateCollection = "cc",
16
+ CreateDataSource = "cds",
13
17
  CreateLine = "cl",
14
18
  CreatePage = "cp",
15
19
  DeleteItem = "di",
@@ -20,10 +24,12 @@ export declare const enum CommandName {
20
24
  ExecuteFormula = "ef",
21
25
  GetConnectedLines = "gcl",
22
26
  GetCurrentPage = "gcp",
27
+ GetCustomShape = "gcs",
23
28
  GetDataItemField = "gdif",
24
29
  GetElementType = "get",
25
30
  GetItemPageId = "gip",
26
31
  GetProperty = "gp",
32
+ GetReferenceKey = "grk",
27
33
  GetRelativeLinePosition = "grlp",
28
34
  GetSelection = "gs",
29
35
  GetShapeData = "gsd",
@@ -38,16 +44,19 @@ export declare const enum CommandName {
38
44
  ListLines = "ll",
39
45
  ListPages = "lp",
40
46
  ListProperties = "lpr",
47
+ ListReferenceKeys = "lrk",
41
48
  ListShapeData = "lsd",
42
49
  ListTextAreas = "lta",
43
50
  LoadBlockClasses = "lbc",
44
51
  LogForTestCase = "log",
45
52
  OffsetItems = "oi",
53
+ PatchDataItems = "pdi",
46
54
  ReloadExtension = "r",
47
55
  SendUIMessage = "suim",
48
56
  SendXHR = "xhr",
49
57
  SetCurrentPage = "scp",
50
58
  SetProperty = "sp",
59
+ SetReferenceKey = "srk",
51
60
  SetShapeData = "ssd",
52
61
  ShowModal = "sm"
53
62
  }
@@ -68,6 +77,14 @@ export declare type CommandArgs = {
68
77
  query: CreateBlockQuery;
69
78
  result: CreateBlockResult;
70
79
  };
80
+ [CommandName.CreateCollection]: {
81
+ query: CreateCollectionQuery;
82
+ result: CreateCollectionResult;
83
+ };
84
+ [CommandName.CreateDataSource]: {
85
+ query: CreateDataSourceQuery;
86
+ result: CreateDataSourceResult;
87
+ };
71
88
  [CommandName.CreateLine]: {
72
89
  query: CreateLineQuery;
73
90
  result: CreateLineResult;
@@ -108,6 +125,10 @@ export declare type CommandArgs = {
108
125
  query: GetCurrentPageQuery;
109
126
  result: GetCurrentPageResult;
110
127
  };
128
+ [CommandName.GetCustomShape]: {
129
+ query: GetCustomShapeQuery;
130
+ result: GetCustomShapeResult;
131
+ };
111
132
  [CommandName.GetDataItemField]: {
112
133
  query: GetDataItemFieldQuery;
113
134
  result: GetDataItemFieldResult;
@@ -124,6 +145,10 @@ export declare type CommandArgs = {
124
145
  query: GetPropertyQuery;
125
146
  result: GetPropertyResult;
126
147
  };
148
+ [CommandName.GetReferenceKey]: {
149
+ query: GetReferenceKeyQuery;
150
+ result: GetReferenceKeyResult;
151
+ };
127
152
  [CommandName.GetRelativeLinePosition]: {
128
153
  query: GetRelativeLinePositionQuery;
129
154
  result: GetRelativeLinePositionResult;
@@ -180,6 +205,10 @@ export declare type CommandArgs = {
180
205
  query: ListPropertiesQuery;
181
206
  result: ListPropertiesResult;
182
207
  };
208
+ [CommandName.ListReferenceKeys]: {
209
+ query: ListReferenceKeysQuery;
210
+ result: ListReferenceKeysResult;
211
+ };
183
212
  [CommandName.ListShapeData]: {
184
213
  query: ListShapeDataQuery;
185
214
  result: ListShapeDataResult;
@@ -200,6 +229,10 @@ export declare type CommandArgs = {
200
229
  query: OffsetItemsQuery;
201
230
  result: OffsetItemsResult;
202
231
  };
232
+ [CommandName.PatchDataItems]: {
233
+ query: PatchDataItemsQuery;
234
+ result: PatchDataItemsResult;
235
+ };
203
236
  [CommandName.ReloadExtension]: {
204
237
  query: ReloadExtensionQuery;
205
238
  result: ReloadExtensionResult;
@@ -220,6 +253,10 @@ export declare type CommandArgs = {
220
253
  query: SetPropertyQuery;
221
254
  result: SetPropertyResult;
222
255
  };
256
+ [CommandName.SetReferenceKey]: {
257
+ query: SetReferenceKeyQuery;
258
+ result: SetReferenceKeyResult;
259
+ };
223
260
  [CommandName.SetShapeData]: {
224
261
  query: SetShapeDataQuery;
225
262
  result: SetShapeDataResult;
@@ -249,8 +286,27 @@ export declare type AddShapeDataResult = undefined;
249
286
  export declare type CreateBlockQuery = {
250
287
  'p'?: string;
251
288
  'c': string;
289
+ 's'?: JsonSerializable | undefined;
252
290
  };
253
291
  export declare type CreateBlockResult = string;
292
+ export declare type CreateCollectionFieldDefinition = {
293
+ 'n': string;
294
+ 't': SerializedFieldTypeDefinition;
295
+ };
296
+ export declare type CreateCollectionQuery = {
297
+ 's': string;
298
+ 'n': string;
299
+ 'f': CreateCollectionFieldDefinition[];
300
+ 'p': string[];
301
+ };
302
+ export declare type CreateCollectionResult = string;
303
+ export declare type CreateDataSourceQuery = {
304
+ 'n': string;
305
+ 's': {
306
+ [key: string]: JsonSerializable;
307
+ };
308
+ };
309
+ export declare type CreateDataSourceResult = string;
254
310
  export declare type CreateLineQuery = {
255
311
  'p'?: string;
256
312
  };
@@ -295,6 +351,15 @@ export declare type GetConnectedLinesQuery = string;
295
351
  export declare type GetConnectedLinesResult = string[];
296
352
  export declare type GetCurrentPageQuery = void;
297
353
  export declare type GetCurrentPageResult = string | undefined;
354
+ export declare type GetCustomShapeQuery = {
355
+ 'l': string;
356
+ 's': string;
357
+ };
358
+ export declare type GetCustomShapeResult = Promise<{
359
+ 's': JsonSerializable;
360
+ 'bb': Box;
361
+ 'p': JsonObject;
362
+ } | undefined>;
298
363
  export declare type GetDataItemFieldQuery = {
299
364
  'c': string;
300
365
  'pk': string;
@@ -303,6 +368,11 @@ export declare type GetDataItemFieldQuery = {
303
368
  export declare type GetDataItemFieldResult = SerializedFieldType;
304
369
  export declare type GetItemPageIdQuery = string;
305
370
  export declare type GetItemPageIdResult = string;
371
+ export declare type GetReferenceKeyQuery = {
372
+ 'id'?: string;
373
+ 'k': number | string;
374
+ };
375
+ export declare type GetReferenceKeyResult = SerializedReferenceKeyType;
306
376
  export declare type GetPropertyQuery = {
307
377
  'id'?: string | undefined;
308
378
  'p': string;
@@ -349,6 +419,10 @@ export declare type ListDataSourcesQuery = undefined;
349
419
  export declare type ListDataSourcesResult = string[];
350
420
  export declare type ListPagesQuery = void;
351
421
  export declare type ListPagesResult = string[];
422
+ export declare type ListReferenceKeysQuery = {
423
+ 'id'?: string | undefined;
424
+ };
425
+ export declare type ListReferenceKeysResult = (string | number)[];
352
426
  export declare type ListPropertiesQuery = {
353
427
  'id'?: string | undefined;
354
428
  };
@@ -368,6 +442,13 @@ export declare type OffsetItemsQuery = {
368
442
  'o': Point;
369
443
  };
370
444
  export declare type OffsetItemsResult = undefined;
445
+ export declare type PatchDataItemsQuery = {
446
+ 'id': string;
447
+ 'a': Record<string, SerializedFieldType>[];
448
+ 'c': Record<string, Record<string, SerializedFieldType>>;
449
+ 'd': string[];
450
+ };
451
+ export declare type PatchDataItemsResult = undefined;
371
452
  export declare type ReloadExtensionQuery = void;
372
453
  export declare type ReloadExtensionResult = undefined;
373
454
  export declare type SendUIMessageQuery = {
@@ -410,6 +491,12 @@ export declare type SetPropertyQuery = {
410
491
  'v'?: JsonSerializable;
411
492
  };
412
493
  export declare type SetPropertyResult = undefined;
494
+ export declare type SetReferenceKeyQuery = {
495
+ 'id'?: string | undefined;
496
+ 'k': string | number;
497
+ 'v'?: SerializedReferenceKeyType;
498
+ };
499
+ export declare type SetReferenceKeyResult = undefined;
413
500
  export declare type SetShapeDataQuery = {
414
501
  'id'?: string | undefined;
415
502
  'n': string;
@@ -62,6 +62,14 @@ export declare function isFunction(val: unknown): val is (...unknownArgs: any[])
62
62
  * @return Whether variable is an object.
63
63
  */
64
64
  export declare function isObject(val: unknown): val is Record<string, unknown>;
65
+ /**
66
+ * Returns true if the specified value is an object (i.e. it's safe to do property accesses on it).
67
+ *
68
+ * This is safer than using goog.isObject directly (this is its code inlined) because it doesn't introduce an `any`.
69
+ * @param val Variable to test.
70
+ * @return Whether variable is an object.
71
+ */
72
+ export declare function isRecord<T>(typeGuard: (a: unknown) => a is T): (val: unknown) => val is Record<string, T>;
65
73
  /**
66
74
  * Returns true if the specified value is an array.
67
75
  *
@@ -1,6 +1,6 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.isPromise = exports.isUnknown = exports.isAny = exports.isEmptyOrNullishObject = exports.isTypedArray = exports.isArray = exports.isObject = exports.isFunction = exports.isInt = exports.isNumber = exports.isBoolean = exports.isString = exports.isNullish = exports.isDefAndNotNull = exports.isUndefined = exports.isNull = exports.isDef = void 0;
3
+ exports.isPromise = exports.isUnknown = exports.isAny = exports.isEmptyOrNullishObject = exports.isTypedArray = exports.isArray = exports.isRecord = exports.isObject = exports.isFunction = exports.isInt = exports.isNumber = exports.isBoolean = exports.isString = exports.isNullish = exports.isDefAndNotNull = exports.isUndefined = exports.isNull = exports.isDef = void 0;
4
4
  /**
5
5
  * Returns true if the specified value is not undefined.
6
6
  *
@@ -99,6 +99,19 @@ function isObject(val) {
99
99
  return (type == 'object' && val != null) || type == 'function';
100
100
  }
101
101
  exports.isObject = isObject;
102
+ /**
103
+ * Returns true if the specified value is an object (i.e. it's safe to do property accesses on it).
104
+ *
105
+ * This is safer than using goog.isObject directly (this is its code inlined) because it doesn't introduce an `any`.
106
+ * @param val Variable to test.
107
+ * @return Whether variable is an object.
108
+ */
109
+ function isRecord(typeGuard) {
110
+ return function (val) {
111
+ return isObject(val) && Object.values(val).every(typeGuard);
112
+ };
113
+ }
114
+ exports.isRecord = isRecord;
102
115
  /**
103
116
  * Returns true if the specified value is an array.
104
117
  *
@@ -0,0 +1,13 @@
1
+ import { CollectionEnumFieldType, SerializedCollectionEnumFieldType } from './collectionenumfieldtype';
2
+ import { FieldTypeArray, SerializedFieldTypeArray } from './fieldtypearray';
3
+ import { LiteralFieldType, SerializedLiteralFieldType } from './literalfieldtype';
4
+ import { NDimensionalFieldTypeArray, SerializedNDimensionalFieldTypeArray } from './ndimensionalfieldtypearray';
5
+ import { ScalarFieldTypeEnum } from './scalarfieldtype';
6
+ export declare type AnyFieldTypeArrayDefinition = FieldTypeArray | NDimensionalFieldTypeArray;
7
+ export declare function isAnyFieldTypeArray(fieldType: BaseFieldTypeDefinition): fieldType is AnyFieldTypeArrayDefinition;
8
+ export declare type BaseFieldTypeDefinition = ScalarFieldTypeEnum | LiteralFieldType | AnyFieldTypeArrayDefinition | CollectionEnumFieldType;
9
+ export declare type SerializedBaseFieldTypeDefinition = ScalarFieldTypeEnum | SerializedLiteralFieldType | SerializedFieldTypeArray | SerializedNDimensionalFieldTypeArray | SerializedCollectionEnumFieldType;
10
+ export declare function isBaseFieldTypeDefinition(fieldType: any): fieldType is BaseFieldTypeDefinition;
11
+ export declare function serializeBaseFieldTypeDefinition(baseFieldType: BaseFieldTypeDefinition): SerializedBaseFieldTypeDefinition;
12
+ export declare function deserializeBaseFieldTypeDefinition(baseFieldType: SerializedBaseFieldTypeDefinition): BaseFieldTypeDefinition;
13
+ export declare function isSerializedBaseFieldTypeDefinition(definition: any): definition is SerializedBaseFieldTypeDefinition;
@@ -0,0 +1,58 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.isSerializedBaseFieldTypeDefinition = exports.deserializeBaseFieldTypeDefinition = exports.serializeBaseFieldTypeDefinition = exports.isBaseFieldTypeDefinition = exports.isAnyFieldTypeArray = void 0;
4
+ const checks_1 = require("../../checks");
5
+ const collectionenumfieldtype_1 = require("./collectionenumfieldtype");
6
+ const fieldtypearray_1 = require("./fieldtypearray");
7
+ const literalfieldtype_1 = require("./literalfieldtype");
8
+ const ndimensionalfieldtypearray_1 = require("./ndimensionalfieldtypearray");
9
+ const scalarfieldtype_1 = require("./scalarfieldtype");
10
+ function isAnyFieldTypeArray(fieldType) {
11
+ return fieldType instanceof fieldtypearray_1.FieldTypeArray || fieldType instanceof ndimensionalfieldtypearray_1.NDimensionalFieldTypeArray;
12
+ }
13
+ exports.isAnyFieldTypeArray = isAnyFieldTypeArray;
14
+ function isBaseFieldTypeDefinition(fieldType) {
15
+ return ((0, scalarfieldtype_1.isScalarFieldTypeEnum)(fieldType) ||
16
+ (0, literalfieldtype_1.isLiteralFieldType)(fieldType) ||
17
+ isAnyFieldTypeArray(fieldType) ||
18
+ (0, collectionenumfieldtype_1.isCollectionEnumFieldType)(fieldType));
19
+ }
20
+ exports.isBaseFieldTypeDefinition = isBaseFieldTypeDefinition;
21
+ function serializeBaseFieldTypeDefinition(baseFieldType) {
22
+ // Unfortunately there's no easy way to do goog.DEBUG checks inside lucid-extension-sdk right now.
23
+ // if (goog.DEBUG && !isBaseFieldTypeDefinition(baseFieldType)) {
24
+ // throw new Error(`Passed non-BaseFieldTypeDefinition into serializeBaseFieldTypeDefinition()!`);
25
+ // }
26
+ if (baseFieldType instanceof literalfieldtype_1.LiteralFieldType ||
27
+ baseFieldType instanceof fieldtypearray_1.FieldTypeArray ||
28
+ baseFieldType instanceof ndimensionalfieldtypearray_1.NDimensionalFieldTypeArray ||
29
+ baseFieldType instanceof collectionenumfieldtype_1.CollectionEnumFieldType) {
30
+ return baseFieldType.serialize();
31
+ }
32
+ return baseFieldType;
33
+ }
34
+ exports.serializeBaseFieldTypeDefinition = serializeBaseFieldTypeDefinition;
35
+ function deserializeBaseFieldTypeDefinition(baseFieldType) {
36
+ if ((0, literalfieldtype_1.isSerializedLiteralFieldType)(baseFieldType)) {
37
+ return (0, literalfieldtype_1.deserializeLiteralFieldType)(baseFieldType);
38
+ }
39
+ if ((0, collectionenumfieldtype_1.isSerializedCollectionEnumFieldType)(baseFieldType)) {
40
+ return (0, collectionenumfieldtype_1.deserializeCollectionEnumFieldType)(baseFieldType);
41
+ }
42
+ if ((0, fieldtypearray_1.isSerializedFieldTypeArray)(baseFieldType, isSerializedBaseFieldTypeDefinition)) {
43
+ return (0, fieldtypearray_1.deserializeFieldTypeArray)(baseFieldType);
44
+ }
45
+ if ((0, ndimensionalfieldtypearray_1.isSerializedNDimensionalFieldTypeArray)(baseFieldType)) {
46
+ return (0, ndimensionalfieldtypearray_1.deserializeNDimensionalFieldTypeArray)(baseFieldType);
47
+ }
48
+ return baseFieldType;
49
+ }
50
+ exports.deserializeBaseFieldTypeDefinition = deserializeBaseFieldTypeDefinition;
51
+ function isSerializedBaseFieldTypeDefinition(definition) {
52
+ return ((0, checks_1.isDefAndNotNull)(scalarfieldtype_1.ScalarFieldTypeEnum[definition]) ||
53
+ (0, literalfieldtype_1.isSerializedLiteralFieldType)(definition) ||
54
+ (0, collectionenumfieldtype_1.isSerializedCollectionEnumFieldType)(definition) ||
55
+ (0, fieldtypearray_1.isSerializedFieldTypeArray)(definition, isSerializedBaseFieldTypeDefinition) ||
56
+ (0, ndimensionalfieldtypearray_1.isSerializedNDimensionalFieldTypeArray)(definition));
57
+ }
58
+ exports.isSerializedBaseFieldTypeDefinition = isSerializedBaseFieldTypeDefinition;
@@ -0,0 +1,30 @@
1
+ export declare const CollectionEnumFieldTypeKey = "COLLECTION_ENUM";
2
+ /**
3
+ * Contains the field names of all valid fields for a groovy metadata collection.
4
+ *
5
+ * This should be kept in sync with GroovyFieldNames in FieldType.scala
6
+ */
7
+ export declare enum CollectionEnumFieldNames {
8
+ Name = "name",
9
+ Id = "id",
10
+ Description = "description",
11
+ Color = "color",
12
+ IconUrl = "iconUrl"
13
+ }
14
+ export declare class CollectionEnumFieldType {
15
+ readonly collectionId: string;
16
+ /**
17
+ * Specifies which groovy field name is used as the primary key.
18
+ *
19
+ * This should be kept in sync with GroovyFieldNames in FieldType.scala
20
+ */
21
+ static readonly PRIMARY_KEY = CollectionEnumFieldNames.Id;
22
+ constructor(collectionId: string);
23
+ serialize(): SerializedCollectionEnumFieldType;
24
+ }
25
+ export declare const isCollectionEnumFieldType: (fieldType: any) => fieldType is CollectionEnumFieldType;
26
+ export declare type SerializedCollectionEnumFieldType = {
27
+ [CollectionEnumFieldTypeKey]: string;
28
+ };
29
+ export declare function deserializeCollectionEnumFieldType(serializedCollectionEnumFieldType: SerializedCollectionEnumFieldType): CollectionEnumFieldType;
30
+ export declare function isSerializedCollectionEnumFieldType(fieldType: any): fieldType is SerializedCollectionEnumFieldType;
@@ -0,0 +1,45 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.isSerializedCollectionEnumFieldType = exports.deserializeCollectionEnumFieldType = exports.isCollectionEnumFieldType = exports.CollectionEnumFieldType = exports.CollectionEnumFieldNames = exports.CollectionEnumFieldTypeKey = void 0;
4
+ const checks_1 = require("../../checks");
5
+ exports.CollectionEnumFieldTypeKey = 'COLLECTION_ENUM';
6
+ /**
7
+ * Contains the field names of all valid fields for a groovy metadata collection.
8
+ *
9
+ * This should be kept in sync with GroovyFieldNames in FieldType.scala
10
+ */
11
+ var CollectionEnumFieldNames;
12
+ (function (CollectionEnumFieldNames) {
13
+ CollectionEnumFieldNames["Name"] = "name";
14
+ CollectionEnumFieldNames["Id"] = "id";
15
+ CollectionEnumFieldNames["Description"] = "description";
16
+ CollectionEnumFieldNames["Color"] = "color";
17
+ CollectionEnumFieldNames["IconUrl"] = "iconUrl";
18
+ })(CollectionEnumFieldNames = exports.CollectionEnumFieldNames || (exports.CollectionEnumFieldNames = {}));
19
+ class CollectionEnumFieldType {
20
+ constructor(collectionId) {
21
+ this.collectionId = collectionId;
22
+ }
23
+ serialize() {
24
+ return { [exports.CollectionEnumFieldTypeKey]: this.collectionId };
25
+ }
26
+ }
27
+ exports.CollectionEnumFieldType = CollectionEnumFieldType;
28
+ /**
29
+ * Specifies which groovy field name is used as the primary key.
30
+ *
31
+ * This should be kept in sync with GroovyFieldNames in FieldType.scala
32
+ */
33
+ CollectionEnumFieldType.PRIMARY_KEY = CollectionEnumFieldNames.Id;
34
+ const isCollectionEnumFieldType = (fieldType) => {
35
+ return fieldType instanceof CollectionEnumFieldType;
36
+ };
37
+ exports.isCollectionEnumFieldType = isCollectionEnumFieldType;
38
+ function deserializeCollectionEnumFieldType(serializedCollectionEnumFieldType) {
39
+ return new CollectionEnumFieldType(serializedCollectionEnumFieldType[exports.CollectionEnumFieldTypeKey]);
40
+ }
41
+ exports.deserializeCollectionEnumFieldType = deserializeCollectionEnumFieldType;
42
+ function isSerializedCollectionEnumFieldType(fieldType) {
43
+ return (0, checks_1.isObject)(fieldType) && (0, checks_1.isString)(fieldType[exports.CollectionEnumFieldTypeKey]);
44
+ }
45
+ exports.isSerializedCollectionEnumFieldType = isSerializedCollectionEnumFieldType;
@@ -0,0 +1,16 @@
1
+ import { LiteralFieldType, SerializedLiteralFieldType } from './literalfieldtype';
2
+ import { ScalarFieldTypeEnum } from './scalarfieldtype';
3
+ export declare class FieldTypeArray {
4
+ readonly validTypesArray: (ScalarFieldTypeEnum | LiteralFieldType | FieldTypeArray)[];
5
+ constructor(validTypesArray: (ScalarFieldTypeEnum | LiteralFieldType | FieldTypeArray)[]);
6
+ getInnerTypes(): (ScalarFieldTypeEnum | LiteralFieldType | FieldTypeArray)[];
7
+ getInnerNonArrayTypes(): (ScalarFieldTypeEnum | LiteralFieldType | FieldTypeArray)[];
8
+ serialize(): SerializedFieldTypeArray;
9
+ }
10
+ export declare function isValidTypeForFieldTypeArray(fieldType: any): fieldType is ScalarFieldTypeEnum | LiteralFieldType | FieldTypeArray;
11
+ export declare type SerializedFieldTypeArray = {
12
+ 'ND': false;
13
+ 'validTypes': (ScalarFieldTypeEnum | SerializedLiteralFieldType | SerializedFieldTypeArray)[];
14
+ };
15
+ export declare function isSerializedFieldTypeArray(fieldType: any, validateTypeCheck: (t: unknown) => boolean): fieldType is SerializedFieldTypeArray;
16
+ export declare function deserializeFieldTypeArray(serializedFieldTypeArray: SerializedFieldTypeArray): FieldTypeArray;
@@ -0,0 +1,50 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.deserializeFieldTypeArray = exports.isSerializedFieldTypeArray = exports.isValidTypeForFieldTypeArray = exports.FieldTypeArray = void 0;
4
+ const checks_1 = require("../../checks");
5
+ const literalfieldtype_1 = require("./literalfieldtype");
6
+ const scalarfieldtype_1 = require("./scalarfieldtype");
7
+ class FieldTypeArray {
8
+ constructor(validTypesArray) {
9
+ this.validTypesArray = validTypesArray;
10
+ }
11
+ getInnerTypes() {
12
+ return this.validTypesArray;
13
+ }
14
+ getInnerNonArrayTypes() {
15
+ return this.validTypesArray.filter((innerType) => (0, scalarfieldtype_1.isScalarFieldTypeEnum)(innerType) || (0, literalfieldtype_1.isLiteralFieldType)(innerType));
16
+ }
17
+ serialize() {
18
+ return {
19
+ 'ND': false,
20
+ 'validTypes': this.validTypesArray.map((t) => ((0, scalarfieldtype_1.isScalarFieldTypeEnum)(t) ? t : t.serialize())),
21
+ };
22
+ }
23
+ }
24
+ exports.FieldTypeArray = FieldTypeArray;
25
+ function isValidTypeForFieldTypeArray(fieldType) {
26
+ return (0, scalarfieldtype_1.isScalarFieldTypeEnum)(fieldType) || (0, literalfieldtype_1.isLiteralFieldType)(fieldType) || fieldType instanceof FieldTypeArray;
27
+ }
28
+ exports.isValidTypeForFieldTypeArray = isValidTypeForFieldTypeArray;
29
+ function isSerializedFieldTypeArray(fieldType, validateTypeCheck) {
30
+ return ((0, checks_1.isObject)(fieldType) &&
31
+ (0, checks_1.isBoolean)(fieldType['ND']) &&
32
+ fieldType['ND'] === false &&
33
+ (0, checks_1.isArray)(fieldType['validTypes']) &&
34
+ fieldType['validTypes'].every((validType) => {
35
+ return validateTypeCheck(validType);
36
+ }));
37
+ }
38
+ exports.isSerializedFieldTypeArray = isSerializedFieldTypeArray;
39
+ function deserializeFieldTypeArray(serializedFieldTypeArray) {
40
+ return new FieldTypeArray(serializedFieldTypeArray['validTypes'].map((t) => {
41
+ if ((0, literalfieldtype_1.isSerializedLiteralFieldType)(t)) {
42
+ return (0, literalfieldtype_1.deserializeLiteralFieldType)(t);
43
+ }
44
+ else if ((0, checks_1.isObject)(t)) {
45
+ return deserializeFieldTypeArray(t);
46
+ }
47
+ return t;
48
+ }));
49
+ }
50
+ exports.deserializeFieldTypeArray = deserializeFieldTypeArray;
@@ -0,0 +1,13 @@
1
+ import { BaseFieldTypeDefinition, SerializedBaseFieldTypeDefinition } from './basefieldtypedefinition';
2
+ import { NDimensionalFieldTypeArray } from './ndimensionalfieldtypearray';
3
+ import { ScalarFieldTypeEnum } from './scalarfieldtype';
4
+ export declare type FieldTypeDefinition = BaseFieldTypeDefinition | BaseFieldTypeDefinition[];
5
+ export declare function fieldTypesEqual(a: FieldTypeDefinition, b: FieldTypeDefinition, checkEnumCollectionId?: boolean): boolean;
6
+ export declare function isSubtypeOfFieldType(subType: FieldTypeDefinition, superTypes: FieldTypeDefinition): boolean;
7
+ export declare const AnyFieldType: (ScalarFieldTypeEnum | NDimensionalFieldTypeArray)[];
8
+ export declare function isAnyFieldType(type: FieldTypeDefinition): boolean;
9
+ export declare const serializeFieldTypeDefinition: (fieldType: FieldTypeDefinition) => SerializedFieldTypeDefinition;
10
+ export declare const deserializeFieldTypeDefinition: (serializedFieldType: SerializedFieldTypeDefinition) => FieldTypeDefinition;
11
+ export declare const SerializedAnyFieldType: SerializedFieldTypeDefinition;
12
+ export declare type SerializedFieldTypeDefinition = SerializedBaseFieldTypeDefinition | SerializedBaseFieldTypeDefinition[];
13
+ export declare function isSerializedFieldTypeDefinition(definition: any): definition is SerializedFieldTypeDefinition;
@@ -0,0 +1,156 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.isSerializedFieldTypeDefinition = exports.SerializedAnyFieldType = exports.deserializeFieldTypeDefinition = exports.serializeFieldTypeDefinition = exports.isAnyFieldType = exports.AnyFieldType = exports.isSubtypeOfFieldType = exports.fieldTypesEqual = void 0;
4
+ const checks_1 = require("../../checks");
5
+ const basefieldtypedefinition_1 = require("./basefieldtypedefinition");
6
+ const collectionenumfieldtype_1 = require("./collectionenumfieldtype");
7
+ const fieldtypearray_1 = require("./fieldtypearray");
8
+ const literalfieldtype_1 = require("./literalfieldtype");
9
+ const ndimensionalfieldtypearray_1 = require("./ndimensionalfieldtypearray");
10
+ const scalarfieldtype_1 = require("./scalarfieldtype");
11
+ function fieldTypesEqual(a, b, checkEnumCollectionId = true) {
12
+ if (a === b) {
13
+ return true;
14
+ }
15
+ if ((0, literalfieldtype_1.isLiteralFieldType)(a) && (0, literalfieldtype_1.isLiteralFieldType)(b)) {
16
+ return a.getLiteral() === b.getLiteral();
17
+ }
18
+ if ((0, collectionenumfieldtype_1.isCollectionEnumFieldType)(a) && (0, collectionenumfieldtype_1.isCollectionEnumFieldType)(b)) {
19
+ return checkEnumCollectionId ? a.collectionId === b.collectionId : true;
20
+ }
21
+ a = (0, checks_1.isArray)(a) ? a : [a];
22
+ b = (0, checks_1.isArray)(b) ? b : [b];
23
+ const setA = new Set(a);
24
+ const setB = new Set(b);
25
+ if (setA.size !== setB.size) {
26
+ return false;
27
+ }
28
+ for (const bItem of setB) {
29
+ if (setA.has(bItem)) {
30
+ continue;
31
+ }
32
+ if ((0, literalfieldtype_1.isLiteralFieldType)(bItem)) {
33
+ const found = a.some((aItem) => (0, literalfieldtype_1.isLiteralFieldType)(aItem) && fieldTypesEqual(aItem, bItem));
34
+ if (!found) {
35
+ return false;
36
+ }
37
+ }
38
+ else if (bItem instanceof fieldtypearray_1.FieldTypeArray) {
39
+ const found = a.some((aItem) => aItem instanceof fieldtypearray_1.FieldTypeArray && fieldTypesEqual(aItem.validTypesArray, bItem.validTypesArray));
40
+ if (!found) {
41
+ return false;
42
+ }
43
+ }
44
+ else if ((0, ndimensionalfieldtypearray_1.isNDimensionalFieldTypeArray)(bItem)) {
45
+ const aItem = a.find(ndimensionalfieldtypearray_1.isNDimensionalFieldTypeArray);
46
+ if (!aItem || !fieldTypesEqual(aItem.validTypesArray, bItem.validTypesArray)) {
47
+ return false;
48
+ }
49
+ }
50
+ else {
51
+ return false;
52
+ }
53
+ }
54
+ return true;
55
+ }
56
+ exports.fieldTypesEqual = fieldTypesEqual;
57
+ function isSubtypeOfFieldType(subType, superTypes) {
58
+ if (!(0, checks_1.isArray)(superTypes)) {
59
+ superTypes = [superTypes];
60
+ }
61
+ if ((0, checks_1.isArray)(subType)) {
62
+ return subType.every((one) => isSubtypeOfFieldType(one, superTypes));
63
+ }
64
+ if (superTypes.includes(scalarfieldtype_1.ScalarFieldTypeEnum.ANY)) {
65
+ return true;
66
+ }
67
+ if ((0, scalarfieldtype_1.isScalarFieldTypeEnum)(subType)) {
68
+ return superTypes.includes(subType);
69
+ }
70
+ if ((0, literalfieldtype_1.isLiteralFieldType)(subType)) {
71
+ if (superTypes.includes(subType.getScalarFieldType())) {
72
+ return true;
73
+ }
74
+ const superLiteralTypes = superTypes.filter(literalfieldtype_1.isLiteralFieldType);
75
+ if (superLiteralTypes.find((superLiteralType) => subType.getLiteral() === superLiteralType.getLiteral())) {
76
+ return true;
77
+ }
78
+ const superArrayTypes = superTypes.filter(basefieldtypedefinition_1.isAnyFieldTypeArray);
79
+ for (const superArrayType of superArrayTypes) {
80
+ if (isSubtypeOfFieldType(subType, superArrayType.getInnerTypes())) {
81
+ return true;
82
+ }
83
+ }
84
+ return false;
85
+ }
86
+ if ((0, collectionenumfieldtype_1.isCollectionEnumFieldType)(subType)) {
87
+ return superTypes.filter(collectionenumfieldtype_1.isCollectionEnumFieldType).some((ce) => ce.collectionId === subType.collectionId);
88
+ }
89
+ if ((0, ndimensionalfieldtypearray_1.isNDimensionalFieldTypeArray)(subType)) {
90
+ const superNArrayTypes = superTypes.filter(ndimensionalfieldtypearray_1.isNDimensionalFieldTypeArray);
91
+ return !!superNArrayTypes.find((superNArrayType) => isSubtypeOfFieldType(subType.validTypesArray, superNArrayType.validTypesArray));
92
+ }
93
+ const subTypeArrayInnerTypes = subType.getInnerTypes();
94
+ const superArrayTypes = superTypes.filter(basefieldtypedefinition_1.isAnyFieldTypeArray);
95
+ for (const superArrayType of superArrayTypes) {
96
+ if (isSubtypeOfFieldType(subTypeArrayInnerTypes, superArrayType.getInnerTypes())) {
97
+ return true;
98
+ }
99
+ }
100
+ return false;
101
+ }
102
+ exports.isSubtypeOfFieldType = isSubtypeOfFieldType;
103
+ exports.AnyFieldType = [...scalarfieldtype_1.AnyScalarFieldType, new ndimensionalfieldtypearray_1.NDimensionalFieldTypeArray(scalarfieldtype_1.AnyScalarFieldType)];
104
+ function isAnyFieldType(type) {
105
+ let nArray;
106
+ if (type === scalarfieldtype_1.ScalarFieldTypeEnum.ANY ||
107
+ type === exports.AnyFieldType ||
108
+ ((0, checks_1.isArray)(type) &&
109
+ type.includes(scalarfieldtype_1.ScalarFieldTypeEnum.NUMBER) &&
110
+ type.includes(scalarfieldtype_1.ScalarFieldTypeEnum.STRING) &&
111
+ type.includes(scalarfieldtype_1.ScalarFieldTypeEnum.BOOLEAN) &&
112
+ type.includes(scalarfieldtype_1.ScalarFieldTypeEnum.COLOR) &&
113
+ type.includes(scalarfieldtype_1.ScalarFieldTypeEnum.DATE) &&
114
+ type.includes(scalarfieldtype_1.ScalarFieldTypeEnum.NULL) &&
115
+ type.includes(scalarfieldtype_1.ScalarFieldTypeEnum.DICTIONARY) &&
116
+ type.includes(scalarfieldtype_1.ScalarFieldTypeEnum.CURRENCY) &&
117
+ !type.some(literalfieldtype_1.isLiteralFieldType) &&
118
+ (nArray = type.find(ndimensionalfieldtypearray_1.isNDimensionalFieldTypeArray)) &&
119
+ nArray.validTypesArray.includes(scalarfieldtype_1.ScalarFieldTypeEnum.NUMBER) &&
120
+ nArray.validTypesArray.includes(scalarfieldtype_1.ScalarFieldTypeEnum.STRING) &&
121
+ nArray.validTypesArray.includes(scalarfieldtype_1.ScalarFieldTypeEnum.BOOLEAN) &&
122
+ nArray.validTypesArray.includes(scalarfieldtype_1.ScalarFieldTypeEnum.COLOR) &&
123
+ nArray.validTypesArray.includes(scalarfieldtype_1.ScalarFieldTypeEnum.DATE) &&
124
+ nArray.validTypesArray.includes(scalarfieldtype_1.ScalarFieldTypeEnum.DICTIONARY) &&
125
+ nArray.validTypesArray.includes(scalarfieldtype_1.ScalarFieldTypeEnum.NULL) &&
126
+ nArray.validTypesArray.includes(scalarfieldtype_1.ScalarFieldTypeEnum.CURRENCY) &&
127
+ !nArray.validTypesArray.some(literalfieldtype_1.isLiteralFieldType))) {
128
+ return true;
129
+ }
130
+ return false;
131
+ }
132
+ exports.isAnyFieldType = isAnyFieldType;
133
+ const serializeFieldTypeDefinition = (fieldType) => {
134
+ if ((0, checks_1.isArray)(fieldType)) {
135
+ return fieldType.map(basefieldtypedefinition_1.serializeBaseFieldTypeDefinition);
136
+ }
137
+ else {
138
+ return (0, basefieldtypedefinition_1.serializeBaseFieldTypeDefinition)(fieldType);
139
+ }
140
+ };
141
+ exports.serializeFieldTypeDefinition = serializeFieldTypeDefinition;
142
+ const deserializeFieldTypeDefinition = (serializedFieldType) => {
143
+ if ((0, checks_1.isArray)(serializedFieldType)) {
144
+ return serializedFieldType.map(basefieldtypedefinition_1.deserializeBaseFieldTypeDefinition);
145
+ }
146
+ return (0, basefieldtypedefinition_1.deserializeBaseFieldTypeDefinition)(serializedFieldType);
147
+ };
148
+ exports.deserializeFieldTypeDefinition = deserializeFieldTypeDefinition;
149
+ exports.SerializedAnyFieldType = (0, exports.serializeFieldTypeDefinition)(exports.AnyFieldType);
150
+ function isSerializedFieldTypeDefinition(definition) {
151
+ if ((0, checks_1.isArray)(definition)) {
152
+ return definition.every(basefieldtypedefinition_1.isSerializedBaseFieldTypeDefinition);
153
+ }
154
+ return (0, basefieldtypedefinition_1.isSerializedBaseFieldTypeDefinition)(definition);
155
+ }
156
+ exports.isSerializedFieldTypeDefinition = isSerializedFieldTypeDefinition;