@contrail/flexplm 1.1.51 → 1.1.52

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.
@@ -18,10 +18,16 @@ export declare class BaseProcessPublishAssortment {
18
18
  process(event: any): Promise<{
19
19
  results: {
20
20
  message: any;
21
+ event: any;
21
22
  };
22
23
  skip_await: boolean;
23
24
  } | {
24
25
  results: any;
26
+ event: {
27
+ assortmentId: string;
28
+ assortmentPublishChangeId: string;
29
+ };
30
+ resultsCount: any;
25
31
  skip_await?: undefined;
26
32
  }>;
27
33
  getPublishInfo(assortmentId: string, assortmentPublishChangeId: string, apcHistory: any, publisher: any): Promise<any>;
@@ -50,12 +56,24 @@ export declare class BaseProcessPublishAssortment {
50
56
  processPublish(pcd: PublishChangeData, changeDetail: any, fullChange: any, deleteChanges: any): Promise<{
51
57
  results: {
52
58
  message: string;
59
+ event: {
60
+ assortmentId: string;
61
+ assortmentPublishChangeId: string;
62
+ };
53
63
  };
54
64
  skip_await: boolean;
65
+ event?: undefined;
66
+ resultsCount?: undefined;
55
67
  } | {
56
68
  results: any;
69
+ event: {
70
+ assortmentId: string;
71
+ assortmentPublishChangeId: string;
72
+ };
73
+ resultsCount: any;
57
74
  skip_await?: undefined;
58
75
  }>;
76
+ getResultsCount(events: any): any;
59
77
  private sendEvents;
60
78
  private sendToFlexPLM;
61
79
  private saveToLocalFile;
@@ -10,9 +10,17 @@ const type_conversion_utils_1 = require("../util/type-conversion-utils");
10
10
  const fsPromise = require("fs/promises");
11
11
  const path = require("path");
12
12
  const app_framework_1 = require("@contrail/app-framework");
13
+ var EventStatuses;
14
+ (function (EventStatuses) {
15
+ EventStatuses["NOT_PUBLISHABLE"] = "Not_Publishable";
16
+ EventStatuses["NO_FEDERATION_INFO"] = "No_Federation_Information";
17
+ EventStatuses["NO_EVENTS_TO_SEND"] = "No_Events_to_Send";
18
+ EventStatuses["FAILURE"] = "Failure";
19
+ EventStatuses["SUCCESS"] = "Success";
20
+ })(EventStatuses || (EventStatuses = {}));
13
21
  class BaseProcessPublishAssortment {
14
22
  constructor(_config, _dc, _mapFileUtil) {
15
- this.TTL = 7 * 24 * 60 * 60 * 1000;
23
+ this.TTL = 30 * 24 * 60 * 60 * 1000;
16
24
  this.cache = {
17
25
  carriedFromSeason: {}
18
26
  };
@@ -34,9 +42,15 @@ class BaseProcessPublishAssortment {
34
42
  }
35
43
  catch (e) {
36
44
  const message = e.message;
45
+ const eventStatus = (message.includes(BaseProcessPublishAssortment.ASSORTMENT_NOT_PUBLISHABLE)) ? EventStatuses.NOT_PUBLISHABLE :
46
+ (message.startsWith(BaseProcessPublishAssortment.ASSORTMENT_NO_FED_INFO)) ? EventStatuses.NO_FEDERATION_INFO :
47
+ EventStatuses.FAILURE;
48
+ const processStatus = 'BaseProcessPublishAssortment: ' + eventStatus
49
+ + ': assortmentId: ' + event.assortmentId + ': assortmentPublishChangeId: ' + event.assortmentPublishChangeId;
50
+ console.log(JSON.stringify(processStatus));
37
51
  console.log(message);
38
52
  const output = {
39
- results: { message },
53
+ results: { message, event },
40
54
  skip_await: true
41
55
  };
42
56
  return output;
@@ -502,20 +516,44 @@ class BaseProcessPublishAssortment {
502
516
  }
503
517
  async processPublish(pcd, changeDetail, fullChange, deleteChanges) {
504
518
  console.info('processPublish-start');
519
+ const event = {
520
+ assortmentId: pcd.assortmentId,
521
+ assortmentPublishChangeId: pcd.assortmentPublishChangeId
522
+ };
505
523
  const assortmentItemFullChangeMap = this.getFullChangeAssortmentMap(fullChange);
506
524
  const assortmentItemDeleteMap = this.getDeleteChangesAssortmentMap(deleteChanges);
507
525
  pcd.itemFamilyChanges = this.getItemFamilyChanges(pcd, changeDetail, assortmentItemFullChangeMap, assortmentItemDeleteMap);
508
526
  const events = await this.getEventsForPublishChangeData(pcd);
509
527
  if (events.length === 0) {
528
+ const processStatus = 'BaseProcessPublishAssortment: ' + EventStatuses.NO_EVENTS_TO_SEND
529
+ + ': assortmentId: ' + pcd.assortmentId + ': assortmentPublishChangeId: ' + pcd.assortmentPublishChangeId;
530
+ console.log(processStatus);
510
531
  const message = 'No Events to Send; returning';
511
532
  console.log(message);
512
533
  return {
513
- results: { message },
534
+ results: { message, event },
514
535
  skip_await: true
515
536
  };
516
537
  }
517
538
  const results = await this.sendEvents(events);
518
- return { results };
539
+ const resultsCount = this.getResultsCount(events);
540
+ const processStatus = 'BaseProcessPublishAssortment: ' + EventStatuses.NO_EVENTS_TO_SEND
541
+ + ': assortmentId: ' + pcd.assortmentId + ': assortmentPublishChangeId: ' + pcd.assortmentPublishChangeId
542
+ + ': resultsCount: ' + JSON.stringify(resultsCount);
543
+ console.log(processStatus);
544
+ return { results, event, resultsCount };
545
+ }
546
+ getResultsCount(events) {
547
+ return events.reduce((acc, event) => {
548
+ const objectClass = event?.objectClass;
549
+ if (objectClass === 'LCSProductSeasonLink') {
550
+ acc.productSeasons++;
551
+ }
552
+ else if (objectClass === 'LCSSKUSeasonLink') {
553
+ acc.colorwaySeasons++;
554
+ }
555
+ return acc;
556
+ }, { productSeasons: 0, colorwaySeasons: 0 });
519
557
  }
520
558
  async sendEvents(events) {
521
559
  console.info('sendEvents()');
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@contrail/flexplm",
3
- "version": "1.1.51",
3
+ "version": "1.1.52",
4
4
  "description": "Library used for integration with flexplm.",
5
5
  "main": "lib/index.js",
6
6
  "types": "lib/index.d.ts",
@@ -12,9 +12,17 @@ import path = require('path');
12
12
  import { MapFileUtil } from '@contrail/transform-data';
13
13
  import { Logger } from '@contrail/app-framework';
14
14
 
15
+ enum EventStatuses {
16
+ NOT_PUBLISHABLE = 'Not_Publishable',
17
+ NO_FEDERATION_INFO = 'No_Federation_Information',
18
+ NO_EVENTS_TO_SEND = 'No_Events_to_Send',
19
+ FAILURE = 'Failure',
20
+ SUCCESS = 'Success',
21
+ }
22
+
15
23
  export class BaseProcessPublishAssortment {
16
24
 
17
- private TTL = 7 * 24 * 60 * 60 * 1_000; // 1 week
25
+ private TTL = 30 * 24 * 60 * 60 * 1_000; // 30 days
18
26
  static ASSORTMENT_NOT_PUBLISHABLE = 'Assortment isn\'t marked for publishing to FlexPLM';
19
27
  static ASSORTMENT_NO_FED_INFO = 'Assortment doesn\'t have all "identifier" properties, so there is no processing. Identifier properties: ';
20
28
  static NOT_ABLE_TO_PROCESS_DELETE_CHANGES = 'Error: Not able to process delete changes';
@@ -47,9 +55,16 @@ export class BaseProcessPublishAssortment {
47
55
  seasonFed = await this.getSeasonFederation(assortmentId);
48
56
  } catch (e) {
49
57
  const message = e.message;
58
+ const eventStatus =
59
+ (message.includes(BaseProcessPublishAssortment.ASSORTMENT_NOT_PUBLISHABLE)) ? EventStatuses.NOT_PUBLISHABLE :
60
+ (message.startsWith(BaseProcessPublishAssortment.ASSORTMENT_NO_FED_INFO)) ? EventStatuses.NO_FEDERATION_INFO :
61
+ EventStatuses.FAILURE;
62
+ const processStatus = 'BaseProcessPublishAssortment: ' + eventStatus
63
+ + ': assortmentId: ' + event.assortmentId + ': assortmentPublishChangeId: ' + event.assortmentPublishChangeId;
64
+ console.log(JSON.stringify(processStatus));
50
65
  console.log(message);
51
66
  const output = {
52
- results: { message },
67
+ results: { message, event },
53
68
  skip_await: true
54
69
  };
55
70
  return output;
@@ -607,6 +622,10 @@ export class BaseProcessPublishAssortment {
607
622
  }
608
623
  async processPublish(pcd: PublishChangeData, changeDetail, fullChange, deleteChanges) {
609
624
  console.info('processPublish-start');
625
+ const event = {
626
+ assortmentId: pcd.assortmentId,
627
+ assortmentPublishChangeId: pcd.assortmentPublishChangeId
628
+ };
610
629
 
611
630
  const assortmentItemFullChangeMap = this.getFullChangeAssortmentMap(fullChange);
612
631
  const assortmentItemDeleteMap = this.getDeleteChangesAssortmentMap(deleteChanges);
@@ -614,16 +633,39 @@ export class BaseProcessPublishAssortment {
614
633
 
615
634
  const events = await this.getEventsForPublishChangeData(pcd);
616
635
  if (events.length === 0) {
617
- const message = 'No Events to Send; returning';
618
- console.log(message);
619
- return {
620
- results: { message },
621
- skip_await: true
622
- };
636
+ const processStatus = 'BaseProcessPublishAssortment: ' + EventStatuses.NO_EVENTS_TO_SEND
637
+ + ': assortmentId: ' + pcd.assortmentId + ': assortmentPublishChangeId: ' + pcd.assortmentPublishChangeId;
638
+ console.log(processStatus);
639
+ const message = 'No Events to Send; returning';
640
+ console.log(message);
641
+ return {
642
+ results: { message, event },
643
+ skip_await: true
644
+ };
645
+
623
646
  }
624
647
 
625
648
  const results = await this.sendEvents(events);
626
- return { results };
649
+ const resultsCount = this.getResultsCount(events);
650
+ const processStatus = 'BaseProcessPublishAssortment: ' + EventStatuses.NO_EVENTS_TO_SEND
651
+ + ': assortmentId: ' + pcd.assortmentId + ': assortmentPublishChangeId: ' + pcd.assortmentPublishChangeId
652
+ + ': resultsCount: ' + JSON.stringify(resultsCount);
653
+ console.log(processStatus);
654
+ return { results, event, resultsCount };
655
+
656
+ }
657
+
658
+ getResultsCount(events) {
659
+ return events.reduce((acc, event) => {
660
+ const objectClass = event?.objectClass;
661
+ if (objectClass === 'LCSProductSeasonLink') {
662
+ acc.productSeasons++;
663
+ }
664
+ else if (objectClass === 'LCSSKUSeasonLink') {
665
+ acc.colorwaySeasons++;
666
+ }
667
+ return acc;
668
+ }, { productSeasons: 0, colorwaySeasons: 0 });
627
669
  }
628
670
 
629
671
  private async sendEvents(events: SeasonalPayload[]): Promise<any> {