@contrail/flexplm 1.3.2-alpha.30ca8bf → 1.3.2-alpha.3ffe557

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 (113) hide show
  1. package/lib/cli/commands/compile.d.ts +4 -0
  2. package/lib/cli/commands/compile.js +73 -0
  3. package/lib/cli/commands/compile.spec.d.ts +1 -0
  4. package/lib/cli/commands/compile.spec.js +80 -0
  5. package/lib/cli/commands/create.d.ts +5 -0
  6. package/lib/cli/commands/create.js +77 -0
  7. package/lib/cli/commands/create.spec.d.ts +1 -0
  8. package/lib/cli/commands/create.spec.js +78 -0
  9. package/lib/cli/commands/upload.d.ts +17 -0
  10. package/lib/cli/commands/upload.js +228 -0
  11. package/lib/cli/commands/upload.spec.d.ts +1 -0
  12. package/lib/cli/commands/upload.spec.js +88 -0
  13. package/lib/cli/index.d.ts +5 -0
  14. package/lib/cli/index.js +70 -0
  15. package/lib/cli/index.spec.d.ts +1 -0
  16. package/lib/cli/index.spec.js +85 -0
  17. package/lib/cli/template/mapping-template.ts.template +62 -0
  18. package/lib/entity-processor/base-entity-processor.d.ts +47 -10
  19. package/lib/entity-processor/base-entity-processor.js +53 -34
  20. package/lib/entity-processor/base-entity-processor.spec.js +1 -191
  21. package/lib/index.d.ts +1 -0
  22. package/lib/index.js +1 -0
  23. package/lib/interfaces/mapping-file.d.ts +460 -0
  24. package/lib/interfaces/mapping-file.js +2 -0
  25. package/lib/publish/base-process-publish-assortment.d.ts +25 -0
  26. package/lib/publish/base-process-publish-assortment.js +60 -6
  27. package/lib/publish/base-process-publish-assortment.spec.js +22 -4
  28. package/lib/publish/mockData.js +5 -0
  29. package/lib/transform/identifier-conversion-spec-mockData.js +34 -6
  30. package/lib/transform/identifier-conversion.d.ts +36 -0
  31. package/lib/transform/identifier-conversion.js +36 -0
  32. package/lib/transform/identifier-conversion.spec.js +4 -0
  33. package/lib/util/config-defaults.d.ts +0 -1
  34. package/lib/util/config-defaults.js +3 -3
  35. package/lib/util/config-defaults.spec.js +9 -32
  36. package/lib/util/data-converter-spec-mockData.js +17 -3
  37. package/lib/util/data-converter.d.ts +97 -0
  38. package/lib/util/data-converter.js +133 -1
  39. package/lib/util/data-converter.spec.js +68 -0
  40. package/lib/util/error-response-object.d.ts +5 -0
  41. package/lib/util/error-response-object.js +7 -0
  42. package/lib/util/event-short-message-status.js +1 -0
  43. package/lib/util/federation.js +8 -0
  44. package/lib/util/flexplm-connect.d.ts +7 -0
  45. package/lib/util/flexplm-connect.js +14 -0
  46. package/lib/util/logger-config.js +1 -0
  47. package/lib/util/map-util-spec-mockData.js +17 -3
  48. package/lib/util/map-utils.d.ts +27 -0
  49. package/lib/util/map-utils.js +27 -0
  50. package/lib/util/thumbnail-util.d.ts +21 -0
  51. package/lib/util/thumbnail-util.js +28 -1
  52. package/lib/util/thumbnail-util.spec.js +6 -0
  53. package/lib/util/type-conversion-utils-spec-mockData.js +3 -4
  54. package/lib/util/type-conversion-utils.d.ts +140 -1
  55. package/lib/util/type-conversion-utils.js +143 -16
  56. package/lib/util/type-conversion-utils.spec.js +0 -59
  57. package/lib/util/type-defaults.d.ts +58 -0
  58. package/lib/util/type-defaults.js +58 -0
  59. package/lib/util/type-defaults.spec.js +5 -5
  60. package/lib/util/type-utils.d.ts +21 -0
  61. package/lib/util/type-utils.js +23 -0
  62. package/lib/util/type-utils.spec.js +2 -0
  63. package/package.json +21 -6
  64. package/scripts/copy-template.js +10 -0
  65. package/.github/pull_request_template.md +0 -31
  66. package/.github/workflows/flexplm-lib.yml +0 -27
  67. package/.github/workflows/publish-to-npm.yml +0 -121
  68. package/CHANGELOG.md +0 -36
  69. package/publish.bat +0 -5
  70. package/publish.sh +0 -5
  71. package/src/entity-processor/base-entity-processor.spec.ts +0 -689
  72. package/src/entity-processor/base-entity-processor.ts +0 -583
  73. package/src/flexplm-request.ts +0 -28
  74. package/src/flexplm-utils.spec.ts +0 -27
  75. package/src/flexplm-utils.ts +0 -29
  76. package/src/index.ts +0 -22
  77. package/src/interfaces/interfaces.ts +0 -122
  78. package/src/interfaces/item-family-changes.ts +0 -67
  79. package/src/interfaces/publish-change-data.ts +0 -43
  80. package/src/publish/base-process-publish-assortment-callback.ts +0 -50
  81. package/src/publish/base-process-publish-assortment.spec.ts +0 -1992
  82. package/src/publish/base-process-publish-assortment.ts +0 -1134
  83. package/src/publish/mockData.ts +0 -4561
  84. package/src/transform/identifier-conversion-spec-mockData.ts +0 -496
  85. package/src/transform/identifier-conversion.spec.ts +0 -354
  86. package/src/transform/identifier-conversion.ts +0 -282
  87. package/src/util/config-defaults.spec.ts +0 -392
  88. package/src/util/config-defaults.ts +0 -97
  89. package/src/util/data-converter-spec-mockData.ts +0 -231
  90. package/src/util/data-converter.spec.ts +0 -1041
  91. package/src/util/data-converter.ts +0 -762
  92. package/src/util/error-response-object.spec.ts +0 -116
  93. package/src/util/error-response-object.ts +0 -50
  94. package/src/util/event-short-message-status.ts +0 -22
  95. package/src/util/federation.ts +0 -172
  96. package/src/util/flexplm-connect.spec.ts +0 -132
  97. package/src/util/flexplm-connect.ts +0 -208
  98. package/src/util/logger-config.ts +0 -20
  99. package/src/util/map-util-spec-mockData.ts +0 -231
  100. package/src/util/map-utils.spec.ts +0 -103
  101. package/src/util/map-utils.ts +0 -41
  102. package/src/util/mockData.ts +0 -101
  103. package/src/util/thumbnail-util.spec.ts +0 -508
  104. package/src/util/thumbnail-util.ts +0 -272
  105. package/src/util/type-conversion-utils-spec-mockData.ts +0 -272
  106. package/src/util/type-conversion-utils.spec.ts +0 -1031
  107. package/src/util/type-conversion-utils.ts +0 -490
  108. package/src/util/type-defaults.spec.ts +0 -669
  109. package/src/util/type-defaults.ts +0 -281
  110. package/src/util/type-utils.spec.ts +0 -227
  111. package/src/util/type-utils.ts +0 -144
  112. package/tsconfig.json +0 -24
  113. package/tslint.json +0 -57
