@contrail/flexplm 1.0.19 → 1.1.3

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.
File without changes
@@ -0,0 +1,205 @@
1
+ 'use strict';
2
+ Object.defineProperty(exports, '__esModule', { value: true });
3
+ exports.mapping = {
4
+ typeConversion: {
5
+ vibe2flex: {
6
+ 'custom-entity': {
7
+ getMapKey: (entity) => {
8
+ const typePath = entity['typePath'];
9
+ let mapKey = '';
10
+ switch (typePath) {
11
+ case 'custom-entity:pack':
12
+ mapKey = 'packaging';
13
+ break;
14
+ case 'custom-entity:prefix':
15
+ mapKey = 'prefix';
16
+ break;
17
+ case 'custom-entity:catName':
18
+ mapKey = 'catName';
19
+ break;
20
+ case 'custom-entity:partnerOrg':
21
+ mapKey = 'partnerOrg';
22
+ break;
23
+ case 'custom-entity:catFamily':
24
+ mapKey = 'catFamily';
25
+ break;
26
+ case 'custom-entity:formName':
27
+ mapKey = 'formName';
28
+ break;
29
+ }
30
+ return mapKey;
31
+ }
32
+ }
33
+ }
34
+ },
35
+ LCSProduct: {
36
+ vibeOwningKeys: ['itemNumber', 'lifecycleStage'],
37
+ vibe2flex: {
38
+ getClass: () => 'LCSProduct',
39
+ getSoftType: (entity) => {
40
+ const prodType = entity['prodType'];
41
+ let val = '';
42
+ switch (prodType) {
43
+ case 'acc':
44
+ val = 'Product\\Accesories';
45
+ break;
46
+ case 'app':
47
+ val = 'Product\\Apparel';
48
+ break;
49
+ case 'eqp':
50
+ val = 'Product\\Equipment';
51
+ break;
52
+ case 'foot':
53
+ val = 'Product\\Footwear';
54
+ break;
55
+ }
56
+ return val;
57
+ },
58
+ transformOrder: [{ processor: 'REKEY', rekeyDelete: true, rekeyTransformersKey: 'rekey' }, { processor: 'VALUE_TRANSFORM', functionTransformersKey: 'valueTransform' }],
59
+ rekey: {
60
+ productName: 'name',
61
+ vibeIQIdentifier: 'itemNumber'
62
+ },
63
+ valueTransform: {
64
+ transformEx: (row) => {
65
+ return row['otherProp'] + 'xxx';
66
+ }
67
+ }
68
+ },
69
+ flex2vibe: {
70
+ getClass: () => 'item',
71
+ transformOrder: [{ processor: 'REKEY', rekeyDelete: true, rekeyTransformersKey: 'rekey' }],
72
+ rekey: {
73
+ itemNumber: 'vibeIQIdentifier',
74
+ name: 'productName',
75
+ }
76
+ }
77
+ },
78
+ LCSSKU: {
79
+ vibeOwningKeys: ['itemNumber', 'lifecycleStage'],
80
+ vibe2flex: {
81
+ getClass: () => 'LCSSKU',
82
+ getSoftType: (entity) => {
83
+ const prodType = entity['prodType'];
84
+ let val = '';
85
+ switch (prodType) {
86
+ case 'acc':
87
+ val = 'Product\\Accesories';
88
+ break;
89
+ case 'app':
90
+ val = 'Product\\Apparel';
91
+ break;
92
+ case 'eqp':
93
+ val = 'Product\\Equipment';
94
+ break;
95
+ case 'foot':
96
+ val = 'Product\\Footwear';
97
+ break;
98
+ }
99
+ return val;
100
+ },
101
+ transformOrder: [{ processor: 'REKEY', rekeyDelete: true, rekeyTransformersKey: 'rekey' }],
102
+ rekey: {
103
+ skuName: 'optionName',
104
+ vibeIQIdentifier: 'itemNumber'
105
+ }
106
+ },
107
+ flex2vibe: {
108
+ transformOrder: [{ processor: 'REKEY', rekeyDelete: true, rekeyTransformersKey: 'rekey' }],
109
+ rekey: {
110
+ itemNumber: 'vibeIQIdentifier',
111
+ optionName: 'skuName',
112
+ }
113
+ }
114
+ },
115
+ packaging: {
116
+ vibe2flex: {
117
+ transformOrder: [{ processor: 'REKEY', rekeyDelete: true, rekeyTransformersKey: 'rekey' }],
118
+ rekey: {
119
+ retailPackType: 'packType',
120
+ retailIntroDate: 'introDate'
121
+ },
122
+ getSoftType: () => 'Revisable Entity\\packaging',
123
+ getClass: () => 'LCSRevisableEntity'
124
+ },
125
+ flex2vibe: {
126
+ transformOrder: [{ processor: 'REKEY', rekeyDelete: true, rekeyTransformersKey: 'rekey' }],
127
+ rekey: {
128
+ packType: 'retailPackType',
129
+ introDate: 'retailIntroDate'
130
+ },
131
+ getClass: () => 'custom-entity',
132
+ getSoftType: () => 'custom-entity:pack',
133
+ }
134
+ },
135
+ prefix: {
136
+ vibe2flex: {
137
+ transformOrder: [{ processor: 'REKEY', rekeyDelete: true, rekeyTransformersKey: 'rekey' }],
138
+ rekey: {
139
+ retailOwner: 'owner',
140
+ retailIntroDate: 'introDate'
141
+ },
142
+ getSoftType: () => 'Revisable Entity\\prefix',
143
+ getClass: () => 'LCSRevisableEntity'
144
+ },
145
+ flex2vibe: {
146
+ transformOrder: [{ processor: 'REKEY', rekeyDelete: true, rekeyTransformersKey: 'rekey' }],
147
+ rekey: {
148
+ owner: 'retailOwner',
149
+ introDate: 'retailIntroDate'
150
+ },
151
+ getClass: () => 'custom-entity',
152
+ getSoftType: () => 'custom-entity:prefix',
153
+ }
154
+ },
155
+ catName: {
156
+ getIdentifierProperties: () => ['catName', 'catNumber'],
157
+ getInformationalProperties: () => ['longName'],
158
+ vibe2flex: {
159
+ transformOrder: [],
160
+ getSoftType: () => 'Last\\catName',
161
+ getClass: () => 'LCSLast'
162
+ },
163
+ flex2vibe: {
164
+ transformOrder: [],
165
+ getClass: () => 'custom-entity',
166
+ getSoftType: () => 'custom-entity:catName',
167
+ }
168
+ },
169
+ partnerOrg: {
170
+ vibe2flex: {
171
+ transformOrder: [],
172
+ getSoftType: () => 'Business Object\\partnerOrg',
173
+ getClass: () => 'LCSLifecycleManaged'
174
+ },
175
+ flex2vibe: {
176
+ transformOrder: [],
177
+ getClass: () => 'custom-entity',
178
+ getSoftType: () => 'custom-entity:partnerOrg',
179
+ }
180
+ },
181
+ catFamily: {
182
+ vibe2flex: {
183
+ transformOrder: [],
184
+ getSoftType: () => 'Revisable Entity\\catFamily',
185
+ getClass: () => 'LCSRevisableEntity'
186
+ },
187
+ flex2vibe: {
188
+ transformOrder: [],
189
+ getClass: () => 'custom-entity',
190
+ getSoftType: () => 'custom-entity:catFamily',
191
+ }
192
+ },
193
+ formName: {
194
+ vibe2flex: {
195
+ transformOrder: [],
196
+ getSoftType: () => 'Material\\form',
197
+ getClass: () => 'LCSMaterial'
198
+ },
199
+ flex2vibe: {
200
+ transformOrder: [],
201
+ getClass: () => 'custom-entity',
202
+ getSoftType: () => 'custom-entity:formName',
203
+ }
204
+ },
205
+ };
@@ -9,10 +9,10 @@ export declare class DataConverter {
9
9
  private objRefCache;
10
10
  constructor(config: FCConfig, mapFileUtil: MapFileUtil);
11
11
  getFlexPLMObjectDataFromEvent(event: any, dataToSkip: string[]): Promise<{}>;
12
- getFlexPLMObjectData(newData: any, dataToSkip: string[], expandObjRef: boolean): Promise<{}>;
13
- getFlexPLMValue(prop: any, newData: any, expandObjRef: boolean): Promise<any>;
12
+ getFlexPLMObjectData(newData: any, dataToSkip: string[], inflateObjRef: boolean): Promise<{}>;
13
+ getFlexPLMValue(prop: any, newData: any, inflateObjRef: boolean): Promise<any>;
14
14
  getEnumerationValue(prop: any, nd: any): any;
15
- getObjectReferenceValue(prop: any, newData: any, expandObjRef?: boolean): Promise<any>;
15
+ getObjectReferenceValue(prop: any, newData: any, inflateObjRef?: boolean): Promise<any>;
16
16
  getMappingClass(entity: object, mapping: any): string;
17
17
  setEntityValues(entity: any, data: any, keysToSkip?: string[]): Promise<any>;
18
18
  getEntityValues(objectClass: string, data: any, keysToSkip?: string[]): Promise<{}>;
@@ -3,9 +3,10 @@ Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.DataConverter = void 0;
4
4
  const sdk_1 = require("@contrail/sdk");
5
5
  const type_utils_1 = require("./type-utils");
6
- const transform_data_1 = require("@contrail/transform-data");
7
6
  const app_framework_1 = require("@contrail/app-framework");
8
7
  const util_1 = require("@contrail/util");
8
+ const type_conversion_utils_1 = require("./type-conversion-utils");
9
+ const map_utils_1 = require("./map-utils");
9
10
  class DataConverter {
10
11
  constructor(config, mapFileUtil) {
11
12
  this.config = config;
@@ -20,7 +21,7 @@ class DataConverter {
20
21
  async getFlexPLMObjectDataFromEvent(event, dataToSkip) {
21
22
  return this.getFlexPLMObjectData(event.newData, dataToSkip, true);
22
23
  }
23
- async getFlexPLMObjectData(newData, dataToSkip, expandObjRef) {
24
+ async getFlexPLMObjectData(newData, dataToSkip, inflateObjRef) {
24
25
  if (app_framework_1.Logger.isDebugOn()) {
25
26
  console.debug('newData: ' + JSON.stringify(newData));
26
27
  }
@@ -38,14 +39,14 @@ class DataConverter {
38
39
  if (dataToSkip.includes(slug)) {
39
40
  continue;
40
41
  }
41
- data[slug] = await this.getFlexPLMValue(prop, newData, expandObjRef);
42
+ data[slug] = await this.getFlexPLMValue(prop, newData, inflateObjRef);
42
43
  }
43
44
  if (app_framework_1.Logger.isDebugOn()) {
44
45
  console.debug('getFlexPLMObjectData-data: ' + JSON.stringify(data));
45
46
  }
46
47
  return data;
47
48
  }
48
- async getFlexPLMValue(prop, newData, expandObjRef) {
49
+ async getFlexPLMValue(prop, newData, inflateObjRef) {
49
50
  const propertyType = prop['propertyType'];
50
51
  const slug = prop['slug'];
51
52
  const nd = newData[slug];
@@ -74,7 +75,7 @@ class DataConverter {
74
75
  value = this.getEnumerationValue(prop, nd);
75
76
  }
76
77
  else if ('object_reference' === propertyType) {
77
- value = await this.getObjectReferenceValue(prop, newData, expandObjRef);
78
+ value = await this.getObjectReferenceValue(prop, newData, inflateObjRef);
78
79
  if (app_framework_1.Logger.isDebugOn()) {
79
80
  console.debug('object_reference: ' + JSON.stringify(value));
80
81
  }
@@ -127,13 +128,13 @@ class DataConverter {
127
128
  }
128
129
  return value;
129
130
  }
130
- async getObjectReferenceValue(prop, newData, expandObjRef = false) {
131
+ async getObjectReferenceValue(prop, newData, inflateObjRef = false) {
131
132
  const slug = prop['slug'];
132
133
  console.debug('getObjectReferenceValue-prop: ' + slug);
133
134
  let value = newData[slug];
134
135
  const entityType = prop['referencedTypeRootSlug'];
135
136
  const entityId = newData[slug + 'Id'];
136
- if ((!value || typeof value === 'string') && expandObjRef) {
137
+ if ((!value || typeof value === 'string') && inflateObjRef) {
137
138
  if (entityId) {
138
139
  if (this.objRefCache[entityId]) {
139
140
  console.log('cache hit: ' + entityId);
@@ -151,22 +152,15 @@ class DataConverter {
151
152
  }
152
153
  if (value && !(typeof value === 'string')) {
153
154
  const unprocessedValue = value;
154
- const objectClass = this.typeUtils.getEventObjectClass(entityType, newData);
155
+ const objectClass = await type_conversion_utils_1.TypeConversionUtils.getObjectClass(this.transformMapFile, this.mapFileUtil, unprocessedValue);
156
+ const flexPLMTypePath = await type_conversion_utils_1.TypeConversionUtils.getObjectTypePath(this.transformMapFile, this.mapFileUtil, unprocessedValue);
155
157
  value = await this.getFlexPLMObjectData(value, [], false);
156
158
  value['entityReference'] = entityType + ':' + entityId;
157
159
  value['objectClass'] = objectClass;
158
- value['typePath'] = unprocessedValue['typePath'];
160
+ value['flexPLMTypePath'] = flexPLMTypePath;
159
161
  if (this.transformMapFile) {
160
- const wholeMap = await this.mapFileUtil.getMapFile(this.transformMapFile);
161
- const objClass = this.getMappingClass(unprocessedValue, wholeMap);
162
- const mapping = await this.mapFileUtil.getMappingSection(this.transformMapFile, objClass, 'vibe2flex');
163
- if (mapping) {
164
- const tasks = transform_data_1.MapFileUtil.getTransformTasks(mapping);
165
- if (tasks.length > 0) {
166
- const convertedArray = transform_data_1.TransformProcessor.transformData([value], tasks);
167
- value = convertedArray[0];
168
- }
169
- }
162
+ const mapKey = await type_conversion_utils_1.TypeConversionUtils.getMapKey(this.transformMapFile, this.mapFileUtil, unprocessedValue, type_conversion_utils_1.TypeConversionUtils.VIBE2FLEX_DIRECTION);
163
+ value = await map_utils_1.MapUtil.applyTransformMap(this.transformMapFile, this.mapFileUtil, value, mapKey, type_conversion_utils_1.TypeConversionUtils.VIBE2FLEX_DIRECTION);
170
164
  }
171
165
  }
172
166
  else {
@@ -153,6 +153,8 @@ exports.mapping = {
153
153
  }
154
154
  },
155
155
  catName: {
156
+ getIdentifierProperties: () => ['catName', 'catNumber'],
157
+ getInformationalProperties: () => ['longName'],
156
158
  vibe2flex: {
157
159
  transformOrder: [],
158
160
  getSoftType: () => 'Revisable Entity\\catName',
@@ -1,4 +1,6 @@
1
+ import { MapFileUtil } from '@contrail/transform-data';
1
2
  export declare class MapUtil {
2
3
  static applyTransformMap(transformMapFile: any, mapFileUtil: any, data: any, type: string, direction: string): Promise<any>;
3
- static getMapKey(transformMapFile: any, mapFileUtil: any, data: any, type: string, direction: string): Promise<string>;
4
+ static getMapKey(transformMapFile: any, mapFileUtil: MapFileUtil, data: any, type: string, direction: string): Promise<string>;
5
+ static getFullMapSection(transformMapFile: string, mapFileUtil: MapFileUtil, mapKey: string): Promise<any>;
4
6
  }
@@ -24,5 +24,15 @@ class MapUtil {
24
24
  }
25
25
  return undefined;
26
26
  }
27
+ static async getFullMapSection(transformMapFile, mapFileUtil, mapKey) {
28
+ if (mapKey) {
29
+ const mapFile = await mapFileUtil.getMapFile(transformMapFile);
30
+ if (mapFile) {
31
+ const mapSection = mapFile[mapKey];
32
+ return mapSection;
33
+ }
34
+ }
35
+ return undefined;
36
+ }
27
37
  }
28
38
  exports.MapUtil = MapUtil;
@@ -153,12 +153,12 @@ exports.mapping = {
153
153
  }
154
154
  },
155
155
  catName: {
156
+ getIdentifierProperties: () => ['catName', 'catNumber'],
157
+ getInformationalProperties: () => ['longName'],
156
158
  vibe2flex: {
157
159
  transformOrder: [],
158
- getSoftType: () => 'Revisable Entity\\catName',
159
- getClass: () => 'LCSLast',
160
- getIdentifierProperties: () => ['catName', 'catNumber'],
161
- getInformationalProperties: () => ['longName']
160
+ getSoftType: () => 'Last\\catName',
161
+ getClass: () => 'LCSLast'
162
162
  },
163
163
  flex2vibe: {
164
164
  transformOrder: [],
@@ -1,3 +1,4 @@
1
+ import { MapFileUtil } from '@contrail/transform-data';
1
2
  export declare class TypeConversionUtils {
2
3
  static NO_ENTITY_TYPE: string;
3
4
  static VIBE2FLEX_DIRECTION: string;
@@ -6,5 +7,6 @@ export declare class TypeConversionUtils {
6
7
  static getObjectTypePath(transformMapFile: any, mapFileUtil: any, entity: any): Promise<string>;
7
8
  static getIdentifierProperties(transformMapFile: any, mapFileUtil: any, entity: any): Promise<string[]>;
8
9
  static getInformationalProperties(transformMapFile: any, mapFileUtil: any, entity: any): Promise<string[]>;
10
+ static getMapKey(transformMapFile: any, mapFileUtil: MapFileUtil, entity: any, direction: string): Promise<string>;
9
11
  static getEntityType(entity: any): any;
10
12
  }
@@ -12,8 +12,7 @@ class TypeConversionUtils {
12
12
  return objectClass;
13
13
  }
14
14
  if (transformMapFile) {
15
- const type = this.getEntityType(entity);
16
- const mapKey = await map_utils_1.MapUtil.getMapKey(transformMapFile, mapFileUtil, entity, type, TypeConversionUtils.VIBE2FLEX_DIRECTION);
15
+ const mapKey = await this.getMapKey(transformMapFile, mapFileUtil, entity, TypeConversionUtils.VIBE2FLEX_DIRECTION);
17
16
  const mapData = await mapFileUtil.getMappingSection(transformMapFile, mapKey, TypeConversionUtils.VIBE2FLEX_DIRECTION);
18
17
  if (mapData['getClass']) {
19
18
  objectClass = await mapData['getClass'](entity);
@@ -30,8 +29,7 @@ class TypeConversionUtils {
30
29
  return typePath;
31
30
  }
32
31
  if (transformMapFile) {
33
- const type = this.getEntityType(entity);
34
- const mapKey = await map_utils_1.MapUtil.getMapKey(transformMapFile, mapFileUtil, entity, type, TypeConversionUtils.VIBE2FLEX_DIRECTION);
32
+ const mapKey = await this.getMapKey(transformMapFile, mapFileUtil, entity, TypeConversionUtils.VIBE2FLEX_DIRECTION);
35
33
  const mapData = await mapFileUtil.getMappingSection(transformMapFile, mapKey, TypeConversionUtils.VIBE2FLEX_DIRECTION);
36
34
  if (mapData['getSoftType']) {
37
35
  typePath = await mapData['getSoftType'](entity);
@@ -48,10 +46,9 @@ class TypeConversionUtils {
48
46
  return identifiers;
49
47
  }
50
48
  if (transformMapFile) {
51
- const type = this.getEntityType(entity);
52
- const mapKey = await map_utils_1.MapUtil.getMapKey(transformMapFile, mapFileUtil, entity, type, TypeConversionUtils.VIBE2FLEX_DIRECTION);
53
- const mapData = await mapFileUtil.getMappingSection(transformMapFile, mapKey, TypeConversionUtils.VIBE2FLEX_DIRECTION);
54
- if (mapData['getIdentifierProperties']) {
49
+ const mapKey = await this.getMapKey(transformMapFile, mapFileUtil, entity, TypeConversionUtils.VIBE2FLEX_DIRECTION);
50
+ const mapData = await map_utils_1.MapUtil.getFullMapSection(transformMapFile, mapFileUtil, mapKey);
51
+ if (mapData && mapData['getIdentifierProperties']) {
55
52
  identifiers = await mapData['getIdentifierProperties'](entity);
56
53
  }
57
54
  }
@@ -66,10 +63,9 @@ class TypeConversionUtils {
66
63
  return identifiers;
67
64
  }
68
65
  if (transformMapFile) {
69
- const type = this.getEntityType(entity);
70
- const mapKey = await map_utils_1.MapUtil.getMapKey(transformMapFile, mapFileUtil, entity, type, TypeConversionUtils.VIBE2FLEX_DIRECTION);
71
- const mapData = await mapFileUtil.getMappingSection(transformMapFile, mapKey, TypeConversionUtils.VIBE2FLEX_DIRECTION);
72
- if (mapData['getInformationalProperties']) {
66
+ const mapKey = await this.getMapKey(transformMapFile, mapFileUtil, entity, TypeConversionUtils.VIBE2FLEX_DIRECTION);
67
+ const mapData = await map_utils_1.MapUtil.getFullMapSection(transformMapFile, mapFileUtil, mapKey);
68
+ if (mapData && mapData['getInformationalProperties']) {
73
69
  identifiers = await mapData['getInformationalProperties'](entity);
74
70
  }
75
71
  }
@@ -78,6 +74,17 @@ class TypeConversionUtils {
78
74
  }
79
75
  return type_defaults_1.TypeDefaults.getDefaultInformationalProperties(entity);
80
76
  }
77
+ static async getMapKey(transformMapFile, mapFileUtil, entity, direction) {
78
+ if (transformMapFile) {
79
+ const type = this.getEntityType(entity);
80
+ const mappingData = await mapFileUtil.getMappingSection(transformMapFile, 'typeConversion', direction);
81
+ if (mappingData && mappingData[type] && mappingData[type]['getMapKey']) {
82
+ const mapKey = await mappingData[type]['getMapKey'](entity);
83
+ return mapKey;
84
+ }
85
+ }
86
+ return type_defaults_1.TypeDefaults.getDefaultObjectClass(entity);
87
+ }
81
88
  static getEntityType(entity) {
82
89
  let entityType = entity['entityType'];
83
90
  if (!entityType) {
@@ -33,7 +33,12 @@ class TypeDefaults {
33
33
  objectClass = 'LCSSeason';
34
34
  }
35
35
  else if ('assortment' === entityType) {
36
- objectClass = 'SeasonGroup';
36
+ if ('LCSSeason' === entity.flex2vibeMapKeyRoot || entity.publishToFlexPLM) {
37
+ objectClass = 'LCSSeason';
38
+ }
39
+ else {
40
+ objectClass = 'SeasonGroup';
41
+ }
37
42
  }
38
43
  return objectClass;
39
44
  }
@@ -51,12 +56,17 @@ class TypeDefaults {
51
56
  case 'custom-entity':
52
57
  typePath = 'Revisable Entity';
53
58
  break;
54
- case 'assortment':
55
- typePath = 'Season Group';
56
- break;
57
59
  case 'project':
58
60
  typePath = 'Season';
59
61
  break;
62
+ case 'assortment':
63
+ if ('LCSSeason' === entity.flex2vibeMapKeyRoot || entity.publishToFlexPLM) {
64
+ typePath = 'Season';
65
+ }
66
+ else {
67
+ typePath = 'Season Group';
68
+ }
69
+ break;
60
70
  }
61
71
  return typePath;
62
72
  }
@@ -71,7 +81,12 @@ class TypeDefaults {
71
81
  identifierProps.push('flexPLMSeasonName');
72
82
  break;
73
83
  case 'assortment':
74
- identifierProps.push('seasonGroupName');
84
+ if ('LCSSeason' === entity.flex2vibeMapKeyRoot || entity.publishToFlexPLM) {
85
+ identifierProps.push('flexPLMSeasonName');
86
+ }
87
+ else {
88
+ identifierProps.push('seasonGroupName');
89
+ }
75
90
  break;
76
91
  case 'color':
77
92
  case 'custom-entity':
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@contrail/flexplm",
3
- "version": "1.0.19",
3
+ "version": "1.1.3",
4
4
  "description": "Library used for integration with flexplm.",
5
5
  "main": "lib/index.js",
6
6
  "types": "lib/index.d.ts",
@@ -40,7 +40,7 @@
40
40
  "dependencies": {
41
41
  "@contrail/app-framework": "^1.2.0",
42
42
  "@contrail/sdk": "^1.2.11",
43
- "@contrail/transform-data": "^1.0.10",
43
+ "@contrail/transform-data": "^1.0.13",
44
44
  "axios": "^1.4.0",
45
45
  "p-limit": "^3.1.0"
46
46
  }