@veho/turvo-integration-sdk 0.1.0-beta.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.
Files changed (57) hide show
  1. package/README.md +473 -0
  2. package/index.ts +1 -0
  3. package/lib/cjs/api/turvoInternalApi.d.ts +23 -0
  4. package/lib/cjs/api/turvoInternalApi.js +36 -0
  5. package/lib/cjs/api/turvoPublicApi.d.ts +99 -0
  6. package/lib/cjs/api/turvoPublicApi.js +103 -0
  7. package/lib/cjs/client/turvoClient.d.ts +49 -0
  8. package/lib/cjs/client/turvoClient.js +180 -0
  9. package/lib/cjs/constants.d.ts +29 -0
  10. package/lib/cjs/constants.js +33 -0
  11. package/lib/cjs/index.d.ts +6 -0
  12. package/lib/cjs/index.js +37 -0
  13. package/lib/cjs/shipmentTracking/index.d.ts +22 -0
  14. package/lib/cjs/shipmentTracking/index.js +39 -0
  15. package/lib/cjs/shipmentTracking/trackingService.d.ts +25 -0
  16. package/lib/cjs/shipmentTracking/trackingService.js +85 -0
  17. package/lib/cjs/types/common.d.ts +64 -0
  18. package/lib/cjs/types/common.js +27 -0
  19. package/lib/cjs/types/config.d.ts +13 -0
  20. package/lib/cjs/types/config.js +3 -0
  21. package/lib/cjs/types/errors.d.ts +35 -0
  22. package/lib/cjs/types/errors.js +63 -0
  23. package/lib/cjs/types/index.d.ts +5 -0
  24. package/lib/cjs/types/index.js +27 -0
  25. package/lib/cjs/types/shipment.d.ts +379 -0
  26. package/lib/cjs/types/shipment.js +46 -0
  27. package/lib/cjs/types/tracking.d.ts +65 -0
  28. package/lib/cjs/types/tracking.js +3 -0
  29. package/lib/esm/api/turvoInternalApi.d.ts +23 -0
  30. package/lib/esm/api/turvoInternalApi.js +32 -0
  31. package/lib/esm/api/turvoPublicApi.d.ts +99 -0
  32. package/lib/esm/api/turvoPublicApi.js +99 -0
  33. package/lib/esm/client/turvoClient.d.ts +49 -0
  34. package/lib/esm/client/turvoClient.js +172 -0
  35. package/lib/esm/constants.d.ts +29 -0
  36. package/lib/esm/constants.js +30 -0
  37. package/lib/esm/index.d.ts +6 -0
  38. package/lib/esm/index.js +11 -0
  39. package/lib/esm/shipmentTracking/index.d.ts +22 -0
  40. package/lib/esm/shipmentTracking/index.js +36 -0
  41. package/lib/esm/shipmentTracking/trackingService.d.ts +25 -0
  42. package/lib/esm/shipmentTracking/trackingService.js +81 -0
  43. package/lib/esm/types/common.d.ts +64 -0
  44. package/lib/esm/types/common.js +23 -0
  45. package/lib/esm/types/config.d.ts +13 -0
  46. package/lib/esm/types/config.js +2 -0
  47. package/lib/esm/types/errors.d.ts +35 -0
  48. package/lib/esm/types/errors.js +55 -0
  49. package/lib/esm/types/index.d.ts +5 -0
  50. package/lib/esm/types/index.js +11 -0
  51. package/lib/esm/types/shipment.d.ts +379 -0
  52. package/lib/esm/types/shipment.js +43 -0
  53. package/lib/esm/types/tracking.d.ts +65 -0
  54. package/lib/esm/types/tracking.js +2 -0
  55. package/lib/tsconfig.cjs.tsbuildinfo +1 -0
  56. package/lib/tsconfig.esm.tsbuildinfo +1 -0
  57. package/package.json +126 -0
