@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
@@ -1,392 +0,0 @@
1
- import { ConfigDefaults } from './config-defaults';
2
- import { FCConfig } from '../interfaces/interfaces';
3
-
4
- let entityObject = {};
5
- jest.mock('@contrail/sdk', () => {
6
- return {
7
- Entities: class {
8
- get() {
9
- return entityObject;
10
- }
11
- }
12
- };
13
- });
14
-
15
- let fetchJson = {};
16
- global.fetch = jest.fn().mockImplementation(() => {
17
- return Promise.resolve({
18
- json: () => Promise.resolve(fetchJson)
19
- });
20
-
21
- });
22
-
23
- describe('all tests', () => {
24
- describe('setConfigDefaults - required values', () => {
25
- it('missing apiHost', async () => {
26
- const config = {
27
- //apiHost: 'http://test.com',
28
- userName: 'vibeiq',
29
- password: 'vibeiq',
30
- plmEnviornment: 'SB'
31
- };
32
-
33
- try {
34
- // eslint-disable-next-line @typescript-eslint/no-unused-vars, unused-imports/no-unused-vars
35
- const fcConfig: FCConfig = await ConfigDefaults.setConfigDefaults(config);
36
-
37
- } catch (e) {
38
- expect(e.message).toEqual(ConfigDefaults.NEED_CONFIG_VALUES);
39
- }
40
- });
41
- it('missing userName', async () => {
42
- const config = {
43
- apiHost: 'http://test.com',
44
- //userName: 'vibeiq',
45
- password: 'vibeiq',
46
- plmEnviornment: 'SB'
47
- };
48
-
49
- try {
50
- // eslint-disable-next-line @typescript-eslint/no-unused-vars, unused-imports/no-unused-vars
51
- const fcConfig: FCConfig = await ConfigDefaults.setConfigDefaults(config);
52
-
53
- } catch (e) {
54
- expect(e.message).toEqual(ConfigDefaults.NEED_CONFIG_VALUES);
55
- }
56
- });
57
-
58
- it('missing password', async () => {
59
- const config = {
60
- apiHost: 'http://test.com',
61
- userName: 'vibeiq',
62
- //password: 'vibeiq',
63
- plmEnviornment: 'SB'
64
- };
65
-
66
- try {
67
- // eslint-disable-next-line @typescript-eslint/no-unused-vars, unused-imports/no-unused-vars
68
- const fcConfig: FCConfig = await ConfigDefaults.setConfigDefaults(config);
69
-
70
- } catch (e) {
71
- expect(e.message).toEqual(ConfigDefaults.NEED_CONFIG_VALUES);
72
- }
73
- });
74
-
75
- it('missing plmEnviornment', async () => {
76
- const config = {
77
- apiHost: 'http://test.com',
78
- userName: 'vibeiq',
79
- password: 'vibeiq',
80
- //plmEnviornment: 'SB'
81
- };
82
-
83
- try {
84
- // eslint-disable-next-line @typescript-eslint/no-unused-vars, unused-imports/no-unused-vars
85
- const fcConfig: FCConfig = await ConfigDefaults.setConfigDefaults(config);
86
-
87
- } catch (e) {
88
- expect(e.message).toEqual(ConfigDefaults.NEED_CONFIG_VALUES);
89
- }
90
- });
91
-
92
- });
93
-
94
- describe('userName & password as functions', () =>{
95
- const config = {
96
- apiHost: 'http://test.com',
97
- userName: 'vibeiq',
98
- password: 'vibeiq',
99
- plmEnviornment: 'SB'
100
- };
101
- it('userName as function', async () =>{
102
- const startConfig = Object.assign({}, config, { userName: 'newName' });
103
- const fcConfig = await ConfigDefaults.setConfigDefaults(startConfig);
104
- expect(fcConfig.userName()).toEqual('newName');
105
-
106
- });
107
- it('password as function', async () =>{
108
- const startConfig = Object.assign({}, config, { password: 'strange' });
109
- const fcConfig = await ConfigDefaults.setConfigDefaults(startConfig);
110
- expect(fcConfig.password()).toEqual('strange');
111
-
112
- });
113
- });
114
-
115
- describe('setConfigDefaults-setting defaults', () => {
116
- const config = {
117
- apiHost: 'http://test.com',
118
- userName: 'vibeiq',
119
- password: 'vibeiq',
120
- plmEnviornment: 'SB'
121
- };
122
- it('urlContext-get default', async () => {
123
- const startConfig = Object.assign({}, config);
124
- const fcConfig = await ConfigDefaults.setConfigDefaults(startConfig);
125
- expect(fcConfig.urlContext).toEqual('/Windchill');
126
- });
127
-
128
- it('urlContext-set value', async () => {
129
- const startConfig = Object.assign({}, config);
130
- startConfig['urlContext'] = '/FlexPLM';
131
- const fcConfig = await ConfigDefaults.setConfigDefaults(startConfig);
132
- expect(fcConfig.urlContext).toEqual('/FlexPLM');
133
- });
134
-
135
- it('sendMode-ASYNC_PUBLISH_SEASON-get default', async () => {
136
- const startConfig = Object.assign({}, config);
137
- const fcConfig: FCConfig = await ConfigDefaults.setConfigDefaults(startConfig);
138
- expect(fcConfig['sendMode']['ASYNC_PUBLISH_SEASON']).toEqual('vibeiqfile');
139
- });
140
-
141
- it('sendMode-ASYNC_PUBLISH_SEASON-set value', async () => {
142
- const startConfig = Object.assign({}, config);
143
- startConfig['sendMode'] = { ASYNC_PUBLISH_SEASON: 'vibeiqfile-dontsendtoflexplm' };
144
- const fcConfig: FCConfig = await ConfigDefaults.setConfigDefaults(startConfig);
145
- expect(fcConfig['sendMode']['ASYNC_PUBLISH_SEASON']).toEqual('vibeiqfile-dontsendtoflexplm');
146
- });
147
-
148
- it('sendMode-NO_DEFAULT-get default', async () => {
149
- const startConfig = Object.assign({}, config);
150
- const fcConfig: FCConfig = await ConfigDefaults.setConfigDefaults(startConfig);
151
- expect(fcConfig['sendMode']['NO_DEFAULT']).toBeUndefined();
152
- });
153
-
154
- it('sendMode-NO_DEFAULT-set value', async () => {
155
- const startConfig = Object.assign({}, config);
156
- startConfig['sendMode'] = { NO_DEFAULT: 'vibeiqfile-dontsendtoflexplm' };
157
- const fcConfig: FCConfig = await ConfigDefaults.setConfigDefaults(startConfig);
158
- expect(fcConfig['sendMode']['NO_DEFAULT']).toEqual('vibeiqfile-dontsendtoflexplm');
159
- });
160
-
161
- it('itemPreDevelopmentLifecycleStages-get default', async () => {
162
- const startConfig = Object.assign({}, config);
163
- const fcConfig: FCConfig = await ConfigDefaults.setConfigDefaults(startConfig);
164
- expect(fcConfig['itemPreDevelopmentLifecycleStages']).toEqual(['concept']);
165
- });
166
-
167
- it('itemPreDevelopmentLifecycleStages-set value', async () => {
168
- const startConfig = Object.assign({}, config);
169
- const concept = 'concept';
170
- const development = 'development';
171
- startConfig['itemPreDevelopmentLifecycleStages'] = concept + ',' + development;
172
- const fcConfig: FCConfig = await ConfigDefaults.setConfigDefaults(startConfig);
173
- const itemPreDevelopmentLifecycleStages = fcConfig['itemPreDevelopmentLifecycleStages'];
174
- expect(itemPreDevelopmentLifecycleStages instanceof Array).toBeTruthy();
175
- expect(itemPreDevelopmentLifecycleStages.length).toBe(2);
176
- expect(itemPreDevelopmentLifecycleStages.includes(concept));
177
- expect(itemPreDevelopmentLifecycleStages.includes(development));
178
- });
179
-
180
- it('itemPreDevelopmentLifecycleStages-set value with space', async () => {
181
- const startConfig = Object.assign({}, config);
182
- const concept = 'concept';
183
- const development = 'development';
184
- startConfig['itemPreDevelopmentLifecycleStages'] = concept + ', ' + development;
185
- const fcConfig: FCConfig = await ConfigDefaults.setConfigDefaults(startConfig);
186
- const itemPreDevelopmentLifecycleStages = fcConfig['itemPreDevelopmentLifecycleStages'];
187
- expect(itemPreDevelopmentLifecycleStages instanceof Array).toBeTruthy();
188
- expect(itemPreDevelopmentLifecycleStages.length).toBe(2);
189
- expect(itemPreDevelopmentLifecycleStages.includes(concept));
190
- expect(itemPreDevelopmentLifecycleStages.includes(development));
191
- });
192
-
193
- it('itemPreDevelopmentLifecycleStages as empty string', async () => {
194
- console.log('itemPreDevelopmentLifecycleStages as empty string');
195
- const concept = 'concept';
196
- const startConfig = Object.assign({}, config);
197
- startConfig['itemPreDevelopmentLifecycleStages'] = '';
198
- console.log('startConfig: ' + JSON.stringify(startConfig));
199
-
200
- const fcConfig: FCConfig = await ConfigDefaults.setConfigDefaults(startConfig);
201
- console.log('fcConfig: ' + JSON.stringify(fcConfig));
202
- const itemPreDevelopmentLifecycleStages = fcConfig['itemPreDevelopmentLifecycleStages'];
203
- expect(itemPreDevelopmentLifecycleStages instanceof Array).toBeTruthy();
204
- expect(itemPreDevelopmentLifecycleStages.length).toBe(1);
205
- expect(itemPreDevelopmentLifecycleStages.includes(concept));
206
-
207
- });
208
-
209
- it('itemPreDevelopmentLifecycleStages as empty array', async () => {
210
- console.log('itemPreDevelopmentLifecycleStages as empty string');
211
- const concept = 'concept';
212
- const startConfig = Object.assign({}, config);
213
- startConfig['itemPreDevelopmentLifecycleStages'] = [];
214
- console.log('startConfig: ' + JSON.stringify(startConfig));
215
-
216
- const fcConfig: FCConfig = await ConfigDefaults.setConfigDefaults(startConfig);
217
- console.log('fcConfig: ' + JSON.stringify(fcConfig));
218
- const itemPreDevelopmentLifecycleStages = fcConfig['itemPreDevelopmentLifecycleStages'];
219
- expect(itemPreDevelopmentLifecycleStages instanceof Array).toBeTruthy();
220
- expect(itemPreDevelopmentLifecycleStages.length).toBe(1);
221
- expect(itemPreDevelopmentLifecycleStages.includes(concept));
222
-
223
- });
224
- it('identifierAtts-LCSProduct-get default', async () => {
225
- const startConfig = Object.assign({}, config);
226
- const objectClass = 'LCSProduct';
227
- const expectedAtts = ['name'];
228
-
229
- const fcConfig = await ConfigDefaults.setConfigDefaults(startConfig);
230
- const identifierAtts = fcConfig.identifierAtts[objectClass];
231
- expect(identifierAtts instanceof Array).toBeTruthy();
232
- expect(identifierAtts.length).toBe(expectedAtts.length);
233
- for (const att of expectedAtts) {
234
- expect(identifierAtts.includes(att));
235
- }
236
- });
237
-
238
- it('identifierAtts-LCSProduct-set value', async () => {
239
- const startConfig = Object.assign({}, config);
240
- const objectClass = 'LCSProduct';
241
- const expectedAtts = ['val1', 'val2'];
242
- startConfig['identifierAtts'] = {};
243
- startConfig['identifierAtts'][objectClass] = expectedAtts;
244
-
245
- const fcConfig = await ConfigDefaults.setConfigDefaults(startConfig);
246
- const identifierAtts = fcConfig.identifierAtts[objectClass];
247
- expect(identifierAtts instanceof Array).toBeTruthy();
248
- expect(identifierAtts.length).toBe(expectedAtts.length);
249
- for (const att of expectedAtts) {
250
- expect(identifierAtts.includes(att));
251
- }
252
- });
253
-
254
- it('identifierAtts-LCSSeason-get default', async () => {
255
- const startConfig = Object.assign({}, config);
256
- const objectClass = 'LCSSeason';
257
- const expectedAtts = ['flexPLMSeasonName'];
258
- // const expectedAtts =['seasonType', 'seasonYear'];
259
-
260
- const fcConfig = await ConfigDefaults.setConfigDefaults(startConfig);
261
- const identifierAtts = fcConfig.identifierAtts[objectClass];
262
- expect(identifierAtts instanceof Array).toBeTruthy();
263
- expect(identifierAtts.length).toBe(expectedAtts.length);
264
- for (const att of expectedAtts) {
265
- expect(identifierAtts.includes(att));
266
- }
267
- });
268
-
269
- it('identifierAtts-LCSSeason-set value', async () => {
270
- const startConfig = Object.assign({}, config);
271
- const objectClass = 'LCSSeason';
272
- const expectedAtts = ['val1', 'val2'];
273
- startConfig['identifierAtts'] = {};
274
- startConfig['identifierAtts'][objectClass] = expectedAtts;
275
-
276
- const fcConfig = await ConfigDefaults.setConfigDefaults(startConfig);
277
- const identifierAtts = fcConfig.identifierAtts[objectClass];
278
- expect(identifierAtts instanceof Array).toBeTruthy();
279
- expect(identifierAtts.length).toBe(expectedAtts.length);
280
- for (const att of expectedAtts) {
281
- expect(identifierAtts.includes(att));
282
- }
283
- });
284
-
285
- it('identifierAtts-LCSSKU-get default', async () => {
286
- const startConfig = Object.assign({}, config);
287
- const objectClass = 'LCSSKU';
288
- const expectedAtts = ['optionName'];
289
-
290
- const fcConfig = await ConfigDefaults.setConfigDefaults(startConfig);
291
- const identifierAtts = fcConfig.identifierAtts[objectClass];
292
- expect(identifierAtts instanceof Array).toBeTruthy();
293
- expect(identifierAtts.length).toBe(expectedAtts.length);
294
- for (const att of expectedAtts) {
295
- expect(identifierAtts.includes(att));
296
- }
297
- });
298
-
299
- it('identifierAtts-LCSSKU-set value', async () => {
300
- const startConfig = Object.assign({}, config);
301
- const objectClass = 'LCSSKU';
302
- const expectedAtts = ['val1', 'val2'];
303
- startConfig['identifierAtts'] = {};
304
- startConfig['identifierAtts'][objectClass] = expectedAtts;
305
-
306
- const fcConfig = await ConfigDefaults.setConfigDefaults(startConfig);
307
- const identifierAtts = fcConfig.identifierAtts[objectClass];
308
- expect(identifierAtts instanceof Array).toBeTruthy();
309
- expect(identifierAtts.length).toBe(expectedAtts.length);
310
- for (const att of expectedAtts) {
311
- expect(identifierAtts.includes(att));
312
- }
313
- });
314
-
315
- });
316
-
317
- describe('isPropertyTrue', () => {
318
- it('returns true for boolean true', () => {
319
- expect(ConfigDefaults.isPropertyTrue(true)).toBe(true);
320
- });
321
-
322
- it('returns true for string true', () => {
323
- expect(ConfigDefaults.isPropertyTrue('true')).toBe(true);
324
- });
325
-
326
- it('returns true for string TRUE', () => {
327
- expect(ConfigDefaults.isPropertyTrue('TRUE')).toBe(true);
328
- });
329
-
330
- it('returns true for string True', () => {
331
- expect(ConfigDefaults.isPropertyTrue('True')).toBe(true);
332
- });
333
-
334
- it('returns false for boolean false', () => {
335
- expect(ConfigDefaults.isPropertyTrue(false)).toBe(false);
336
- });
337
-
338
- it('returns false for string false', () => {
339
- expect(ConfigDefaults.isPropertyTrue('false')).toBe(false);
340
- });
341
-
342
- it('returns false for null', () => {
343
- expect(ConfigDefaults.isPropertyTrue(null)).toBe(false);
344
- });
345
-
346
- it('returns false for undefined', () => {
347
- expect(ConfigDefaults.isPropertyTrue(undefined)).toBe(false);
348
- });
349
-
350
- it('returns false for empty string', () => {
351
- expect(ConfigDefaults.isPropertyTrue('')).toBe(false);
352
- });
353
-
354
- it('returns false for number 1', () => {
355
- expect(ConfigDefaults.isPropertyTrue(1)).toBe(false);
356
- });
357
- });
358
-
359
- describe('getConfigFile', () => {
360
- beforeEach(() => {
361
- ConfigDefaults.clearConfigCache();
362
- });
363
-
364
- it('response has test var', async () => {
365
- fetchJson = { testVar: true };
366
- entityObject = { downloadUrl: 'http://sss.com' };
367
-
368
- const config = await ConfigDefaults.getConfigFile('id-1');
369
- expect(config).toBeDefined();
370
- expect(config['testVar']).toBeTruthy();
371
- });
372
-
373
- it('undefined file object', async () => {
374
- fetchJson = { testVar: true };
375
- entityObject = undefined;
376
-
377
- const config = await ConfigDefaults.getConfigFile('id-1');
378
- expect(config).toBeDefined();
379
- expect(Object.keys(config).length).toEqual(0);
380
- });
381
-
382
- it('response no downloadUrl', async () => {
383
- fetchJson = { testVar: true };
384
- entityObject = { };
385
-
386
- const config = await ConfigDefaults.getConfigFile('id-1');
387
- expect(config).toBeDefined();
388
- expect(Object.keys(config).length).toEqual(0);
389
- });
390
-
391
- });
392
- });
@@ -1,97 +0,0 @@
1
- import { Entities } from '@contrail/sdk';
2
- import { FCConfig } from '../interfaces/interfaces';
3
- import { ObjectUtil } from '@contrail/util';
4
-
5
- export class ConfigDefaults {
6
- static NEED_CONFIG_VALUES = 'To connect to FlexPLM all these APP values need to be set apiHost, userName, and password';
7
- static STATIC_CONFIG_CACHE = {};
8
- static async setConfigDefaults(config): Promise<FCConfig> {
9
- //Validate config
10
- if (!config.apiHost || !config.userName || !config.password) {
11
- throw new Error(ConfigDefaults.NEED_CONFIG_VALUES);
12
- }
13
-
14
- //List will be comma separated list in UI, so convert to array
15
- if(config?.itemPreDevelopmentLifecycleStages && !(config?.itemPreDevelopmentLifecycleStages instanceof Array)){
16
- config.itemPreDevelopmentLifecycleStages = config.itemPreDevelopmentLifecycleStages.split(',');
17
- } else if(Object.keys(config).includes('itemPreDevelopmentLifecycleStages')){
18
- delete config['itemPreDevelopmentLifecycleStages'];
19
- }
20
-
21
- const defaultConfig = {
22
- urlContext: '/Windchill',
23
- sendMode: {
24
- ASYNC_PUBLISH_SEASON: 'vibeiqfile'
25
- },
26
- itemPreDevelopmentLifecycleStages: ['concept'],
27
- identifierAtts: {
28
- LCSProduct: ['itemNumber'],
29
- LCSSeason: ['flexPLMSeasonName'],
30
- LCSSKU: ['itemNumber']
31
- },
32
- csrfEndpoint: '/servlet/rest/security/csrf',
33
- vibeEventEndpoint: '/rfa/vibeiq/vibeEvents',
34
- payloadDefaultAsArray: true
35
- };
36
- const configArr = [defaultConfig];
37
-
38
- if(config.configFile){
39
- const fileConfig = await ConfigDefaults.getConfigFile(config.configFile);
40
- configArr.push(fileConfig);
41
- }
42
- configArr.push(config);
43
- const outputConfig = ObjectUtil.mergeDeep({}, ...configArr);
44
- const uName = outputConfig.userName;
45
- const pass = outputConfig.password;
46
- outputConfig.userName = () => uName;
47
- outputConfig.password = () => pass;
48
-
49
- //Don't allow overwriting this.
50
- outputConfig['OOBvibeEventEndpoint'] = '/rfa/vibeiq/vibeEvents';
51
-
52
- console.log('outputConfig: ' + JSON.stringify(outputConfig));
53
- return outputConfig as FCConfig;
54
- }
55
-
56
- static async getConfigFile(fileId: string) {
57
- try {
58
-
59
- if(ConfigDefaults.STATIC_CONFIG_CACHE[fileId]){
60
- console.debug('returning cached config file: ' + fileId);
61
- return ConfigDefaults.STATIC_CONFIG_CACHE[fileId];
62
- }
63
- const options = {
64
- entityName: 'file',
65
- id: fileId,
66
- };
67
- const file = await new Entities().get(options);
68
- if (!file){
69
- console.log('failed to find file with id: ' + fileId);
70
- return {};
71
- }
72
- const downloadUrl = file['downloadUrl'];
73
-
74
- if(!downloadUrl){
75
- console.log('file didnt have downloadUrl. fileId: ' + fileId);
76
- return {};
77
- }
78
- const response = await fetch(downloadUrl);
79
- const config = await response.json();
80
- if(config){
81
- ConfigDefaults.STATIC_CONFIG_CACHE[fileId] = config;
82
- }
83
- return config ? config: {};
84
- }catch(e){
85
- console.log('Error getting config file: ' + fileId + '- ' +e.message);
86
- return {};
87
- }
88
- }
89
-
90
- static isPropertyTrue(value: any): boolean {
91
- return value === true || (typeof value === 'string' && value.toLowerCase() === 'true');
92
- }
93
-
94
- static clearConfigCache(){
95
- ConfigDefaults.STATIC_CONFIG_CACHE = {};
96
- }
97
- }