@shushed/helpers 0.0.202 → 0.0.203-bug-erp-770-20251208112219
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/dist/index.d.ts +34970 -0
- package/dist/index.js +113321 -0
- package/dist/package.json +3 -6
- package/package.json +4 -7
- package/dist/cjs/contracts/asset.schema.json +0 -78
- package/dist/cjs/contracts/category.schema.json +0 -86
- package/dist/cjs/contracts/country.schema.json +0 -258
- package/dist/cjs/contracts/currency.schema.json +0 -177
- package/dist/cjs/contracts/customer-segment.schema.json +0 -32
- package/dist/cjs/contracts/development-colour.schema.json +0 -97
- package/dist/cjs/contracts/index.js +0 -48
- package/dist/cjs/contracts/marketing-preferences.schema.json +0 -41
- package/dist/cjs/contracts/messages/ean-change.schema.json +0 -22
- package/dist/cjs/contracts/messages/index.js +0 -29
- package/dist/cjs/contracts/messages/order/delivered.schema.json +0 -26
- package/dist/cjs/contracts/messages/order/index.js +0 -18
- package/dist/cjs/contracts/messages/order/new.schema.json +0 -32
- package/dist/cjs/contracts/messages/order/processed.schema.json +0 -15
- package/dist/cjs/contracts/messages/order/return-initiated.schema.json +0 -26
- package/dist/cjs/contracts/messages/order/returned.schema.json +0 -25
- package/dist/cjs/contracts/messages/order/shipped.schema.json +0 -26
- package/dist/cjs/contracts/messages/product-category.schema.json +0 -21
- package/dist/cjs/contracts/messages/product-draft.schema.json +0 -66
- package/dist/cjs/contracts/messages/product.schema.json +0 -29
- package/dist/cjs/contracts/money.schema.json +0 -54
- package/dist/cjs/contracts/order/address.schema.json +0 -127
- package/dist/cjs/contracts/order/customer.schema.json +0 -149
- package/dist/cjs/contracts/order/index.js +0 -31
- package/dist/cjs/contracts/order/item.schema.json +0 -98
- package/dist/cjs/contracts/order/payment.schema.json +0 -115
- package/dist/cjs/contracts/order/shipment/index.js +0 -29
- package/dist/cjs/contracts/order/shipment/item/index.js +0 -8
- package/dist/cjs/contracts/order/shipment/item/returned.schema.json +0 -30
- package/dist/cjs/contracts/order/shipment/item.schema.json +0 -22
- package/dist/cjs/contracts/order/shipment/pos/index.js +0 -10
- package/dist/cjs/contracts/order/shipment/pos/outbound.schema.json +0 -37
- package/dist/cjs/contracts/order/shipment/pos/return.schema.json +0 -31
- package/dist/cjs/contracts/order/shipment/pos.schema.json +0 -48
- package/dist/cjs/contracts/order/shipment/shipped/index.js +0 -10
- package/dist/cjs/contracts/order/shipment/shipped/outbound.schema.json +0 -34
- package/dist/cjs/contracts/order/shipment/shipped/return.schema.json +0 -43
- package/dist/cjs/contracts/order/shipment/shipped.schema.json +0 -52
- package/dist/cjs/contracts/order/shipment.schema.json +0 -58
- package/dist/cjs/contracts/order.schema.json +0 -231
- package/dist/cjs/contracts/product-category.schema.json +0 -34
- package/dist/cjs/contracts/product-draft.schema.json +0 -782
- package/dist/cjs/contracts/product.schema.json +0 -816
- package/dist/cjs/contracts/total.schema.json +0 -41
- package/dist/cjs/dist-dereferenced/asset.js +0 -4
- package/dist/cjs/dist-dereferenced/category.js +0 -4
- package/dist/cjs/dist-dereferenced/country.js +0 -4
- package/dist/cjs/dist-dereferenced/currency.js +0 -4
- package/dist/cjs/dist-dereferenced/customer-segment.js +0 -4
- package/dist/cjs/dist-dereferenced/development-colour.js +0 -4
- package/dist/cjs/dist-dereferenced/index.js +0 -69
- package/dist/cjs/dist-dereferenced/marketing-preferences.js +0 -4
- package/dist/cjs/dist-dereferenced/messages/ean-change.js +0 -4
- package/dist/cjs/dist-dereferenced/messages/index.js +0 -50
- package/dist/cjs/dist-dereferenced/messages/order/delivered.js +0 -4
- package/dist/cjs/dist-dereferenced/messages/order/index.js +0 -18
- package/dist/cjs/dist-dereferenced/messages/order/new.js +0 -4
- package/dist/cjs/dist-dereferenced/messages/order/processed.js +0 -4
- package/dist/cjs/dist-dereferenced/messages/order/return-initiated.js +0 -4
- package/dist/cjs/dist-dereferenced/messages/order/returned.js +0 -4
- package/dist/cjs/dist-dereferenced/messages/order/shipped.js +0 -4
- package/dist/cjs/dist-dereferenced/messages/price-change.js +0 -4
- package/dist/cjs/dist-dereferenced/messages/product-category.js +0 -4
- package/dist/cjs/dist-dereferenced/messages/product-draft.js +0 -4
- package/dist/cjs/dist-dereferenced/messages/product.js +0 -4
- package/dist/cjs/dist-dereferenced/money.js +0 -4
- package/dist/cjs/dist-dereferenced/order/address.js +0 -4
- package/dist/cjs/dist-dereferenced/order/customer.js +0 -4
- package/dist/cjs/dist-dereferenced/order/index.js +0 -51
- package/dist/cjs/dist-dereferenced/order/item.js +0 -4
- package/dist/cjs/dist-dereferenced/order/orderMain.js +0 -4
- package/dist/cjs/dist-dereferenced/order/payment.js +0 -4
- package/dist/cjs/dist-dereferenced/order/shipment/index.js +0 -45
- package/dist/cjs/dist-dereferenced/order/shipment/item/index.js +0 -11
- package/dist/cjs/dist-dereferenced/order/shipment/item/itemMain.js +0 -4
- package/dist/cjs/dist-dereferenced/order/shipment/item/returned.js +0 -4
- package/dist/cjs/dist-dereferenced/order/shipment/pos/index.js +0 -13
- package/dist/cjs/dist-dereferenced/order/shipment/pos/outbound.js +0 -4
- package/dist/cjs/dist-dereferenced/order/shipment/pos/posMain.js +0 -4
- package/dist/cjs/dist-dereferenced/order/shipment/pos/return.js +0 -4
- package/dist/cjs/dist-dereferenced/order/shipment/shipmentMain.js +0 -4
- package/dist/cjs/dist-dereferenced/order/shipment/shipped/index.js +0 -13
- package/dist/cjs/dist-dereferenced/order/shipment/shipped/outbound.js +0 -4
- package/dist/cjs/dist-dereferenced/order/shipment/shipped/return.js +0 -4
- package/dist/cjs/dist-dereferenced/order/shipment/shipped/shippedMain.js +0 -4
- package/dist/cjs/dist-dereferenced/price.js +0 -4
- package/dist/cjs/dist-dereferenced/product-category.js +0 -4
- package/dist/cjs/dist-dereferenced/product-draft.js +0 -4
- package/dist/cjs/dist-dereferenced/product.js +0 -4
- package/dist/cjs/dist-dereferenced/stock.js +0 -4
- package/dist/cjs/dist-dereferenced/total.js +0 -4
- package/dist/cjs/dist-types/asset.js +0 -2
- package/dist/cjs/dist-types/category.js +0 -2
- package/dist/cjs/dist-types/country.js +0 -2
- package/dist/cjs/dist-types/currency.js +0 -2
- package/dist/cjs/dist-types/customer-segment.js +0 -2
- package/dist/cjs/dist-types/development-colour.js +0 -2
- package/dist/cjs/dist-types/index.js +0 -38
- package/dist/cjs/dist-types/marketing-preferences.js +0 -2
- package/dist/cjs/dist-types/messages/ean-change.js +0 -2
- package/dist/cjs/dist-types/messages/index.js +0 -37
- package/dist/cjs/dist-types/messages/order/delivered.js +0 -2
- package/dist/cjs/dist-types/messages/order/index.js +0 -2
- package/dist/cjs/dist-types/messages/order/new.js +0 -2
- package/dist/cjs/dist-types/messages/order/processed.js +0 -2
- package/dist/cjs/dist-types/messages/order/return-initiated.js +0 -2
- package/dist/cjs/dist-types/messages/order/returned.js +0 -2
- package/dist/cjs/dist-types/messages/order/shipped.js +0 -2
- package/dist/cjs/dist-types/messages/price-change.js +0 -2
- package/dist/cjs/dist-types/messages/product-category.js +0 -2
- package/dist/cjs/dist-types/messages/product-draft.js +0 -2
- package/dist/cjs/dist-types/messages/product.js +0 -2
- package/dist/cjs/dist-types/money.js +0 -2
- package/dist/cjs/dist-types/order/address.js +0 -2
- package/dist/cjs/dist-types/order/customer.js +0 -2
- package/dist/cjs/dist-types/order/index.js +0 -37
- package/dist/cjs/dist-types/order/item.js +0 -2
- package/dist/cjs/dist-types/order/orderMain.js +0 -2
- package/dist/cjs/dist-types/order/payment.js +0 -2
- package/dist/cjs/dist-types/order/shipment/index.js +0 -39
- package/dist/cjs/dist-types/order/shipment/item/index.js +0 -2
- package/dist/cjs/dist-types/order/shipment/item/itemMain.js +0 -2
- package/dist/cjs/dist-types/order/shipment/item/returned.js +0 -2
- package/dist/cjs/dist-types/order/shipment/pos/index.js +0 -2
- package/dist/cjs/dist-types/order/shipment/pos/outbound.js +0 -2
- package/dist/cjs/dist-types/order/shipment/pos/posMain.js +0 -2
- package/dist/cjs/dist-types/order/shipment/pos/return.js +0 -2
- package/dist/cjs/dist-types/order/shipment/shipmentMain.js +0 -2
- package/dist/cjs/dist-types/order/shipment/shipped/index.js +0 -2
- package/dist/cjs/dist-types/order/shipment/shipped/outbound.js +0 -2
- package/dist/cjs/dist-types/order/shipment/shipped/return.js +0 -2
- package/dist/cjs/dist-types/order/shipment/shipped/shippedMain.js +0 -2
- package/dist/cjs/dist-types/price.js +0 -2
- package/dist/cjs/dist-types/product-category.js +0 -2
- package/dist/cjs/dist-types/product-draft.js +0 -2
- package/dist/cjs/dist-types/product.js +0 -2
- package/dist/cjs/dist-types/stock.js +0 -2
- package/dist/cjs/dist-types/total.js +0 -2
- package/dist/cjs/index.js +0 -39
- package/dist/cjs/src-public/airtable.js +0 -625
- package/dist/cjs/src-public/bcOrder.js +0 -943
- package/dist/cjs/src-public/bigquery.js +0 -59
- package/dist/cjs/src-public/centra.js +0 -1053
- package/dist/cjs/src-public/cloudtasks.js +0 -207
- package/dist/cjs/src-public/dato.js +0 -403
- package/dist/cjs/src-public/env.js +0 -900
- package/dist/cjs/src-public/getEventTime.js +0 -28
- package/dist/cjs/src-public/index.js +0 -54
- package/dist/cjs/src-public/ipValidation.js +0 -167
- package/dist/cjs/src-public/jwks.js +0 -108
- package/dist/cjs/src-public/pubsub.js +0 -423
- package/dist/cjs/src-public/rateLimit.js +0 -140
- package/dist/cjs/src-public/redisClient.js +0 -44
- package/dist/cjs/src-public/runtime.js +0 -145
- package/dist/cjs/src-public/sanitize.js +0 -25
- package/dist/cjs/src-public/scheduler.js +0 -247
- package/dist/cjs/src-public/secret.js +0 -16
- package/dist/cjs/src-public/setHeaders.js +0 -16
- package/dist/cjs/src-public/types.js +0 -2
- package/dist/cjs/src-public/utils.js +0 -457
- package/dist/cjs/src-public/validate.js +0 -74
- package/dist/types/contracts/index.d.ts +0 -15
- package/dist/types/contracts/messages/index.d.ts +0 -5
- package/dist/types/contracts/messages/order/index.d.ts +0 -6
- package/dist/types/contracts/order/index.d.ts +0 -6
- package/dist/types/contracts/order/shipment/index.d.ts +0 -6
- package/dist/types/contracts/order/shipment/item/index.d.ts +0 -1
- package/dist/types/contracts/order/shipment/pos/index.d.ts +0 -2
- package/dist/types/contracts/order/shipment/shipped/index.d.ts +0 -2
- package/dist/types/dist-dereferenced/asset.d.ts +0 -51
- package/dist/types/dist-dereferenced/category.d.ts +0 -58
- package/dist/types/dist-dereferenced/country.d.ts +0 -8
- package/dist/types/dist-dereferenced/currency.d.ts +0 -8
- package/dist/types/dist-dereferenced/customer-segment.d.ts +0 -26
- package/dist/types/dist-dereferenced/development-colour.d.ts +0 -114
- package/dist/types/dist-dereferenced/index.d.ts +0 -16
- package/dist/types/dist-dereferenced/marketing-preferences.d.ts +0 -31
- package/dist/types/dist-dereferenced/messages/ean-change.d.ts +0 -17
- package/dist/types/dist-dereferenced/messages/index.d.ts +0 -6
- package/dist/types/dist-dereferenced/messages/order/delivered.d.ts +0 -3438
- package/dist/types/dist-dereferenced/messages/order/index.d.ts +0 -6
- package/dist/types/dist-dereferenced/messages/order/new.d.ts +0 -3438
- package/dist/types/dist-dereferenced/messages/order/processed.d.ts +0 -3432
- package/dist/types/dist-dereferenced/messages/order/return-initiated.d.ts +0 -3438
- package/dist/types/dist-dereferenced/messages/order/returned.d.ts +0 -3437
- package/dist/types/dist-dereferenced/messages/order/shipped.d.ts +0 -3436
- package/dist/types/dist-dereferenced/messages/price-change.d.ts +0 -67
- package/dist/types/dist-dereferenced/messages/product-category.d.ts +0 -33
- package/dist/types/dist-dereferenced/messages/product-draft.d.ts +0 -589
- package/dist/types/dist-dereferenced/messages/product.d.ts +0 -628
- package/dist/types/dist-dereferenced/money.d.ts +0 -41
- package/dist/types/dist-dereferenced/order/address.d.ts +0 -98
- package/dist/types/dist-dereferenced/order/customer.d.ts +0 -312
- package/dist/types/dist-dereferenced/order/index.d.ts +0 -3428
- package/dist/types/dist-dereferenced/order/item.d.ts +0 -339
- package/dist/types/dist-dereferenced/order/orderMain.d.ts +0 -3423
- package/dist/types/dist-dereferenced/order/payment.d.ts +0 -110
- package/dist/types/dist-dereferenced/order/shipment/index.d.ts +0 -253
- package/dist/types/dist-dereferenced/order/shipment/item/index.d.ts +0 -19
- package/dist/types/dist-dereferenced/order/shipment/item/itemMain.d.ts +0 -18
- package/dist/types/dist-dereferenced/order/shipment/item/returned.d.ts +0 -34
- package/dist/types/dist-dereferenced/order/shipment/pos/index.d.ts +0 -282
- package/dist/types/dist-dereferenced/order/shipment/pos/outbound.d.ts +0 -319
- package/dist/types/dist-dereferenced/order/shipment/pos/posMain.d.ts +0 -280
- package/dist/types/dist-dereferenced/order/shipment/pos/return.d.ts +0 -330
- package/dist/types/dist-dereferenced/order/shipment/shipmentMain.d.ts +0 -250
- package/dist/types/dist-dereferenced/order/shipment/shipped/index.d.ts +0 -288
- package/dist/types/dist-dereferenced/order/shipment/shipped/outbound.d.ts +0 -286
- package/dist/types/dist-dereferenced/order/shipment/shipped/return.d.ts +0 -287
- package/dist/types/dist-dereferenced/order/shipment/shipped/shippedMain.d.ts +0 -286
- package/dist/types/dist-dereferenced/price.d.ts +0 -58
- package/dist/types/dist-dereferenced/product-category.d.ts +0 -24
- package/dist/types/dist-dereferenced/product-draft.d.ts +0 -580
- package/dist/types/dist-dereferenced/product.d.ts +0 -619
- package/dist/types/dist-dereferenced/stock.d.ts +0 -74
- package/dist/types/dist-dereferenced/total.d.ts +0 -172
- package/dist/types/dist-types/asset.d.ts +0 -16
- package/dist/types/dist-types/category.d.ts +0 -20
- package/dist/types/dist-types/country.d.ts +0 -2
- package/dist/types/dist-types/currency.d.ts +0 -2
- package/dist/types/dist-types/customer-segment.d.ts +0 -6
- package/dist/types/dist-types/development-colour.d.ts +0 -31
- package/dist/types/dist-types/index.d.ts +0 -16
- package/dist/types/dist-types/marketing-preferences.d.ts +0 -9
- package/dist/types/dist-types/messages/ean-change.d.ts +0 -5
- package/dist/types/dist-types/messages/index.d.ts +0 -6
- package/dist/types/dist-types/messages/order/delivered.d.ts +0 -300
- package/dist/types/dist-types/messages/order/index.d.ts +0 -6
- package/dist/types/dist-types/messages/order/new.d.ts +0 -300
- package/dist/types/dist-types/messages/order/processed.d.ts +0 -300
- package/dist/types/dist-types/messages/order/return-initiated.d.ts +0 -300
- package/dist/types/dist-types/messages/order/returned.d.ts +0 -301
- package/dist/types/dist-types/messages/order/shipped.d.ts +0 -301
- package/dist/types/dist-types/messages/price-change.d.ts +0 -16
- package/dist/types/dist-types/messages/product-category.d.ts +0 -7
- package/dist/types/dist-types/messages/product-draft.d.ts +0 -136
- package/dist/types/dist-types/messages/product.d.ts +0 -144
- package/dist/types/dist-types/money.d.ts +0 -11
- package/dist/types/dist-types/order/address.d.ts +0 -27
- package/dist/types/dist-types/order/customer.d.ts +0 -82
- package/dist/types/dist-types/order/index.d.ts +0 -8
- package/dist/types/dist-types/order/item.d.ts +0 -86
- package/dist/types/dist-types/order/orderMain.d.ts +0 -297
- package/dist/types/dist-types/order/payment.d.ts +0 -30
- package/dist/types/dist-types/order/shipment/index.d.ts +0 -6
- package/dist/types/dist-types/order/shipment/item/index.d.ts +0 -4
- package/dist/types/dist-types/order/shipment/item/itemMain.d.ts +0 -6
- package/dist/types/dist-types/order/shipment/item/returned.d.ts +0 -11
- package/dist/types/dist-types/order/shipment/pos/index.d.ts +0 -5
- package/dist/types/dist-types/order/shipment/pos/outbound.d.ts +0 -76
- package/dist/types/dist-types/order/shipment/pos/posMain.d.ts +0 -71
- package/dist/types/dist-types/order/shipment/pos/return.d.ts +0 -75
- package/dist/types/dist-types/order/shipment/shipmentMain.d.ts +0 -62
- package/dist/types/dist-types/order/shipment/shipped/index.d.ts +0 -5
- package/dist/types/dist-types/order/shipment/shipped/outbound.d.ts +0 -68
- package/dist/types/dist-types/order/shipment/shipped/return.d.ts +0 -68
- package/dist/types/dist-types/order/shipment/shipped/shippedMain.d.ts +0 -69
- package/dist/types/dist-types/price.d.ts +0 -15
- package/dist/types/dist-types/product-category.d.ts +0 -6
- package/dist/types/dist-types/product-draft.d.ts +0 -135
- package/dist/types/dist-types/product.d.ts +0 -143
- package/dist/types/dist-types/stock.d.ts +0 -19
- package/dist/types/dist-types/total.d.ts +0 -44
- package/dist/types/index.d.ts +0 -3
- package/dist/types/src-public/airtable.d.ts +0 -227
- package/dist/types/src-public/bcOrder.d.ts +0 -84
- package/dist/types/src-public/bigquery.d.ts +0 -17
- package/dist/types/src-public/centra.d.ts +0 -176
- package/dist/types/src-public/cloudtasks.d.ts +0 -74
- package/dist/types/src-public/dato.d.ts +0 -62
- package/dist/types/src-public/env.d.ts +0 -144
- package/dist/types/src-public/getEventTime.d.ts +0 -1
- package/dist/types/src-public/index.d.ts +0 -19
- package/dist/types/src-public/ipValidation.d.ts +0 -15
- package/dist/types/src-public/jwks.d.ts +0 -15
- package/dist/types/src-public/pubsub.d.ts +0 -95
- package/dist/types/src-public/rateLimit.d.ts +0 -21
- package/dist/types/src-public/redisClient.d.ts +0 -6
- package/dist/types/src-public/runtime.d.ts +0 -58
- package/dist/types/src-public/sanitize.d.ts +0 -4
- package/dist/types/src-public/scheduler.d.ts +0 -71
- package/dist/types/src-public/secret.d.ts +0 -6
- package/dist/types/src-public/setHeaders.d.ts +0 -13
- package/dist/types/src-public/types.d.ts +0 -264
- package/dist/types/src-public/utils.d.ts +0 -101
- package/dist/types/src-public/validate.d.ts +0 -9
|
@@ -1,457 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
-
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
-
};
|
|
5
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
-
exports.FUNCTION_EXPR_ERROR = exports.getIdentityToken = exports.getAccessToken = exports.parseDateOrDefault = exports.validateGoogleAuth = exports.isCloudTask = exports.isRespectfulNudge = exports.isCronMessage = exports.isPubSubRequest = void 0;
|
|
7
|
-
exports.getEventTime = getEventTime;
|
|
8
|
-
exports.shortHash = shortHash;
|
|
9
|
-
exports.slugify = slugify;
|
|
10
|
-
exports.getFirestore = getFirestore;
|
|
11
|
-
exports.createHandlerDecorator = createHandlerDecorator;
|
|
12
|
-
exports.getSecret = getSecret;
|
|
13
|
-
exports.splitTimeToArr = splitTimeToArr;
|
|
14
|
-
exports.minutesAgo = minutesAgo;
|
|
15
|
-
exports.setRetryAfterVariable = setRetryAfterVariable;
|
|
16
|
-
exports.createFunction = createFunction;
|
|
17
|
-
exports.createOnResponse = createOnResponse;
|
|
18
|
-
exports.onResponse = onResponse;
|
|
19
|
-
exports.parsePrices = parsePrices;
|
|
20
|
-
const crypto_1 = __importDefault(require("crypto"));
|
|
21
|
-
const firestore_1 = require("@google-cloud/firestore");
|
|
22
|
-
const jwks_1 = __importDefault(require("./jwks"));
|
|
23
|
-
const isPubSubRequest = (headers) => (headers['User-Agent'] || headers['user-agent'] || '') === 'CloudPubSub-Google'
|
|
24
|
-
|| (headers['User-Agent'] || headers['user-agent'] || '').indexOf('APIs-Google') !== -1;
|
|
25
|
-
exports.isPubSubRequest = isPubSubRequest;
|
|
26
|
-
const isCronMessage = (headers) => (headers['User-Agent'] || headers['user-agent'] || '') === 'Google-Cloud-Scheduler';
|
|
27
|
-
exports.isCronMessage = isCronMessage;
|
|
28
|
-
const isRespectfulNudge = (headers) => (headers['User-Agent'] || headers['user-agent'] || '') === 'Respectful-Nudge';
|
|
29
|
-
exports.isRespectfulNudge = isRespectfulNudge;
|
|
30
|
-
const isCloudTask = (headers) => (headers['User-Agent'] || headers['user-agent'] || '').indexOf('CloudTasks-Google') !== -1
|
|
31
|
-
|| (headers['User-Agent'] || headers['user-agent'] || '').indexOf('Google-Cloud-Tasks') !== -1;
|
|
32
|
-
exports.isCloudTask = isCloudTask;
|
|
33
|
-
const validateGoogleAuth = async (opts, headers, firestore) => {
|
|
34
|
-
const token = headers.authorization?.split(" ")[1];
|
|
35
|
-
if (!token) {
|
|
36
|
-
throw new Error("Missing authorization header or invalid format, needs to be in format: Bearer <IdToken>");
|
|
37
|
-
}
|
|
38
|
-
let result;
|
|
39
|
-
try {
|
|
40
|
-
const jwksHelper = new jwks_1.default(opts, firestore);
|
|
41
|
-
result = await jwksHelper.validateAuthorizationHeader(token, opts.serviceAccount);
|
|
42
|
-
}
|
|
43
|
-
catch (err) {
|
|
44
|
-
throw new Error('Invalid authorization header ' + err.message);
|
|
45
|
-
}
|
|
46
|
-
return result;
|
|
47
|
-
};
|
|
48
|
-
exports.validateGoogleAuth = validateGoogleAuth;
|
|
49
|
-
const parseDateOrDefault = (date, defaultValue = null) => {
|
|
50
|
-
if (!date) {
|
|
51
|
-
return defaultValue;
|
|
52
|
-
}
|
|
53
|
-
if (date instanceof Date) {
|
|
54
|
-
if (isNaN(date.getTime())) {
|
|
55
|
-
return defaultValue;
|
|
56
|
-
}
|
|
57
|
-
return date;
|
|
58
|
-
}
|
|
59
|
-
const dateObj = new Date(date);
|
|
60
|
-
if (isNaN(dateObj.getTime())) {
|
|
61
|
-
return defaultValue;
|
|
62
|
-
}
|
|
63
|
-
return dateObj;
|
|
64
|
-
};
|
|
65
|
-
exports.parseDateOrDefault = parseDateOrDefault;
|
|
66
|
-
function getEventTime(x, defaultValue) {
|
|
67
|
-
const possibleKeys = [
|
|
68
|
-
'last_modified_date_time',
|
|
69
|
-
'record_modified_at',
|
|
70
|
-
'last_modified_date',
|
|
71
|
-
'last_modified_datetime',
|
|
72
|
-
'last_modified_date_time',
|
|
73
|
-
'lastModifiedDateTime',
|
|
74
|
-
'lastModifiedAt',
|
|
75
|
-
'last_modified_at',
|
|
76
|
-
'SystemModifiedAt',
|
|
77
|
-
'system_modified_at',
|
|
78
|
-
'lastUpdatedAt',
|
|
79
|
-
'modified_at',
|
|
80
|
-
'last_updated_at',
|
|
81
|
-
'modifiedAt',
|
|
82
|
-
];
|
|
83
|
-
for (let i = 0; i < possibleKeys.length; i++) {
|
|
84
|
-
if (x[possibleKeys[i]]) {
|
|
85
|
-
const possibleDateTime = new Date(x[possibleKeys[i]]);
|
|
86
|
-
if (!isNaN(possibleDateTime.getTime())) {
|
|
87
|
-
return possibleDateTime;
|
|
88
|
-
}
|
|
89
|
-
}
|
|
90
|
-
}
|
|
91
|
-
return defaultValue;
|
|
92
|
-
}
|
|
93
|
-
function shortHash(input) {
|
|
94
|
-
const hash = crypto_1.default.createHash('sha256').update(input).digest();
|
|
95
|
-
const base64 = hash.toString('base64')
|
|
96
|
-
.replace(/\+/g, '-')
|
|
97
|
-
.replace(/\//g, '_')
|
|
98
|
-
.replace(/=+$/, '');
|
|
99
|
-
return base64.substring(0, 8);
|
|
100
|
-
}
|
|
101
|
-
function slugify(input) {
|
|
102
|
-
return input
|
|
103
|
-
.toLowerCase()
|
|
104
|
-
.replace(/[()]/g, '')
|
|
105
|
-
.replace(/[^a-z0-9\s-]/g, '')
|
|
106
|
-
.replace(/[\s-]+/g, '-')
|
|
107
|
-
.replace(/^-+|-+$/g, '');
|
|
108
|
-
}
|
|
109
|
-
global.BUILDSHIP_FIRESTORE_V7_CACHE = global.BUILDSHIP_FIRESTORE_V7_CACHE || {};
|
|
110
|
-
const DEFAULT_BRANCH = 'migratedprod';
|
|
111
|
-
function getFirestore(systemEnvName) {
|
|
112
|
-
const firebaseDb = (systemEnvName === DEFAULT_BRANCH ? '(default)' : systemEnvName);
|
|
113
|
-
if (!global.BUILDSHIP_FIRESTORE_V7_CACHE[systemEnvName]) {
|
|
114
|
-
let firestore;
|
|
115
|
-
if (global.BUILDSHIP_FIRESTORE_V7_INSTANCE) {
|
|
116
|
-
firestore = global.BUILDSHIP_FIRESTORE_V7_INSTANCE;
|
|
117
|
-
if (firestore.databaseId !== firebaseDb) {
|
|
118
|
-
firestore = new global.BUILDSHIP_FIRESTORE_V7_INSTANCE.constructor({
|
|
119
|
-
projectId: process.env.GCLOUD_PROJECT,
|
|
120
|
-
databaseId: firebaseDb,
|
|
121
|
-
});
|
|
122
|
-
}
|
|
123
|
-
}
|
|
124
|
-
else {
|
|
125
|
-
firestore = new firestore_1.Firestore({
|
|
126
|
-
projectId: process.env.GCLOUD_PROJECT,
|
|
127
|
-
databaseId: firebaseDb,
|
|
128
|
-
});
|
|
129
|
-
}
|
|
130
|
-
global.BUILDSHIP_FIRESTORE_V7_CACHE[systemEnvName] = firestore;
|
|
131
|
-
}
|
|
132
|
-
return global.BUILDSHIP_FIRESTORE_V7_CACHE[systemEnvName];
|
|
133
|
-
}
|
|
134
|
-
function createHandlerDecorator(decoratorFactory) {
|
|
135
|
-
return decoratorFactory;
|
|
136
|
-
}
|
|
137
|
-
async function getSecret(runtime, name, accessToken) {
|
|
138
|
-
if (name.startsWith('process.secret.')) {
|
|
139
|
-
name = name.slice('process.secret.'.length);
|
|
140
|
-
}
|
|
141
|
-
try {
|
|
142
|
-
const projectId = process.env.GCLOUD_PROJECT;
|
|
143
|
-
if (!projectId) {
|
|
144
|
-
throw new Error('GCLOUD_PROJECT env is not set');
|
|
145
|
-
}
|
|
146
|
-
const url = `https://secretmanager.googleapis.com/v1/projects/${projectId}/secrets/${runtime.systemEnvName}---${name}/versions/latest:access`;
|
|
147
|
-
const res = await fetch(url, {
|
|
148
|
-
headers: { Authorization: `Bearer ${accessToken}` }
|
|
149
|
-
});
|
|
150
|
-
if (!res.ok) {
|
|
151
|
-
const text = await res.text();
|
|
152
|
-
throw new Error(`secret access http ${res.status}: ${text}`);
|
|
153
|
-
}
|
|
154
|
-
const json = await res.json();
|
|
155
|
-
const dataB64 = json?.payload?.data || '';
|
|
156
|
-
if (!dataB64)
|
|
157
|
-
return '';
|
|
158
|
-
const payload = Buffer.from(dataB64, 'base64').toString('utf-8');
|
|
159
|
-
return payload;
|
|
160
|
-
}
|
|
161
|
-
catch (err) {
|
|
162
|
-
throw new Error(`Failed to get secret ${name}. Error: ${err.message}`);
|
|
163
|
-
}
|
|
164
|
-
}
|
|
165
|
-
const getAccessToken = async () => {
|
|
166
|
-
const metadataUrl = 'http://metadata.google.internal/computeMetadata/v1/instance/service-accounts/default/token';
|
|
167
|
-
try {
|
|
168
|
-
const res = await fetch(metadataUrl, {
|
|
169
|
-
headers: { 'Metadata-Flavor': 'Google' }
|
|
170
|
-
});
|
|
171
|
-
if (!res.ok) {
|
|
172
|
-
throw new Error(`metadata token http ${res.status}`);
|
|
173
|
-
}
|
|
174
|
-
const json = await res.json();
|
|
175
|
-
if (!json.access_token) {
|
|
176
|
-
throw new Error('missing access_token in metadata response');
|
|
177
|
-
}
|
|
178
|
-
return json.access_token;
|
|
179
|
-
}
|
|
180
|
-
catch (err) {
|
|
181
|
-
throw new Error(`Failed to obtain access token. Error: ${err.message}`);
|
|
182
|
-
}
|
|
183
|
-
};
|
|
184
|
-
exports.getAccessToken = getAccessToken;
|
|
185
|
-
const getIdentityToken = async (expectedAudience) => {
|
|
186
|
-
const metadataUrl = 'http://metadata.google.internal/computeMetadata/v1/instance/service-accounts/default/identity?' + new URLSearchParams({
|
|
187
|
-
audience: expectedAudience,
|
|
188
|
-
format: 'full',
|
|
189
|
-
}).toString();
|
|
190
|
-
try {
|
|
191
|
-
const res = await fetch(metadataUrl, {
|
|
192
|
-
headers: { 'Metadata-Flavor': 'Google' }
|
|
193
|
-
});
|
|
194
|
-
if (!res.ok) {
|
|
195
|
-
throw new Error(`metadata token http ${res.status}`);
|
|
196
|
-
}
|
|
197
|
-
const accessToken = await res.text();
|
|
198
|
-
if (!accessToken) {
|
|
199
|
-
throw new Error('missing access_token in metadata response');
|
|
200
|
-
}
|
|
201
|
-
return accessToken;
|
|
202
|
-
}
|
|
203
|
-
catch (err) {
|
|
204
|
-
throw new Error(`Failed to obtain identity token. Error: ${err.message}`);
|
|
205
|
-
}
|
|
206
|
-
};
|
|
207
|
-
exports.getIdentityToken = getIdentityToken;
|
|
208
|
-
function splitTimeToArr(date = new Date()) {
|
|
209
|
-
return [date.getUTCHours(), date.getUTCMinutes(), date.getUTCSeconds()];
|
|
210
|
-
}
|
|
211
|
-
function minutesAgo(minutes) {
|
|
212
|
-
return new Date(Date.now() - minutes * 60 * 1000).toISOString();
|
|
213
|
-
}
|
|
214
|
-
function setRetryAfterVariable(value, options) {
|
|
215
|
-
if (!options.root || !options.root.state) {
|
|
216
|
-
return null;
|
|
217
|
-
}
|
|
218
|
-
let v = null;
|
|
219
|
-
if (value instanceof Response) {
|
|
220
|
-
v = value.headers.get('retry-after') || null;
|
|
221
|
-
}
|
|
222
|
-
else if (typeof value === 'object') {
|
|
223
|
-
if (value instanceof Headers) {
|
|
224
|
-
v = value.get('retry-after') || null;
|
|
225
|
-
}
|
|
226
|
-
else {
|
|
227
|
-
v = value['retry-after'] || null;
|
|
228
|
-
}
|
|
229
|
-
}
|
|
230
|
-
else if (typeof value === 'string') {
|
|
231
|
-
v = value;
|
|
232
|
-
}
|
|
233
|
-
let normV = 0;
|
|
234
|
-
if (v) {
|
|
235
|
-
if (/^\d+$/.test(v)) {
|
|
236
|
-
normV = new Date(Date.now() + parseInt(v) * 1000).getTime();
|
|
237
|
-
}
|
|
238
|
-
else {
|
|
239
|
-
normV = new Date(v).getTime();
|
|
240
|
-
}
|
|
241
|
-
if (isNaN(normV)) {
|
|
242
|
-
normV = 0;
|
|
243
|
-
}
|
|
244
|
-
}
|
|
245
|
-
else {
|
|
246
|
-
normV = 0;
|
|
247
|
-
}
|
|
248
|
-
if (!(options.root && options.root.state)) {
|
|
249
|
-
return null;
|
|
250
|
-
}
|
|
251
|
-
let existingV = 0;
|
|
252
|
-
if (options.root.state['_$hsRetryAfter_']) {
|
|
253
|
-
existingV = new Date(options.root.state['_$hsRetryAfter_']).getTime();
|
|
254
|
-
if (isNaN(existingV)) {
|
|
255
|
-
existingV = 0;
|
|
256
|
-
}
|
|
257
|
-
}
|
|
258
|
-
if (normV > existingV) {
|
|
259
|
-
options.root.state['_$hsRetryAfter_'] = new Date(normV).toISOString();
|
|
260
|
-
return new Date(normV).toISOString();
|
|
261
|
-
}
|
|
262
|
-
return options.root.state['_$hsRetryAfter_'] ?? null;
|
|
263
|
-
}
|
|
264
|
-
global.functionsCache = global.functionsCache || {};
|
|
265
|
-
exports.FUNCTION_EXPR_ERROR = Symbol('function');
|
|
266
|
-
function createFunction(expression) {
|
|
267
|
-
if (!global.functionsCache[expression]) {
|
|
268
|
-
global.functionsCache[expression] = new Function('symbol', 'payload', 'try { return ' + expression + ' } catch (err) { return symbol; }');
|
|
269
|
-
}
|
|
270
|
-
return (payload) => global.functionsCache[expression](exports.FUNCTION_EXPR_ERROR, payload);
|
|
271
|
-
}
|
|
272
|
-
function createOnResponse(opts) {
|
|
273
|
-
return (config, options) => onResponse(config, options, opts.requiredFlag);
|
|
274
|
-
}
|
|
275
|
-
function onResponse(config, options, requiredFlag) {
|
|
276
|
-
const triggerOutput = options.root[options.triggerId || options.trigger?.id];
|
|
277
|
-
const flags = triggerOutput?.flags;
|
|
278
|
-
const numberOfInputMessages = triggerOutput?.body?.length ?? 0;
|
|
279
|
-
const outputBody = config.outputs?.body;
|
|
280
|
-
const outputStatus = config.outputs?.status;
|
|
281
|
-
requiredFlag = config.config?.requiredFlag || requiredFlag;
|
|
282
|
-
let headersToSet = {};
|
|
283
|
-
if (outputBody?.headersToSet) {
|
|
284
|
-
headersToSet = outputBody.headersToSet;
|
|
285
|
-
}
|
|
286
|
-
if (options.root?.state?.['_$hsRetryAfter_'] && !Object.keys(headersToSet).some(x => x.toLocaleLowerCase() === 'retry-after')) {
|
|
287
|
-
const retryAfter = options.root.state['_$hsRetryAfter_'];
|
|
288
|
-
headersToSet['retry-after'] = retryAfter;
|
|
289
|
-
}
|
|
290
|
-
if (headersToSet) {
|
|
291
|
-
for (const [key, value] of Object.entries(headersToSet)) {
|
|
292
|
-
options.request.headers[key] = value;
|
|
293
|
-
}
|
|
294
|
-
}
|
|
295
|
-
if (!triggerOutput) {
|
|
296
|
-
return;
|
|
297
|
-
}
|
|
298
|
-
let responsePayload;
|
|
299
|
-
if (outputBody?.headersToSet && outputBody?.responses) {
|
|
300
|
-
responsePayload = outputBody.responses;
|
|
301
|
-
}
|
|
302
|
-
else {
|
|
303
|
-
responsePayload = outputBody;
|
|
304
|
-
}
|
|
305
|
-
const redactedResponse = {
|
|
306
|
-
message: `<Redacted Response>. Client does not have required permission flag: ${requiredFlag}`,
|
|
307
|
-
error: false,
|
|
308
|
-
};
|
|
309
|
-
if (responsePayload && Array.isArray(responsePayload) && responsePayload.length === numberOfInputMessages) {
|
|
310
|
-
return {
|
|
311
|
-
status: headersToSet['retry-after'] ? 429 : (outputStatus ? outputStatus : ((responsePayload && responsePayload instanceof Error) ? 500 : 200)),
|
|
312
|
-
value: responsePayload.map(x => {
|
|
313
|
-
if (x && typeof x === 'object' && x.statusCode && x.body) {
|
|
314
|
-
if (requiredFlag && !flags?.includes(requiredFlag) && !(x.body instanceof Error)) {
|
|
315
|
-
return Object.assign({}, x, { body: redactedResponse });
|
|
316
|
-
}
|
|
317
|
-
if (x.body instanceof Error) {
|
|
318
|
-
return Object.assign({}, x, { body: { message: x.body.message, error: true } });
|
|
319
|
-
}
|
|
320
|
-
return x;
|
|
321
|
-
}
|
|
322
|
-
return {
|
|
323
|
-
statusCode: x instanceof Error ? (headersToSet['retry-after'] ? 429 : 500) : 200,
|
|
324
|
-
body: x instanceof Error ? ({
|
|
325
|
-
message: x.message,
|
|
326
|
-
error: true
|
|
327
|
-
}) : (requiredFlag && flags?.includes(requiredFlag) ? x : redactedResponse),
|
|
328
|
-
};
|
|
329
|
-
})
|
|
330
|
-
};
|
|
331
|
-
}
|
|
332
|
-
return {
|
|
333
|
-
status: headersToSet['retry-after'] ? 429 : (outputStatus ? outputStatus : ((responsePayload && responsePayload instanceof Error) ? 500 : 200)),
|
|
334
|
-
value: responsePayload instanceof Error ? ({
|
|
335
|
-
message: responsePayload.message,
|
|
336
|
-
error: true
|
|
337
|
-
}) : (requiredFlag && flags?.includes(requiredFlag) ? responsePayload : redactedResponse),
|
|
338
|
-
cacheMaxAge: 0,
|
|
339
|
-
};
|
|
340
|
-
}
|
|
341
|
-
function parsePrices(priceData, timeZone = 'UTC') {
|
|
342
|
-
const result = [];
|
|
343
|
-
const defaultStartDate = convertDateToDatetimeTZ(new Date(0).toISOString(), timeZone);
|
|
344
|
-
const defaultEndDate = convertDateToDatetimeTZ(new Date('2099-01-01T00:00:00Z').toISOString(), timeZone);
|
|
345
|
-
for (let i = 0; i < priceData.length; i += 1) {
|
|
346
|
-
const priceChanges = (priceData[i].price_changes || []).map(x => ({
|
|
347
|
-
effective_from: x.effective_from ? (!isNaN(new Date(x.effective_from).getTime()) ? convertDateToDatetimeTZ(x.effective_from, timeZone) : null) : defaultStartDate,
|
|
348
|
-
effective_until: x.effective_until ? (!isNaN(new Date(x.effective_until).getTime()) ? convertDateToDatetimeTZ(x.effective_until, timeZone) : null) : defaultEndDate,
|
|
349
|
-
price: x.price,
|
|
350
|
-
price_type: x.price_type,
|
|
351
|
-
}));
|
|
352
|
-
const rrpPriceTypes = parsePriceType(priceChanges.filter((x) => x.price_type === 'rrp'));
|
|
353
|
-
const permPriceTypes = parsePriceType(priceChanges.filter((x) => x.price_type === 'perm'));
|
|
354
|
-
const posPriceTypes = parsePriceType(priceChanges.filter((x) => x.price_type === 'pos'));
|
|
355
|
-
let currentPrice;
|
|
356
|
-
let currentPriceType;
|
|
357
|
-
if (rrpPriceTypes.current) {
|
|
358
|
-
currentPrice = rrpPriceTypes.current;
|
|
359
|
-
currentPriceType = 'rrp';
|
|
360
|
-
}
|
|
361
|
-
if (permPriceTypes.current) {
|
|
362
|
-
currentPrice = permPriceTypes.current;
|
|
363
|
-
currentPriceType = 'perm';
|
|
364
|
-
}
|
|
365
|
-
if (posPriceTypes.current) {
|
|
366
|
-
currentPrice = posPriceTypes.current;
|
|
367
|
-
currentPriceType = 'pos';
|
|
368
|
-
}
|
|
369
|
-
result.push({
|
|
370
|
-
...priceData[i],
|
|
371
|
-
current_price: currentPrice,
|
|
372
|
-
current_price_type: currentPriceType,
|
|
373
|
-
rrp: rrpPriceTypes,
|
|
374
|
-
perm: permPriceTypes,
|
|
375
|
-
pos: posPriceTypes
|
|
376
|
-
});
|
|
377
|
-
}
|
|
378
|
-
return result;
|
|
379
|
-
}
|
|
380
|
-
function parsePriceType(priceTypeData, now = new Date()) {
|
|
381
|
-
if (!priceTypeData) {
|
|
382
|
-
return {
|
|
383
|
-
current: undefined,
|
|
384
|
-
historical: [],
|
|
385
|
-
future: []
|
|
386
|
-
};
|
|
387
|
-
}
|
|
388
|
-
const historicalEntries = [];
|
|
389
|
-
const futureEntries = [];
|
|
390
|
-
const currentEntries = [];
|
|
391
|
-
for (let i = 0; i < priceTypeData.length; i += 1) {
|
|
392
|
-
const price = priceTypeData[i];
|
|
393
|
-
if (price.effective_from !== null && price.effective_until !== null) {
|
|
394
|
-
const priceWithoutNulls = price;
|
|
395
|
-
if (priceWithoutNulls.effective_from.getTime() > priceWithoutNulls.effective_until.getTime()) {
|
|
396
|
-
continue;
|
|
397
|
-
}
|
|
398
|
-
else if (priceWithoutNulls.effective_from.getTime() > now.getTime()) {
|
|
399
|
-
futureEntries.push(priceWithoutNulls);
|
|
400
|
-
}
|
|
401
|
-
else if (priceWithoutNulls.effective_until.getTime() < now.getTime()) {
|
|
402
|
-
historicalEntries.push(priceWithoutNulls);
|
|
403
|
-
}
|
|
404
|
-
else {
|
|
405
|
-
currentEntries.push(priceWithoutNulls);
|
|
406
|
-
}
|
|
407
|
-
}
|
|
408
|
-
}
|
|
409
|
-
const [currentEntry, ...otherFutureEntries] = currentEntries.sort(createSortPriceTypes(false));
|
|
410
|
-
const sortedHistoricalEntries = historicalEntries.concat(otherFutureEntries).sort(createSortPriceTypes(true));
|
|
411
|
-
const sortedFutureEntries = futureEntries.sort(createSortPriceTypes(true));
|
|
412
|
-
return {
|
|
413
|
-
current: currentEntry,
|
|
414
|
-
historical: sortedHistoricalEntries,
|
|
415
|
-
future: sortedFutureEntries
|
|
416
|
-
};
|
|
417
|
-
}
|
|
418
|
-
function createSortPriceTypes(descending) {
|
|
419
|
-
return function (a, b) {
|
|
420
|
-
let effectiveFromSort;
|
|
421
|
-
if (descending) {
|
|
422
|
-
effectiveFromSort = b.effective_from.getTime() - a.effective_from.getTime();
|
|
423
|
-
}
|
|
424
|
-
else {
|
|
425
|
-
effectiveFromSort = a.effective_from.getTime() - b.effective_from.getTime();
|
|
426
|
-
}
|
|
427
|
-
if (effectiveFromSort === 0) {
|
|
428
|
-
if (!descending) {
|
|
429
|
-
return b.effective_until.getTime() - a.effective_until.getTime();
|
|
430
|
-
}
|
|
431
|
-
return a.effective_until.getTime() - b.effective_until.getTime();
|
|
432
|
-
}
|
|
433
|
-
return effectiveFromSort;
|
|
434
|
-
};
|
|
435
|
-
}
|
|
436
|
-
function convertDateToDatetimeTZ(dateString, timeZone) {
|
|
437
|
-
let normDateString = '';
|
|
438
|
-
if (dateString.includes('T')) {
|
|
439
|
-
normDateString = dateString.slice(0, 19);
|
|
440
|
-
}
|
|
441
|
-
else {
|
|
442
|
-
normDateString = dateString + 'T00:00:00';
|
|
443
|
-
}
|
|
444
|
-
console.error(dateString, normDateString + getOffsetString(timeZone));
|
|
445
|
-
return new Date(normDateString + getOffsetString(timeZone));
|
|
446
|
-
}
|
|
447
|
-
function getOffsetString(timeZone) {
|
|
448
|
-
const today = new Date(`${new Date().toISOString().slice(0, 10)}T00:00:00Z`);
|
|
449
|
-
const locale = today.toLocaleString("sv-SE", { timeZone });
|
|
450
|
-
const tzDate = new Date(locale);
|
|
451
|
-
const offsetMinutes = Math.ceil(tzDate.getTime() - today.getTime()) / 60000;
|
|
452
|
-
const sign = offsetMinutes >= 0 ? "+" : "-";
|
|
453
|
-
const abs = Math.abs(offsetMinutes);
|
|
454
|
-
const hours = String(Math.floor(abs / 60)).padStart(2, "0");
|
|
455
|
-
const minutes = String(abs % 60).padStart(2, "0");
|
|
456
|
-
return `${sign}${hours}:${minutes}`;
|
|
457
|
-
}
|
|
@@ -1,74 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
-
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
-
};
|
|
5
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
-
exports.default = validate;
|
|
7
|
-
const ajv_1 = __importDefault(require("ajv"));
|
|
8
|
-
const ajv_formats_1 = __importDefault(require("ajv-formats"));
|
|
9
|
-
const contracts_1 = require("../contracts");
|
|
10
|
-
function validate(payload, schema, options) {
|
|
11
|
-
const ajv = new ajv_1.default({
|
|
12
|
-
allErrors: true,
|
|
13
|
-
coerceTypes: false,
|
|
14
|
-
verbose: false,
|
|
15
|
-
strictSchema: false,
|
|
16
|
-
logger: {
|
|
17
|
-
log: options.log.log,
|
|
18
|
-
warn: options.log.log,
|
|
19
|
-
error: options.log.error,
|
|
20
|
-
},
|
|
21
|
-
});
|
|
22
|
-
(0, ajv_formats_1.default)(ajv);
|
|
23
|
-
const schemas = [
|
|
24
|
-
contracts_1.Currency,
|
|
25
|
-
contracts_1.Country,
|
|
26
|
-
contracts_1.Money,
|
|
27
|
-
contracts_1.Total,
|
|
28
|
-
contracts_1.Order,
|
|
29
|
-
contracts_1.OrderAddress,
|
|
30
|
-
contracts_1.OrderCustomer,
|
|
31
|
-
contracts_1.OrderItem,
|
|
32
|
-
contracts_1.OrderPayment,
|
|
33
|
-
contracts_1.OrderShipment,
|
|
34
|
-
contracts_1.OrderShipmentItem,
|
|
35
|
-
contracts_1.OrderShipmentItemReturned,
|
|
36
|
-
contracts_1.OrderShipmentPOS,
|
|
37
|
-
contracts_1.OrderShipmentPOSOutbound,
|
|
38
|
-
contracts_1.OrderShipmentPOSReturn,
|
|
39
|
-
contracts_1.OrderShipmentShipped,
|
|
40
|
-
contracts_1.OrderShipmentShippedOutbound,
|
|
41
|
-
contracts_1.OrderShipmentShippedReturn,
|
|
42
|
-
].filter(Boolean);
|
|
43
|
-
for (const s of schemas) {
|
|
44
|
-
try {
|
|
45
|
-
ajv.addSchema(s);
|
|
46
|
-
}
|
|
47
|
-
catch {
|
|
48
|
-
}
|
|
49
|
-
}
|
|
50
|
-
const validate = ajv.compile(schema);
|
|
51
|
-
if (!validate(payload)) {
|
|
52
|
-
const errors = validate.errors?.map(error => `${error.instancePath} ${error.message}: ${JSON.stringify({
|
|
53
|
-
keyword: error.keyword,
|
|
54
|
-
instancePath: error.instancePath,
|
|
55
|
-
schemaPath: error.instancePath,
|
|
56
|
-
params: error.params,
|
|
57
|
-
propertyName: error.propertyName,
|
|
58
|
-
})}`) ||
|
|
59
|
-
[];
|
|
60
|
-
options.log.error(`Payload validation failed for object type '${schema.title || schema.$id}' because it did not match the expected schema.` +
|
|
61
|
-
errors.join('\n'));
|
|
62
|
-
throw new Error(`Payload validation failed for object type '${schema.title || schema.$id}' because it did not match the expected schema` +
|
|
63
|
-
errors.join('\n'));
|
|
64
|
-
}
|
|
65
|
-
else {
|
|
66
|
-
try {
|
|
67
|
-
options.log.log('Validation succeeded');
|
|
68
|
-
}
|
|
69
|
-
catch {
|
|
70
|
-
void 0;
|
|
71
|
-
}
|
|
72
|
-
return payload;
|
|
73
|
-
}
|
|
74
|
-
}
|
|
@@ -1,15 +0,0 @@
|
|
|
1
|
-
export { default as Currency } from './currency.schema.json';
|
|
2
|
-
export { default as Country } from './country.schema.json';
|
|
3
|
-
export { default as Money } from './money.schema.json';
|
|
4
|
-
export { default as Total } from './total.schema.json';
|
|
5
|
-
export { default as ProductDraft } from './product-draft.schema.json';
|
|
6
|
-
export { default as Product } from './product.schema.json';
|
|
7
|
-
export { default as ProductCategory } from './product-category.schema.json';
|
|
8
|
-
export { default as Category } from './category.schema.json';
|
|
9
|
-
export { default as DevelopmentColour } from './development-colour.schema.json';
|
|
10
|
-
export { default as Asset } from './asset.schema.json';
|
|
11
|
-
export { default as CustomerSegment } from './customer-segment.schema.json';
|
|
12
|
-
export { default as MarketingPref } from './marketing-preferences.schema.json';
|
|
13
|
-
export * from './order';
|
|
14
|
-
export { default as Order } from './order.schema.json';
|
|
15
|
-
export * from './messages';
|
|
@@ -1,5 +0,0 @@
|
|
|
1
|
-
export { default as MessageProductDraft } from './product-draft.schema.json';
|
|
2
|
-
export { default as MessageEanChange } from './ean-change.schema.json';
|
|
3
|
-
export { default as MessageProductChange } from './product.schema.json';
|
|
4
|
-
export { default as MessageProductCategory } from './product-category.schema.json';
|
|
5
|
-
export * from './order';
|
|
@@ -1,6 +0,0 @@
|
|
|
1
|
-
export { default as MessageOrderDelivered } from './delivered.schema.json';
|
|
2
|
-
export { default as MessageOrderNew } from './new.schema.json';
|
|
3
|
-
export { default as MessageOrderProcessed } from './processed.schema.json';
|
|
4
|
-
export { default as MessageOrderReturnInitiated } from './return-initiated.schema.json';
|
|
5
|
-
export { default as MessageOrderReturned } from './returned.schema.json';
|
|
6
|
-
export { default as MessageOrderShipped } from './shipped.schema.json';
|
|
@@ -1,6 +0,0 @@
|
|
|
1
|
-
export { default as OrderAddress } from './address.schema.json';
|
|
2
|
-
export { default as OrderCustomer } from './customer.schema.json';
|
|
3
|
-
export { default as OrderItem } from './item.schema.json';
|
|
4
|
-
export { default as OrderPayment } from './payment.schema.json';
|
|
5
|
-
export { default as OrderShipment } from './shipment.schema.json';
|
|
6
|
-
export * from './shipment';
|
|
@@ -1,6 +0,0 @@
|
|
|
1
|
-
export { default as OrderShipmentItem } from './item.schema.json';
|
|
2
|
-
export { default as OrderShipmentPOS } from './pos.schema.json';
|
|
3
|
-
export { default as OrderShipmentShipped } from './shipped.schema.json';
|
|
4
|
-
export * from './item';
|
|
5
|
-
export * from './pos';
|
|
6
|
-
export * from './shipped';
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export { default as OrderShipmentItemReturned } from './returned.schema.json';
|
|
@@ -1,51 +0,0 @@
|
|
|
1
|
-
declare const schema: {
|
|
2
|
-
readonly $schema: "http://json-schema.org/draft-07/schema#";
|
|
3
|
-
readonly title: "Asset";
|
|
4
|
-
readonly type: "object";
|
|
5
|
-
readonly additionalProperties: false;
|
|
6
|
-
readonly properties: {
|
|
7
|
-
readonly product_id: {
|
|
8
|
-
readonly type: "string";
|
|
9
|
-
};
|
|
10
|
-
readonly dash_id: {
|
|
11
|
-
readonly type: "string";
|
|
12
|
-
};
|
|
13
|
-
readonly dash_folder_path: {
|
|
14
|
-
readonly type: "string";
|
|
15
|
-
};
|
|
16
|
-
readonly source_url: {
|
|
17
|
-
readonly type: "string";
|
|
18
|
-
};
|
|
19
|
-
readonly created_at: {
|
|
20
|
-
readonly type: "string";
|
|
21
|
-
readonly format: "date-time";
|
|
22
|
-
};
|
|
23
|
-
readonly last_modified_at: {
|
|
24
|
-
readonly type: "string";
|
|
25
|
-
readonly format: "date-time";
|
|
26
|
-
};
|
|
27
|
-
readonly width: {
|
|
28
|
-
readonly type: "integer";
|
|
29
|
-
readonly minimum: 0;
|
|
30
|
-
};
|
|
31
|
-
readonly height: {
|
|
32
|
-
readonly type: "integer";
|
|
33
|
-
readonly minimum: 0;
|
|
34
|
-
};
|
|
35
|
-
readonly meta: {
|
|
36
|
-
readonly type: "object";
|
|
37
|
-
readonly additionalProperties: true;
|
|
38
|
-
};
|
|
39
|
-
readonly content_type: {
|
|
40
|
-
readonly type: "string";
|
|
41
|
-
readonly pattern: "^[a-z0-9-/]+$";
|
|
42
|
-
};
|
|
43
|
-
readonly file_name: {
|
|
44
|
-
readonly type: "string";
|
|
45
|
-
readonly pattern: "^[a-z0-9-.]+$";
|
|
46
|
-
};
|
|
47
|
-
};
|
|
48
|
-
readonly required: readonly ["source_url", "content_type", "last_modified_at"];
|
|
49
|
-
readonly $id: "https://shushed.example.com/asset.json";
|
|
50
|
-
};
|
|
51
|
-
export default schema;
|