@@ -5,6 +5,7 @@ const app_framework_1 = require("@contrail/app-framework");
5
5
  async function setLoggerConfig(appConfig) {
6
6
  let logLevel = app_framework_1.LogLevel.INFO;
7
7
  if (!appConfig.logLevel) {
8
+ //pass
8
9
  }
9
10
  else if (appConfig.logLevel === 'error') {
10
11
  logLevel = app_framework_1.LogLevel.ERROR;
@@ -31,12 +31,26 @@ exports.mapping = {
31
31
  }
32
32
  }
33
33
  }
34
+ // flex2vibe: {
35
+ // LCSRevisableEntity: {
36
+ // getMapKey: (object) =>{ return object;}
37
+ // },
38
+ // LCSLast: {
39
+ // getMapKey: (object) => {return object;}
40
+ // },
41
+ // LCSMaterial: {
42
+ // getMapKey: (object) =>{ return object;}
43
+ // },
44
+ // LCSBusinessObject: {
45
+ // getMapKey: (object) => {return object;}
46
+ // }
47
+ // },
34
48
  },
35
49
  LCSProduct: {
36
50
  vibeOwningKeys: ['itemNumber', 'lifecycleStage'],
37
51
  vibe2flex: {
38
52
  getClass: () => 'LCSProduct',
39
- getSoftType: (entity) => {
53
+ getSoftType: (entity /*, dependencies*/) => {
40
54
  const prodType = entity['prodType'];
41
55
  let val = '';
42
56
  switch (prodType) {
@@ -61,7 +75,7 @@ exports.mapping = {
61
75
  vibeIQIdentifier: 'itemNumber'
62
76
  },
63
77
  valueTransform: {
64
- transformEx: (row) => {
78
+ transformEx: (row /*, dependencies*/) => {
65
79
  return row['otherProp'] + 'xxx';
66
80
  }
67
81
  }
@@ -79,7 +93,7 @@ exports.mapping = {
79
93
  vibeOwningKeys: ['itemNumber', 'lifecycleStage'],
80
94
  vibe2flex: {
81
95
  getClass: () => 'LCSSKU',
82
- getSoftType: (entity) => {
96
+ getSoftType: (entity /*, dependencies*/) => {
83
97
  const prodType = entity['prodType'];
84
98
  let val = '';
85
99
  switch (prodType) {
@@ -1,6 +1,33 @@
1
1
  import { MapFileUtil } from '@contrail/transform-data';
2
2
  export declare class MapUtil {
3
+ /** Transforms the data, assumes mapSectionKey has been correctly determined.
4
+ *
5
+ * @param transformMapFile id of map file
6
+ * @param mapFileUtil
7
+ * @param data
8
+ * @param mapSectionKey key for section of map file
9
+ * @param direction vibe2flex or flex2vibe
10
+ * @param transformTaskOrderKey key for the list of tasks to be processed. default is 'transformOrder'
11
+ * @returns The converted data
12
+ */
3
13
  static applyTransformMap(transformMapFile: any, mapFileUtil: any, data: any, mapSectionKey: string, direction: string, transformTaskOrderKey?: string): Promise<any>;
14
+ /** Returns the mapKey based on the 'typeConversion' section of the map file.
15
+ * If the map file doesn't have a section for the type in question, 'undefined' is returned.
16
+ *
17
+ * @param fileId
18
+ * @param mapFileUtil
19
+ * @param data The full object
20
+ * @param type The entity or object class of the object. The functions are keyed based on this.
21
+ * @param direction
22
+ * @returns
23
+ */
4
24
  static getMapKey(transformMapFile: any, mapFileUtil: MapFileUtil, data: any, type: string, direction: string): Promise<string>;
25
+ /** Returns the full map section with both directions; identifier and informational properties; etc.
26
+ *
27
+ * @param transformMapFile id if map file
28
+ * @param mapFileUtil
29
+ * @param mapSectionKey key of the map section
30
+ * @returns
31
+ */
5
32
  static getFullMapSection(transformMapFile: string, mapFileUtil: MapFileUtil, mapSectionKey: string): Promise<any>;
6
33
  }
@@ -2,12 +2,39 @@
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.MapUtil = void 0;
4
4
  class MapUtil {
5
+ /** Transforms the data, assumes mapSectionKey has been correctly determined.
6
+ *
7
+ * @param transformMapFile id of map file
8
+ * @param mapFileUtil
9
+ * @param data
10
+ * @param mapSectionKey key for section of map file
11
+ * @param direction vibe2flex or flex2vibe
12
+ * @param transformTaskOrderKey key for the list of tasks to be processed. default is 'transformOrder'
13
+ * @returns The converted data
14
+ */
5
15
  static async applyTransformMap(transformMapFile, mapFileUtil, data, mapSectionKey, direction, transformTaskOrderKey = 'transformOrder') {
6
16
  return await mapFileUtil.applyTransformMap(transformMapFile, data, mapSectionKey, direction, transformTaskOrderKey);
7
17
  }
18
+ /** Returns the mapKey based on the 'typeConversion' section of the map file.
19
+ * If the map file doesn't have a section for the type in question, 'undefined' is returned.
20
+ *
21
+ * @param fileId
22
+ * @param mapFileUtil
23
+ * @param data The full object
24
+ * @param type The entity or object class of the object. The functions are keyed based on this.
25
+ * @param direction
26
+ * @returns
27
+ */
8
28
  static async getMapKey(transformMapFile, mapFileUtil, data, type, direction) {
9
29
  return await mapFileUtil.getMapKey(transformMapFile, data, type, direction);
10
30
  }
31
+ /** Returns the full map section with both directions; identifier and informational properties; etc.
32
+ *
33
+ * @param transformMapFile id if map file
34
+ * @param mapFileUtil
35
+ * @param mapSectionKey key of the map section
36
+ * @returns
37
+ */
11
38
  static async getFullMapSection(transformMapFile, mapFileUtil, mapSectionKey) {
12
39
  return await mapFileUtil.getFullMapSection(transformMapFile, mapSectionKey);
13
40
  }
@@ -6,6 +6,7 @@ interface ContentCustomSize {
6
6
  }
7
7
  export declare class ThumbnailUtil {
8
8
  private config;
9
+ /** The max_thumbnail_size is for limiting the size of the thumbnail being sent to FlexPLM. It is used when checking the size of the auto generated thumbnails (smallViewable, tinyViewable, etc.). */
9
10
  private max_thumbnail_size;
10
11
  private entities;
11
12
  static NEW_THUMBNAIL_ID: string;
@@ -16,11 +17,31 @@ export declare class ThumbnailUtil {
16
17
  }[];
17
18
  constructor(config: FCConfig);
18
19
  setOutboundThumbnail(data: any, event: any): Promise<any>;
20
+ /** Determines if a new image has been generated. If any viewable is new, there might be a better
21
+ * sized image. So send the fileId as new.
22
+ */
19
23
  isThumbnailNew(event: any, customSizes: any[]): boolean;
20
24
  getFileId(primaryViewableId: string): Promise<string | undefined>;
21
25
  getCustomSizes(): Promise<ContentCustomSize[]>;
22
26
  getContentEntity(primaryViewableId: any, sizes: ContentCustomSize[]): Promise<any>;
27
+ /** This outputs the content entity, without the inflated file entities.
28
+ * To help debugging issues with sending the thumbnail info.
29
+ * The inflated entities are removed, because are large and cause
30
+ * problems with log file size limits.
31
+ *
32
+ * @param content: the content with inflated objects
33
+ * @param relations: string[] of the slugs for inflated objects
34
+ */
23
35
  logContentResults(content: any, relations: string[]): void;
36
+ /** Syncs the thumbnail from FlexPLM to VibeIQ. Handles creating, replacing, or removing
37
+ * the primary viewable content and persists the updates directly to the entity.
38
+ *
39
+ * @param entityId - The ID of the entity to update with thumbnail properties.
40
+ * @param primaryViewableId - The existing primary viewable content ID, if any.
41
+ * @param event - The inbound event containing thumbnail data (NEW_THUMBNAIL_ID / EXISTING_THUMBNAIL_ID).
42
+ * @param entityName - The entity type name (e.g. 'item', 'color') used for API calls.
43
+ * @returns The updated entity, or undefined if no thumbnail changes were needed.
44
+ */
24
45
  syncThumbnailToVibeIQ({ entityId, primaryViewableId, event, entityName }: {
25
46
  entityId: string;
26
47
  primaryViewableId?: string;
@@ -8,6 +8,7 @@ const flexplm_connect_1 = require("./flexplm-connect");
8
8
  class ThumbnailUtil {
9
9
  constructor(config) {
10
10
  this.config = config;
11
+ /** The max_thumbnail_size is for limiting the size of the thumbnail being sent to FlexPLM. It is used when checking the size of the auto generated thumbnails (smallViewable, tinyViewable, etc.). */
11
12
  this.max_thumbnail_size = 5 * 1024 * 1024;
12
13
  this.entities = new sdk_1.Entities();
13
14
  if (this.config['max_thumbnail_size']) {
@@ -17,6 +18,7 @@ class ThumbnailUtil {
17
18
  async setOutboundThumbnail(data, event) {
18
19
  if (event?.newData?.primaryViewableId && event?.newData?.largeViewableDownloadUrl) {
19
20
  const primaryViewableId = event.newData.primaryViewableId;
21
+ //get custom sizes
20
22
  const fileId = await this.getFileId(primaryViewableId);
21
23
  if (fileId) {
22
24
  const customSizes = await this.getCustomSizes();
@@ -31,6 +33,9 @@ class ThumbnailUtil {
31
33
  }
32
34
  return data;
33
35
  }
36
+ /** Determines if a new image has been generated. If any viewable is new, there might be a better
37
+ * sized image. So send the fileId as new.
38
+ */
34
39
  isThumbnailNew(event, customSizes) {
35
40
  const propertyDiffs = event?.propertyDiffs;
36
41
  if (propertyDiffs) {
@@ -52,6 +57,7 @@ class ThumbnailUtil {
52
57
  const OOBSizes = JSON.parse(JSON.stringify(ThumbnailUtil.OOB_SIZES));
53
58
  sizes.push(...OOBSizes);
54
59
  console.info('sizes: ' + JSON.stringify(sizes));
60
+ //get Content
55
61
  const content = await this.getContentEntity(primaryViewableId, sizes);
56
62
  if (!content) {
57
63
  return undefined;
@@ -99,6 +105,14 @@ class ThumbnailUtil {
99
105
  this.logContentResults(content, relations);
100
106
  return content;
101
107
  }
108
+ /** This outputs the content entity, without the inflated file entities.
109
+ * To help debugging issues with sending the thumbnail info.
110
+ * The inflated entities are removed, because are large and cause
111
+ * problems with log file size limits.
112
+ *
113
+ * @param content: the content with inflated objects
114
+ * @param relations: string[] of the slugs for inflated objects
115
+ */
102
116
  logContentResults(content, relations) {
103
117
  if (app_framework_1.Logger.isDebugOn() && content && relations) {
104
118
  const contentCopy = JSON.parse(JSON.stringify(content));
@@ -108,12 +122,22 @@ class ThumbnailUtil {
108
122
  console.debug('content: ' + JSON.stringify(contentCopy));
109
123
  }
110
124
  }
125
+ /** Syncs the thumbnail from FlexPLM to VibeIQ. Handles creating, replacing, or removing
126
+ * the primary viewable content and persists the updates directly to the entity.
127
+ *
128
+ * @param entityId - The ID of the entity to update with thumbnail properties.
129
+ * @param primaryViewableId - The existing primary viewable content ID, if any.
130
+ * @param event - The inbound event containing thumbnail data (NEW_THUMBNAIL_ID / EXISTING_THUMBNAIL_ID).
131
+ * @param entityName - The entity type name (e.g. 'item', 'color') used for API calls.
132
+ * @returns The updated entity, or undefined if no thumbnail changes were needed.
133
+ */
111
134
  async syncThumbnailToVibeIQ({ entityId, primaryViewableId, event, entityName }) {
112
135
  console.debug(`syncThumbnailToVibeIQ: entityId=${entityId}, primaryViewableId=${primaryViewableId}, entityName=${entityName}`);
113
136
  const eventData = event.data || {};
114
137
  const newThumbnailId = eventData[ThumbnailUtil.NEW_THUMBNAIL_ID];
115
138
  const existingThumbnailId = eventData[ThumbnailUtil.EXISTING_THUMBNAIL_ID];
116
139
  const thumbnailUrl = newThumbnailId || existingThumbnailId;
140
+ // Case 1: REMOVE_THUMBNAIL
117
141
  if (newThumbnailId === ThumbnailUtil.REMOVE_THUMBNAIL) {
118
142
  if (primaryViewableId) {
119
143
  await this.entities.delete({ entityName: 'content', id: primaryViewableId });
@@ -123,10 +147,12 @@ class ThumbnailUtil {
123
147
  console.debug(`syncThumbnailToVibeIQ: applied clear updates for entityId=${entityId}`);
124
148
  return updatedEntity;
125
149
  }
150
+ // Early return if no thumbnail URL
126
151
  if (!thumbnailUrl) {
127
152
  console.debug(`syncThumbnailToVibeIQ: no thumbnail URL for entityId=${entityId}`);
128
153
  return undefined;
129
154
  }
155
+ // Case 2: No existing primaryViewableId — create new content
130
156
  if (!primaryViewableId) {
131
157
  const content = await this.createContentFromFlexPLM(thumbnailUrl, entityId, entityName);
132
158
  await this.entities.update({ entityName: 'content', id: content.id, object: { flexplmThumbnailUrl: thumbnailUrl } });
@@ -135,10 +161,11 @@ class ThumbnailUtil {
135
161
  console.debug(`syncThumbnailToVibeIQ: created new content ${content.id} for entityId=${entityId}`);
136
162
  return updatedEntity;
137
163
  }
164
+ // Case 3: Has primaryViewableId — check if thumbnail changed
138
165
  const primaryViewable = await this.entities.get({ entityName: 'content', id: primaryViewableId });
139
166
  if (primaryViewable?.flexplmThumbnailUrl === thumbnailUrl) {
140
167
  console.debug(`syncThumbnailToVibeIQ: thumbnail already synced for entityId=${entityId}`);
141
- return undefined;
168
+ return undefined; // Already synced
142
169
  }
143
170
  const content = await this.createContentFromFlexPLM(thumbnailUrl, entityId, entityName);
144
171
  await this.entities.update({ entityName: 'content', id: content.id, object: { flexplmThumbnailUrl: thumbnailUrl } });
@@ -327,11 +327,13 @@ describe('ThumbnailUtil Tests', () => {
327
327
  contentType: 'image/png',
328
328
  contentHolderReference: 'color:entity1',
329
329
  }));
330
+ // Updates content with flexplmThumbnailUrl
330
331
  expect(mockEntitiesUpdate).toHaveBeenCalledWith(expect.objectContaining({
331
332
  entityName: 'content',
332
333
  id: 'newContent1',
333
334
  object: { flexplmThumbnailUrl: '/rest/thumbnail/thumb.png' },
334
335
  }));
336
+ // Updates the main entity
335
337
  expect(mockEntitiesUpdate).toHaveBeenCalledWith(expect.objectContaining({
336
338
  entityName: 'color',
337
339
  id: 'entity1',
@@ -405,13 +407,17 @@ describe('ThumbnailUtil Tests', () => {
405
407
  mockContentCreate.mockResolvedValue(createdContent);
406
408
  const event = { data: { [thumbnail_util_1.ThumbnailUtil.NEW_THUMBNAIL_ID]: '/rest/thumbnail/new.jpg' } };
407
409
  await tu.syncThumbnailToVibeIQ({ entityId: 'entity1', primaryViewableId: 'oldPv', event, entityName: 'item' });
410
+ // Creates new content
408
411
  expect(mockContentCreate).toHaveBeenCalled();
412
+ // Updates new content with flexplmThumbnailUrl
409
413
  expect(mockEntitiesUpdate).toHaveBeenCalledWith(expect.objectContaining({
410
414
  entityName: 'content',
411
415
  id: 'newContent2',
412
416
  object: { flexplmThumbnailUrl: '/rest/thumbnail/new.jpg' },
413
417
  }));
418
+ // Updates the main entity
414
419
  expect(mockEntitiesUpdate).toHaveBeenCalledWith(expect.objectContaining({ entityName: 'item', id: 'entity1' }));
420
+ // Deletes old content
415
421
  expect(mockEntitiesDelete).toHaveBeenCalledWith({ entityName: 'content', id: 'oldPv' });
416
422
  });
417
423
  it('does not update when primaryViewable.flexplmThumbnailUrl matches', async () => {
@@ -57,7 +57,7 @@ exports.mapping = {
57
57
  vibeOwningKeys: ['itemNumber', 'lifecycleStage'],
58
58
  vibe2flex: {
59
59
  getClass: () => 'LCSProduct',
60
- getSoftType: (entity) => {
60
+ getSoftType: (entity /*, dependencies*/) => {
61
61
  const prodType = entity['prodType'];
62
62
  let val = '';
63
63
  switch (prodType) {
@@ -82,7 +82,7 @@ exports.mapping = {
82
82
  vibeIQIdentifier: 'itemNumber'
83
83
  },
84
84
  valueTransform: {
85
- transformEx: (row) => {
85
+ transformEx: (row /*, dependencies*/) => {
86
86
  return row['otherProp'] + 'xxx';
87
87
  }
88
88
  }
@@ -100,7 +100,7 @@ exports.mapping = {
100
100
  vibeOwningKeys: ['itemNumber', 'lifecycleStage'],
101
101
  vibe2flex: {
102
102
  getClass: () => 'LCSSKU',
103
- getSoftType: (entity) => {
103
+ getSoftType: (entity /*, dependencies*/) => {
104
104
  const prodType = entity['prodType'];
105
105
  let val = '';
106
106
  switch (prodType) {
@@ -207,7 +207,6 @@ exports.mapping = {
207
207
  }
208
208
  },
209
209
  catName: {
210
- uniquenessPool: 'catName-pool',
211
210
  getIdentifierProperties: () => ['catName', 'catNumber'],
212
211
  getInformationalProperties: () => ['longName'],
213
212
  vibe2flex: {
@@ -1,24 +1,163 @@
1
1
  import { MapFileUtil } from '@contrail/transform-data';
2
+ /** This class is helper functions to get the data for converting
3
+ * VibeIQ entities to / from FlexPLM Objects
4
+ */
2
5
  export declare class TypeConversionUtils {
3
6
  static NO_ENTITY_TYPE: string;
4
7
  static VIBE2FLEX_DIRECTION: string;
5
8
  static FLEX2VIBE_DIRECTION: string;
6
9
  constructor();
10
+ /** Takes in a VibeIQ entity object and returns the correct FlexPLM
11
+ * object class associated to the entity. Order of precedence
12
+ * Property 'flexPLMObjectClass'
13
+ * Map file entry in 'typeConversion:vibe2flex:<value>:getObjectClass()'
14
+ * for value from 'entityClass' or root from 'typePath'
15
+ * TypeDefaults.getDefaultObjectClass() function
16
+ * @param transformMapFile id for mapFile
17
+ * @param mapFileUtil class to get mapfile
18
+ * @param entity
19
+ * @returns Promise<string>
20
+ */
7
21
  static getObjectClass(transformMapFile: any, mapFileUtil: any, entity: any): Promise<string>;
22
+ /** Takes in a VibeIQ entity object and returns the correct FlexPLM
23
+ * FlexType associated to the entity. Order of precedence
24
+ * Property 'flexPLMTypePath'
25
+ * Map file entry in 'typeConversion:vibe2flex:<value>:getSoftType()'
26
+ * for value from 'entityClass' or root from 'typePath'
27
+ * TypeDefaults.getDefaultObjectTypePath() function
28
+ *
29
+ * @param transformMapFile id for mapFile
30
+ * @param mapFileUtil class to get mapfile
31
+ * @param entity VibeIQ entity
32
+ * @returns Promise<string>
33
+ */
8
34
  static getObjectTypePath(transformMapFile: any, mapFileUtil: any, entity: any): Promise<string>;
35
+ /**Takes in a VibeIQ entity object and returns the correct
36
+ * identifier properties. Order of precedence
37
+ * Property 'flexPLMIdentifierProperties'
38
+ * Map file entry in 'typeConversion:vibe2flex:<value>:getIdentifierProperties()'
39
+ * for value from 'entityClass' or root from 'typePath'
40
+ * TypeDefaults.getDefaultIdentifierProperties() function
41
+ *
42
+ * @param transformMapFile id for mapFile
43
+ * @param mapFileUtil class to get mapfile
44
+ * @param entity
45
+ * @returns Promise<string[]>
46
+ */
9
47
  static getIdentifierProperties(transformMapFile: any, mapFileUtil: any, entity: any): Promise<string[]>;
48
+ /**Takes in a VibeIQ entity object and returns the correct
49
+ * informational properties. Order of precedence
50
+ * Property 'flexPLMInformationalProperties'
51
+ * Map file entry in 'typeConversion:vibe2flex:<value>:getInformationalProperties()'
52
+ * for value from 'entityClass' or root from 'typePath'
53
+ * TypeDefaults.getDefaultObjectTypePath() function
54
+ *
55
+ * @param transformMapFile id for mapFile
56
+ * @param mapFileUtil class to get mapfile
57
+ * @param entity
58
+ * @returns string
59
+ */
10
60
  static getInformationalProperties(transformMapFile: any, mapFileUtil: any, entity: any): Promise<string[]>;
61
+ /**Takes in a VibeIQ entity object and returns the correct mapKey
62
+ * Order of precedence:
63
+ * Map file entry in 'typeConversion:<direction>:<value>:getObjectClass()'
64
+ * for value from 'entityClass' or root from 'typePath'
65
+ * TypeDefaults.getDefaultObjectClass() function
66
+ *
67
+ * @param transformMapFile
68
+ * @param mapFileUtil
69
+ * @param entity
70
+ * @param type
71
+ * @param direction
72
+ * @returns
73
+ */
11
74
  static getMapKey(transformMapFile: any, mapFileUtil: MapFileUtil, entity: any, direction: string): Promise<string>;
75
+ /** Returns the VibeIQ entity type from an entity.
76
+ * Throws error if it can't determine the entity type
77
+ *
78
+ * @param entity
79
+ * @returns string
80
+ */
12
81
  static getEntityType(entity: any): any;
82
+ /** Takes in a FlexPLM object and returns the correct VibeIQ entity
83
+ * class associated to the object. Order of precedence
84
+ * Property 'vibeIQEntityClass'
85
+ * Map file entry in 'typeConversion:flex2vibe:<value>:getObjectClass()'
86
+ * for value from 'objectClass'
87
+ * TypeDefaults.getDefaultEntityClass() function
88
+ *
89
+ * @param fileId id for mapFile
90
+ * @param mapFileUtil class to get mapfile
91
+ * @param object FlexPLM object
92
+ * @returns Promise<string>
93
+ */
13
94
  static getEntityClassFromObject(fileId: any, mapFileUtil: any, object: any): Promise<string>;
14
- static getUniquenessPoolKeyFromObject(fileId: any, mapFileUtil: any, object: any): Promise<string>;
15
95
  static getEntityTypePathFromOjbect(fileId: any, mapFileUtil: any, object: any): Promise<string>;
96
+ /** Takes in a FlexPLM object and returns the correct VibeIQ
97
+ * type associated to the object. Order of precedence
98
+ * Property 'vibeIQTypePath'
99
+ * Map file entry in 'typeConversion:flex2vibe:<value>:getSoftType()'
100
+ * for value from 'objectClass' or root from 'flexPLMTypePath'
101
+ * TypeDefaults.getDefaultEntityTypePath() function
102
+ *
103
+ * @param transformMapFile id for mapFile
104
+ * @param mapFileUtil class to get mapfile
105
+ * @param entity VibeIQ entity
106
+ * @returns Promise<string>
107
+ */
108
+ static getEntityTypePathFromObject(fileId: any, mapFileUtil: any, object: any): Promise<string>;
109
+ /**Takes in a FlexPLM object and returns the correct
110
+ * identifier properties. Order of precedence
111
+ * Property 'vibeIQIdentifierProperties'
112
+ * Map file entry in 'typeConversion:flex2vibe:<value>:getIdentifierProperties()'
113
+ * for value from 'objectClass'
114
+ * TypeDefaults.getDefaultIdentifierPropertiesFromObject() function
115
+ *
116
+ * @param transformMapFile id for mapFile
117
+ * @param mapFileUtil class to get mapfile
118
+ * @param object
119
+ * @returns Promise<string[]>
120
+ */
16
121
  static getIdentifierPropertiesFromObject(fileId: any, mapFileUtil: MapFileUtil, object: any): Promise<string[]>;
122
+ /**Takes in a FlexPLM object and returns the correct
123
+ * identifier properties. Order of precedence
124
+ * Property 'vibeIQIdentifierProperties'
125
+ * Map file entry in 'typeConversion:flex2vibe:<value>:getInformationalProperties()'
126
+ * for value from 'objectClass'
127
+ * TypeDefaults.getDefaultIdentifierPropertiesFromObject() function
128
+ *
129
+ * @param transformMapFile id for mapFile
130
+ * @param mapFileUtil class to get mapfile
131
+ * @param object
132
+ * @returns Promise<string[]>
133
+ */
17
134
  static getInformationalPropertiesFromObject(fileId: any, mapFileUtil: MapFileUtil, object: any): Promise<string[]>;
18
135
  static getMapKeyFromObject(fileId: any, mapFileUtil: MapFileUtil, object: any, direction: string): Promise<string | undefined>;
19
136
  static isInboundCreatableFromObject(fileId: string, mapFileUtil: MapFileUtil, object: any, context?: any): Promise<boolean>;
20
137
  static isOutboundCreatableFromEntity(fileId: string, mapFileUtil: MapFileUtil, entity: any, context?: any): Promise<boolean>;
138
+ /** Takes in a FlexPLM object and determines whether inbound
139
+ * images should be synced. In most cases, the creation owning system
140
+ * will also control image syncing. Defaults to false if no mapping exists.
141
+ * Map file entry in '<mapKey>:syncInboundImages()'
142
+ *
143
+ * @param fileId id for mapFile
144
+ * @param mapFileUtil class to get mapfile
145
+ * @param object FlexPLM object
146
+ * @param context optional context object
147
+ * @returns Promise<boolean>
148
+ */
21
149
  static syncInboundImages(fileId: string, mapFileUtil: MapFileUtil, object: any, context?: any): Promise<boolean>;
150
+ /** Takes in a VibeIQ entity object and determines whether outbound
151
+ * images should be synced. In most cases, the creation owning system
152
+ * will also control image syncing. Defaults to true if no mapping exists.
153
+ * Map file entry in '<mapKey>:syncOutboundImages()'
154
+ *
155
+ * @param fileId id for mapFile
156
+ * @param mapFileUtil class to get mapfile
157
+ * @param entity VibeIQ entity
158
+ * @param context optional context object
159
+ * @returns Promise<boolean>
160
+ */
22
161
  static syncOutboundImages(fileId: string, mapFileUtil: MapFileUtil, entity: any, context?: any): Promise<boolean>;
23
162
  static getObjectType(object: any): any;
24
163
  }