@shipengine/connect-carrier-api 2.10.2 → 2.11.0-beta.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.
- package/lib/app/build-native-rating-routes.d.ts +3 -0
- package/lib/app/build-native-rating-routes.js +105 -0
- package/lib/app/build-native-rating-routes.js.map +1 -0
- package/lib/app/carrier-app.js +5 -1
- package/lib/app/carrier-app.js.map +1 -1
- package/lib/app/create-get-rates-handler.d.ts +5 -0
- package/lib/app/create-get-rates-handler.js +95 -0
- package/lib/app/create-get-rates-handler.js.map +1 -0
- package/lib/app/index.d.ts +1 -0
- package/lib/app/index.js +1 -0
- package/lib/app/index.js.map +1 -1
- package/lib/app/internal/carrier-specification.d.ts +2 -4
- package/lib/app/internal/carrier-specification.js +9 -1
- package/lib/app/internal/carrier-specification.js.map +1 -1
- package/lib/app/internal/native-rating-specification.d.ts +5 -0
- package/lib/app/internal/native-rating-specification.js +3 -0
- package/lib/app/internal/native-rating-specification.js.map +1 -0
- package/lib/app/internal/route.d.ts +17 -3
- package/lib/app/internal/route.js.map +1 -1
- package/lib/app/metadata/carrier.d.ts +2 -6
- package/lib/app/metadata/carrier.js +4 -10
- package/lib/app/metadata/carrier.js.map +1 -1
- package/lib/app/metadata/custom-validators/file-exists.d.ts +1 -0
- package/lib/app/metadata/custom-validators/file-exists.js +12 -0
- package/lib/app/metadata/custom-validators/file-exists.js.map +1 -0
- package/lib/app/metadata/native-rating-configuration.d.ts +12 -0
- package/lib/app/metadata/native-rating-configuration.js +13 -0
- package/lib/app/metadata/native-rating-configuration.js.map +1 -0
- package/lib/app/metadata/rate-card.d.ts +9 -0
- package/lib/app/metadata/rate-card.js +10 -0
- package/lib/app/metadata/rate-card.js.map +1 -0
- package/lib/app/native-rating/base-rate-context.d.ts +3 -0
- package/lib/app/native-rating/base-rate-context.js +79 -0
- package/lib/app/native-rating/base-rate-context.js.map +1 -0
- package/lib/app/native-rating/context-results.d.ts +3 -0
- package/lib/app/native-rating/context-results.js +3 -0
- package/lib/app/native-rating/context-results.js.map +1 -0
- package/lib/app/native-rating/create-dynamic-carrier.d.ts +7 -0
- package/lib/app/native-rating/create-dynamic-carrier.js +63 -0
- package/lib/app/native-rating/create-dynamic-carrier.js.map +1 -0
- package/lib/app/native-rating/get-rates.d.ts +7 -0
- package/lib/app/native-rating/get-rates.js +3 -0
- package/lib/app/native-rating/get-rates.js.map +1 -0
- package/lib/app/native-rating/get-variables.d.ts +6 -0
- package/lib/app/native-rating/get-variables.js +3 -0
- package/lib/app/native-rating/get-variables.js.map +1 -0
- package/lib/app/native-rating/get-zone.d.ts +6 -0
- package/lib/app/native-rating/get-zone.js +3 -0
- package/lib/app/native-rating/get-zone.js.map +1 -0
- package/lib/app/native-rating/implementation-type.d.ts +31 -0
- package/lib/app/native-rating/implementation-type.js +8 -0
- package/lib/app/native-rating/implementation-type.js.map +1 -0
- package/lib/app/native-rating/index.d.ts +2 -0
- package/lib/app/native-rating/index.js +6 -0
- package/lib/app/native-rating/index.js.map +1 -0
- package/lib/app/native-rating/numeric-currency.d.ts +5 -0
- package/lib/app/native-rating/numeric-currency.js +3 -0
- package/lib/app/native-rating/numeric-currency.js.map +1 -0
- package/lib/app/native-rating/rating-context.d.ts +15 -0
- package/lib/app/native-rating/rating-context.js +3 -0
- package/lib/app/native-rating/rating-context.js.map +1 -0
- package/lib/models/rates/rate.d.ts +4 -2
- package/lib/models/rates/rate.js +2 -1
- package/lib/models/rates/rate.js.map +1 -1
- package/lib/models/shipment-item.d.ts +7 -0
- package/lib/models/shipment-item.js +3 -0
- package/lib/models/shipment-item.js.map +1 -0
- package/lib/requests/get-rates-request.d.ts +3 -0
- package/lib/requests/get-rates-request.js.map +1 -1
- package/package.json +4 -1
- package/spec.json +0 -12
- package/src/app/build-native-rating-routes.ts +119 -0
- package/src/app/carrier-app.ts +10 -2
- package/src/app/create-get-rates-handler.ts +119 -0
- package/src/app/index.ts +1 -0
- package/src/app/internal/carrier-specification.ts +16 -5
- package/src/app/internal/native-rating-specification.ts +5 -0
- package/src/app/internal/route.ts +20 -3
- package/src/app/metadata/carrier.ts +3 -15
- package/src/app/metadata/custom-validators/file-exists.ts +8 -0
- package/src/app/metadata/native-rating-configuration.ts +19 -0
- package/src/app/metadata/rate-card.ts +14 -0
- package/src/app/native-rating/base-rate-context.ts +97 -0
- package/src/app/native-rating/context-results.ts +3 -0
- package/src/app/native-rating/create-dynamic-carrier.ts +82 -0
- package/src/app/native-rating/get-rates.ts +9 -0
- package/src/app/native-rating/get-variables.ts +9 -0
- package/src/app/native-rating/get-zone.ts +9 -0
- package/src/app/native-rating/implementation-type.ts +34 -0
- package/src/app/native-rating/index.ts +2 -0
- package/src/app/native-rating/numeric-currency.ts +5 -0
- package/src/app/native-rating/rating-context.ts +19 -0
- package/src/models/rates/rate.ts +6 -3
- package/src/models/shipment-item.ts +7 -0
- package/src/requests/get-rates-request.ts +3 -0
- package/tsconfig.tsbuildinfo +1 -1
|
@@ -0,0 +1,105 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.buildNativeRatingRoutes = void 0;
|
|
4
|
+
const path_1 = require("path");
|
|
5
|
+
const promises_1 = require("fs/promises");
|
|
6
|
+
const route_1 = require("./internal/route");
|
|
7
|
+
const create_get_rates_handler_1 = require("./create-get-rates-handler");
|
|
8
|
+
const buildFilePath = async (path, fileName, error) => {
|
|
9
|
+
const filePath = path_1.resolve(path, fileName);
|
|
10
|
+
try {
|
|
11
|
+
await promises_1.stat(filePath);
|
|
12
|
+
return filePath;
|
|
13
|
+
}
|
|
14
|
+
catch (_a) {
|
|
15
|
+
throw new Error(error);
|
|
16
|
+
}
|
|
17
|
+
};
|
|
18
|
+
const buildNativeRatingRoutes = (metadata) => {
|
|
19
|
+
const getCarrierDetails = async (req) => {
|
|
20
|
+
const carrierId = req.params.carrier_id;
|
|
21
|
+
const carrier = metadata.Carriers.find((x) => x.Id === carrierId);
|
|
22
|
+
if (!carrier) {
|
|
23
|
+
throw new Error(`Could not find carrier with id ${carrierId}`);
|
|
24
|
+
}
|
|
25
|
+
if (!carrier.NativeRating) {
|
|
26
|
+
throw new Error(`Carrier ${carrierId} does not have a NativeRating property`);
|
|
27
|
+
}
|
|
28
|
+
if (!carrier.NativeRating.Path) {
|
|
29
|
+
throw new Error(`Carrier ${carrierId} does not have NativeRating path set`);
|
|
30
|
+
}
|
|
31
|
+
try {
|
|
32
|
+
await promises_1.stat(carrier.NativeRating.Path);
|
|
33
|
+
}
|
|
34
|
+
catch (_a) {
|
|
35
|
+
throw new Error(`Carrier ${carrierId} does not have NativeRating data`);
|
|
36
|
+
}
|
|
37
|
+
return {
|
|
38
|
+
path: carrier.NativeRating.Path,
|
|
39
|
+
rateCards: carrier.NativeRating.RateCards || [],
|
|
40
|
+
};
|
|
41
|
+
};
|
|
42
|
+
const getRateCardPath = async (req) => {
|
|
43
|
+
const rateCardId = req.params.id;
|
|
44
|
+
const { path, rateCards } = await getCarrierDetails(req);
|
|
45
|
+
if (!rateCards.find((x) => x.Id === rateCardId)) {
|
|
46
|
+
throw new Error(`Could not find a rate card with id ${rateCardId}`);
|
|
47
|
+
}
|
|
48
|
+
const rateCardPath = path_1.resolve(path, rateCardId);
|
|
49
|
+
try {
|
|
50
|
+
await promises_1.stat(rateCardPath);
|
|
51
|
+
}
|
|
52
|
+
catch (_a) {
|
|
53
|
+
throw new Error(`Rate card does not have any data`);
|
|
54
|
+
}
|
|
55
|
+
return rateCardPath;
|
|
56
|
+
};
|
|
57
|
+
return [
|
|
58
|
+
{
|
|
59
|
+
path: '/NativeRating/:carrier_id/RateCards',
|
|
60
|
+
method: route_1.Method.GET,
|
|
61
|
+
handler: async (req) => {
|
|
62
|
+
const { rateCards } = await getCarrierDetails(req);
|
|
63
|
+
return rateCards.map((x) => ({ Id: x.Id, Currency: x.Currency }));
|
|
64
|
+
},
|
|
65
|
+
},
|
|
66
|
+
{
|
|
67
|
+
path: '/NativeRating/:carrier_id/RateCards/:id/Implementation',
|
|
68
|
+
method: route_1.Method.GET,
|
|
69
|
+
handler: async (req) => {
|
|
70
|
+
const path = await getRateCardPath(req);
|
|
71
|
+
const codePath = await buildFilePath(path, create_get_rates_handler_1.rateLogicName, `Could not find rating logic`);
|
|
72
|
+
const code = (await promises_1.readFile(codePath)).toString('base64');
|
|
73
|
+
return { code };
|
|
74
|
+
},
|
|
75
|
+
},
|
|
76
|
+
...['Rates', 'Variables'].map((x) => ({
|
|
77
|
+
path: `/NativeRating/:carrier_id/RateCards/:id/${x}`,
|
|
78
|
+
method: route_1.Method.GET,
|
|
79
|
+
file: async (req) => {
|
|
80
|
+
const path = await getRateCardPath(req);
|
|
81
|
+
return await buildFilePath(path, `${x.toLowerCase()}.json`, `Could not find ${x.toLowerCase()}`);
|
|
82
|
+
},
|
|
83
|
+
})),
|
|
84
|
+
{
|
|
85
|
+
path: '/NativeRating/:carrier_id/Implementation',
|
|
86
|
+
method: route_1.Method.GET,
|
|
87
|
+
handler: async (req) => {
|
|
88
|
+
const { path } = await getCarrierDetails(req);
|
|
89
|
+
const codePath = await buildFilePath(path, create_get_rates_handler_1.rateLogicName, `Could not find rating logic`);
|
|
90
|
+
const code = (await promises_1.readFile(codePath)).toString('base64');
|
|
91
|
+
return { code };
|
|
92
|
+
},
|
|
93
|
+
},
|
|
94
|
+
{
|
|
95
|
+
path: '/NativeRating/:carrier_id/Zones',
|
|
96
|
+
method: route_1.Method.GET,
|
|
97
|
+
file: async (req) => {
|
|
98
|
+
const { path } = await getCarrierDetails(req);
|
|
99
|
+
return await buildFilePath(path, 'zones.json', `Could not find zones`);
|
|
100
|
+
},
|
|
101
|
+
},
|
|
102
|
+
];
|
|
103
|
+
};
|
|
104
|
+
exports.buildNativeRatingRoutes = buildNativeRatingRoutes;
|
|
105
|
+
//# sourceMappingURL=build-native-rating-routes.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"build-native-rating-routes.js","sourceRoot":"","sources":["../../src/app/build-native-rating-routes.ts"],"names":[],"mappings":"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"}
|
package/lib/app/carrier-app.js
CHANGED
|
@@ -9,6 +9,8 @@ const metadata_1 = require("./internal/metadata");
|
|
|
9
9
|
const metadata_2 = require("./metadata");
|
|
10
10
|
const responses_1 = require("../responses");
|
|
11
11
|
const fs_1 = tslib_1.__importDefault(require("fs"));
|
|
12
|
+
const create_get_rates_handler_1 = require("./create-get-rates-handler");
|
|
13
|
+
const build_native_rating_routes_1 = require("./build-native-rating-routes");
|
|
12
14
|
const handleRequest = (implementation) => {
|
|
13
15
|
if (implementation) {
|
|
14
16
|
return async (request) => {
|
|
@@ -49,6 +51,7 @@ class CarrierApp {
|
|
|
49
51
|
return results.error.details.map((detail) => `${detail.message}`);
|
|
50
52
|
}
|
|
51
53
|
};
|
|
54
|
+
const ratingImplementation = create_get_rates_handler_1.createGetRatesHandler(definition);
|
|
52
55
|
new Array([
|
|
53
56
|
internal_1.Method.POST,
|
|
54
57
|
constants_1.ApiEndpoints.CancelNotification,
|
|
@@ -64,7 +67,7 @@ class CarrierApp {
|
|
|
64
67
|
constants_1.ApiEndpoints.CreateNotification,
|
|
65
68
|
definition.CreateNotification,
|
|
66
69
|
responses_1.CreateNotificationResponseSchema,
|
|
67
|
-
], [internal_1.Method.POST, constants_1.ApiEndpoints.GetRates,
|
|
70
|
+
], [internal_1.Method.POST, constants_1.ApiEndpoints.GetRates, ratingImplementation, responses_1.GetRatesResponseSchema], [
|
|
68
71
|
internal_1.Method.POST,
|
|
69
72
|
constants_1.ApiEndpoints.NormalizeTrackingData,
|
|
70
73
|
definition.NormalizeTrackingData,
|
|
@@ -118,6 +121,7 @@ class CarrierApp {
|
|
|
118
121
|
return await this.getDocumentTemplate(request);
|
|
119
122
|
},
|
|
120
123
|
});
|
|
124
|
+
build_native_rating_routes_1.buildNativeRatingRoutes(definition.Metadata).forEach((x) => this.routes.push(x));
|
|
121
125
|
this.data = new metadata_1.Metadata(definition);
|
|
122
126
|
this.redoc = JSON.stringify(spec_1.OpenApiSpecification);
|
|
123
127
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"carrier-app.js","sourceRoot":"","sources":["../../src/app/carrier-app.ts"],"names":[],"mappings":";;;;AACA,yCAA6E;AAC7E,2CAA2C;AAC3C,kCAA+C;AAE/C,kDAA+C;AAE/C,
|
|
1
|
+
{"version":3,"file":"carrier-app.js","sourceRoot":"","sources":["../../src/app/carrier-app.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
import { GetRatesRequest } from '../requests';
|
|
2
|
+
import { CarrierAppDefinition } from './carrier-app-definition';
|
|
3
|
+
import { RateResultsAndId } from './native-rating/implementation-type';
|
|
4
|
+
export declare const rateLogicName = "rate-shipments.js";
|
|
5
|
+
export declare const createGetRatesHandler: (definition: CarrierAppDefinition) => ((req: GetRatesRequest) => import("..").GetRatesResponse | Promise<import("..").GetRatesResponse> | Promise<RateResultsAndId | undefined> | undefined) | undefined;
|
|
@@ -0,0 +1,95 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.createGetRatesHandler = exports.rateLogicName = void 0;
|
|
4
|
+
const tslib_1 = require("tslib");
|
|
5
|
+
const path_1 = require("path");
|
|
6
|
+
const fs_1 = require("fs");
|
|
7
|
+
const base_rate_context_1 = require("./native-rating/base-rate-context");
|
|
8
|
+
const create_dynamic_carrier_1 = tslib_1.__importDefault(require("./native-rating/create-dynamic-carrier"));
|
|
9
|
+
exports.rateLogicName = 'rate-shipments.js';
|
|
10
|
+
const runNativeRatingLocally = process.env.LOCAL_NATIVE_RATING
|
|
11
|
+
? process.env.LOCAL_NATIVE_RATING !== 'false'
|
|
12
|
+
: process.env.NODE_ENV !== 'production';
|
|
13
|
+
const createImplementation = (basePath) => {
|
|
14
|
+
const logicPath = path_1.join(basePath, exports.rateLogicName);
|
|
15
|
+
if (!fs_1.existsSync(logicPath)) {
|
|
16
|
+
console.log(`Logic implementation does not exist at ${logicPath}`);
|
|
17
|
+
return undefined;
|
|
18
|
+
}
|
|
19
|
+
const rawImplementation = fs_1.readFileSync(logicPath, 'utf8');
|
|
20
|
+
return create_dynamic_carrier_1.default(rawImplementation);
|
|
21
|
+
};
|
|
22
|
+
const createNativeRatingHandler = (carrier) => {
|
|
23
|
+
var _a;
|
|
24
|
+
if (!carrier.NativeRating) {
|
|
25
|
+
console.log('Carrier does NOT have a Native Rating property in its config');
|
|
26
|
+
return undefined;
|
|
27
|
+
}
|
|
28
|
+
console.dir(carrier.NativeRating);
|
|
29
|
+
const basePath = carrier.NativeRating.Path;
|
|
30
|
+
if (!basePath) {
|
|
31
|
+
console.log('Carrier does NOT have a Native Rating path set');
|
|
32
|
+
return undefined;
|
|
33
|
+
}
|
|
34
|
+
if (!fs_1.existsSync(basePath)) {
|
|
35
|
+
console.log(`Path for Native Rating '${basePath}' does not exist`);
|
|
36
|
+
return undefined;
|
|
37
|
+
}
|
|
38
|
+
try {
|
|
39
|
+
const buildContext = base_rate_context_1.createContextBuilder(basePath);
|
|
40
|
+
const defaultImplementation = createImplementation(basePath);
|
|
41
|
+
const rateCards = Object.fromEntries(((_a = carrier.NativeRating.RateCards) === null || _a === void 0 ? void 0 : _a.map((card) => {
|
|
42
|
+
const impl = createImplementation(path_1.join(basePath, card.Id)) || defaultImplementation;
|
|
43
|
+
if (!impl) {
|
|
44
|
+
throw new Error(`Cannot find default nor card specific rating logic for rate card ${card.Id}`);
|
|
45
|
+
}
|
|
46
|
+
const context = buildContext(card);
|
|
47
|
+
const rateShipments = (req) => impl.rateShipments(context, [{ id: 'rate-request', shipment: req }]);
|
|
48
|
+
return [card.Id, rateShipments];
|
|
49
|
+
})) || []);
|
|
50
|
+
const defaultRateCard = rateCards[carrier.NativeRating.DefaultRateCardId];
|
|
51
|
+
if (!defaultRateCard) {
|
|
52
|
+
throw new Error(`Could not find a rate card definition for default rate card ${carrier.NativeRating.DefaultRateCardId}`);
|
|
53
|
+
}
|
|
54
|
+
return async (req) => {
|
|
55
|
+
var _a;
|
|
56
|
+
const rateCardId = (_a = req.metadata) === null || _a === void 0 ? void 0 : _a['native-rating-rate-card'];
|
|
57
|
+
const rateShipments = rateCardId ? rateCards[rateCardId] : defaultRateCard;
|
|
58
|
+
if (!rateShipments) {
|
|
59
|
+
throw new Error(`Could not find rate card ${rateCardId}`);
|
|
60
|
+
}
|
|
61
|
+
const results = await rateShipments(req);
|
|
62
|
+
return results.find((x) => x.id === 'rate-request');
|
|
63
|
+
};
|
|
64
|
+
}
|
|
65
|
+
catch (err) {
|
|
66
|
+
console.warn(err === null || err === void 0 ? void 0 : err.message);
|
|
67
|
+
return undefined;
|
|
68
|
+
}
|
|
69
|
+
};
|
|
70
|
+
const createGetRatesHandler = (definition) => {
|
|
71
|
+
if (!runNativeRatingLocally) {
|
|
72
|
+
return definition.GetRates;
|
|
73
|
+
}
|
|
74
|
+
const nativeRatingCarriers = definition.Metadata.Carriers.map((x) => ({
|
|
75
|
+
apiCode: x.ApiCode || x.Name,
|
|
76
|
+
handler: createNativeRatingHandler(x) || definition.GetRates,
|
|
77
|
+
})).filter((x) => x.handler !== undefined);
|
|
78
|
+
// If there aren't any native rating implementations found, return whatever is defined in the definition
|
|
79
|
+
// This is what should happen in production because the Kong gateway should route any rate requests for NR
|
|
80
|
+
// carriers directly to the Native Rating service
|
|
81
|
+
if (nativeRatingCarriers.length === 0) {
|
|
82
|
+
console.log('No native rating implementations, returning GetRates implementation');
|
|
83
|
+
return definition.GetRates;
|
|
84
|
+
}
|
|
85
|
+
// If there's only a single carrier defined, just return the Native Rating handler so that we can avoid
|
|
86
|
+
// requiring the "carrier_code" property be set on the "metadata" object when testing
|
|
87
|
+
if (definition.Metadata.Carriers.length === 1) {
|
|
88
|
+
console.log('Only a single carrier and it uses Native Rating');
|
|
89
|
+
return nativeRatingCarriers[0].handler;
|
|
90
|
+
}
|
|
91
|
+
const implementationLookup = Object.fromEntries(nativeRatingCarriers.map((x) => [x.apiCode, x.handler]));
|
|
92
|
+
return (req) => { var _a, _b; return (_b = implementationLookup[(_a = req.metadata) === null || _a === void 0 ? void 0 : _a['carrier_code']]) === null || _b === void 0 ? void 0 : _b.call(implementationLookup, req); };
|
|
93
|
+
};
|
|
94
|
+
exports.createGetRatesHandler = createGetRatesHandler;
|
|
95
|
+
//# sourceMappingURL=create-get-rates-handler.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"create-get-rates-handler.js","sourceRoot":"","sources":["../../src/app/create-get-rates-handler.ts"],"names":[],"mappings":"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"}
|
package/lib/app/index.d.ts
CHANGED
package/lib/app/index.js
CHANGED
|
@@ -4,4 +4,5 @@ const tslib_1 = require("tslib");
|
|
|
4
4
|
tslib_1.__exportStar(require("./metadata"), exports);
|
|
5
5
|
tslib_1.__exportStar(require("./carrier-app-definition"), exports);
|
|
6
6
|
tslib_1.__exportStar(require("./carrier-app"), exports);
|
|
7
|
+
tslib_1.__exportStar(require("./native-rating"), exports);
|
|
7
8
|
//# sourceMappingURL=index.js.map
|
package/lib/app/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/app/index.ts"],"names":[],"mappings":";;;AAAA,qDAA2B;AAC3B,mEAAyC;AACzC,wDAA8B"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/app/index.ts"],"names":[],"mappings":";;;AAAA,qDAA2B;AAC3B,mEAAyC;AACzC,wDAA8B;AAC9B,0DAAgC"}
|
|
@@ -8,6 +8,7 @@ import { ConfirmationDictionary, ConfirmationType } from '../metadata/confirmati
|
|
|
8
8
|
import { LabelFormatsEnum } from '../metadata/label-formats';
|
|
9
9
|
import { LabelSizesEnum } from '../metadata/label-sizes';
|
|
10
10
|
import { CarrierAttributeEnum } from '../metadata/carrier-attributes';
|
|
11
|
+
import { NativeRatingSpecification } from './native-rating-specification';
|
|
11
12
|
export declare const mapShippingOptions: (options?: ShippingOptionDictionary | undefined) => ShippingOption[] | undefined;
|
|
12
13
|
export declare const mapConfirmationTypes: (types?: ConfirmationDictionary | undefined) => ConfirmationType[];
|
|
13
14
|
/** @description This represents what we send to data manager */
|
|
@@ -31,10 +32,7 @@ export declare class CarrierSpecification {
|
|
|
31
32
|
LogoUrl: string;
|
|
32
33
|
IconUrl: string;
|
|
33
34
|
};
|
|
34
|
-
NativeRating?:
|
|
35
|
-
AppId: string;
|
|
36
|
-
DefaultRateCard: string;
|
|
37
|
-
};
|
|
35
|
+
NativeRating?: NativeRatingSpecification;
|
|
38
36
|
DocumentTemplate?: string;
|
|
39
37
|
constructor(definition: Carrier);
|
|
40
38
|
}
|
|
@@ -48,6 +48,14 @@ const mapAccountModal = (modal) => {
|
|
|
48
48
|
},
|
|
49
49
|
};
|
|
50
50
|
};
|
|
51
|
+
const mapNativeRating = (model) => {
|
|
52
|
+
if (!model) {
|
|
53
|
+
return undefined;
|
|
54
|
+
}
|
|
55
|
+
return {
|
|
56
|
+
DefaultRateCard: model.DefaultRateCardId,
|
|
57
|
+
};
|
|
58
|
+
};
|
|
51
59
|
/** @description This represents what we send to data manager */
|
|
52
60
|
class CarrierSpecification {
|
|
53
61
|
constructor(definition) {
|
|
@@ -70,7 +78,7 @@ class CarrierSpecification {
|
|
|
70
78
|
this.TrackingUrl = definition.TrackingUrl;
|
|
71
79
|
this.CarrierUrl = definition.CarrierUrl;
|
|
72
80
|
this.Description = definition.Description;
|
|
73
|
-
this.NativeRating = definition.NativeRating;
|
|
81
|
+
this.NativeRating = mapNativeRating(definition.NativeRating);
|
|
74
82
|
this.DocumentTemplate = definition.DocumentTemplate;
|
|
75
83
|
}
|
|
76
84
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"carrier-specification.js","sourceRoot":"","sources":["../../../src/app/internal/carrier-specification.ts"],"names":[],"mappings":";;;
|
|
1
|
+
{"version":3,"file":"carrier-specification.js","sourceRoot":"","sources":["../../../src/app/internal/carrier-specification.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"native-rating-specification.js","sourceRoot":"","sources":["../../../src/app/internal/native-rating-specification.ts"],"names":[],"mappings":""}
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { Request } from 'express';
|
|
1
2
|
export declare enum Method {
|
|
2
3
|
POST = "post",
|
|
3
4
|
GET = "get",
|
|
@@ -5,9 +6,22 @@ export declare enum Method {
|
|
|
5
6
|
PATCH = "patch",
|
|
6
7
|
DELETE = "delete"
|
|
7
8
|
}
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
9
|
+
/** @description The definition for a route that will serve up the contents of a file */
|
|
10
|
+
export interface FileRoute {
|
|
11
|
+
/** @description The file that should be sent to the client. If this is set, handler will not be used. */
|
|
12
|
+
file: string | ((req: Request) => string | Promise<string>);
|
|
13
|
+
}
|
|
14
|
+
/** @description The definition for a route and how it will be handled */
|
|
15
|
+
export interface HandlerRoute {
|
|
16
|
+
/** @description The method that will be called to handle this request */
|
|
11
17
|
handler?: (req: any) => any | Promise<any>;
|
|
18
|
+
/** @description The optional method used to validate the response for this route. Used for warning purposes. */
|
|
12
19
|
validateResponse?: (response: any) => string[] | undefined;
|
|
13
20
|
}
|
|
21
|
+
/** @description The definition for all types of routes */
|
|
22
|
+
export declare type Route = {
|
|
23
|
+
/** @description The path to the endpoint you wish to expose @example "/CreateLabel", "/sales_orders_export" */
|
|
24
|
+
path: string;
|
|
25
|
+
/** @description The http verb used for this endpoint @example "GET", "POST" */
|
|
26
|
+
method: Method;
|
|
27
|
+
} & (FileRoute | HandlerRoute);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"route.js","sourceRoot":"","sources":["../../../src/app/internal/route.ts"],"names":[],"mappings":";;;
|
|
1
|
+
{"version":3,"file":"route.js","sourceRoot":"","sources":["../../../src/app/internal/route.ts"],"names":[],"mappings":";;;AAEA,IAAY,MAMX;AAND,WAAY,MAAM;IAChB,uBAAa,CAAA;IACb,qBAAW,CAAA;IACX,qBAAW,CAAA;IACX,yBAAe,CAAA;IACf,2BAAiB,CAAA;AACnB,CAAC,EANW,MAAM,GAAN,cAAM,KAAN,cAAM,QAMjB"}
|
|
@@ -8,6 +8,7 @@ import { LabelFormatsEnum } from './label-formats';
|
|
|
8
8
|
import { LabelSizesEnum } from './label-sizes';
|
|
9
9
|
import { ConfirmationDictionary } from './confirmation-type';
|
|
10
10
|
import Joi from 'joi';
|
|
11
|
+
import { NativeRatingConfiguration } from './native-rating-configuration';
|
|
11
12
|
/** @description Basic structure for each carrier */
|
|
12
13
|
export interface Carrier {
|
|
13
14
|
/** @description Defines UI Modals for connecting and updating settings */
|
|
@@ -48,12 +49,7 @@ export interface Carrier {
|
|
|
48
49
|
Icon: string;
|
|
49
50
|
};
|
|
50
51
|
/** @description If this carrier uses Native Rating, details about the connection */
|
|
51
|
-
NativeRating?:
|
|
52
|
-
/** @description Id of the Native Rating app */
|
|
53
|
-
AppId: string;
|
|
54
|
-
/** @description Default rate card to use for rating */
|
|
55
|
-
DefaultRateCard: string;
|
|
56
|
-
};
|
|
52
|
+
NativeRating?: NativeRatingConfiguration;
|
|
57
53
|
/** @description This is the file path to the documents template, which is used by Rendering Service. Optional. If it's filled and template file provided, ApiCode must be filled. ApiCode will be used to identify the file in Rendering Service.*/
|
|
58
54
|
DocumentTemplate?: string;
|
|
59
55
|
}
|
|
@@ -11,15 +11,9 @@ const carrier_attributes_1 = require("./carrier-attributes");
|
|
|
11
11
|
const label_formats_1 = require("./label-formats");
|
|
12
12
|
const label_sizes_1 = require("./label-sizes");
|
|
13
13
|
const confirmation_type_1 = require("./confirmation-type");
|
|
14
|
-
const fs_1 = require("fs");
|
|
15
14
|
const joi_1 = tslib_1.__importDefault(require("joi"));
|
|
15
|
+
const file_exists_1 = require("./custom-validators/file-exists");
|
|
16
16
|
const connect_runtime_1 = require("@shipengine/connect-runtime");
|
|
17
|
-
const fileExists = (value, helpers) => {
|
|
18
|
-
if (fs_1.existsSync(value)) {
|
|
19
|
-
return value;
|
|
20
|
-
}
|
|
21
|
-
throw new Error(`the file ${value} doesn't exist`);
|
|
22
|
-
};
|
|
23
17
|
exports.CarrierSchema = joi_1.default.object({
|
|
24
18
|
AccountModals: account_modals_1.AccountModalsSchema.required(),
|
|
25
19
|
PackageTypes: joi_1.default.array().optional().items(package_type_1.PackageTypeSchema).unique('Id'),
|
|
@@ -46,18 +40,18 @@ exports.CarrierSchema = joi_1.default.object({
|
|
|
46
40
|
Images: joi_1.default.object({
|
|
47
41
|
Icon: joi_1.default.string()
|
|
48
42
|
.required()
|
|
49
|
-
.custom(fileExists, 'icon exists')
|
|
43
|
+
.custom(file_exists_1.fileExists, 'icon exists')
|
|
50
44
|
.pattern(new RegExp('^.*.(svg)$'))
|
|
51
45
|
.message('Images.Icon must be a svg file.'),
|
|
52
46
|
Logo: joi_1.default.string()
|
|
53
47
|
.required()
|
|
54
|
-
.custom(fileExists, 'logo exists')
|
|
48
|
+
.custom(file_exists_1.fileExists, 'logo exists')
|
|
55
49
|
.pattern(new RegExp('^.*.(svg)$'))
|
|
56
50
|
.message('Images.Logo must be a svg file.'),
|
|
57
51
|
}).required(),
|
|
58
52
|
DocumentTemplate: joi_1.default.string()
|
|
59
53
|
.optional()
|
|
60
|
-
.custom(fileExists, 'template exists')
|
|
54
|
+
.custom(file_exists_1.fileExists, 'template exists')
|
|
61
55
|
.pattern(new RegExp('^.*.carrier$'))
|
|
62
56
|
.message('Template file must have .carrier extension.'),
|
|
63
57
|
}).with('DocumentTemplate', 'ApiCode');
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"carrier.js","sourceRoot":"","sources":["../../../src/app/metadata/carrier.ts"],"names":[],"mappings":";;;;AAAA,qDAAsE;AACtE,iDAAgE;AAChE,yDAA4E;AAC5E,uDAA6F;AAC7F,+DAAqF;AACrF,6DAAwF;AACxF,mDAA2E;AAC3E,+CAAqE;AACrE,2DAA2F;AAC3F,
|
|
1
|
+
{"version":3,"file":"carrier.js","sourceRoot":"","sources":["../../../src/app/metadata/carrier.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export declare const fileExists: (value: string, helpers: any) => string;
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.fileExists = void 0;
|
|
4
|
+
const fs_1 = require("fs");
|
|
5
|
+
const fileExists = (value, helpers) => {
|
|
6
|
+
if (fs_1.existsSync(value)) {
|
|
7
|
+
return value;
|
|
8
|
+
}
|
|
9
|
+
throw new Error("the file doesn't exist");
|
|
10
|
+
};
|
|
11
|
+
exports.fileExists = fileExists;
|
|
12
|
+
//# sourceMappingURL=file-exists.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"file-exists.js","sourceRoot":"","sources":["../../../../src/app/metadata/custom-validators/file-exists.ts"],"names":[],"mappings":";;;AAAA,2BAAgC;AAEzB,MAAM,UAAU,GAAG,CAAC,KAAa,EAAE,OAAY,EAAE,EAAE;IACxD,IAAI,eAAU,CAAC,KAAK,CAAC,EAAE;QACrB,OAAO,KAAK,CAAC;KACd;IACD,MAAM,IAAI,KAAK,CAAC,wBAAwB,CAAC,CAAC;AAC5C,CAAC,CAAC;AALW,QAAA,UAAU,cAKrB"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import Joi from 'joi';
|
|
2
|
+
import { RateCard } from './rate-card';
|
|
3
|
+
/** Configuration for attaching Native Rating to a carrier */
|
|
4
|
+
export interface NativeRatingConfiguration {
|
|
5
|
+
/** @description Default rate card to use for rating */
|
|
6
|
+
DefaultRateCardId: string;
|
|
7
|
+
/** Path to rating logic and rate card data for this carrier */
|
|
8
|
+
Path?: string;
|
|
9
|
+
/** Array of rate cards for the carrier */
|
|
10
|
+
RateCards?: RateCard[];
|
|
11
|
+
}
|
|
12
|
+
export declare const NativeRatingConfigurationSchema: Joi.ObjectSchema<any>;
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.NativeRatingConfigurationSchema = void 0;
|
|
4
|
+
const tslib_1 = require("tslib");
|
|
5
|
+
const joi_1 = tslib_1.__importDefault(require("joi"));
|
|
6
|
+
const file_exists_1 = require("./custom-validators/file-exists");
|
|
7
|
+
const rate_card_1 = require("./rate-card");
|
|
8
|
+
exports.NativeRatingConfigurationSchema = joi_1.default.object({
|
|
9
|
+
DefaultRateCard: joi_1.default.string().required(),
|
|
10
|
+
Path: joi_1.default.string().optional().custom(file_exists_1.fileExists, 'implementation path exists'),
|
|
11
|
+
RateCards: joi_1.default.array().optional().items(rate_card_1.RateCardSchema).unique('Id'),
|
|
12
|
+
});
|
|
13
|
+
//# sourceMappingURL=native-rating-configuration.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"native-rating-configuration.js","sourceRoot":"","sources":["../../../src/app/metadata/native-rating-configuration.ts"],"names":[],"mappings":";;;;AAAA,sDAAsB;AACtB,iEAA6D;AAC7D,2CAAuD;AAY1C,QAAA,+BAA+B,GAAG,aAAG,CAAC,MAAM,CAAC;IACxD,eAAe,EAAE,aAAG,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IACxC,IAAI,EAAE,aAAG,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,wBAAU,EAAE,4BAA4B,CAAC;IAC9E,SAAS,EAAE,aAAG,CAAC,KAAK,EAAE,CAAC,QAAQ,EAAE,CAAC,KAAK,CAAC,0BAAc,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC;CACrE,CAAC,CAAC"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import Joi from 'joi';
|
|
2
|
+
/** Configuration for a given rate card */
|
|
3
|
+
export interface RateCard {
|
|
4
|
+
/** Externally facing id of the rate card. */
|
|
5
|
+
Id: string;
|
|
6
|
+
/** Currency of the rate card. This uses the three-digit currency code format. */
|
|
7
|
+
Currency: string;
|
|
8
|
+
}
|
|
9
|
+
export declare const RateCardSchema: Joi.ObjectSchema<any>;
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.RateCardSchema = void 0;
|
|
4
|
+
const tslib_1 = require("tslib");
|
|
5
|
+
const joi_1 = tslib_1.__importDefault(require("joi"));
|
|
6
|
+
exports.RateCardSchema = joi_1.default.object({
|
|
7
|
+
Id: joi_1.default.string().required(),
|
|
8
|
+
Currency: joi_1.default.string().required().length(3),
|
|
9
|
+
});
|
|
10
|
+
//# sourceMappingURL=rate-card.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"rate-card.js","sourceRoot":"","sources":["../../../src/app/metadata/rate-card.ts"],"names":[],"mappings":";;;;AAAA,sDAAsB;AAUT,QAAA,cAAc,GAAG,aAAG,CAAC,MAAM,CAAC;IACvC,EAAE,EAAE,aAAG,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAC3B,QAAQ,EAAE,aAAG,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC;CAC5C,CAAC,CAAC"}
|