@@ -0,0 +1,64 @@
1
+ export declare class TurvoApiError extends Error {
2
+ errorCode: string;
3
+ errorMessage: string;
4
+ constructor(errorCode: string, errorMessage: string);
5
+ }
6
+ export type TurvoApiResult<T = void> = {
7
+ Status: 'SUCCESS' | string;
8
+ details: T;
9
+ };
10
+ export declare enum TurvoApiResponseStatus {
11
+ SUCCESS = "SUCCESS",
12
+ ERROR = "ERROR"
13
+ }
14
+ export declare enum TurvoApiMethod {
15
+ GET = "GET",
16
+ POST = "POST",
17
+ PUT = "PUT",
18
+ DELETE = "DELETE"
19
+ }
20
+ export type TurvoPagedResult<K extends string, T extends Record<any, unknown>> = {
21
+ pagination: {
22
+ start: number;
23
+ pageSize: number;
24
+ totalRecordsInPage: number;
25
+ moreAvailable: boolean;
26
+ };
27
+ } & (Record<K, T[]> | Record<K, undefined>);
28
+ export type TurvoFilterShipmentsResultItem = {
29
+ id: number;
30
+ customId: string;
31
+ lastUpdatedOn: string;
32
+ updated: string;
33
+ createdDate: string;
34
+ created: string;
35
+ status: {
36
+ code: TurvoLookup;
37
+ };
38
+ customerOrder: {
39
+ id: number;
40
+ customer: {
41
+ id: number;
42
+ name: string;
43
+ };
44
+ }[];
45
+ carrierOrder: {
46
+ id: number;
47
+ carrier: {
48
+ name: string;
49
+ id: number;
50
+ };
51
+ }[];
52
+ };
53
+ export type TurvoDateWithTimezone = {
54
+ date: string;
55
+ timeZone: string;
56
+ };
57
+ export type TurvoDateWithTimezoneLowercase = {
58
+ date: string;
59
+ timezone: string;
60
+ };
61
+ export type TurvoLookup = {
62
+ key: string;
63
+ value: string;
64
+ };
@@ -0,0 +1,23 @@
1
+ /* eslint-disable @typescript-eslint/no-explicit-any */
2
+ export class TurvoApiError extends Error {
3
+ errorCode;
4
+ errorMessage;
5
+ constructor(errorCode, errorMessage) {
6
+ super(`Turvo Api Response Error ${errorCode}: ${errorMessage}`);
7
+ this.errorCode = errorCode;
8
+ this.errorMessage = errorMessage;
9
+ }
10
+ }
11
+ export var TurvoApiResponseStatus;
12
+ (function (TurvoApiResponseStatus) {
13
+ TurvoApiResponseStatus["SUCCESS"] = "SUCCESS";
14
+ TurvoApiResponseStatus["ERROR"] = "ERROR";
15
+ })(TurvoApiResponseStatus || (TurvoApiResponseStatus = {}));
16
+ export var TurvoApiMethod;
17
+ (function (TurvoApiMethod) {
18
+ TurvoApiMethod["GET"] = "GET";
19
+ TurvoApiMethod["POST"] = "POST";
20
+ TurvoApiMethod["PUT"] = "PUT";
21
+ TurvoApiMethod["DELETE"] = "DELETE";
22
+ })(TurvoApiMethod || (TurvoApiMethod = {}));
23
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29tbW9uLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL3R5cGVzL2NvbW1vbi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSx1REFBdUQ7QUFDdkQsTUFBTSxPQUFPLGFBQWMsU0FBUSxLQUFLO0lBQ3RDLFNBQVMsQ0FBUTtJQUNqQixZQUFZLENBQVE7SUFFcEIsWUFBWSxTQUFpQixFQUFFLFlBQW9CO1FBQ2pELEtBQUssQ0FBQyw0QkFBNEIsU0FBUyxLQUFLLFlBQVksRUFBRSxDQUFDLENBQUE7UUFDL0QsSUFBSSxDQUFDLFNBQVMsR0FBRyxTQUFTLENBQUE7UUFDMUIsSUFBSSxDQUFDLFlBQVksR0FBRyxZQUFZLENBQUE7SUFDbEMsQ0FBQztDQUNGO0FBT0QsTUFBTSxDQUFOLElBQVksc0JBR1g7QUFIRCxXQUFZLHNCQUFzQjtJQUNoQyw2Q0FBbUIsQ0FBQTtJQUNuQix5Q0FBZSxDQUFBO0FBQ2pCLENBQUMsRUFIVyxzQkFBc0IsS0FBdEIsc0JBQXNCLFFBR2pDO0FBRUQsTUFBTSxDQUFOLElBQVksY0FLWDtBQUxELFdBQVksY0FBYztJQUN4Qiw2QkFBVyxDQUFBO0lBQ1gsK0JBQWEsQ0FBQTtJQUNiLDZCQUFXLENBQUE7SUFDWCxtQ0FBaUIsQ0FBQTtBQUNuQixDQUFDLEVBTFcsY0FBYyxLQUFkLGNBQWMsUUFLekIiLCJzb3VyY2VzQ29udGVudCI6WyIvKiBlc2xpbnQtZGlzYWJsZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZXhwbGljaXQtYW55ICovXG5leHBvcnQgY2xhc3MgVHVydm9BcGlFcnJvciBleHRlbmRzIEVycm9yIHtcbiAgZXJyb3JDb2RlOiBzdHJpbmdcbiAgZXJyb3JNZXNzYWdlOiBzdHJpbmdcblxuICBjb25zdHJ1Y3RvcihlcnJvckNvZGU6IHN0cmluZywgZXJyb3JNZXNzYWdlOiBzdHJpbmcpIHtcbiAgICBzdXBlcihgVHVydm8gQXBpIFJlc3BvbnNlIEVycm9yICR7ZXJyb3JDb2RlfTogJHtlcnJvck1lc3NhZ2V9YClcbiAgICB0aGlzLmVycm9yQ29kZSA9IGVycm9yQ29kZVxuICAgIHRoaXMuZXJyb3JNZXNzYWdlID0gZXJyb3JNZXNzYWdlXG4gIH1cbn1cblxuZXhwb3J0IHR5cGUgVHVydm9BcGlSZXN1bHQ8VCA9IHZvaWQ+ID0ge1xuICBTdGF0dXM6ICdTVUNDRVNTJyB8IHN0cmluZ1xuICBkZXRhaWxzOiBUXG59XG5cbmV4cG9ydCBlbnVtIFR1cnZvQXBpUmVzcG9uc2VTdGF0dXMge1xuICBTVUNDRVNTID0gJ1NVQ0NFU1MnLFxuICBFUlJPUiA9ICdFUlJPUicsXG59XG5cbmV4cG9ydCBlbnVtIFR1cnZvQXBpTWV0aG9kIHtcbiAgR0VUID0gJ0dFVCcsXG4gIFBPU1QgPSAnUE9TVCcsXG4gIFBVVCA9ICdQVVQnLFxuICBERUxFVEUgPSAnREVMRVRFJyxcbn1cblxuZXhwb3J0IHR5cGUgVHVydm9QYWdlZFJlc3VsdDxLIGV4dGVuZHMgc3RyaW5nLCBUIGV4dGVuZHMgUmVjb3JkPGFueSwgdW5rbm93bj4+ID0ge1xuICBwYWdpbmF0aW9uOiB7XG4gICAgc3RhcnQ6IG51bWJlclxuICAgIHBhZ2VTaXplOiBudW1iZXJcbiAgICB0b3RhbFJlY29yZHNJblBhZ2U6IG51bWJlclxuICAgIG1vcmVBdmFpbGFibGU6IGJvb2xlYW5cbiAgfVxufSAmIChSZWNvcmQ8SywgVFtdPiB8IFJlY29yZDxLLCB1bmRlZmluZWQ+KVxuXG5leHBvcnQgdHlwZSBUdXJ2b0ZpbHRlclNoaXBtZW50c1Jlc3VsdEl0ZW0gPSB7XG4gIGlkOiBudW1iZXJcbiAgY3VzdG9tSWQ6IHN0cmluZ1xuICBsYXN0VXBkYXRlZE9uOiBzdHJpbmdcbiAgdXBkYXRlZDogc3RyaW5nXG4gIGNyZWF0ZWREYXRlOiBzdHJpbmdcbiAgY3JlYXRlZDogc3RyaW5nXG4gIHN0YXR1czogeyBjb2RlOiBUdXJ2b0xvb2t1cCB9XG4gIGN1c3RvbWVyT3JkZXI6IHtcbiAgICBpZDogbnVtYmVyXG4gICAgY3VzdG9tZXI6IHtcbiAgICAgIGlkOiBudW1iZXJcbiAgICAgIG5hbWU6IHN0cmluZ1xuICAgIH1cbiAgfVtdXG4gIGNhcnJpZXJPcmRlcjoge1xuICAgIGlkOiBudW1iZXJcbiAgICBjYXJyaWVyOiB7XG4gICAgICBuYW1lOiBzdHJpbmdcbiAgICAgIGlkOiBudW1iZXJcbiAgICB9XG4gIH1bXVxufVxuXG5leHBvcnQgdHlwZSBUdXJ2b0RhdGVXaXRoVGltZXpvbmUgPSB7XG4gIGRhdGU6IHN0cmluZ1xuICB0aW1lWm9uZTogc3RyaW5nXG59XG5cbmV4cG9ydCB0eXBlIFR1cnZvRGF0ZVdpdGhUaW1lem9uZUxvd2VyY2FzZSA9IHtcbiAgZGF0ZTogc3RyaW5nXG4gIHRpbWV6b25lOiBzdHJpbmdcbn1cblxuZXhwb3J0IHR5cGUgVHVydm9Mb29rdXAgPSB7XG4gIGtleTogc3RyaW5nXG4gIHZhbHVlOiBzdHJpbmdcbn1cbiJdfQ==
@@ -0,0 +1,13 @@
1
+ /**
2
+ * Turvo API credentials
3
+ */
4
+ export interface TurvoCredentials {
5
+ /** Turvo API key (x-api-key header) */
6
+ apiKey: string;
7
+ /** OAuth username */
8
+ username: string;
9
+ /** OAuth password */
10
+ password: string;
11
+ /** Turvo API base URL */
12
+ urlBase: string;
13
+ }
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29uZmlnLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL3R5cGVzL2NvbmZpZy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBUdXJ2byBBUEkgY3JlZGVudGlhbHNcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBUdXJ2b0NyZWRlbnRpYWxzIHtcbiAgLyoqIFR1cnZvIEFQSSBrZXkgKHgtYXBpLWtleSBoZWFkZXIpICovXG4gIGFwaUtleTogc3RyaW5nXG4gIC8qKiBPQXV0aCB1c2VybmFtZSAqL1xuICB1c2VybmFtZTogc3RyaW5nXG4gIC8qKiBPQXV0aCBwYXNzd29yZCAqL1xuICBwYXNzd29yZDogc3RyaW5nXG4gIC8qKiBUdXJ2byBBUEkgYmFzZSBVUkwgKi9cbiAgdXJsQmFzZTogc3RyaW5nXG59XG4iXX0=
@@ -0,0 +1,35 @@
1
+ /**
2
+ * Shipment not found in Turvo
3
+ */
4
+ export declare class TurvoNotFoundError extends Error {
5
+ readonly shipmentId: string;
6
+ constructor(shipmentId: string);
7
+ }
8
+ /**
9
+ * Authentication failed (invalid credentials, expired token)
10
+ */
11
+ export declare class TurvoAuthError extends Error {
12
+ constructor(message: string);
13
+ }
14
+ /**
15
+ * Rate limited by Turvo
16
+ */
17
+ export declare class TurvoRateLimitError extends Error {
18
+ readonly retryAfter?: number | undefined;
19
+ constructor(retryAfter?: number | undefined);
20
+ }
21
+ /**
22
+ * Internal API failed but public API succeeded.
23
+ * Contains partial data in `partialData` field.
24
+ */
25
+ export declare class TurvoPartialDataError extends Error {
26
+ readonly partialData: unknown;
27
+ readonly failedApis: string[];
28
+ constructor(partialData: unknown, failedApis: string[]);
29
+ }
30
+ /**
31
+ * Error thrown when Turvo secrets cannot be retrieved from AWS Secrets Manager
32
+ */
33
+ export declare class NoSecretError extends Error {
34
+ constructor(path: string);
35
+ }
@@ -0,0 +1,55 @@
1
+ /**
2
+ * Shipment not found in Turvo
3
+ */
4
+ export class TurvoNotFoundError extends Error {
5
+ shipmentId;
6
+ constructor(shipmentId) {
7
+ super(`Shipment not found in Turvo: ${shipmentId}`);
8
+ this.shipmentId = shipmentId;
9
+ this.name = 'TurvoNotFoundError';
10
+ }
11
+ }
12
+ /**
13
+ * Authentication failed (invalid credentials, expired token)
14
+ */
15
+ export class TurvoAuthError extends Error {
16
+ constructor(message) {
17
+ super(`Turvo authentication failed: ${message}`);
18
+ this.name = 'TurvoAuthError';
19
+ }
20
+ }
21
+ /**
22
+ * Rate limited by Turvo
23
+ */
24
+ export class TurvoRateLimitError extends Error {
25
+ retryAfter;
26
+ constructor(retryAfter) {
27
+ super(`Rate limited by Turvo${retryAfter ? `. Retry after ${retryAfter} seconds` : ''}`);
28
+ this.retryAfter = retryAfter;
29
+ this.name = 'TurvoRateLimitError';
30
+ }
31
+ }
32
+ /**
33
+ * Internal API failed but public API succeeded.
34
+ * Contains partial data in `partialData` field.
35
+ */
36
+ export class TurvoPartialDataError extends Error {
37
+ partialData;
38
+ failedApis;
39
+ constructor(partialData, failedApis) {
40
+ super(`Turvo internal API failed for: ${failedApis.join(', ')}. Partial data available.`);
41
+ this.partialData = partialData;
42
+ this.failedApis = failedApis;
43
+ this.name = 'TurvoPartialDataError';
44
+ }
45
+ }
46
+ /**
47
+ * Error thrown when Turvo secrets cannot be retrieved from AWS Secrets Manager
48
+ */
49
+ export class NoSecretError extends Error {
50
+ constructor(path) {
51
+ super(`No secret found at path: ${path}`);
52
+ this.name = 'NoSecretError';
53
+ }
54
+ }
55
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXJyb3JzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL3R5cGVzL2Vycm9ycy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7R0FFRztBQUNILE1BQU0sT0FBTyxrQkFBbUIsU0FBUSxLQUFLO0lBQ2Y7SUFBNUIsWUFBNEIsVUFBa0I7UUFDNUMsS0FBSyxDQUFDLGdDQUFnQyxVQUFVLEVBQUUsQ0FBQyxDQUFBO1FBRHpCLGVBQVUsR0FBVixVQUFVLENBQVE7UUFFNUMsSUFBSSxDQUFDLElBQUksR0FBRyxvQkFBb0IsQ0FBQTtJQUNsQyxDQUFDO0NBQ0Y7QUFFRDs7R0FFRztBQUNILE1BQU0sT0FBTyxjQUFlLFNBQVEsS0FBSztJQUN2QyxZQUFZLE9BQWU7UUFDekIsS0FBSyxDQUFDLGdDQUFnQyxPQUFPLEVBQUUsQ0FBQyxDQUFBO1FBQ2hELElBQUksQ0FBQyxJQUFJLEdBQUcsZ0JBQWdCLENBQUE7SUFDOUIsQ0FBQztDQUNGO0FBRUQ7O0dBRUc7QUFDSCxNQUFNLE9BQU8sbUJBQW9CLFNBQVEsS0FBSztJQUNoQjtJQUE1QixZQUE0QixVQUFtQjtRQUM3QyxLQUFLLENBQUMsd0JBQXdCLFVBQVUsQ0FBQyxDQUFDLENBQUMsaUJBQWlCLFVBQVUsVUFBVSxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFBO1FBRDlELGVBQVUsR0FBVixVQUFVLENBQVM7UUFFN0MsSUFBSSxDQUFDLElBQUksR0FBRyxxQkFBcUIsQ0FBQTtJQUNuQyxDQUFDO0NBQ0Y7QUFFRDs7O0dBR0c7QUFDSCxNQUFNLE9BQU8scUJBQXNCLFNBQVEsS0FBSztJQUU1QjtJQUNBO0lBRmxCLFlBQ2tCLFdBQW9CLEVBQ3BCLFVBQW9CO1FBRXBDLEtBQUssQ0FBQyxrQ0FBa0MsVUFBVSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsMkJBQTJCLENBQUMsQ0FBQTtRQUh6RSxnQkFBVyxHQUFYLFdBQVcsQ0FBUztRQUNwQixlQUFVLEdBQVYsVUFBVSxDQUFVO1FBR3BDLElBQUksQ0FBQyxJQUFJLEdBQUcsdUJBQXVCLENBQUE7SUFDckMsQ0FBQztDQUNGO0FBRUQ7O0dBRUc7QUFDSCxNQUFNLE9BQU8sYUFBYyxTQUFRLEtBQUs7SUFDdEMsWUFBWSxJQUFZO1FBQ3RCLEtBQUssQ0FBQyw0QkFBNEIsSUFBSSxFQUFFLENBQUMsQ0FBQTtRQUN6QyxJQUFJLENBQUMsSUFBSSxHQUFHLGVBQWUsQ0FBQTtJQUM3QixDQUFDO0NBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIFNoaXBtZW50IG5vdCBmb3VuZCBpbiBUdXJ2b1xuICovXG5leHBvcnQgY2xhc3MgVHVydm9Ob3RGb3VuZEVycm9yIGV4dGVuZHMgRXJyb3Ige1xuICBjb25zdHJ1Y3RvcihwdWJsaWMgcmVhZG9ubHkgc2hpcG1lbnRJZDogc3RyaW5nKSB7XG4gICAgc3VwZXIoYFNoaXBtZW50IG5vdCBmb3VuZCBpbiBUdXJ2bzogJHtzaGlwbWVudElkfWApXG4gICAgdGhpcy5uYW1lID0gJ1R1cnZvTm90Rm91bmRFcnJvcidcbiAgfVxufVxuXG4vKipcbiAqIEF1dGhlbnRpY2F0aW9uIGZhaWxlZCAoaW52YWxpZCBjcmVkZW50aWFscywgZXhwaXJlZCB0b2tlbilcbiAqL1xuZXhwb3J0IGNsYXNzIFR1cnZvQXV0aEVycm9yIGV4dGVuZHMgRXJyb3Ige1xuICBjb25zdHJ1Y3RvcihtZXNzYWdlOiBzdHJpbmcpIHtcbiAgICBzdXBlcihgVHVydm8gYXV0aGVudGljYXRpb24gZmFpbGVkOiAke21lc3NhZ2V9YClcbiAgICB0aGlzLm5hbWUgPSAnVHVydm9BdXRoRXJyb3InXG4gIH1cbn1cblxuLyoqXG4gKiBSYXRlIGxpbWl0ZWQgYnkgVHVydm9cbiAqL1xuZXhwb3J0IGNsYXNzIFR1cnZvUmF0ZUxpbWl0RXJyb3IgZXh0ZW5kcyBFcnJvciB7XG4gIGNvbnN0cnVjdG9yKHB1YmxpYyByZWFkb25seSByZXRyeUFmdGVyPzogbnVtYmVyKSB7XG4gICAgc3VwZXIoYFJhdGUgbGltaXRlZCBieSBUdXJ2byR7cmV0cnlBZnRlciA/IGAuIFJldHJ5IGFmdGVyICR7cmV0cnlBZnRlcn0gc2Vjb25kc2AgOiAnJ31gKVxuICAgIHRoaXMubmFtZSA9ICdUdXJ2b1JhdGVMaW1pdEVycm9yJ1xuICB9XG59XG5cbi8qKlxuICogSW50ZXJuYWwgQVBJIGZhaWxlZCBidXQgcHVibGljIEFQSSBzdWNjZWVkZWQuXG4gKiBDb250YWlucyBwYXJ0aWFsIGRhdGEgaW4gYHBhcnRpYWxEYXRhYCBmaWVsZC5cbiAqL1xuZXhwb3J0IGNsYXNzIFR1cnZvUGFydGlhbERhdGFFcnJvciBleHRlbmRzIEVycm9yIHtcbiAgY29uc3RydWN0b3IoXG4gICAgcHVibGljIHJlYWRvbmx5IHBhcnRpYWxEYXRhOiB1bmtub3duLFxuICAgIHB1YmxpYyByZWFkb25seSBmYWlsZWRBcGlzOiBzdHJpbmdbXVxuICApIHtcbiAgICBzdXBlcihgVHVydm8gaW50ZXJuYWwgQVBJIGZhaWxlZCBmb3I6ICR7ZmFpbGVkQXBpcy5qb2luKCcsICcpfS4gUGFydGlhbCBkYXRhIGF2YWlsYWJsZS5gKVxuICAgIHRoaXMubmFtZSA9ICdUdXJ2b1BhcnRpYWxEYXRhRXJyb3InXG4gIH1cbn1cblxuLyoqXG4gKiBFcnJvciB0aHJvd24gd2hlbiBUdXJ2byBzZWNyZXRzIGNhbm5vdCBiZSByZXRyaWV2ZWQgZnJvbSBBV1MgU2VjcmV0cyBNYW5hZ2VyXG4gKi9cbmV4cG9ydCBjbGFzcyBOb1NlY3JldEVycm9yIGV4dGVuZHMgRXJyb3Ige1xuICBjb25zdHJ1Y3RvcihwYXRoOiBzdHJpbmcpIHtcbiAgICBzdXBlcihgTm8gc2VjcmV0IGZvdW5kIGF0IHBhdGg6ICR7cGF0aH1gKVxuICAgIHRoaXMubmFtZSA9ICdOb1NlY3JldEVycm9yJ1xuICB9XG59XG4iXX0=
@@ -0,0 +1,5 @@
1
+ export * from './config';
2
+ export * from './common';
3
+ export * from './shipment';
4
+ export * from './tracking';
5
+ export * from './errors';
@@ -0,0 +1,11 @@
1
+ // Config types
2
+ export * from './config';
3
+ // Common API types
4
+ export * from './common';
5
+ // Shipment types
6
+ export * from './shipment';
7
+ // Tracking types
8
+ export * from './tracking';
9
+ // Error types
10
+ export * from './errors';
11
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvdHlwZXMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsZUFBZTtBQUNmLGNBQWMsVUFBVSxDQUFBO0FBRXhCLG1CQUFtQjtBQUNuQixjQUFjLFVBQVUsQ0FBQTtBQUV4QixpQkFBaUI7QUFDakIsY0FBYyxZQUFZLENBQUE7QUFFMUIsaUJBQWlCO0FBQ2pCLGNBQWMsWUFBWSxDQUFBO0FBRTFCLGNBQWM7QUFDZCxjQUFjLFVBQVUsQ0FBQSIsInNvdXJjZXNDb250ZW50IjpbIi8vIENvbmZpZyB0eXBlc1xuZXhwb3J0ICogZnJvbSAnLi9jb25maWcnXG5cbi8vIENvbW1vbiBBUEkgdHlwZXNcbmV4cG9ydCAqIGZyb20gJy4vY29tbW9uJ1xuXG4vLyBTaGlwbWVudCB0eXBlc1xuZXhwb3J0ICogZnJvbSAnLi9zaGlwbWVudCdcblxuLy8gVHJhY2tpbmcgdHlwZXNcbmV4cG9ydCAqIGZyb20gJy4vdHJhY2tpbmcnXG5cbi8vIEVycm9yIHR5cGVzXG5leHBvcnQgKiBmcm9tICcuL2Vycm9ycydcbiJdfQ==
@@ -0,0 +1,379 @@
1
+ import { TurvoDateWithTimezone, TurvoDateWithTimezoneLowercase, TurvoLookup } from './common';
2
+ export type TurvoGlobalRoute = {
3
+ id: number;
4
+ name: string;
5
+ globalShipLocationSourceId?: string;
6
+ schedulingType: TurvoLookup;
7
+ stopType: TurvoLookup;
8
+ location: {
9
+ id: number;
10
+ };
11
+ deleted?: boolean;
12
+ sequence: number;
13
+ segmentSequence: number;
14
+ state: 'OPEN' | 'CLOSED' | 'COMPLETED';
15
+ customerOrder?: TurvoCustomerOrder[];
16
+ carrierOrder?: {
17
+ carrierId: number;
18
+ id: number;
19
+ carrierOrderSourceId: number;
20
+ }[];
21
+ appointment: TurvoAppointment;
22
+ }[];
23
+ export type TurvoLane = {
24
+ start: string;
25
+ end: string;
26
+ };
27
+ export type TurvoShipmentService = TurvoLookup & ({
28
+ key: '21204';
29
+ value: 'Team';
30
+ } | {
31
+ key: '21214';
32
+ value: 'Drop trailer';
33
+ });
34
+ export type TurvoShipmentStatus = {
35
+ notes?: string;
36
+ attributes?: {
37
+ etaValUtc?: string;
38
+ next_eta_cal_val_timezone?: string;
39
+ };
40
+ description?: string;
41
+ statusDate?: TurvoDateWithTimezoneLowercase;
42
+ updatedBy?: {
43
+ id?: number;
44
+ name?: string;
45
+ };
46
+ location?: TurvoShipmentStatusLocation;
47
+ runningLate?: TurvoShipmentStatusRunningLate;
48
+ code: {
49
+ key: '2100';
50
+ value: 'Quote active';
51
+ } | {
52
+ key: '2101';
53
+ value: 'Tendered';
54
+ } | {
55
+ key: '2102';
56
+ value: 'Covered';
57
+ } | {
58
+ key: '2103';
59
+ value: 'Dispatched';
60
+ } | {
61
+ key: '2104';
62
+ value: 'At pickup';
63
+ } | {
64
+ key: '2105';
65
+ value: 'En route';
66
+ } | {
67
+ key: '2106';
68
+ value: 'At delivery';
69
+ } | {
70
+ key: '2116';
71
+ value: 'Route Complete';
72
+ } | {
73
+ key: '2107';
74
+ value: 'Delivered';
75
+ } | {
76
+ key: '2108';
77
+ value: 'Ready for billing';
78
+ } | {
79
+ key: '2109';
80
+ value: 'Processing';
81
+ } | {
82
+ key: '2110';
83
+ value: 'Carrier paid';
84
+ } | {
85
+ key: '2111';
86
+ value: 'Customer paid';
87
+ } | {
88
+ key: '2112';
89
+ value: 'Completed';
90
+ } | {
91
+ key: '2113';
92
+ value: 'Canceled';
93
+ } | {
94
+ key: '2117';
95
+ value: 'Tender - offered';
96
+ } | {
97
+ key: '2118';
98
+ value: 'Tender - accepted';
99
+ } | {
100
+ key: '2119';
101
+ value: 'Tender - rejected';
102
+ } | {
103
+ key: '2114';
104
+ value: 'Quote inactive';
105
+ } | {
106
+ key: '2115';
107
+ value: 'Picked up';
108
+ };
109
+ };
110
+ export declare const TURVO_SHIPMENT_STATUS_DELIVERED: TurvoShipmentStatus;
111
+ export declare const TURVO_SHIPMENT_STATUS_PICKED_UP: TurvoShipmentStatus;
112
+ export declare const TURVO_SHIPMENT_STATUS_AT_PICKUP: TurvoShipmentStatus;
113
+ export declare const TURVO_SHIPMENT_STATUS_EN_ROUTE: TurvoShipmentStatus;
114
+ export declare const TURVO_SHIPMENT_STATUS_AT_DELIVERY: TurvoShipmentStatus;
115
+ export declare const TURVO_SYSTEM_BOT_USER = "Turvo System Bot";
116
+ export type TurvoWebhookStatus = {
117
+ code: {
118
+ key: '2100';
119
+ value: 'Quote active';
120
+ } | {
121
+ key: '2101';
122
+ value: 'Tendered';
123
+ } | {
124
+ key: '2102';
125
+ value: 'Covered';
126
+ } | {
127
+ key: '2103';
128
+ value: 'Dispatched';
129
+ } | {
130
+ key: '2104';
131
+ value: 'At pickup';
132
+ } | {
133
+ key: '2105';
134
+ value: 'En route';
135
+ } | {
136
+ key: '2106';
137
+ value: 'At delivery';
138
+ } | {
139
+ key: '2116';
140
+ value: 'Route Complete';
141
+ } | {
142
+ key: '2107';
143
+ value: 'Delivered';
144
+ } | {
145
+ key: '2108';
146
+ value: 'Ready for billing';
147
+ } | {
148
+ key: '2109';
149
+ value: 'Processing';
150
+ } | {
151
+ key: '2110';
152
+ value: 'Carrier paid';
153
+ } | {
154
+ key: '2111';
155
+ value: 'Customer paid';
156
+ } | {
157
+ key: '2112';
158
+ value: 'Completed';
159
+ } | {
160
+ key: '2113';
161
+ value: 'Canceled';
162
+ } | {
163
+ key: '2117';
164
+ value: 'Tender - offered';
165
+ } | {
166
+ key: '2118';
167
+ value: 'Tender - accepted';
168
+ } | {
169
+ key: '2119';
170
+ value: 'Tender - rejected';
171
+ } | {
172
+ key: '2114';
173
+ value: 'Quote inactive';
174
+ } | {
175
+ key: '2115';
176
+ value: 'Picked up';
177
+ };
178
+ description?: string;
179
+ updatedBy?: {
180
+ id?: number;
181
+ name?: string;
182
+ };
183
+ };
184
+ export declare enum TurvoFlexAttributeLaneTypeValue {
185
+ FirstMile = "First Mile",
186
+ MiddleMile = "Middle Mile"
187
+ }
188
+ export declare enum TurvoFlexAttributeManagementTypeValue {
189
+ ClientManaged = "Client Managed",
190
+ VehoManaged = "Veho Managed",
191
+ Insourced = "Insourced"
192
+ }
193
+ export type TurvoFlexAttribute = {
194
+ deleted: false;
195
+ shareable: false;
196
+ } & ({
197
+ name: 'Lane Type';
198
+ type: {
199
+ value: 'DROPDOWN';
200
+ key: 'VehoTech_Lane_Type';
201
+ };
202
+ value: TurvoFlexAttributeLaneTypeValue;
203
+ } | {
204
+ name: 'Management Type';
205
+ type: {
206
+ value: 'DROPDOWN';
207
+ key: 'VehoTech_Management_Type';
208
+ };
209
+ value: TurvoFlexAttributeManagementTypeValue;
210
+ });
211
+ export type TurvoEquipment = {
212
+ type: TurvoLookup;
213
+ size: TurvoLookup | null;
214
+ }[];
215
+ export type TurvoCustomer = {
216
+ id: number;
217
+ name: string;
218
+ };
219
+ export type TurvoCustomerOrder = {
220
+ id?: number;
221
+ customerId?: number;
222
+ customer: TurvoCustomer;
223
+ customerOrderSourceId: number;
224
+ externalIds: {
225
+ type: {
226
+ key: '1400';
227
+ value: 'Purchase order #';
228
+ } | {
229
+ key: '1401';
230
+ value: 'Reference #';
231
+ };
232
+ value: string;
233
+ copyToCarrierOrder: true;
234
+ }[];
235
+ items?: {
236
+ name: string;
237
+ pickupLocation: {
238
+ id: number;
239
+ globalShipLocationSourceId?: number;
240
+ globalShipLocationId?: number;
241
+ name: string;
242
+ }[];
243
+ deliveryLocation: {
244
+ id: number;
245
+ globalShipLocationSourceId?: number;
246
+ globalShipLocationId?: number;
247
+ name: string;
248
+ }[];
249
+ qty?: number;
250
+ unit?: TurvoLookup;
251
+ }[];
252
+ };
253
+ export type TurvoCarrierOrder = {
254
+ _operation: 0;
255
+ carrier: {
256
+ id: number;
257
+ name: string;
258
+ };
259
+ carrierOrderSourceId: number;
260
+ costs?: {
261
+ totalAmount: number;
262
+ lineItem: {
263
+ id?: number;
264
+ code: {
265
+ key: '1600';
266
+ value: 'Freight - flat';
267
+ };
268
+ qty: 1;
269
+ price: number;
270
+ amount: number;
271
+ payable: true;
272
+ }[];
273
+ };
274
+ };
275
+ export type TurvoAppointment = {
276
+ date: string;
277
+ flex?: number;
278
+ timeZone: string;
279
+ hasTime: true;
280
+ };
281
+ export type TurvoShipment = {
282
+ id: number;
283
+ customId: string;
284
+ ltlShipment: boolean;
285
+ startDate: TurvoDateWithTimezone;
286
+ endDate: TurvoDateWithTimezone & {
287
+ flex: number;
288
+ };
289
+ status: TurvoShipmentStatus;
290
+ services?: TurvoShipmentService[];
291
+ equipment: TurvoEquipment;
292
+ flexAttributes?: TurvoFlexAttribute[];
293
+ lane: TurvoLane;
294
+ globalRoute: TurvoGlobalRoute;
295
+ customerOrder: TurvoCustomerOrder[];
296
+ carrierOrder: TurvoCarrierOrder[];
297
+ };
298
+ export type TurvoShipmentUpdate = {
299
+ id: number;
300
+ customId: string;
301
+ globalRoute: TurvoGlobalRoute;
302
+ customerOrder: TurvoCustomerOrder[];
303
+ status: TurvoWebhookStatus;
304
+ };
305
+ export interface TurvoShipmentStatusApiResponse {
306
+ customId: string;
307
+ status: {
308
+ location: {
309
+ lon: number;
310
+ lat: number;
311
+ nextArrivalTime: number;
312
+ nextMiles: number;
313
+ city: string;
314
+ };
315
+ statusDate: {
316
+ date: string;
317
+ timezone: string;
318
+ };
319
+ runningLate?: {
320
+ nextLocationName: string;
321
+ };
322
+ nextLocationId: number;
323
+ };
324
+ globalRoute: TurvoGlobalRoute;
325
+ lane: {
326
+ start: string;
327
+ end: string;
328
+ };
329
+ }
330
+ export type TurvoShipmentStatusLocation = {
331
+ city: string;
332
+ state: string;
333
+ countryCode: string;
334
+ countryName: string;
335
+ lon: number;
336
+ lat: number;
337
+ nextEta?: string;
338
+ nextEtaCalVal?: string;
339
+ nextArrivalTime?: number;
340
+ nextMiles?: number;
341
+ currentDate?: string;
342
+ };
343
+ export type TurvoShipmentStatusRunningLate = {
344
+ lateType: string;
345
+ lateDuration: number;
346
+ nextLocationType: string;
347
+ lateDurationString: string;
348
+ nextLocationEta: string;
349
+ nextLocationTimeZone: string;
350
+ nextLocationName: string;
351
+ nextLocationEtaDate: string;
352
+ isApproachingLate: boolean;
353
+ statusKey: string;
354
+ nextLocationAppointmentDate: string;
355
+ nextLocationAppointment: string;
356
+ lastUpdatedOn: string;
357
+ nextLocationId: number;
358
+ };
359
+ export type TurvoShipmentStatusUpdate = {
360
+ id: number;
361
+ status: TurvoWebhookStatus;
362
+ };
363
+ export type TurvoCreateShipmentApiResult = {
364
+ id: number;
365
+ };
366
+ export type TurvoCancelShipmentApiResult = {
367
+ respMsg: string;
368
+ };
369
+ export type TurvoUpdateShipmentStatusApiResult = {
370
+ id: number;
371
+ };
372
+ export type TurvoAssociateTagsApiResult = {
373
+ tags: {
374
+ id: string;
375
+ tagName: string;
376
+ contextType: string;
377
+ contextId: number;
378
+ }[];
379
+ };
@@ -0,0 +1,43 @@
1
+ export const TURVO_SHIPMENT_STATUS_DELIVERED = {
2
+ code: {
3
+ key: '2107',
4
+ value: 'Delivered',
5
+ },
6
+ };
7
+ export const TURVO_SHIPMENT_STATUS_PICKED_UP = {
8
+ code: {
9
+ key: '2115',
10
+ value: 'Picked up',
11
+ },
12
+ };
13
+ export const TURVO_SHIPMENT_STATUS_AT_PICKUP = {
14
+ code: {
15
+ key: '2104',
16
+ value: 'At pickup',
17
+ },
18
+ };
19
+ export const TURVO_SHIPMENT_STATUS_EN_ROUTE = {
20
+ code: {
21
+ key: '2105',
22
+ value: 'En route',
23
+ },
24
+ };
25
+ export const TURVO_SHIPMENT_STATUS_AT_DELIVERY = {
26
+ code: {
27
+ key: '2106',
28
+ value: 'At delivery',
29
+ },
30
+ };
31
+ export const TURVO_SYSTEM_BOT_USER = 'Turvo System Bot';
32
+ export var TurvoFlexAttributeLaneTypeValue;
33
+ (function (TurvoFlexAttributeLaneTypeValue) {
34
+ TurvoFlexAttributeLaneTypeValue["FirstMile"] = "First Mile";
35
+ TurvoFlexAttributeLaneTypeValue["MiddleMile"] = "Middle Mile";
36
+ })(TurvoFlexAttributeLaneTypeValue || (TurvoFlexAttributeLaneTypeValue = {}));
37
+ export var TurvoFlexAttributeManagementTypeValue;
38
+ (function (TurvoFlexAttributeManagementTypeValue) {
39
+ TurvoFlexAttributeManagementTypeValue["ClientManaged"] = "Client Managed";
40
+ TurvoFlexAttributeManagementTypeValue["VehoManaged"] = "Veho Managed";
41
+ TurvoFlexAttributeManagementTypeValue["Insourced"] = "Insourced";
42
+ })(TurvoFlexAttributeManagementTypeValue || (TurvoFlexAttributeManagementTypeValue = {}));
43
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2hpcG1lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvdHlwZXMvc2hpcG1lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBMEVBLE1BQU0sQ0FBQyxNQUFNLCtCQUErQixHQUF3QjtJQUNsRSxJQUFJLEVBQUU7UUFDSixHQUFHLEVBQUUsTUFBTTtRQUNYLEtBQUssRUFBRSxXQUFXO0tBQ25CO0NBQ0YsQ0FBQTtBQUVELE1BQU0sQ0FBQyxNQUFNLCtCQUErQixHQUF3QjtJQUNsRSxJQUFJLEVBQUU7UUFDSixHQUFHLEVBQUUsTUFBTTtRQUNYLEtBQUssRUFBRSxXQUFXO0tBQ25CO0NBQ0YsQ0FBQTtBQUVELE1BQU0sQ0FBQyxNQUFNLCtCQUErQixHQUF3QjtJQUNsRSxJQUFJLEVBQUU7UUFDSixHQUFHLEVBQUUsTUFBTTtRQUNYLEtBQUssRUFBRSxXQUFXO0tBQ25CO0NBQ0YsQ0FBQTtBQUVELE1BQU0sQ0FBQyxNQUFNLDhCQUE4QixHQUF3QjtJQUNqRSxJQUFJLEVBQUU7UUFDSixHQUFHLEVBQUUsTUFBTTtRQUNYLEtBQUssRUFBRSxVQUFVO0tBQ2xCO0NBQ0YsQ0FBQTtBQUVELE1BQU0sQ0FBQyxNQUFNLGlDQUFpQyxHQUF3QjtJQUNwRSxJQUFJLEVBQUU7UUFDSixHQUFHLEVBQUUsTUFBTTtRQUNYLEtBQUssRUFBRSxhQUFhO0tBQ3JCO0NBQ0YsQ0FBQTtBQUVELE1BQU0sQ0FBQyxNQUFNLHFCQUFxQixHQUFHLGtCQUFrQixDQUFBO0FBK0J2RCxNQUFNLENBQU4sSUFBWSwrQkFHWDtBQUhELFdBQVksK0JBQStCO0lBQ3pDLDJEQUF3QixDQUFBO0lBQ3hCLDZEQUEwQixDQUFBO0FBQzVCLENBQUMsRUFIVywrQkFBK0IsS0FBL0IsK0JBQStCLFFBRzFDO0FBRUQsTUFBTSxDQUFOLElBQVkscUNBSVg7QUFKRCxXQUFZLHFDQUFxQztJQUMvQyx5RUFBZ0MsQ0FBQTtJQUNoQyxxRUFBNEIsQ0FBQTtJQUM1QixnRUFBdUIsQ0FBQTtBQUN6QixDQUFDLEVBSlcscUNBQXFDLEtBQXJDLHFDQUFxQyxRQUloRCIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFR1cnZvRGF0ZVdpdGhUaW1lem9uZSwgVHVydm9EYXRlV2l0aFRpbWV6b25lTG93ZXJjYXNlLCBUdXJ2b0xvb2t1cCB9IGZyb20gJy4vY29tbW9uJ1xuXG5leHBvcnQgdHlwZSBUdXJ2b0dsb2JhbFJvdXRlID0ge1xuICBpZDogbnVtYmVyXG4gIG5hbWU6IHN0cmluZ1xuICBnbG9iYWxTaGlwTG9jYXRpb25Tb3VyY2VJZD86IHN0cmluZ1xuICBzY2hlZHVsaW5nVHlwZTogVHVydm9Mb29rdXBcbiAgc3RvcFR5cGU6IFR1cnZvTG9va3VwXG4gIGxvY2F0aW9uOiB7XG4gICAgaWQ6IG51bWJlclxuICB9XG4gIGRlbGV0ZWQ/OiBib29sZWFuXG4gIHNlcXVlbmNlOiBudW1iZXJcbiAgc2VnbWVudFNlcXVlbmNlOiBudW1iZXJcbiAgc3RhdGU6ICdPUEVOJyB8ICdDTE9TRUQnIHwgJ0NPTVBMRVRFRCdcbiAgY3VzdG9tZXJPcmRlcj86IFR1cnZvQ3VzdG9tZXJPcmRlcltdXG4gIGNhcnJpZXJPcmRlcj86IHsgY2FycmllcklkOiBudW1iZXI7IGlkOiBudW1iZXI7IGNhcnJpZXJPcmRlclNvdXJjZUlkOiBudW1iZXIgfVtdXG4gIGFwcG9pbnRtZW50OiBUdXJ2b0FwcG9pbnRtZW50XG59W11cblxuZXhwb3J0IHR5cGUgVHVydm9MYW5lID0ge1xuICBzdGFydDogc3RyaW5nXG4gIGVuZDogc3RyaW5nXG59XG5cbmV4cG9ydCB0eXBlIFR1cnZvU2hpcG1lbnRTZXJ2aWNlID0gVHVydm9Mb29rdXAgJlxuICAoXG4gICAgfCB7XG4gICAgICAgIGtleTogJzIxMjA0J1xuICAgICAgICB2YWx1ZTogJ1RlYW0nXG4gICAgICB9XG4gICAgfCB7XG4gICAgICAgIGtleTogJzIxMjE0J1xuICAgICAgICB2YWx1ZTogJ0Ryb3AgdHJhaWxlcidcbiAgICAgIH1cbiAgKVxuXG5leHBvcnQgdHlwZSBUdXJ2b1NoaXBtZW50U3RhdHVzID0ge1xuICBub3Rlcz86IHN0cmluZ1xuICBhdHRyaWJ1dGVzPzoge1xuICAgIGV0YVZhbFV0Yz86IHN0cmluZ1xuICAgIG5leHRfZXRhX2NhbF92YWxfdGltZXpvbmU/OiBzdHJpbmdcbiAgfVxuICBkZXNjcmlwdGlvbj86IHN0cmluZ1xuICBzdGF0dXNEYXRlPzogVHVydm9EYXRlV2l0aFRpbWV6b25lTG93ZXJjYXNlXG4gIHVwZGF0ZWRCeT86IHtcbiAgICBpZD86IG51bWJlclxuICAgIG5hbWU/OiBzdHJpbmdcbiAgfVxuICBsb2NhdGlvbj86IFR1cnZvU2hpcG1lbnRTdGF0dXNMb2NhdGlvblxuICBydW5uaW5nTGF0ZT86IFR1cnZvU2hpcG1lbnRTdGF0dXNSdW5uaW5nTGF0ZVxuICBjb2RlOlxuICAgIHwgeyBrZXk6ICcyMTAwJzsgdmFsdWU6ICdRdW90ZSBhY3RpdmUnIH1cbiAgICB8IHsga2V5OiAnMjEwMSc7IHZhbHVlOiAnVGVuZGVyZWQnIH1cbiAgICB8IHsga2V5OiAnMjEwMic7IHZhbHVlOiAnQ292ZXJlZCcgfVxuICAgIHwgeyBrZXk6ICcyMTAzJzsgdmFsdWU6ICdEaXNwYXRjaGVkJyB9XG4gICAgfCB7IGtleTogJzIxMDQnOyB2YWx1ZTogJ0F0IHBpY2t1cCcgfVxuICAgIHwgeyBrZXk6ICcyMTA1JzsgdmFsdWU6ICdFbiByb3V0ZScgfVxuICAgIHwgeyBrZXk6ICcyMTA2JzsgdmFsdWU6ICdBdCBkZWxpdmVyeScgfVxuICAgIHwgeyBrZXk6ICcyMTE2JzsgdmFsdWU6ICdSb3V0ZSBDb21wbGV0ZScgfVxuICAgIHwgeyBrZXk6ICcyMTA3JzsgdmFsdWU6ICdEZWxpdmVyZWQnIH1cbiAgICB8IHsga2V5OiAnMjEwOCc7IHZhbHVlOiAnUmVhZHkgZm9yIGJpbGxpbmcnIH1cbiAgICB8IHsga2V5OiAnMjEwOSc7IHZhbHVlOiAnUHJvY2Vzc2luZycgfVxuICAgIHwgeyBrZXk6ICcyMTEwJzsgdmFsdWU6ICdDYXJyaWVyIHBhaWQnIH1cbiAgICB8IHsga2V5OiAnMjExMSc7IHZhbHVlOiAnQ3VzdG9tZXIgcGFpZCcgfVxuICAgIHwgeyBrZXk6ICcyMTEyJzsgdmFsdWU6ICdDb21wbGV0ZWQnIH1cbiAgICB8IHsga2V5OiAnMjExMyc7IHZhbHVlOiAnQ2FuY2VsZWQnIH1cbiAgICB8IHsga2V5OiAnMjExNyc7IHZhbHVlOiAnVGVuZGVyIC0gb2ZmZXJlZCcgfVxuICAgIHwgeyBrZXk6ICcyMTE4JzsgdmFsdWU6ICdUZW5kZXIgLSBhY2NlcHRlZCcgfVxuICAgIHwgeyBrZXk6ICcyMTE5JzsgdmFsdWU6ICdUZW5kZXIgLSByZWplY3RlZCcgfVxuICAgIHwgeyBrZXk6ICcyMTE0JzsgdmFsdWU6ICdRdW90ZSBpbmFjdGl2ZScgfVxuICAgIHwgeyBrZXk6ICcyMTE1JzsgdmFsdWU6ICdQaWNrZWQgdXAnIH1cbn1cblxuZXhwb3J0IGNvbnN0IFRVUlZPX1NISVBNRU5UX1NUQVRVU19ERUxJVkVSRUQ6IFR1cnZvU2hpcG1lbnRTdGF0dXMgPSB7XG4gIGNvZGU6IHtcbiAgICBrZXk6ICcyMTA3JyxcbiAgICB2YWx1ZTogJ0RlbGl2ZXJlZCcsXG4gIH0sXG59XG5cbmV4cG9ydCBjb25zdCBUVVJWT19TSElQTUVOVF9TVEFUVVNfUElDS0VEX1VQOiBUdXJ2b1NoaXBtZW50U3RhdHVzID0ge1xuICBjb2RlOiB7XG4gICAga2V5OiAnMjExNScsXG4gICAgdmFsdWU6ICdQaWNrZWQgdXAnLFxuICB9LFxufVxuXG5leHBvcnQgY29uc3QgVFVSVk9fU0hJUE1FTlRfU1RBVFVTX0FUX1BJQ0tVUDogVHVydm9TaGlwbWVudFN0YXR1cyA9IHtcbiAgY29kZToge1xuICAgIGtleTogJzIxMDQnLFxuICAgIHZhbHVlOiAnQXQgcGlja3VwJyxcbiAgfSxcbn1cblxuZXhwb3J0IGNvbnN0IFRVUlZPX1NISVBNRU5UX1NUQVRVU19FTl9ST1VURTogVHVydm9TaGlwbWVudFN0YXR1cyA9IHtcbiAgY29kZToge1xuICAgIGtleTogJzIxMDUnLFxuICAgIHZhbHVlOiAnRW4gcm91dGUnLFxuICB9LFxufVxuXG5leHBvcnQgY29uc3QgVFVSVk9fU0hJUE1FTlRfU1RBVFVTX0FUX0RFTElWRVJZOiBUdXJ2b1NoaXBtZW50U3RhdHVzID0ge1xuICBjb2RlOiB7XG4gICAga2V5OiAnMjEwNicsXG4gICAgdmFsdWU6ICdBdCBkZWxpdmVyeScsXG4gIH0sXG59XG5cbmV4cG9ydCBjb25zdCBUVVJWT19TWVNURU1fQk9UX1VTRVIgPSAnVHVydm8gU3lzdGVtIEJvdCdcblxuZXhwb3J0IHR5cGUgVHVydm9XZWJob29rU3RhdHVzID0ge1xuICBjb2RlOlxuICAgIHwgeyBrZXk6ICcyMTAwJzsgdmFsdWU6ICdRdW90ZSBhY3RpdmUnIH1cbiAgICB8IHsga2V5OiAnMjEwMSc7IHZhbHVlOiAnVGVuZGVyZWQnIH1cbiAgICB8IHsga2V5OiAnMjEwMic7IHZhbHVlOiAnQ292ZXJlZCcgfVxuICAgIHwgeyBrZXk6ICcyMTAzJzsgdmFsdWU6ICdEaXNwYXRjaGVkJyB9XG4gICAgfCB7IGtleTogJzIxMDQnOyB2YWx1ZTogJ0F0IHBpY2t1cCcgfVxuICAgIHwgeyBrZXk6ICcyMTA1JzsgdmFsdWU6ICdFbiByb3V0ZScgfVxuICAgIHwgeyBrZXk6ICcyMTA2JzsgdmFsdWU6ICdBdCBkZWxpdmVyeScgfVxuICAgIHwgeyBrZXk6ICcyMTE2JzsgdmFsdWU6ICdSb3V0ZSBDb21wbGV0ZScgfVxuICAgIHwgeyBrZXk6ICcyMTA3JzsgdmFsdWU6ICdEZWxpdmVyZWQnIH1cbiAgICB8IHsga2V5OiAnMjEwOCc7IHZhbHVlOiAnUmVhZHkgZm9yIGJpbGxpbmcnIH1cbiAgICB8IHsga2V5OiAnMjEwOSc7IHZhbHVlOiAnUHJvY2Vzc2luZycgfVxuICAgIHwgeyBrZXk6ICcyMTEwJzsgdmFsdWU6ICdDYXJyaWVyIHBhaWQnIH1cbiAgICB8IHsga2V5OiAnMjExMSc7IHZhbHVlOiAnQ3VzdG9tZXIgcGFpZCcgfVxuICAgIHwgeyBrZXk6ICcyMTEyJzsgdmFsdWU6ICdDb21wbGV0ZWQnIH1cbiAgICB8IHsga2V5OiAnMjExMyc7IHZhbHVlOiAnQ2FuY2VsZWQnIH1cbiAgICB8IHsga2V5OiAnMjExNyc7IHZhbHVlOiAnVGVuZGVyIC0gb2ZmZXJlZCcgfVxuICAgIHwgeyBrZXk6ICcyMTE4JzsgdmFsdWU6ICdUZW5kZXIgLSBhY2NlcHRlZCcgfVxuICAgIHwgeyBrZXk6ICcyMTE5JzsgdmFsdWU6ICdUZW5kZXIgLSByZWplY3RlZCcgfVxuICAgIHwgeyBrZXk6ICcyMTE0JzsgdmFsdWU6ICdRdW90ZSBpbmFjdGl2ZScgfVxuICAgIHwgeyBrZXk6ICcyMTE1JzsgdmFsdWU6ICdQaWNrZWQgdXAnIH1cbiAgZGVzY3JpcHRpb24/OiBzdHJpbmdcbiAgdXBkYXRlZEJ5Pzoge1xuICAgIGlkPzogbnVtYmVyXG4gICAgbmFtZT86IHN0cmluZ1xuICB9XG59XG5cbmV4cG9ydCBlbnVtIFR1cnZvRmxleEF0dHJpYnV0ZUxhbmVUeXBlVmFsdWUge1xuICBGaXJzdE1pbGUgPSAnRmlyc3QgTWlsZScsXG4gIE1pZGRsZU1pbGUgPSAnTWlkZGxlIE1pbGUnLFxufVxuXG5leHBvcnQgZW51bSBUdXJ2b0ZsZXhBdHRyaWJ1dGVNYW5hZ2VtZW50VHlwZVZhbHVlIHtcbiAgQ2xpZW50TWFuYWdlZCA9ICdDbGllbnQgTWFuYWdlZCcsXG4gIFZlaG9NYW5hZ2VkID0gJ1ZlaG8gTWFuYWdlZCcsXG4gIEluc291cmNlZCA9ICdJbnNvdXJjZWQnLFxufVxuXG5leHBvcnQgdHlwZSBUdXJ2b0ZsZXhBdHRyaWJ1dGUgPSB7XG4gIGRlbGV0ZWQ6IGZhbHNlXG4gIHNoYXJlYWJsZTogZmFsc2Vcbn0gJiAoXG4gIHwge1xuICAgICAgbmFtZTogJ0xhbmUgVHlwZSdcbiAgICAgIHR5cGU6IHtcbiAgICAgICAgdmFsdWU6ICdEUk9QRE9XTidcbiAgICAgICAga2V5OiAnVmVob1RlY2hfTGFuZV9UeXBlJ1xuICAgICAgfVxuICAgICAgdmFsdWU6IFR1cnZvRmxleEF0dHJpYnV0ZUxhbmVUeXBlVmFsdWVcbiAgICB9XG4gIHwge1xuICAgICAgbmFtZTogJ01hbmFnZW1lbnQgVHlwZSdcbiAgICAgIHR5cGU6IHtcbiAgICAgICAgdmFsdWU6ICdEUk9QRE9XTidcbiAgICAgICAga2V5OiAnVmVob1RlY2hfTWFuYWdlbWVudF9UeXBlJ1xuICAgICAgfVxuICAgICAgdmFsdWU6IFR1cnZvRmxleEF0dHJpYnV0ZU1hbmFnZW1lbnRUeXBlVmFsdWVcbiAgICB9XG4pXG5cbmV4cG9ydCB0eXBlIFR1cnZvRXF1aXBtZW50ID0ge1xuICB0eXBlOiBUdXJ2b0xvb2t1cFxuICBzaXplOiBUdXJ2b0xvb2t1cCB8IG51bGxcbn1bXVxuXG5leHBvcnQgdHlwZSBUdXJ2b0N1c3RvbWVyID0ge1xuICBpZDogbnVtYmVyXG4gIG5hbWU6IHN0cmluZ1xufVxuXG5leHBvcnQgdHlwZSBUdXJ2b0N1c3RvbWVyT3JkZXIgPSB7XG4gIGlkPzogbnVtYmVyXG4gIGN1c3RvbWVySWQ/OiBudW1iZXJcbiAgY3VzdG9tZXI6IFR1cnZvQ3VzdG9tZXJcbiAgY3VzdG9tZXJPcmRlclNvdXJjZUlkOiBudW1iZXJcbiAgZXh0ZXJuYWxJZHM6IHtcbiAgICB0eXBlOiB7IGtleTogJzE0MDAnOyB2YWx1ZTogJ1B1cmNoYXNlIG9yZGVyICMnIH0gfCB7IGtleTogJzE0MDEnOyB2YWx1ZTogJ1JlZmVyZW5jZSAjJyB9XG4gICAgdmFsdWU6IHN0cmluZ1xuICAgIGNvcHlUb0NhcnJpZXJPcmRlcjogdHJ1ZVxuICB9W11cbiAgaXRlbXM/OiB7XG4gICAgbmFtZTogc3RyaW5nXG4gICAgcGlja3VwTG9jYXRpb246IHsgaWQ6IG51bWJlcjsgZ2xvYmFsU2hpcExvY2F0aW9uU291cmNlSWQ/OiBudW1iZXI7IGdsb2JhbFNoaXBMb2NhdGlvbklkPzogbnVtYmVyOyBuYW1lOiBzdHJpbmcgfVtdXG4gICAgZGVsaXZlcnlMb2NhdGlvbjogeyBpZDogbnVtYmVyOyBnbG9iYWxTaGlwTG9jYXRpb25Tb3VyY2VJZD86IG51bWJlcjsgZ2xvYmFsU2hpcExvY2F0aW9uSWQ/OiBudW1iZXI7IG5hbWU6IHN0cmluZyB9W11cbiAgICBxdHk/OiBudW1iZXJcbiAgICB1bml0PzogVHVydm9Mb29rdXBcbiAgfVtdXG59XG5cbmV4cG9ydCB0eXBlIFR1cnZvQ2Fycmllck9yZGVyID0ge1xuICBfb3BlcmF0aW9uOiAwXG4gIGNhcnJpZXI6IHtcbiAgICBpZDogbnVtYmVyXG4gICAgbmFtZTogc3RyaW5nXG4gIH1cbiAgY2Fycmllck9yZGVyU291cmNlSWQ6IG51bWJlclxuICBjb3N0cz86IHtcbiAgICB0b3RhbEFtb3VudDogbnVtYmVyXG4gICAgbGluZUl0ZW06IHtcbiAgICAgIGlkPzogbnVtYmVyXG4gICAgICBjb2RlOiB7IGtleTogJzE2MDAnOyB2YWx1ZTogJ0ZyZWlnaHQgLSBmbGF0JyB9XG4gICAgICBxdHk6IDFcbiAgICAgIHByaWNlOiBudW1iZXJcbiAgICAgIGFtb3VudDogbnVtYmVyXG4gICAgICBwYXlhYmxlOiB0cnVlXG4gICAgfVtdXG4gIH1cbn1cblxuZXhwb3J0IHR5cGUgVHVydm9BcHBvaW50bWVudCA9IHtcbiAgZGF0ZTogc3RyaW5nXG4gIGZsZXg/OiBudW1iZXIgLy8gQXBwYXJlbnRseSByZXF1aXJlZCBidXQgZG9lc24ndCBtYWtlIHNlbnNlIEkgdGhpbmssIGFuZCB0aGUgc2hpcG1lbnQgY3JlYXRlcyB3aXRob3V0IHRoaXNcbiAgdGltZVpvbmU6IHN0cmluZ1xuICBoYXNUaW1lOiB0cnVlXG59XG5cbmV4cG9ydCB0eXBlIFR1cnZvU2hpcG1lbnQgPSB7XG4gIGlkOiBudW1iZXJcbiAgY3VzdG9tSWQ6IHN0cmluZ1xuICBsdGxTaGlwbWVudDogYm9vbGVhblxuICBzdGFydERhdGU6IFR1cnZvRGF0ZVdpdGhUaW1lem9uZVxuICBlbmREYXRlOiBUdXJ2b0RhdGVXaXRoVGltZXpvbmUgJiB7IGZsZXg6IG51bWJlciB9XG4gIHN0YXR1czogVHVydm9TaGlwbWVudFN0YXR1c1xuICBzZXJ2aWNlcz86IFR1cnZvU2hpcG1lbnRTZXJ2aWNlW11cbiAgZXF1aXBtZW50OiBUdXJ2b0VxdWlwbWVudFxuICBmbGV4QXR0cmlidXRlcz86IFR1cnZvRmxleEF0dHJpYnV0ZVtdXG4gIGxhbmU6IFR1cnZvTGFuZVxuICBnbG9iYWxSb3V0ZTogVHVydm9HbG9iYWxSb3V0ZVxuICBjdXN0b21lck9yZGVyOiBUdXJ2b0N1c3RvbWVyT3JkZXJbXVxuICBjYXJyaWVyT3JkZXI6IFR1cnZvQ2Fycmllck9yZGVyW11cbn1cblxuZXhwb3J0IHR5cGUgVHVydm9TaGlwbWVudFVwZGF0ZSA9IHtcbiAgaWQ6IG51bWJlclxuICBjdXN0b21JZDogc3RyaW5nXG4gIGdsb2JhbFJvdXRlOiBUdXJ2b0dsb2JhbFJvdXRlXG4gIGN1c3RvbWVyT3JkZXI6IFR1cnZvQ3VzdG9tZXJPcmRlcltdXG4gIHN0YXR1czogVHVydm9XZWJob29rU3RhdHVzXG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgVHVydm9TaGlwbWVudFN0YXR1c0FwaVJlc3BvbnNlIHtcbiAgY3VzdG9tSWQ6IHN0cmluZ1xuICBzdGF0dXM6IHtcbiAgICBsb2NhdGlvbjoge1xuICAgICAgbG9uOiBudW1iZXJcbiAgICAgIGxhdDogbnVtYmVyXG4gICAgICBuZXh0QXJyaXZhbFRpbWU6IG51bWJlclxuICAgICAgbmV4dE1pbGVzOiBudW1iZXJcbiAgICAgIGNpdHk6IHN0cmluZ1xuICAgIH1cbiAgICBzdGF0dXNEYXRlOiB7XG4gICAgICBkYXRlOiBzdHJpbmdcbiAgICAgIHRpbWV6b25lOiBzdHJpbmdcbiAgICB9XG4gICAgcnVubmluZ0xhdGU/OiB7XG4gICAgICBuZXh0TG9jYXRpb25OYW1lOiBzdHJpbmdcbiAgICB9XG4gICAgbmV4dExvY2F0aW9uSWQ6IG51bWJlclxuICB9XG4gIGdsb2JhbFJvdXRlOiBUdXJ2b0dsb2JhbFJvdXRlXG4gIGxhbmU6IHtcbiAgICBzdGFydDogc3RyaW5nXG4gICAgZW5kOiBzdHJpbmdcbiAgfVxufVxuXG5leHBvcnQgdHlwZSBUdXJ2b1NoaXBtZW50U3RhdHVzTG9jYXRpb24gPSB7XG4gIGNpdHk6IHN0cmluZ1xuICBzdGF0ZTogc3RyaW5nXG4gIGNvdW50cnlDb2RlOiBzdHJpbmdcbiAgY291bnRyeU5hbWU6IHN0cmluZ1xuICBsb246IG51bWJlclxuICBsYXQ6IG51bWJlclxuICBuZXh0RXRhPzogc3RyaW5nXG4gIG5leHRFdGFDYWxWYWw/OiBzdHJpbmdcbiAgbmV4dEFycml2YWxUaW1lPzogbnVtYmVyXG4gIG5leHRNaWxlcz86IG51bWJlclxuICBjdXJyZW50RGF0ZT86IHN0cmluZ1xufVxuXG5leHBvcnQgdHlwZSBUdXJ2b1NoaXBtZW50U3RhdHVzUnVubmluZ0xhdGUgPSB7XG4gIGxhdGVUeXBlOiBzdHJpbmdcbiAgbGF0ZUR1cmF0aW9uOiBudW1iZXJcbiAgbmV4dExvY2F0aW9uVHlwZTogc3RyaW5nXG4gIGxhdGVEdXJhdGlvblN0cmluZzogc3RyaW5nXG4gIG5leHRMb2NhdGlvbkV0YTogc3RyaW5nXG4gIG5leHRMb2NhdGlvblRpbWVab25lOiBzdHJpbmdcbiAgbmV4dExvY2F0aW9uTmFtZTogc3RyaW5nXG4gIG5leHRMb2NhdGlvbkV0YURhdGU6IHN0cmluZ1xuICBpc0FwcHJvYWNoaW5nTGF0ZTogYm9vbGVhblxuICBzdGF0dXNLZXk6IHN0cmluZ1xuICBuZXh0TG9jYXRpb25BcHBvaW50bWVudERhdGU6IHN0cmluZ1xuICBuZXh0TG9jYXRpb25BcHBvaW50bWVudDogc3RyaW5nXG4gIGxhc3RVcGRhdGVkT246IHN0cmluZ1xuICBuZXh0TG9jYXRpb25JZDogbnVtYmVyXG59XG5cbmV4cG9ydCB0eXBlIFR1cnZvU2hpcG1lbnRTdGF0dXNVcGRhdGUgPSB7XG4gIGlkOiBudW1iZXJcbiAgc3RhdHVzOiBUdXJ2b1dlYmhvb2tTdGF0dXNcbn1cblxuLy8gUmVzdWx0IHR5cGVzIGZvciBzcGVjaWZpYyBvcGVyYXRpb25zXG5leHBvcnQgdHlwZSBUdXJ2b0NyZWF0ZVNoaXBtZW50QXBpUmVzdWx0ID0geyBpZDogbnVtYmVyIH1cbmV4cG9ydCB0eXBlIFR1cnZvQ2FuY2VsU2hpcG1lbnRBcGlSZXN1bHQgPSB7IHJlc3BNc2c6IHN0cmluZyB9XG5leHBvcnQgdHlwZSBUdXJ2b1VwZGF0ZVNoaXBtZW50U3RhdHVzQXBpUmVzdWx0ID0geyBpZDogbnVtYmVyIH1cbmV4cG9ydCB0eXBlIFR1cnZvQXNzb2NpYXRlVGFnc0FwaVJlc3VsdCA9IHtcbiAgdGFnczogeyBpZDogc3RyaW5nOyB0YWdOYW1lOiBzdHJpbmc7IGNvbnRleHRUeXBlOiBzdHJpbmc7IGNvbnRleHRJZDogbnVtYmVyIH1bXVxufVxuIl19