@cumulus/message 13.3.3-alpha.1 → 14.0.0

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.
package/Granules.d.ts CHANGED
@@ -101,12 +101,11 @@ export declare const getGranuleCmrTemporalInfo: ({ granule, cmrTemporalInfo, cmr
101
101
  *
102
102
  * @alias module:Granules
103
103
  */
104
- export declare const generateGranuleApiRecord: ({ granule, executionUrl, collectionId, provider, workflowStartTime, error, pdrName, status, queryFields, updatedAt, files, processingTimeInfo, cmrUtils, timestamp, duration, productVolume, timeToPreprocess, timeToArchive, cmrTemporalInfo, }: {
104
+ export declare const generateGranuleApiRecord: ({ granule, executionUrl, collectionId, provider, error, pdrName, status, queryFields, updatedAt, files, processingTimeInfo, cmrUtils, timestamp, duration, productVolume, timeToPreprocess, timeToArchive, cmrTemporalInfo, }: {
105
105
  granule: MessageGranule;
106
106
  executionUrl?: string | undefined;
107
107
  collectionId: string;
108
108
  provider?: string | undefined;
109
- workflowStartTime: number;
110
109
  error?: Object | undefined;
111
110
  pdrName?: string | undefined;
112
111
  status: GranuleStatus;
package/Granules.d.ts.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"Granules.d.ts","sourceRoot":"","sources":["src/Granules.ts"],"names":[],"mappings":"AAgBA,OAAO,EAAE,OAAO,EAAE,MAAM,gBAAgB,CAAC;AACzC,OAAO,EAAE,wBAAwB,EAAE,MAAM,+BAA+B,CAAC;AACzE,OAAO,EACL,UAAU,EACV,aAAa,EACb,mBAAmB,EACnB,cAAc,EACf,MAAM,6BAA6B,CAAC;AACrC,OAAO,EAAE,OAAO,EAAE,MAAM,0BAA0B,CAAC;AAEnD,OAAO,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;AAExC,UAAU,0BAA2B,SAAQ,OAAO,CAAC,IAAI;IACvD,OAAO,CAAC,EAAE;QACR,WAAW,CAAC,EAAE,OAAO,CAAA;KACtB,CAAA;CACF;AAED,UAAU,mBAAoB,SAAQ,OAAO,CAAC,cAAc;IAC1D,IAAI,EAAE,0BAA0B,CAAC;IACjC,OAAO,EAAE;QACP,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAA;KACpB,CAAA;CACF;AAED;;;;;;;;GAQG;AACH,eAAO,MAAM,kBAAkB,YACpB,mBAAmB,KAC3B,OAAO,EAAqC,CAAC;AAEhD;;;;;;;GAOG;AACH,eAAO,MAAM,kBAAkB,YACpB,mBAAmB,KAC3B,OAAmD,CAAC;AAEvD;;;;;;;;GAQG;AACH,eAAO,MAAM,gBAAgB,mBACX,QAAQ,cAAc,WAC7B,cAAc,KACtB,QAAQ,cAAc,GAAG,aAAiD,CAAC;AAE9E;;;;;;;GAOG;AACH,eAAO,MAAM,qBAAqB,YACvB,mBAAmB,YACS,CAAC;AAExC;;;;;;;GAOG;AACH,eAAO,MAAM,uBAAuB,kBAAkB,OAAO,EAAE,KAAQ,MAMtE,CAAC;AAEF,eAAO,MAAM,0BAA0B;;YAEA,CAAC;AAExC,eAAO,MAAM,uBAAuB;;YAEE,CAAC;AAiBvC;;;;;;;GAOG;AACH,eAAO,MAAM,4BAA4B,wBAClB,wBAAwB,KAC5C,wBAAwB,GAAG,EAQ7B,CAAC;AAWF;;;;;;;;;;;GAWG;AACH,eAAO,MAAM,yBAAyB;aAK3B,cAAc;;cAEb,aAAa;MACrB,QAAQ,mBAAmB,GAAG,EAAE,CAUnC,CAAC;AAEF;;;;;;;GAOG;AACH,eAAO,MAAM,wBAAwB;aAqB1B,cAAc;;kBAET,MAAM;;uBAED,MAAM;;;YAGjB,aAAa;;eAEV,MAAM;;;eAGN,MAAM;cACP,aAAa;;cAEb,MAAM;mBACD,MAAM;sBACH,MAAM;mBACT,MAAM;MACnB,QAAQ,UAAU,CAwDrB,CAAC"}
1
+ {"version":3,"file":"Granules.d.ts","sourceRoot":"","sources":["src/Granules.ts"],"names":[],"mappings":"AAgBA,OAAO,EAAE,OAAO,EAAE,MAAM,gBAAgB,CAAC;AACzC,OAAO,EAAE,wBAAwB,EAAE,MAAM,+BAA+B,CAAC;AACzE,OAAO,EACL,UAAU,EACV,aAAa,EACb,mBAAmB,EACnB,cAAc,EACf,MAAM,6BAA6B,CAAC;AACrC,OAAO,EAAE,OAAO,EAAE,MAAM,0BAA0B,CAAC;AAEnD,OAAO,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;AAExC,UAAU,0BAA2B,SAAQ,OAAO,CAAC,IAAI;IACvD,OAAO,CAAC,EAAE;QACR,WAAW,CAAC,EAAE,OAAO,CAAA;KACtB,CAAA;CACF;AAED,UAAU,mBAAoB,SAAQ,OAAO,CAAC,cAAc;IAC1D,IAAI,EAAE,0BAA0B,CAAC;IACjC,OAAO,EAAE;QACP,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAA;KACpB,CAAA;CACF;AAED;;;;;;;;GAQG;AACH,eAAO,MAAM,kBAAkB,YACpB,mBAAmB,KAC3B,OAAO,EAAqC,CAAC;AAEhD;;;;;;;GAOG;AACH,eAAO,MAAM,kBAAkB,YACpB,mBAAmB,KAC3B,OAAmD,CAAC;AAEvD;;;;;;;;GAQG;AACH,eAAO,MAAM,gBAAgB,mBACX,QAAQ,cAAc,WAC7B,cAAc,KACtB,QAAQ,cAAc,GAAG,aAAiD,CAAC;AAE9E;;;;;;;GAOG;AACH,eAAO,MAAM,qBAAqB,YACvB,mBAAmB,YACS,CAAC;AAExC;;;;;;;GAOG;AACH,eAAO,MAAM,uBAAuB,kBAAkB,OAAO,EAAE,KAAQ,MAMtE,CAAC;AAEF,eAAO,MAAM,0BAA0B;;YAEA,CAAC;AAExC,eAAO,MAAM,uBAAuB;;YAEE,CAAC;AA6BvC;;;;;;;GAOG;AACH,eAAO,MAAM,4BAA4B,wBAClB,wBAAwB,KAC5C,wBAAwB,GAAG,EAQ7B,CAAC;AAWF;;;;;;;;;;;GAWG;AACH,eAAO,MAAM,yBAAyB;aAK3B,cAAc;;cAEb,aAAa;MACrB,QAAQ,mBAAmB,GAAG,EAAE,CAUnC,CAAC;AAEF;;;;;;;GAOG;AACH,eAAO,MAAM,wBAAwB;aAoB1B,cAAc;;kBAET,MAAM;;;;YAIZ,aAAa;;eAEV,MAAM;;;eAGN,MAAM;cACP,aAAa;;cAEb,MAAM;mBACD,MAAM;sBACH,MAAM;mBACT,MAAM;MACnB,QAAQ,UAAU,CAyDrB,CAAC"}
package/Granules.js CHANGED
@@ -12,7 +12,7 @@ exports.generateGranuleApiRecord = exports.getGranuleCmrTemporalInfo = exports.g
12
12
  * const Granules = require('@cumulus/message/Granules');
13
13
  */
14
14
  const isInteger_1 = __importDefault(require("lodash/isInteger"));
15
- const isNil_1 = __importDefault(require("lodash/isNil"));
15
+ const isUndefined_1 = __importDefault(require("lodash/isUndefined"));
16
16
  const mapValues_1 = __importDefault(require("lodash/mapValues"));
17
17
  const omitBy_1 = __importDefault(require("lodash/omitBy"));
18
18
  const errors_1 = require("@cumulus/errors");
@@ -90,6 +90,18 @@ function isProcessingTimeInfo(info = {}) {
90
90
  return (info === null || info === void 0 ? void 0 : info.processingStartDateTime) !== undefined
91
91
  && (info === null || info === void 0 ? void 0 : info.processingEndDateTime) !== undefined;
92
92
  }
93
+ /**
94
+ * ** Private **
95
+ * Convert date string to standard ISO format, retaining null values if they exist
96
+ *
97
+ * @param {string} date - Date string, possibly in multiple formats
98
+ * @returns {string} Standardized ISO date string
99
+ */
100
+ const convertDateToISOStringPreservingNull = (date) => {
101
+ if (date === null)
102
+ return null;
103
+ return convertDateToISOString(date);
104
+ };
93
105
  /**
94
106
  * Convert granule processing timestamps to a standardized ISO string
95
107
  * format for compatibility across database systems.
@@ -102,7 +114,7 @@ const getGranuleProcessingTimeInfo = (processingTimeInfo) => {
102
114
  const updatedProcessingTimeInfo = isProcessingTimeInfo(processingTimeInfo)
103
115
  ? { ...processingTimeInfo }
104
116
  : {};
105
- return (0, mapValues_1.default)(updatedProcessingTimeInfo, convertDateToISOString);
117
+ return (0, mapValues_1.default)(updatedProcessingTimeInfo, convertDateToISOStringPreservingNull);
106
118
  };
107
119
  exports.getGranuleProcessingTimeInfo = getGranuleProcessingTimeInfo;
108
120
  function isGranuleTemporalInfo(info = {}) {
@@ -129,7 +141,7 @@ const getGranuleCmrTemporalInfo = async ({ granule, cmrTemporalInfo, cmrUtils, }
129
141
  const temporalInfo = isGranuleTemporalInfo(cmrTemporalInfo)
130
142
  ? { ...cmrTemporalInfo }
131
143
  : await cmrUtils.getGranuleTemporalInfo(granule);
132
- return (0, mapValues_1.default)(temporalInfo, convertDateToISOString);
144
+ return (0, mapValues_1.default)(temporalInfo, convertDateToISOStringPreservingNull);
133
145
  };
134
146
  exports.getGranuleCmrTemporalInfo = getGranuleCmrTemporalInfo;
135
147
  /**
@@ -140,18 +152,20 @@ exports.getGranuleCmrTemporalInfo = getGranuleCmrTemporalInfo;
140
152
  *
141
153
  * @alias module:Granules
142
154
  */
143
- const generateGranuleApiRecord = async ({ granule, executionUrl, collectionId, provider, workflowStartTime, error, pdrName, status, queryFields, updatedAt, files, processingTimeInfo, cmrUtils, timestamp, duration, productVolume, timeToPreprocess, timeToArchive, cmrTemporalInfo, }) => {
155
+ const generateGranuleApiRecord = async ({ granule, executionUrl, collectionId, provider, error, pdrName, status, queryFields, updatedAt, files, processingTimeInfo, cmrUtils, timestamp, duration, productVolume, timeToPreprocess, timeToArchive, cmrTemporalInfo, }) => {
144
156
  if (!granule.granuleId)
145
157
  throw new errors_1.CumulusMessageError(`Could not create granule record, invalid granuleId: ${granule.granuleId}`);
146
158
  if (!collectionId) {
147
159
  throw new errors_1.CumulusMessageError('collectionId required to generate a granule record');
148
160
  }
149
- // FUTURE: null files are currently not supported in update payloads
150
- // RDS Phase 3 should revise logic to accept an explict null value
161
+ // null should not be supported in generated API records
151
162
  if (files === null) {
152
163
  throw new errors_1.CumulusMessageError('granule.files must not be null');
153
164
  }
154
- const { granuleId, cmrLink, published = false, createdAt, } = granule;
165
+ if (error === null) {
166
+ throw new errors_1.CumulusMessageError('granule.error must not be null');
167
+ }
168
+ const { granuleId, cmrLink, published, createdAt, } = granule;
155
169
  const now = Date.now();
156
170
  const recordUpdatedAt = updatedAt !== null && updatedAt !== void 0 ? updatedAt : now;
157
171
  const recordTimestamp = timestamp !== null && timestamp !== void 0 ? timestamp : now;
@@ -173,7 +187,7 @@ const generateGranuleApiRecord = async ({ granule, executionUrl, collectionId, p
173
187
  files,
174
188
  error,
175
189
  published,
176
- createdAt: createdAt || workflowStartTime,
190
+ createdAt,
177
191
  timestamp: recordTimestamp,
178
192
  updatedAt: recordUpdatedAt,
179
193
  duration,
@@ -184,7 +198,7 @@ const generateGranuleApiRecord = async ({ granule, executionUrl, collectionId, p
184
198
  ...temporalInfo,
185
199
  queryFields,
186
200
  };
187
- return (0, omitBy_1.default)(record, isNil_1.default);
201
+ return (0, omitBy_1.default)(record, isUndefined_1.default);
188
202
  };
189
203
  exports.generateGranuleApiRecord = generateGranuleApiRecord;
190
204
  //# sourceMappingURL=Granules.js.map
package/Granules.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"Granules.js","sourceRoot":"","sources":["src/Granules.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"Granules.js","sourceRoot":"","sources":["src/Granules.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@cumulus/message",
3
- "version": "13.3.3-alpha.1",
3
+ "version": "14.0.0",
4
4
  "description": "Utilities for building and parsing Cumulus messages",
5
5
  "keywords": [
6
6
  "GIBS",
@@ -38,11 +38,11 @@
38
38
  "author": "Cumulus Authors",
39
39
  "license": "Apache-2.0",
40
40
  "dependencies": {
41
- "@cumulus/aws-client": "13.3.3-alpha.1",
42
- "@cumulus/common": "13.3.3-alpha.1",
43
- "@cumulus/errors": "13.3.3-alpha.1",
44
- "@cumulus/logger": "13.3.3-alpha.1",
45
- "@cumulus/types": "13.3.3-alpha.1",
41
+ "@cumulus/aws-client": "14.0.0",
42
+ "@cumulus/common": "14.0.0",
43
+ "@cumulus/errors": "14.0.0",
44
+ "@cumulus/logger": "14.0.0",
45
+ "@cumulus/types": "14.0.0",
46
46
  "jsonpath-plus": "^3.0.0",
47
47
  "lodash": "^4.17.21",
48
48
  "uuid": "^8.2.0"
@@ -50,5 +50,5 @@
50
50
  "devDependencies": {
51
51
  "@types/uuid": "^8.0.0"
52
52
  },
53
- "gitHead": "090ed401e9e31ba52c070e4a5ab5125aedf90396"
53
+ "gitHead": "bc0cd0857e007b64e4e8809f7de16a4aeb1e6840"
54
54
  }
package/src/Granules.ts CHANGED
@@ -9,7 +9,7 @@
9
9
  */
10
10
 
11
11
  import isInteger from 'lodash/isInteger';
12
- import isNil from 'lodash/isNil';
12
+ import isUndefined from 'lodash/isUndefined';
13
13
  import mapValues from 'lodash/mapValues';
14
14
  import omitBy from 'lodash/omitBy';
15
15
 
@@ -129,6 +129,18 @@ function isProcessingTimeInfo(
129
129
  && (info as ExecutionProcessingTimes)?.processingEndDateTime !== undefined;
130
130
  }
131
131
 
132
+ /**
133
+ * ** Private **
134
+ * Convert date string to standard ISO format, retaining null values if they exist
135
+ *
136
+ * @param {string} date - Date string, possibly in multiple formats
137
+ * @returns {string} Standardized ISO date string
138
+ */
139
+ const convertDateToISOStringPreservingNull = (date: string | null) => {
140
+ if (date === null) return null;
141
+ return convertDateToISOString(date);
142
+ };
143
+
132
144
  /**
133
145
  * Convert granule processing timestamps to a standardized ISO string
134
146
  * format for compatibility across database systems.
@@ -145,7 +157,7 @@ export const getGranuleProcessingTimeInfo = (
145
157
  : {};
146
158
  return mapValues(
147
159
  updatedProcessingTimeInfo,
148
- convertDateToISOString
160
+ convertDateToISOStringPreservingNull
149
161
  );
150
162
  };
151
163
 
@@ -186,7 +198,7 @@ export const getGranuleCmrTemporalInfo = async ({
186
198
  : await cmrUtils.getGranuleTemporalInfo(granule);
187
199
  return mapValues(
188
200
  temporalInfo,
189
- convertDateToISOString
201
+ convertDateToISOStringPreservingNull
190
202
  );
191
203
  };
192
204
 
@@ -203,7 +215,6 @@ export const generateGranuleApiRecord = async ({
203
215
  executionUrl,
204
216
  collectionId,
205
217
  provider,
206
- workflowStartTime,
207
218
  error,
208
219
  pdrName,
209
220
  status,
@@ -223,7 +234,6 @@ export const generateGranuleApiRecord = async ({
223
234
  executionUrl?: string,
224
235
  collectionId: string,
225
236
  provider?: string,
226
- workflowStartTime: number,
227
237
  error?: Object,
228
238
  pdrName?: string,
229
239
  status: GranuleStatus,
@@ -240,21 +250,22 @@ export const generateGranuleApiRecord = async ({
240
250
  timeToArchive: number,
241
251
  }): Promise<ApiGranule> => {
242
252
  if (!granule.granuleId) throw new CumulusMessageError(`Could not create granule record, invalid granuleId: ${granule.granuleId}`);
243
-
244
253
  if (!collectionId) {
245
254
  throw new CumulusMessageError('collectionId required to generate a granule record');
246
255
  }
247
256
 
248
- // FUTURE: null files are currently not supported in update payloads
249
- // RDS Phase 3 should revise logic to accept an explict null value
257
+ // null should not be supported in generated API records
250
258
  if (files === null) {
251
259
  throw new CumulusMessageError('granule.files must not be null');
252
260
  }
261
+ if (error === null) {
262
+ throw new CumulusMessageError('granule.error must not be null');
263
+ }
253
264
 
254
265
  const {
255
266
  granuleId,
256
267
  cmrLink,
257
- published = false,
268
+ published,
258
269
  createdAt,
259
270
  } = granule;
260
271
 
@@ -281,7 +292,7 @@ export const generateGranuleApiRecord = async ({
281
292
  files,
282
293
  error,
283
294
  published,
284
- createdAt: createdAt || workflowStartTime,
295
+ createdAt,
285
296
  timestamp: recordTimestamp,
286
297
  updatedAt: recordUpdatedAt,
287
298
  duration,
@@ -293,5 +304,5 @@ export const generateGranuleApiRecord = async ({
293
304
  queryFields,
294
305
  };
295
306
 
296
- return <ApiGranule>omitBy(record, isNil);
307
+ return <ApiGranule>omitBy(record, isUndefined);
297
308
  };