@cheqi/sdk 0.2.1 → 0.4.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +53 -1
- package/dist/cheqi-sdk.d.ts +2 -0
- package/dist/cheqi-sdk.js +6 -1
- package/dist/cheqi-sdk.js.map +1 -1
- package/dist/config.d.ts +5 -0
- package/dist/config.js +14 -1
- package/dist/config.js.map +1 -1
- package/dist/download/index.d.ts +21 -8
- package/dist/download/index.js +29 -7
- package/dist/download/index.js.map +1 -1
- package/dist/http/client.js +1 -1
- package/dist/index.d.ts +1 -1
- package/dist/index.js +1 -1
- package/dist/index.js.map +1 -1
- package/dist/models/generated/RecipientResolutionResponse.d.ts +15 -0
- package/dist/models/generated/RecipientResolutionResponse.js +10 -0
- package/dist/models/generated/RecipientResolutionResponse.js.map +1 -1
- package/dist/models.d.ts +14 -0
- package/dist/models.js +47 -0
- package/dist/models.js.map +1 -1
- package/dist/services/receipt.d.ts +4 -1
- package/dist/services/receipt.js +66 -3
- package/dist/services/receipt.js.map +1 -1
- package/dist/types.d.ts +1 -0
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -6,7 +6,7 @@ TypeScript-first Cheqi SDK for encrypted receipt and credit note processing.
|
|
|
6
6
|
|
|
7
7
|
- SDK entrypoint with config and service wiring
|
|
8
8
|
- Customer matching
|
|
9
|
-
- Receipt processing flow: match -> template -> encrypt ->
|
|
9
|
+
- Receipt processing flow: match -> template -> encrypt -> digital, email, or client-encrypted download delivery
|
|
10
10
|
- Credit note processing flow
|
|
11
11
|
- Hybrid RSA-OAEP + AES-256-GCM encryption/decryption
|
|
12
12
|
- Retry-capable HTTP client
|
|
@@ -46,6 +46,15 @@ const result = await sdk.receiptService.processCompleteReceipt(
|
|
|
46
46
|
totalAmount: 12.1
|
|
47
47
|
}
|
|
48
48
|
);
|
|
49
|
+
|
|
50
|
+
if (result.deliveryStatus === "PENDING_DOWNLOAD_TEMPLATE") {
|
|
51
|
+
// Commit the original request and result.downloadUrl in your durable store
|
|
52
|
+
// before displaying or printing the URL.
|
|
53
|
+
}
|
|
54
|
+
|
|
55
|
+
if (result.deliveryStatus === "PENDING_DOWNLOAD_UPLOAD") {
|
|
56
|
+
// Persist result.downloadCiphertext and retry those exact bytes later.
|
|
57
|
+
}
|
|
49
58
|
```
|
|
50
59
|
|
|
51
60
|
## Notes
|
|
@@ -55,3 +64,46 @@ const result = await sdk.receiptService.processCompleteReceipt(
|
|
|
55
64
|
- The package ships `.d.ts` declarations so it can be consumed directly from TypeScript.
|
|
56
65
|
- The full Java model class hierarchy is still not recreated as class-per-model; the payload contract is represented as typed object shapes instead.
|
|
57
66
|
- XML verification currently normalizes formatting whitespace and hashes the result. If strict XML C14N compatibility is required, that part should be hardened next.
|
|
67
|
+
## Client-encrypted receipt download links
|
|
68
|
+
|
|
69
|
+
The high-level flow uses the same client-encrypted mechanism when matching selects
|
|
70
|
+
`DOWNLOAD_FALLBACK` and when a transient service failure requires deferred completion.
|
|
71
|
+
When a healthy matching response returns `routeFound: false`, the SDK returns
|
|
72
|
+
`CUSTOMER_NOT_FOUND` and does not bypass a disabled download fallback.
|
|
73
|
+
|
|
74
|
+
The SDK also provides stateless primitives for resuming a URL under your own scheduler. It
|
|
75
|
+
does not store receipts, start background workers, or choose a retry schedule. Your
|
|
76
|
+
integration owns persistence and decides where and when deferred work runs.
|
|
77
|
+
|
|
78
|
+
```ts
|
|
79
|
+
import {
|
|
80
|
+
buildDownloadEnvelope,
|
|
81
|
+
encryptDownloadEnvelope,
|
|
82
|
+
generateDownloadLink
|
|
83
|
+
} from "@cheqi/sdk/download";
|
|
84
|
+
|
|
85
|
+
const link = generateDownloadLink("https://receipt.cheqi.io");
|
|
86
|
+
|
|
87
|
+
// Persist the complete template request, link.downloadId, and protected
|
|
88
|
+
// link.contentKey using your own durable storage before exposing link.url.
|
|
89
|
+
await receiptJobs.create({ templateRequest, ...link });
|
|
90
|
+
printQr(link.url);
|
|
91
|
+
|
|
92
|
+
// Later, on compute and a schedule controlled by your integration:
|
|
93
|
+
const template = await sdk.receiptService.generateReceiptTemplate(templateRequest);
|
|
94
|
+
const envelope = buildDownloadEnvelope(template);
|
|
95
|
+
const ciphertext = await encryptDownloadEnvelope(envelope, link.contentKey);
|
|
96
|
+
|
|
97
|
+
// Persist the exact ciphertext before its first upload attempt. After an ambiguous
|
|
98
|
+
// result, every retry must reuse these bytes rather than encrypting again.
|
|
99
|
+
await receiptJobs.markReady(link.downloadId, ciphertext);
|
|
100
|
+
await sdk.receiptService.uploadClientEncryptedReceipt({
|
|
101
|
+
downloadId: link.downloadId,
|
|
102
|
+
ciphertext
|
|
103
|
+
});
|
|
104
|
+
```
|
|
105
|
+
|
|
106
|
+
The customer may open the URL before the receipt is uploaded. The download page reports
|
|
107
|
+
that the receipt is not yet available and can be visited again later. Do not implement
|
|
108
|
+
receipt template generation locally: call the normal template endpoint after connectivity
|
|
109
|
+
returns so CHEQI, UBL, seller, and VAT behavior remains canonical.
|
package/dist/cheqi-sdk.d.ts
CHANGED
|
@@ -28,6 +28,8 @@ export declare class CheqiSDKBuilder {
|
|
|
28
28
|
apiEndpoint(apiEndpoint: string): this;
|
|
29
29
|
/** Set a custom API endpoint URL. Takes precedence over {@link apiEndpoint}. */
|
|
30
30
|
customApiEndpoint(customApiEndpoint: string): this;
|
|
31
|
+
/** Set the customer-facing receipt origin for a custom API endpoint. */
|
|
32
|
+
receiptDownloadBaseUrl(receiptDownloadBaseUrl: string): this;
|
|
31
33
|
/** Set the API key (typically starts with `sk_live_` or `sk_test_`). */
|
|
32
34
|
apiKey(apiKey: string): this;
|
|
33
35
|
/** Set the RSA private key (base64-encoded PKCS#8 DER) for decryption. */
|
package/dist/cheqi-sdk.js
CHANGED
|
@@ -32,6 +32,11 @@ export class CheqiSDKBuilder {
|
|
|
32
32
|
this.options.customApiEndpoint = customApiEndpoint;
|
|
33
33
|
return this;
|
|
34
34
|
}
|
|
35
|
+
/** Set the customer-facing receipt origin for a custom API endpoint. */
|
|
36
|
+
receiptDownloadBaseUrl(receiptDownloadBaseUrl) {
|
|
37
|
+
this.options.receiptDownloadBaseUrl = receiptDownloadBaseUrl;
|
|
38
|
+
return this;
|
|
39
|
+
}
|
|
35
40
|
/** Set the API key (typically starts with `sk_live_` or `sk_test_`). */
|
|
36
41
|
apiKey(apiKey) {
|
|
37
42
|
this.options.apiKey = apiKey;
|
|
@@ -107,7 +112,7 @@ export class CheqiSDK {
|
|
|
107
112
|
this.receiptProcessor = new ReceiptProcessor(this.decryptionService);
|
|
108
113
|
this.apiClient = apiClient ?? new DefaultCheqiApiClient(this.config);
|
|
109
114
|
this.matchingService = new MatchingService(this.apiClient);
|
|
110
|
-
this.receiptService = new ReceiptService(this.apiClient, this.encryptionService, this.matchingService);
|
|
115
|
+
this.receiptService = new ReceiptService(this.apiClient, this.encryptionService, this.matchingService, this.config.receiptDownloadBaseUrl);
|
|
111
116
|
this.companyService = new CompanyService(this.apiClient);
|
|
112
117
|
this.storeService = new StoreService(this.apiClient);
|
|
113
118
|
this.creditNoteService = new CreditNoteService(this.apiClient, this.encryptionService, this.matchingService, this.decryptionService);
|
package/dist/cheqi-sdk.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cheqi-sdk.js","sourceRoot":"","sources":["../src/cheqi-sdk.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"cheqi-sdk.js","sourceRoot":"","sources":["../src/cheqi-sdk.ts"],"names":[],"mappings":"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"}
|
package/dist/config.d.ts
CHANGED
|
@@ -6,6 +6,10 @@ export declare const Environment: {
|
|
|
6
6
|
readonly TEST: "https://test.api.cheqi.io";
|
|
7
7
|
readonly PRODUCTION: "https://api.cheqi.io";
|
|
8
8
|
};
|
|
9
|
+
export declare const ReceiptEnvironment: {
|
|
10
|
+
readonly SANDBOX: "https://sandbox.receipt.cheqi.io";
|
|
11
|
+
readonly PRODUCTION: "https://receipt.cheqi.io";
|
|
12
|
+
};
|
|
9
13
|
/**
|
|
10
14
|
* Validated, immutable configuration for the Cheqi SDK.
|
|
11
15
|
*
|
|
@@ -15,6 +19,7 @@ export declare const Environment: {
|
|
|
15
19
|
export declare class CheqiSDKConfig {
|
|
16
20
|
readonly apiEndpoint: string;
|
|
17
21
|
readonly apiKey: Nullable<string>;
|
|
22
|
+
readonly receiptDownloadBaseUrl: Nullable<string>;
|
|
18
23
|
readonly privateKey: Nullable<string>;
|
|
19
24
|
readonly timeoutSeconds: number;
|
|
20
25
|
readonly maxRetries: number;
|
package/dist/config.js
CHANGED
|
@@ -5,6 +5,10 @@ export const Environment = {
|
|
|
5
5
|
TEST: "https://test.api.cheqi.io",
|
|
6
6
|
PRODUCTION: "https://api.cheqi.io"
|
|
7
7
|
};
|
|
8
|
+
export const ReceiptEnvironment = {
|
|
9
|
+
SANDBOX: "https://sandbox.receipt.cheqi.io",
|
|
10
|
+
PRODUCTION: "https://receipt.cheqi.io"
|
|
11
|
+
};
|
|
8
12
|
const MAX_TIMEOUT_SECONDS = 300;
|
|
9
13
|
const MAX_RETRIES = 10;
|
|
10
14
|
/**
|
|
@@ -16,18 +20,20 @@ const MAX_RETRIES = 10;
|
|
|
16
20
|
export class CheqiSDKConfig {
|
|
17
21
|
apiEndpoint;
|
|
18
22
|
apiKey;
|
|
23
|
+
receiptDownloadBaseUrl;
|
|
19
24
|
privateKey;
|
|
20
25
|
timeoutSeconds;
|
|
21
26
|
maxRetries;
|
|
22
27
|
logger;
|
|
23
28
|
constructor(options = {}) {
|
|
24
|
-
const { environment, customApiEndpoint, apiKey = null, privateKey = null, timeoutSeconds = 30, maxRetries = 3, logger = new ConsoleLogger() } = options;
|
|
29
|
+
const { environment, customApiEndpoint, receiptDownloadBaseUrl, apiKey = null, privateKey = null, timeoutSeconds = 30, maxRetries = 3, logger = new ConsoleLogger() } = options;
|
|
25
30
|
this.logger = logger;
|
|
26
31
|
// --- endpoint ---
|
|
27
32
|
this.apiEndpoint = customApiEndpoint ?? environment ?? "";
|
|
28
33
|
if (!this.apiEndpoint) {
|
|
29
34
|
throw new Error("Either 'environment' or 'customApiEndpoint' must be provided");
|
|
30
35
|
}
|
|
36
|
+
this.receiptDownloadBaseUrl = receiptDownloadBaseUrl ?? receiptBaseUrlForEnvironment(environment);
|
|
31
37
|
// --- timeout ---
|
|
32
38
|
if (timeoutSeconds <= 0) {
|
|
33
39
|
throw new Error(`Timeout must be positive, got: ${timeoutSeconds}`);
|
|
@@ -57,6 +63,13 @@ export class CheqiSDKConfig {
|
|
|
57
63
|
this.logger.info(`SDK configured: endpoint=${this.apiEndpoint}, timeout=${this.timeoutSeconds}s, maxRetries=${this.maxRetries}`);
|
|
58
64
|
}
|
|
59
65
|
}
|
|
66
|
+
function receiptBaseUrlForEnvironment(environment) {
|
|
67
|
+
if (environment === Environment.PRODUCTION)
|
|
68
|
+
return ReceiptEnvironment.PRODUCTION;
|
|
69
|
+
if (environment === Environment.SANDBOX)
|
|
70
|
+
return ReceiptEnvironment.SANDBOX;
|
|
71
|
+
return null;
|
|
72
|
+
}
|
|
60
73
|
function isValidApiKeyFormat(key) {
|
|
61
74
|
return key.startsWith("sk_live_") || key.startsWith("sk_test_");
|
|
62
75
|
}
|
package/dist/config.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config.js","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAG5C,4CAA4C;AAC5C,MAAM,CAAC,MAAM,WAAW,GAAG;IACzB,OAAO,EAAE,8BAA8B;IACvC,IAAI,EAAE,2BAA2B;IACjC,UAAU,EAAE,sBAAsB;CAC1B,CAAC;AAEX,MAAM,mBAAmB,GAAG,GAAG,CAAC;AAChC,MAAM,WAAW,GAAG,EAAE,CAAC;AAEvB;;;;;GAKG;AACH,MAAM,OAAO,cAAc;IAChB,WAAW,CAAS;IACpB,MAAM,CAAmB;IACzB,UAAU,CAAmB;IAC7B,cAAc,CAAS;IACvB,UAAU,CAAS;IACnB,MAAM,CAAS;IAExB,YAAY,UAA2B,EAAE;QACvC,MAAM,EACJ,WAAW,EACX,iBAAiB,EACjB,MAAM,GAAG,IAAI,EACb,UAAU,GAAG,IAAI,EACjB,cAAc,GAAG,EAAE,EACnB,UAAU,GAAG,CAAC,EACd,MAAM,GAAG,IAAI,aAAa,EAAE,EAC7B,GAAG,OAAO,CAAC;QAEZ,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;QAErB,mBAAmB;QACnB,IAAI,CAAC,WAAW,GAAG,iBAAiB,IAAI,WAAW,IAAI,EAAE,CAAC;QAC1D,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC;YACtB,MAAM,IAAI,KAAK,CAAC,8DAA8D,CAAC,CAAC;QAClF,CAAC;
|
|
1
|
+
{"version":3,"file":"config.js","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"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"}
|
package/dist/download/index.d.ts
CHANGED
|
@@ -3,10 +3,15 @@
|
|
|
3
3
|
* ("Download Link Contract v1" — the offline-first QR route).
|
|
4
4
|
*
|
|
5
5
|
* The download id and AES-256-GCM content key are generated locally, with no network,
|
|
6
|
-
* so
|
|
7
|
-
* Cheqi API is unreachable.
|
|
8
|
-
*
|
|
9
|
-
*
|
|
6
|
+
* so an integration can render the QR `<baseUrl>/<downloadId>#<contentKey>` even while
|
|
7
|
+
* the Cheqi API is unreachable. Before exposing the URL, the integration is responsible
|
|
8
|
+
* for retaining the original template request, download id, and content key so it can
|
|
9
|
+
* finish issuance later. This SDK does not provide storage, scheduling, or background
|
|
10
|
+
* retry behavior.
|
|
11
|
+
*
|
|
12
|
+
* The content key travels only in the URL fragment, which browsers never send to any
|
|
13
|
+
* server: Cheqi stores ciphertext it can never decrypt, and decryption happens on the
|
|
14
|
+
* customer's device.
|
|
10
15
|
*
|
|
11
16
|
* This module is intentionally separate from {@link ../services/decryption.js | DecryptionService}
|
|
12
17
|
* (the Node-only RSA + AES path for receipts delivered to Cheqi wallets) and is
|
|
@@ -19,10 +24,11 @@
|
|
|
19
24
|
* used for wallet delivery, so no separate download-route model exists.
|
|
20
25
|
*/
|
|
21
26
|
import type { ReceiptEnvelope } from "../models/generated/ReceiptEnvelope.js";
|
|
27
|
+
import type { ReceiptTemplateResponse } from "../models/generated/ReceiptTemplateResponse.js";
|
|
22
28
|
export type { ReceiptEnvelope };
|
|
23
29
|
/** Download id length in bytes (128 bits — the enumeration defense on the public endpoint). */
|
|
24
30
|
export declare const DOWNLOAD_ID_LENGTH = 16;
|
|
25
|
-
/** A freshly generated download link
|
|
31
|
+
/** A freshly generated download link. The integration owns persistence and later processing. */
|
|
26
32
|
export interface DownloadLink {
|
|
27
33
|
/** base64url (unpadded) download id; the only part of the link the server ever sees. */
|
|
28
34
|
downloadId: string;
|
|
@@ -32,9 +38,10 @@ export interface DownloadLink {
|
|
|
32
38
|
url: string;
|
|
33
39
|
}
|
|
34
40
|
/**
|
|
35
|
-
* Generates a fresh download link locally — no network involved.
|
|
36
|
-
*
|
|
37
|
-
*
|
|
41
|
+
* Generates a fresh download link locally — no network involved. Use it after an online
|
|
42
|
+
* `DOWNLOAD_FALLBACK` decision or when a Cheqi outage requires a deferred customer URL.
|
|
43
|
+
* The integration must retain the request, id, and key before exposing the URL so it can
|
|
44
|
+
* finish template generation, encryption, and upload later.
|
|
38
45
|
*/
|
|
39
46
|
export declare function generateDownloadLink(baseUrl: string): DownloadLink;
|
|
40
47
|
/** Builds the customer-facing URL. The content key MUST stay in the fragment. */
|
|
@@ -47,6 +54,12 @@ export declare function parseDownloadUrl(url: string): {
|
|
|
47
54
|
downloadId: string;
|
|
48
55
|
contentKey: string;
|
|
49
56
|
};
|
|
57
|
+
/**
|
|
58
|
+
* Converts the canonical response from `POST /receipt/template` to the standard envelope
|
|
59
|
+
* encrypted for a client-generated download link. Receipt content is never generated or
|
|
60
|
+
* normalized locally; all formats present in the server response are preserved.
|
|
61
|
+
*/
|
|
62
|
+
export declare function buildDownloadEnvelope(template: ReceiptTemplateResponse): ReceiptEnvelope;
|
|
50
63
|
/**
|
|
51
64
|
* Encrypts a receipt envelope with the content key. Returns `base64(iv || ciphertext || tag)` —
|
|
52
65
|
* the exact bytes to upload as `ciphertext` to `POST /receipt/download`. Encrypt once and
|
package/dist/download/index.js
CHANGED
|
@@ -3,10 +3,15 @@
|
|
|
3
3
|
* ("Download Link Contract v1" — the offline-first QR route).
|
|
4
4
|
*
|
|
5
5
|
* The download id and AES-256-GCM content key are generated locally, with no network,
|
|
6
|
-
* so
|
|
7
|
-
* Cheqi API is unreachable.
|
|
8
|
-
*
|
|
9
|
-
*
|
|
6
|
+
* so an integration can render the QR `<baseUrl>/<downloadId>#<contentKey>` even while
|
|
7
|
+
* the Cheqi API is unreachable. Before exposing the URL, the integration is responsible
|
|
8
|
+
* for retaining the original template request, download id, and content key so it can
|
|
9
|
+
* finish issuance later. This SDK does not provide storage, scheduling, or background
|
|
10
|
+
* retry behavior.
|
|
11
|
+
*
|
|
12
|
+
* The content key travels only in the URL fragment, which browsers never send to any
|
|
13
|
+
* server: Cheqi stores ciphertext it can never decrypt, and decryption happens on the
|
|
14
|
+
* customer's device.
|
|
10
15
|
*
|
|
11
16
|
* This module is intentionally separate from {@link ../services/decryption.js | DecryptionService}
|
|
12
17
|
* (the Node-only RSA + AES path for receipts delivered to Cheqi wallets) and is
|
|
@@ -73,9 +78,10 @@ async function importContentKey(contentKey, usage) {
|
|
|
73
78
|
return subtle().importKey("raw", keyBytes, "AES-GCM", false, [usage]);
|
|
74
79
|
}
|
|
75
80
|
/**
|
|
76
|
-
* Generates a fresh download link locally — no network involved.
|
|
77
|
-
*
|
|
78
|
-
*
|
|
81
|
+
* Generates a fresh download link locally — no network involved. Use it after an online
|
|
82
|
+
* `DOWNLOAD_FALLBACK` decision or when a Cheqi outage requires a deferred customer URL.
|
|
83
|
+
* The integration must retain the request, id, and key before exposing the URL so it can
|
|
84
|
+
* finish template generation, encryption, and upload later.
|
|
79
85
|
*/
|
|
80
86
|
export function generateDownloadLink(baseUrl) {
|
|
81
87
|
const downloadId = toBase64Url(randomBytes(DOWNLOAD_ID_LENGTH));
|
|
@@ -104,6 +110,22 @@ export function parseDownloadUrl(url) {
|
|
|
104
110
|
}
|
|
105
111
|
return { downloadId, contentKey };
|
|
106
112
|
}
|
|
113
|
+
/**
|
|
114
|
+
* Converts the canonical response from `POST /receipt/template` to the standard envelope
|
|
115
|
+
* encrypted for a client-generated download link. Receipt content is never generated or
|
|
116
|
+
* normalized locally; all formats present in the server response are preserved.
|
|
117
|
+
*/
|
|
118
|
+
export function buildDownloadEnvelope(template) {
|
|
119
|
+
if (!template) {
|
|
120
|
+
throw new EncryptionError("Receipt template response is required");
|
|
121
|
+
}
|
|
122
|
+
return {
|
|
123
|
+
cheqi: template.cheqi,
|
|
124
|
+
ublPurchaseReceipt: template.ublPurchaseReceipt,
|
|
125
|
+
ublInvoice: template.ublInvoice,
|
|
126
|
+
vatMetaData: template.vatMetadata
|
|
127
|
+
};
|
|
128
|
+
}
|
|
107
129
|
/**
|
|
108
130
|
* Encrypts a receipt envelope with the content key. Returns `base64(iv || ciphertext || tag)` —
|
|
109
131
|
* the exact bytes to upload as `ciphertext` to `POST /receipt/download`. Encrypt once and
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/download/index.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/download/index.ts"],"names":[],"mappings":"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"}
|
package/dist/http/client.js
CHANGED
package/dist/index.d.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
export { CheqiSDK, CheqiSDKBuilder } from "./cheqi-sdk.js";
|
|
2
|
-
export { Environment, CheqiSDKConfig } from "./config.js";
|
|
2
|
+
export { Environment, ReceiptEnvironment, CheqiSDKConfig } from "./config.js";
|
|
3
3
|
export * from "./errors.js";
|
|
4
4
|
export type { Logger } from "./logger.js";
|
|
5
5
|
export { ConsoleLogger, NoopLogger } from "./logger.js";
|
package/dist/index.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
export { CheqiSDK, CheqiSDKBuilder } from "./cheqi-sdk.js";
|
|
2
|
-
export { Environment, CheqiSDKConfig } from "./config.js";
|
|
2
|
+
export { Environment, ReceiptEnvironment, CheqiSDKConfig } from "./config.js";
|
|
3
3
|
export * from "./errors.js";
|
|
4
4
|
export { ConsoleLogger, NoopLogger } from "./logger.js";
|
|
5
5
|
export * from "./models/index.js";
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,eAAe,EAAE,MAAM,gBAAgB,CAAC;AAC3D,OAAO,EAAE,WAAW,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,eAAe,EAAE,MAAM,gBAAgB,CAAC;AAC3D,OAAO,EAAE,WAAW,EAAE,kBAAkB,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAC9E,cAAc,aAAa,CAAC;AAE5B,OAAO,EAAE,aAAa,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AACxD,cAAc,mBAAmB,CAAC;AAClC,OAAO,EAAE,qBAAqB,EAAE,MAAM,kBAAkB,CAAC;AACzD,OAAO,EAAE,SAAS,EAAE,MAAM,qBAAqB,CAAC;AAChD,OAAO,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAE/C,OAAO,EAAE,iBAAiB,EAAE,MAAM,0BAA0B,CAAC;AAC7D,OAAO,EAAE,iBAAiB,EAAE,MAAM,0BAA0B,CAAC;AAC7D,OAAO,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AACzD,OAAO,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AACvD,OAAO,EAAE,gBAAgB,EAAE,MAAM,iCAAiC,CAAC;AACnE,OAAO,EAAE,iBAAiB,EAAE,MAAM,2BAA2B,CAAC;AAC9D,OAAO,EAAE,mBAAmB,EAAE,MAAM,4BAA4B,CAAC;AACjE,OAAO,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AACvD,OAAO,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AACnD,cAAc,qBAAqB,CAAC;AACpC,OAAO,EAAE,gBAAgB,EAAE,MAAM,cAAc,CAAC;AAChD,OAAO,EAAE,eAAe,EAAE,MAAM,UAAU,CAAC"}
|
|
@@ -23,6 +23,12 @@ export interface RecipientResolutionResponse {
|
|
|
23
23
|
* @memberof RecipientResolutionResponse
|
|
24
24
|
*/
|
|
25
25
|
routeFound?: boolean;
|
|
26
|
+
/**
|
|
27
|
+
* The selected receipt delivery route
|
|
28
|
+
* @type {string}
|
|
29
|
+
* @memberof RecipientResolutionResponse
|
|
30
|
+
*/
|
|
31
|
+
deliveryRouteType?: RecipientResolutionResponseDeliveryRouteTypeEnum;
|
|
26
32
|
/**
|
|
27
33
|
* The unique identifier for the matching process
|
|
28
34
|
* @type {string}
|
|
@@ -54,6 +60,15 @@ export interface RecipientResolutionResponse {
|
|
|
54
60
|
*/
|
|
55
61
|
buyerType?: BuyerType;
|
|
56
62
|
}
|
|
63
|
+
/**
|
|
64
|
+
* @export
|
|
65
|
+
*/
|
|
66
|
+
export declare const RecipientResolutionResponseDeliveryRouteTypeEnum: {
|
|
67
|
+
readonly DIGITAL: "DIGITAL";
|
|
68
|
+
readonly EMAIL_FALLBACK: "EMAIL_FALLBACK";
|
|
69
|
+
readonly DOWNLOAD_FALLBACK: "DOWNLOAD_FALLBACK";
|
|
70
|
+
};
|
|
71
|
+
export type RecipientResolutionResponseDeliveryRouteTypeEnum = typeof RecipientResolutionResponseDeliveryRouteTypeEnum[keyof typeof RecipientResolutionResponseDeliveryRouteTypeEnum];
|
|
57
72
|
/**
|
|
58
73
|
* Check if a given object implements the RecipientResolutionResponse interface.
|
|
59
74
|
*/
|
|
@@ -13,6 +13,14 @@
|
|
|
13
13
|
*/
|
|
14
14
|
import { MatchedRecipientFromJSON, MatchedRecipientToJSON, } from './MatchedRecipient.js';
|
|
15
15
|
import { BuyerTypeFromJSON, BuyerTypeToJSON, } from './BuyerType.js';
|
|
16
|
+
/**
|
|
17
|
+
* @export
|
|
18
|
+
*/
|
|
19
|
+
export const RecipientResolutionResponseDeliveryRouteTypeEnum = {
|
|
20
|
+
DIGITAL: 'DIGITAL',
|
|
21
|
+
EMAIL_FALLBACK: 'EMAIL_FALLBACK',
|
|
22
|
+
DOWNLOAD_FALLBACK: 'DOWNLOAD_FALLBACK'
|
|
23
|
+
};
|
|
16
24
|
/**
|
|
17
25
|
* Check if a given object implements the RecipientResolutionResponse interface.
|
|
18
26
|
*/
|
|
@@ -28,6 +36,7 @@ export function RecipientResolutionResponseFromJSONTyped(json, ignoreDiscriminat
|
|
|
28
36
|
}
|
|
29
37
|
return {
|
|
30
38
|
'routeFound': json['routeFound'] == null ? undefined : json['routeFound'],
|
|
39
|
+
'deliveryRouteType': json['deliveryRouteType'] == null ? undefined : json['deliveryRouteType'],
|
|
31
40
|
'matchId': json['matchId'] == null ? undefined : json['matchId'],
|
|
32
41
|
'recipients': json['recipients'] == null ? undefined : (json['recipients'].map(MatchedRecipientFromJSON)),
|
|
33
42
|
'expiresAt': json['expiresAt'] == null ? undefined : (new Date(json['expiresAt'])),
|
|
@@ -44,6 +53,7 @@ export function RecipientResolutionResponseToJSONTyped(value, ignoreDiscriminato
|
|
|
44
53
|
}
|
|
45
54
|
return {
|
|
46
55
|
'routeFound': value['routeFound'],
|
|
56
|
+
'deliveryRouteType': value['deliveryRouteType'],
|
|
47
57
|
'matchId': value['matchId'],
|
|
48
58
|
'recipients': value['recipients'] == null ? undefined : (value['recipients'].map(MatchedRecipientToJSON)),
|
|
49
59
|
'expiresAt': value['expiresAt'] == null ? undefined : ((value['expiresAt']).toISOString()),
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"RecipientResolutionResponse.js","sourceRoot":"","sources":["../../../src/models/generated/RecipientResolutionResponse.ts"],"names":[],"mappings":"AAAA,oBAAoB;AACpB,oBAAoB;AACpB;;;;;;;;;;GAUG;AAIH,OAAO,EACH,wBAAwB,EAExB,sBAAsB,GAEzB,MAAM,uBAAuB,CAAC;AAE/B,OAAO,EACH,iBAAiB,EAEjB,eAAe,GAElB,MAAM,gBAAgB,CAAC;
|
|
1
|
+
{"version":3,"file":"RecipientResolutionResponse.js","sourceRoot":"","sources":["../../../src/models/generated/RecipientResolutionResponse.ts"],"names":[],"mappings":"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"}
|
package/dist/models.d.ts
CHANGED
|
@@ -3,6 +3,8 @@ export declare const DeliveryStatus: {
|
|
|
3
3
|
readonly DELIVERED_DIGITAL: "DELIVERED_DIGITAL";
|
|
4
4
|
readonly DELIVERED_EMAIL: "DELIVERED_EMAIL";
|
|
5
5
|
readonly DELIVERED_DOWNLOAD: "DELIVERED_DOWNLOAD";
|
|
6
|
+
readonly PENDING_DOWNLOAD_TEMPLATE: "PENDING_DOWNLOAD_TEMPLATE";
|
|
7
|
+
readonly PENDING_DOWNLOAD_UPLOAD: "PENDING_DOWNLOAD_UPLOAD";
|
|
6
8
|
readonly CUSTOMER_NOT_FOUND: "CUSTOMER_NOT_FOUND";
|
|
7
9
|
readonly FAILED: "FAILED";
|
|
8
10
|
};
|
|
@@ -18,6 +20,9 @@ export interface ReceiptResultInit {
|
|
|
18
20
|
message?: string | null;
|
|
19
21
|
customerEmail?: string | null;
|
|
20
22
|
downloadUrl?: string | null;
|
|
23
|
+
downloadCiphertext?: string | null;
|
|
24
|
+
templateHash?: string | null;
|
|
25
|
+
canonicalJson?: string | null;
|
|
21
26
|
}
|
|
22
27
|
export declare class ReceiptResult {
|
|
23
28
|
readonly success: boolean;
|
|
@@ -30,6 +35,9 @@ export declare class ReceiptResult {
|
|
|
30
35
|
readonly message: string | null;
|
|
31
36
|
readonly customerEmail: string | null;
|
|
32
37
|
readonly downloadUrl: string | null;
|
|
38
|
+
readonly downloadCiphertext: string | null;
|
|
39
|
+
readonly templateHash: string | null;
|
|
40
|
+
readonly canonicalJson: string | null;
|
|
33
41
|
constructor(init: ReceiptResultInit);
|
|
34
42
|
static deliveredToApp(response: Record<string, unknown>, templateContent: string): ReceiptResult;
|
|
35
43
|
/**
|
|
@@ -37,6 +45,9 @@ export declare class ReceiptResult {
|
|
|
37
45
|
* download URL. The merchant terminal renders `downloadUrl` as a QR code for the customer.
|
|
38
46
|
*/
|
|
39
47
|
static deliveredViaDownload(response: Record<string, unknown>, templateContent: string): ReceiptResult;
|
|
48
|
+
static deliveredViaClientDownload(response: unknown, templateHash: string, canonicalJson: string, downloadUrl: string): ReceiptResult;
|
|
49
|
+
static pendingDownloadTemplate(downloadUrl: string, message: string): ReceiptResult;
|
|
50
|
+
static pendingDownloadUpload(downloadUrl: string, downloadCiphertext: string, templateHash: string, canonicalJson: string, message: string): ReceiptResult;
|
|
40
51
|
static deliveredViaEmail(customerEmail: string): ReceiptResult;
|
|
41
52
|
static customerNotFound(): ReceiptResult;
|
|
42
53
|
static failed(message: string): ReceiptResult;
|
|
@@ -46,6 +57,9 @@ export declare class ReceiptResult {
|
|
|
46
57
|
getReceiptCount(): number;
|
|
47
58
|
getEmailAddress(): string | null;
|
|
48
59
|
getDownloadUrl(): string | null;
|
|
60
|
+
getDownloadCiphertext(): string | null;
|
|
61
|
+
getTemplateHash(): string | null;
|
|
62
|
+
getCanonicalJson(): string | null;
|
|
49
63
|
getMessage(): string | null;
|
|
50
64
|
}
|
|
51
65
|
export interface CreditNoteResultInit {
|
package/dist/models.js
CHANGED
|
@@ -3,6 +3,8 @@ export const DeliveryStatus = {
|
|
|
3
3
|
DELIVERED_DIGITAL: "DELIVERED_DIGITAL",
|
|
4
4
|
DELIVERED_EMAIL: "DELIVERED_EMAIL",
|
|
5
5
|
DELIVERED_DOWNLOAD: "DELIVERED_DOWNLOAD",
|
|
6
|
+
PENDING_DOWNLOAD_TEMPLATE: "PENDING_DOWNLOAD_TEMPLATE",
|
|
7
|
+
PENDING_DOWNLOAD_UPLOAD: "PENDING_DOWNLOAD_UPLOAD",
|
|
6
8
|
CUSTOMER_NOT_FOUND: "CUSTOMER_NOT_FOUND",
|
|
7
9
|
FAILED: "FAILED"
|
|
8
10
|
};
|
|
@@ -17,6 +19,9 @@ export class ReceiptResult {
|
|
|
17
19
|
message;
|
|
18
20
|
customerEmail;
|
|
19
21
|
downloadUrl;
|
|
22
|
+
downloadCiphertext;
|
|
23
|
+
templateHash;
|
|
24
|
+
canonicalJson;
|
|
20
25
|
constructor(init) {
|
|
21
26
|
this.success = init.success;
|
|
22
27
|
this.deliveryStatus = init.deliveryStatus ?? null;
|
|
@@ -28,6 +33,9 @@ export class ReceiptResult {
|
|
|
28
33
|
this.message = init.message ?? null;
|
|
29
34
|
this.customerEmail = init.customerEmail ?? null;
|
|
30
35
|
this.downloadUrl = init.downloadUrl ?? null;
|
|
36
|
+
this.downloadCiphertext = init.downloadCiphertext ?? null;
|
|
37
|
+
this.templateHash = init.templateHash ?? null;
|
|
38
|
+
this.canonicalJson = init.canonicalJson ?? null;
|
|
31
39
|
}
|
|
32
40
|
static deliveredToApp(response, templateContent) {
|
|
33
41
|
const receiptCount = (Array.isArray(response.createdReceipts) ? response.createdReceipts.length : undefined) ??
|
|
@@ -62,6 +70,42 @@ export class ReceiptResult {
|
|
|
62
70
|
message: "Receipt available for self-service download"
|
|
63
71
|
});
|
|
64
72
|
}
|
|
73
|
+
static deliveredViaClientDownload(response, templateHash, canonicalJson, downloadUrl) {
|
|
74
|
+
return new ReceiptResult({
|
|
75
|
+
success: true,
|
|
76
|
+
deliveryStatus: DeliveryStatus.DELIVERED_DOWNLOAD,
|
|
77
|
+
deliveryMethod: "DOWNLOAD",
|
|
78
|
+
customerFound: true,
|
|
79
|
+
receiptCount: 1,
|
|
80
|
+
response,
|
|
81
|
+
templateContent: canonicalJson,
|
|
82
|
+
templateHash,
|
|
83
|
+
canonicalJson,
|
|
84
|
+
downloadUrl,
|
|
85
|
+
message: "Receipt available through an encrypted download link"
|
|
86
|
+
});
|
|
87
|
+
}
|
|
88
|
+
static pendingDownloadTemplate(downloadUrl, message) {
|
|
89
|
+
return new ReceiptResult({
|
|
90
|
+
success: true,
|
|
91
|
+
deliveryStatus: DeliveryStatus.PENDING_DOWNLOAD_TEMPLATE,
|
|
92
|
+
deliveryMethod: "DOWNLOAD",
|
|
93
|
+
downloadUrl,
|
|
94
|
+
message
|
|
95
|
+
});
|
|
96
|
+
}
|
|
97
|
+
static pendingDownloadUpload(downloadUrl, downloadCiphertext, templateHash, canonicalJson, message) {
|
|
98
|
+
return new ReceiptResult({
|
|
99
|
+
success: true,
|
|
100
|
+
deliveryStatus: DeliveryStatus.PENDING_DOWNLOAD_UPLOAD,
|
|
101
|
+
deliveryMethod: "DOWNLOAD",
|
|
102
|
+
downloadUrl,
|
|
103
|
+
downloadCiphertext,
|
|
104
|
+
templateHash,
|
|
105
|
+
canonicalJson,
|
|
106
|
+
message
|
|
107
|
+
});
|
|
108
|
+
}
|
|
65
109
|
static deliveredViaEmail(customerEmail) {
|
|
66
110
|
return new ReceiptResult({
|
|
67
111
|
success: true,
|
|
@@ -106,6 +150,9 @@ export class ReceiptResult {
|
|
|
106
150
|
getDownloadUrl() {
|
|
107
151
|
return this.downloadUrl;
|
|
108
152
|
}
|
|
153
|
+
getDownloadCiphertext() { return this.downloadCiphertext; }
|
|
154
|
+
getTemplateHash() { return this.templateHash; }
|
|
155
|
+
getCanonicalJson() { return this.canonicalJson; }
|
|
109
156
|
getMessage() {
|
|
110
157
|
return this.message;
|
|
111
158
|
}
|
package/dist/models.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"models.js","sourceRoot":"","sources":["../src/models.ts"],"names":[],"mappings":"AAAA,sFAAsF;AACtF,MAAM,CAAC,MAAM,cAAc,GAAG;IAC5B,iBAAiB,EAAE,mBAAmB;IACtC,eAAe,EAAE,iBAAiB;IAClC,kBAAkB,EAAE,oBAAoB;IACxC,kBAAkB,EAAE,oBAAoB;IACxC,MAAM,EAAE,QAAQ;CACR,CAAC;
|
|
1
|
+
{"version":3,"file":"models.js","sourceRoot":"","sources":["../src/models.ts"],"names":[],"mappings":"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"}
|
|
@@ -6,7 +6,8 @@ export declare class ReceiptService {
|
|
|
6
6
|
private readonly apiClient;
|
|
7
7
|
private readonly encryptionService;
|
|
8
8
|
private readonly matchingService;
|
|
9
|
-
|
|
9
|
+
private readonly receiptDownloadBaseUrl;
|
|
10
|
+
constructor(apiClient: Pick<CheqiApiClient, "generateReceiptTemplate" | "sendEncryptedReceipts" | "sendReceiptViaEmail" | "uploadClientEncryptedReceipt">, encryptionService: EncryptionService, matchingService: MatchingService, receiptDownloadBaseUrl?: string | null);
|
|
10
11
|
processCompleteReceipt(identificationDetails: IdentificationDetails, receiptRequest: ReceiptTemplateRequest, accessToken?: string | null, notificationDisplayCode?: NotificationDisplayCode | null): Promise<ReceiptResult>;
|
|
11
12
|
generateReceiptTemplate(request: ReceiptTemplateGenerationRequest, accessToken?: string | null): Promise<ReceiptTemplateResponse>;
|
|
12
13
|
createEncryptedReceipts(purchaseReceipt: string, recipient: MatchedRecipient, notificationDisplayCode?: NotificationDisplayCode | null): EncryptedReceiptRequest;
|
|
@@ -22,6 +23,8 @@ export declare class ReceiptService {
|
|
|
22
23
|
* download id — a bug in the integration; do not regenerate the id or retry.
|
|
23
24
|
*/
|
|
24
25
|
uploadClientEncryptedReceipt(request: ClientReceiptDownloadRequest, accessToken?: string | null): Promise<ClientReceiptDownloadResponse>;
|
|
26
|
+
private deliverClientEncryptedDownload;
|
|
27
|
+
private createDownloadLink;
|
|
25
28
|
private buildEncryptedReceipts;
|
|
26
29
|
private validateProcessInputs;
|
|
27
30
|
}
|
package/dist/services/receipt.js
CHANGED
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { CheqiSDKError, ErrorCodes, ReceiptProcessingError } from "../errors.js";
|
|
2
|
+
import { buildDownloadEnvelope, encryptDownloadEnvelope, generateDownloadLink } from "../download/index.js";
|
|
2
3
|
import { ReceiptResult } from "../models.js";
|
|
3
4
|
import { isValidEmail, serializeJson, sha256Hex } from "../utils.js";
|
|
4
5
|
function uniqueFormats(recipients = []) {
|
|
@@ -24,16 +25,30 @@ export class ReceiptService {
|
|
|
24
25
|
apiClient;
|
|
25
26
|
encryptionService;
|
|
26
27
|
matchingService;
|
|
27
|
-
|
|
28
|
+
receiptDownloadBaseUrl;
|
|
29
|
+
constructor(apiClient, encryptionService, matchingService, receiptDownloadBaseUrl = null) {
|
|
28
30
|
this.apiClient = apiClient;
|
|
29
31
|
this.encryptionService = encryptionService;
|
|
30
32
|
this.matchingService = matchingService;
|
|
33
|
+
this.receiptDownloadBaseUrl = receiptDownloadBaseUrl;
|
|
31
34
|
}
|
|
32
35
|
async processCompleteReceipt(identificationDetails, receiptRequest, accessToken = null, notificationDisplayCode = null) {
|
|
33
36
|
this.validateProcessInputs(identificationDetails, receiptRequest);
|
|
34
37
|
try {
|
|
35
|
-
|
|
38
|
+
let matchResponse;
|
|
39
|
+
try {
|
|
40
|
+
matchResponse = await this.matchingService.matchCustomer(identificationDetails, accessToken);
|
|
41
|
+
}
|
|
42
|
+
catch (error) {
|
|
43
|
+
if (isDeferredFailure(error)) {
|
|
44
|
+
return ReceiptResult.pendingDownloadTemplate(this.createDownloadLink().url, errorMessage(error));
|
|
45
|
+
}
|
|
46
|
+
throw error;
|
|
47
|
+
}
|
|
36
48
|
const recipientEmail = identificationDetails.recipientEmail;
|
|
49
|
+
if (routeFound(matchResponse) && matchResponse.deliveryRouteType == null) {
|
|
50
|
+
throw new CheqiSDKError("Matching response did not include deliveryRouteType; refusing legacy fallback-compatible submission", { errorCode: ErrorCodes.INVALID_RESPONSE });
|
|
51
|
+
}
|
|
37
52
|
if (!routeFound(matchResponse) && !recipientEmail) {
|
|
38
53
|
return ReceiptResult.customerNotFound();
|
|
39
54
|
}
|
|
@@ -44,8 +59,20 @@ export class ReceiptService {
|
|
|
44
59
|
buyerType: getRequestBuyerType(receiptRequest) ?? matchResponse.buyerType,
|
|
45
60
|
taxesApplied: resolveTaxesApplied(receiptRequest)
|
|
46
61
|
};
|
|
47
|
-
|
|
62
|
+
let templateResponse;
|
|
63
|
+
try {
|
|
64
|
+
templateResponse = await this.generateReceiptTemplate(templateGenerationRequest, accessToken);
|
|
65
|
+
}
|
|
66
|
+
catch (error) {
|
|
67
|
+
if (isDeferredFailure(error)) {
|
|
68
|
+
return ReceiptResult.pendingDownloadTemplate(this.createDownloadLink().url, errorMessage(error));
|
|
69
|
+
}
|
|
70
|
+
throw error;
|
|
71
|
+
}
|
|
48
72
|
if (routeFound(matchResponse)) {
|
|
73
|
+
if (matchResponse.deliveryRouteType === "DOWNLOAD_FALLBACK") {
|
|
74
|
+
return this.deliverClientEncryptedDownload(this.createDownloadLink(), templateResponse, accessToken);
|
|
75
|
+
}
|
|
49
76
|
const encryptedReceipts = this.buildEncryptedReceipts(matchResponse, templateResponse, notificationDisplayCode);
|
|
50
77
|
const templateContent = templateResponse.cheqi
|
|
51
78
|
? serializeJson(templateResponse.cheqi)
|
|
@@ -150,6 +177,28 @@ export class ReceiptService {
|
|
|
150
177
|
}
|
|
151
178
|
return this.apiClient.uploadClientEncryptedReceipt(request, accessToken);
|
|
152
179
|
}
|
|
180
|
+
async deliverClientEncryptedDownload(link, templateResponse, accessToken) {
|
|
181
|
+
const envelope = buildDownloadEnvelope(templateResponse);
|
|
182
|
+
const canonicalJson = serializeJson(templateResponse.cheqi ?? {});
|
|
183
|
+
const templateHash = sha256Hex(canonicalJson);
|
|
184
|
+
const ciphertext = await encryptDownloadEnvelope(envelope, link.contentKey);
|
|
185
|
+
try {
|
|
186
|
+
const response = await this.uploadClientEncryptedReceipt({ downloadId: link.downloadId, ciphertext, templateHash }, accessToken);
|
|
187
|
+
return ReceiptResult.deliveredViaClientDownload(response, templateHash, canonicalJson, link.url);
|
|
188
|
+
}
|
|
189
|
+
catch (error) {
|
|
190
|
+
if (isDeferredFailure(error)) {
|
|
191
|
+
return ReceiptResult.pendingDownloadUpload(link.url, ciphertext, templateHash, canonicalJson, errorMessage(error));
|
|
192
|
+
}
|
|
193
|
+
throw error;
|
|
194
|
+
}
|
|
195
|
+
}
|
|
196
|
+
createDownloadLink() {
|
|
197
|
+
if (!this.receiptDownloadBaseUrl) {
|
|
198
|
+
throw new CheqiSDKError("Receipt download base URL is required for automatic encrypted fallback; configure a standard Environment or receiptDownloadBaseUrl", { errorCode: ErrorCodes.CONFIGURATION_ERROR });
|
|
199
|
+
}
|
|
200
|
+
return generateDownloadLink(this.receiptDownloadBaseUrl);
|
|
201
|
+
}
|
|
153
202
|
buildEncryptedReceipts(matchResponse, templateResponse, notificationDisplayCode) {
|
|
154
203
|
const encryptedReceipts = [];
|
|
155
204
|
for (const recipient of matchedRecipients(matchResponse)) {
|
|
@@ -186,6 +235,20 @@ export class ReceiptService {
|
|
|
186
235
|
}
|
|
187
236
|
}
|
|
188
237
|
}
|
|
238
|
+
function isDeferredFailure(error) {
|
|
239
|
+
let current = error;
|
|
240
|
+
while (current instanceof Error) {
|
|
241
|
+
if (current instanceof CheqiSDKError) {
|
|
242
|
+
return current.isNetworkError() || current.httpStatusCode === 408 || current.httpStatusCode === 429 ||
|
|
243
|
+
current.httpStatusCode >= 500;
|
|
244
|
+
}
|
|
245
|
+
current = current.cause;
|
|
246
|
+
}
|
|
247
|
+
return false;
|
|
248
|
+
}
|
|
249
|
+
function errorMessage(error) {
|
|
250
|
+
return error instanceof Error ? error.message : String(error);
|
|
251
|
+
}
|
|
189
252
|
function enrichWithVatContext(request, matchResponse) {
|
|
190
253
|
return {
|
|
191
254
|
...request,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"receipt.js","sourceRoot":"","sources":["../../src/services/receipt.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,UAAU,EAAE,sBAAsB,EAAE,MAAM,cAAc,CAAC;AACjF,OAAO,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AAgB7C,OAAO,EAAE,YAAY,EAAE,aAAa,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAUrE,SAAS,aAAa,CAAC,aAAiC,EAAE;IACxD,MAAM,IAAI,GAAG,IAAI,GAAG,EAAiB,CAAC;IACtC,MAAM,OAAO,GAAoB,EAAE,CAAC;IAEpC,KAAK,MAAM,SAAS,IAAI,UAAU,EAAE,CAAC;QACnC,KAAK,MAAM,MAAM,IAAI,SAAS,CAAC,eAAe,IAAI,EAAE,EAAE,CAAC;YACrD,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC;gBACtB,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;gBACjB,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;YACvB,CAAC;QACH,CAAC;IACH,CAAC;IAED,OAAO,OAAO,CAAC;AACjB,CAAC;AAED,SAAS,UAAU,CAAC,aAA0C;IAC5D,OAAO,OAAO,CAAC,aAAa,CAAC,UAAU,IAAK,aAA6C,CAAC,aAAa,CAAC,CAAC;AAC3G,CAAC;AAED,SAAS,iBAAiB,CAAC,aAA0C;IACnE,OAAO,aAAa,CAAC,UAAU,IAAI,EAAE,CAAC;AACxC,CAAC;AAED,MAAM,OAAO,cAAc;IAEN;IAIA;IACA;
|
|
1
|
+
{"version":3,"file":"receipt.js","sourceRoot":"","sources":["../../src/services/receipt.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,UAAU,EAAE,sBAAsB,EAAE,MAAM,cAAc,CAAC;AACjF,OAAO,EACL,qBAAqB,EACrB,uBAAuB,EACvB,oBAAoB,EAErB,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AAgB7C,OAAO,EAAE,YAAY,EAAE,aAAa,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAUrE,SAAS,aAAa,CAAC,aAAiC,EAAE;IACxD,MAAM,IAAI,GAAG,IAAI,GAAG,EAAiB,CAAC;IACtC,MAAM,OAAO,GAAoB,EAAE,CAAC;IAEpC,KAAK,MAAM,SAAS,IAAI,UAAU,EAAE,CAAC;QACnC,KAAK,MAAM,MAAM,IAAI,SAAS,CAAC,eAAe,IAAI,EAAE,EAAE,CAAC;YACrD,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC;gBACtB,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;gBACjB,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;YACvB,CAAC;QACH,CAAC;IACH,CAAC;IAED,OAAO,OAAO,CAAC;AACjB,CAAC;AAED,SAAS,UAAU,CAAC,aAA0C;IAC5D,OAAO,OAAO,CAAC,aAAa,CAAC,UAAU,IAAK,aAA6C,CAAC,aAAa,CAAC,CAAC;AAC3G,CAAC;AAED,SAAS,iBAAiB,CAAC,aAA0C;IACnE,OAAO,aAAa,CAAC,UAAU,IAAI,EAAE,CAAC;AACxC,CAAC;AAED,MAAM,OAAO,cAAc;IAEN;IAIA;IACA;IACA;IAPnB,YACmB,SAGhB,EACgB,iBAAoC,EACpC,eAAgC,EAChC,yBAAwC,IAAI;QAN5C,cAAS,GAAT,SAAS,CAGzB;QACgB,sBAAiB,GAAjB,iBAAiB,CAAmB;QACpC,oBAAe,GAAf,eAAe,CAAiB;QAChC,2BAAsB,GAAtB,sBAAsB,CAAsB;IAC5D,CAAC;IAEJ,KAAK,CAAC,sBAAsB,CAC1B,qBAA4C,EAC5C,cAAsC,EACtC,cAA6B,IAAI,EACjC,0BAA0D,IAAI;QAE9D,IAAI,CAAC,qBAAqB,CAAC,qBAAqB,EAAE,cAAc,CAAC,CAAC;QAElE,IAAI,CAAC;YACH,IAAI,aAA0C,CAAC;YAC/C,IAAI,CAAC;gBACH,aAAa,GAAG,MAAM,IAAI,CAAC,eAAe,CAAC,aAAa,CAAC,qBAAqB,EAAE,WAAW,CAAC,CAAC;YAC/F,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBACf,IAAI,iBAAiB,CAAC,KAAK,CAAC,EAAE,CAAC;oBAC7B,OAAO,aAAa,CAAC,uBAAuB,CAAC,IAAI,CAAC,kBAAkB,EAAE,CAAC,GAAG,EAAE,YAAY,CAAC,KAAK,CAAC,CAAC,CAAC;gBACnG,CAAC;gBACD,MAAM,KAAK,CAAC;YACd,CAAC;YACD,MAAM,cAAc,GAAG,qBAAqB,CAAC,cAAc,CAAC;YAE5D,IAAI,UAAU,CAAC,aAAa,CAAC,IAAI,aAAa,CAAC,iBAAiB,IAAI,IAAI,EAAE,CAAC;gBACzE,MAAM,IAAI,aAAa,CACrB,qGAAqG,EACrG,EAAE,SAAS,EAAE,UAAU,CAAC,gBAAgB,EAAE,CAC3C,CAAC;YACJ,CAAC;YAED,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,IAAI,CAAC,cAAc,EAAE,CAAC;gBAClD,OAAO,aAAa,CAAC,gBAAgB,EAAE,CAAC;YAC1C,CAAC;YAED,MAAM,yBAAyB,GAAG;gBAChC,sBAAsB,EAAE,oBAAoB,CAAC,cAAc,EAAE,aAAa,CAAC;gBAC3E,OAAO,EAAE,aAAa,CAAC,iBAAiB,CAAC,aAAa,CAAC,CAAC;gBACxD,gBAAgB,EAAE,0BAA0B,CAAC,cAAc,CAAC,IAAI,aAAa,CAAC,gBAAgB;gBAC9F,SAAS,EAAE,mBAAmB,CAAC,cAAc,CAAC,IAAI,aAAa,CAAC,SAAS;gBACzE,YAAY,EAAE,mBAAmB,CAAC,cAAc,CAAC;aACH,CAAC;YAEjD,IAAI,gBAAyC,CAAC;YAC9C,IAAI,CAAC;gBACH,gBAAgB,GAAG,MAAM,IAAI,CAAC,uBAAuB,CAAC,yBAAyB,EAAE,WAAW,CAAC,CAAC;YAChG,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBACf,IAAI,iBAAiB,CAAC,KAAK,CAAC,EAAE,CAAC;oBAC7B,OAAO,aAAa,CAAC,uBAAuB,CAAC,IAAI,CAAC,kBAAkB,EAAE,CAAC,GAAG,EAAE,YAAY,CAAC,KAAK,CAAC,CAAC,CAAC;gBACnG,CAAC;gBACD,MAAM,KAAK,CAAC;YACd,CAAC;YAED,IAAI,UAAU,CAAC,aAAa,CAAC,EAAE,CAAC;gBAC9B,IAAI,aAAa,CAAC,iBAAiB,KAAK,mBAAmB,EAAE,CAAC;oBAC5D,OAAO,IAAI,CAAC,8BAA8B,CAAC,IAAI,CAAC,kBAAkB,EAAE,EAAE,gBAAgB,EAAE,WAAW,CAAC,CAAC;gBACvG,CAAC;gBACD,MAAM,iBAAiB,GAAG,IAAI,CAAC,sBAAsB,CACnD,aAAa,EACb,gBAAgB,EAChB,uBAAuB,CACxB,CAAC;gBACF,MAAM,eAAe,GAAG,gBAAgB,CAAC,KAAK;oBAC5C,CAAC,CAAC,aAAa,CAAC,gBAAgB,CAAC,KAAK,CAAC;oBACvC,CAAC,CAAC,CAAC,gBAAgB,CAAC,kBAAkB,IAAI,EAAE,CAAC,CAAC;gBAChD,MAAM,YAAY,GAAG,SAAS,CAAC,eAAe,CAAC,CAAC;gBAChD,MAAM,eAAe,GAAG,MAAM,IAAI,CAAC,qBAAqB,CACtD,iBAAiB,EACjB,YAAY,EACZ,aAAa,EACb,WAAW,CACZ,CAAC;gBACF,IAAI,eAAe,CAAC,WAAW,IAAI,IAAI,EAAE,CAAC;oBACxC,OAAO,aAAa,CAAC,oBAAoB,CAAC,eAAe,EAAE,eAAe,CAAC,CAAC;gBAC9E,CAAC;gBACD,OAAO,aAAa,CAAC,cAAc,CAAC,eAAe,EAAE,eAAe,CAAC,CAAC;YACxE,CAAC;YAED,OAAO,IAAI,CAAC,mBAAmB,CAAC,cAAc,IAAI,EAAE,EAAE,CAAC,gBAAgB,CAAC,KAAK,IAAI,EAAE,CAA4B,EAAE,WAAW,CAAC,CAAC;QAChI,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,IAAI,KAAK,YAAY,aAAa,EAAE,CAAC;gBACnC,MAAM,KAAK,CAAC;YACd,CAAC;YACD,MAAM,IAAI,sBAAsB,CAAC,8BAA8B,MAAM,CAAE,KAAe,CAAC,OAAO,CAAC,EAAE,EAAE;gBACjG,KAAK,EAAE,KAAK;aACb,CAAC,CAAC;QACL,CAAC;IACH,CAAC;IAED,uBAAuB,CACrB,OAAyC,EACzC,cAA6B,IAAI;QAEjC,IAAI,CAAC,OAAO,EAAE,CAAC;YACb,MAAM,IAAI,aAAa,CAAC,yCAAyC,EAAE;gBACjE,SAAS,EAAE,UAAU,CAAC,gBAAgB;gBACtC,cAAc,EAAE,GAAG;aACpB,CAAC,CAAC;QACL,CAAC;QACD,OAAO,IAAI,CAAC,SAAS,CAAC,uBAAuB,CAAC,OAAO,EAAE,WAAW,CAAC,CAAC;IACtE,CAAC;IAED,uBAAuB,CACrB,eAAuB,EACvB,SAA2B,EAC3B,0BAA0D,IAAI;QAE9D,IAAI,CAAC,eAAe,CAAC,IAAI,EAAE,EAAE,CAAC;YAC5B,MAAM,IAAI,aAAa,CAAC,0CAA0C,EAAE;gBAClE,SAAS,EAAE,UAAU,CAAC,gBAAgB;gBACtC,cAAc,EAAE,GAAG;aACpB,CAAC,CAAC;QACL,CAAC;QACD,IAAI,CAAC,SAAS,EAAE,CAAC;YACf,MAAM,IAAI,aAAa,CAAC,0BAA0B,EAAE;gBAClD,SAAS,EAAE,UAAU,CAAC,gBAAgB;gBACtC,cAAc,EAAE,GAAG;aACpB,CAAC,CAAC;QACL,CAAC;QAED,OAAO;YACL,GAAG,IAAI,CAAC,iBAAiB,CAAC,0BAA0B,CAAC,eAAe,EAAE,SAAS,CAAC;YAChF,uBAAuB,EAAE,uBAAuB,IAAI,SAAS;SAC9D,CAAC;IACJ,CAAC;IAED,qBAAqB,CACnB,iBAA4C,EAC5C,YAAoB,EACpB,aAA0C,EAC1C,cAA6B,IAAI;QAEjC,IAAI,iBAAiB,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACnC,MAAM,IAAI,aAAa,CAAC,4CAA4C,EAAE;gBACpE,SAAS,EAAE,UAAU,CAAC,gBAAgB;gBACtC,cAAc,EAAE,GAAG;aACpB,CAAC,CAAC;QACL,CAAC;QACD,IAAI,CAAC,YAAY,CAAC,IAAI,EAAE,EAAE,CAAC;YACzB,MAAM,IAAI,aAAa,CAAC,uCAAuC,EAAE;gBAC/D,SAAS,EAAE,UAAU,CAAC,gBAAgB;gBACtC,cAAc,EAAE,GAAG;aACpB,CAAC,CAAC;QACL,CAAC;QACD,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,IAAI,CAAC,aAAa,CAAC,OAAO,EAAE,CAAC;YACzD,MAAM,IAAI,aAAa,CAAC,8DAA8D,EAAE;gBACtF,SAAS,EAAE,UAAU,CAAC,kBAAkB;gBACxC,cAAc,EAAE,GAAG;aACpB,CAAC,CAAC;QACL,CAAC;QAED,OAAO,IAAI,CAAC,SAAS,CAAC,qBAAqB,CACzC,aAAa,CAAC,OAAO,EACrB,iBAAiB,EACjB,YAAY,EACZ,WAAW,CACZ,CAAC;IACJ,CAAC;IAED,KAAK,CAAC,mBAAmB,CACvB,aAAqB,EACrB,YAAqC,EACrC,cAA6B,IAAI;QAEjC,IAAI,CAAC,YAAY,CAAC,aAAa,CAAC,EAAE,CAAC;YACjC,MAAM,IAAI,aAAa,CAAC,kCAAkC,EAAE;gBAC1D,SAAS,EAAE,UAAU,CAAC,gBAAgB;gBACtC,cAAc,EAAE,GAAG;aACpB,CAAC,CAAC;QACL,CAAC;QACD,MAAM,IAAI,CAAC,SAAS,CAAC,mBAAmB,CAAC,aAAa,EAAE,YAAY,EAAE,WAAW,CAAC,CAAC;QACnF,OAAO,aAAa,CAAC,iBAAiB,CAAC,aAAa,CAAC,CAAC;IACxD,CAAC;IAED;;;;;;;;OAQG;IACH,KAAK,CAAC,4BAA4B,CAChC,OAAqC,EACrC,cAA6B,IAAI;QAEjC,IAAI,CAAC,OAAO,EAAE,UAAU,IAAI,CAAC,wBAAwB,CAAC,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,EAAE,CAAC;YAC/E,MAAM,IAAI,aAAa,CAAC,+CAA+C,EAAE;gBACvE,SAAS,EAAE,UAAU,CAAC,gBAAgB;gBACtC,cAAc,EAAE,GAAG;aACpB,CAAC,CAAC;QACL,CAAC;QACD,IAAI,CAAC,OAAO,CAAC,UAAU,EAAE,CAAC;YACxB,MAAM,IAAI,aAAa,CAAC,wBAAwB,EAAE;gBAChD,SAAS,EAAE,UAAU,CAAC,gBAAgB;gBACtC,cAAc,EAAE,GAAG;aACpB,CAAC,CAAC;QACL,CAAC;QACD,OAAO,IAAI,CAAC,SAAS,CAAC,4BAA4B,CAAC,OAAO,EAAE,WAAW,CAAC,CAAC;IAC3E,CAAC;IAEO,KAAK,CAAC,8BAA8B,CAC1C,IAAkB,EAClB,gBAAyC,EACzC,WAA0B;QAE1B,MAAM,QAAQ,GAAG,qBAAqB,CAAC,gBAAgB,CAAC,CAAC;QACzD,MAAM,aAAa,GAAG,aAAa,CAAC,gBAAgB,CAAC,KAAK,IAAI,EAAE,CAAC,CAAC;QAClE,MAAM,YAAY,GAAG,SAAS,CAAC,aAAa,CAAC,CAAC;QAC9C,MAAM,UAAU,GAAG,MAAM,uBAAuB,CAAC,QAAQ,EAAE,IAAI,CAAC,UAAU,CAAC,CAAC;QAC5E,IAAI,CAAC;YACH,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,4BAA4B,CACtD,EAAE,UAAU,EAAE,IAAI,CAAC,UAAU,EAAE,UAAU,EAAE,YAAY,EAAE,EACzD,WAAW,CACZ,CAAC;YACF,OAAO,aAAa,CAAC,0BAA0B,CAAC,QAAQ,EAAE,YAAY,EAAE,aAAa,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC;QACnG,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,IAAI,iBAAiB,CAAC,KAAK,CAAC,EAAE,CAAC;gBAC7B,OAAO,aAAa,CAAC,qBAAqB,CACxC,IAAI,CAAC,GAAG,EACR,UAAU,EACV,YAAY,EACZ,aAAa,EACb,YAAY,CAAC,KAAK,CAAC,CACpB,CAAC;YACJ,CAAC;YACD,MAAM,KAAK,CAAC;QACd,CAAC;IACH,CAAC;IAEO,kBAAkB;QACxB,IAAI,CAAC,IAAI,CAAC,sBAAsB,EAAE,CAAC;YACjC,MAAM,IAAI,aAAa,CACrB,oIAAoI,EACpI,EAAE,SAAS,EAAE,UAAU,CAAC,mBAAmB,EAAE,CAC9C,CAAC;QACJ,CAAC;QACD,OAAO,oBAAoB,CAAC,IAAI,CAAC,sBAAsB,CAAC,CAAC;IAC3D,CAAC;IAEO,sBAAsB,CAC5B,aAA0C,EAC1C,gBAAyC,EACzC,uBAAuD;QAEvD,MAAM,iBAAiB,GAA8B,EAAE,CAAC;QAExD,KAAK,MAAM,SAAS,IAAI,iBAAiB,CAAC,aAAa,CAAC,EAAE,CAAC;YACzD,MAAM,eAAe,GAAG,SAAS,CAAC,eAAe,IAAI,EAAE,CAAC;YACxD,MAAM,QAAQ,GAAoB,EAAE,CAAC;YAErC,IAAI,eAAe,CAAC,QAAQ,CAAC,OAAc,CAAC,IAAI,gBAAgB,CAAC,KAAK,EAAE,CAAC;gBACvE,QAAQ,CAAC,KAAK,GAAG,gBAAgB,CAAC,KAAK,CAAC;YAC1C,CAAC;YACD,IAAI,eAAe,CAAC,QAAQ,CAAC,sBAA6B,CAAC,IAAI,gBAAgB,CAAC,kBAAkB,EAAE,CAAC;gBACnG,QAAQ,CAAC,kBAAkB,GAAG,gBAAgB,CAAC,kBAAkB,CAAC;YACpE,CAAC;YACD,IAAI,eAAe,CAAC,QAAQ,CAAC,aAAoB,CAAC,IAAI,gBAAgB,CAAC,UAAU,EAAE,CAAC;gBAClF,QAAQ,CAAC,UAAU,GAAG,gBAAgB,CAAC,UAAU,CAAC;YACpD,CAAC;YACD,IAAI,gBAAgB,CAAC,WAAW,EAAE,CAAC;gBACjC,QAAQ,CAAC,WAAW,GAAG,gBAAgB,CAAC,WAAW,CAAC;YACtD,CAAC;YAED,iBAAiB,CAAC,IAAI,CACpB,IAAI,CAAC,uBAAuB,CAAC,aAAa,CAAC,QAAQ,CAAC,EAAE,SAAS,EAAE,uBAAuB,CAAC,CAC1F,CAAC;QACJ,CAAC;QAED,OAAO,iBAAiB,CAAC;IAC3B,CAAC;IAEO,qBAAqB,CAC3B,qBAA+D,EAC/D,cAAyD;QAEzD,IAAI,CAAC,qBAAqB,EAAE,CAAC;YAC3B,MAAM,IAAI,aAAa,CAAC,uCAAuC,EAAE;gBAC/D,SAAS,EAAE,UAAU,CAAC,gBAAgB;gBACtC,cAAc,EAAE,GAAG;aACpB,CAAC,CAAC;QACL,CAAC;QACD,IAAI,CAAC,cAAc,EAAE,CAAC;YACpB,MAAM,IAAI,aAAa,CAAC,yCAAyC,EAAE;gBACjE,SAAS,EAAE,UAAU,CAAC,gBAAgB;gBACtC,cAAc,EAAE,GAAG;aACpB,CAAC,CAAC;QACL,CAAC;IACH,CAAC;CACF;AAED,SAAS,iBAAiB,CAAC,KAAc;IACvC,IAAI,OAAO,GAAY,KAAK,CAAC;IAC7B,OAAO,OAAO,YAAY,KAAK,EAAE,CAAC;QAChC,IAAI,OAAO,YAAY,aAAa,EAAE,CAAC;YACrC,OAAO,OAAO,CAAC,cAAc,EAAE,IAAI,OAAO,CAAC,cAAc,KAAK,GAAG,IAAI,OAAO,CAAC,cAAc,KAAK,GAAG;gBACjG,OAAO,CAAC,cAAc,IAAI,GAAG,CAAC;QAClC,CAAC;QACD,OAAO,GAAG,OAAO,CAAC,KAAK,CAAC;IAC1B,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC;AAED,SAAS,YAAY,CAAC,KAAc;IAClC,OAAO,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;AAChE,CAAC;AAED,SAAS,oBAAoB,CAC3B,OAA+B,EAC/B,aAA0C;IAE1C,OAAO;QACL,GAAG,OAAO;QACV,gBAAgB,EAAE,0BAA0B,CAAC,OAAO,CAAC,IAAI,aAAa,CAAC,gBAAgB;QACvF,SAAS,EAAE,mBAAmB,CAAC,OAAO,CAAC,IAAI,aAAa,CAAC,SAAS;QAClE,YAAY,EAAE,mBAAmB,CAAC,OAAO,CAAC;KAC3C,CAAC;AACJ,CAAC;AAED,SAAS,mBAAmB,CAAC,OAA+B;IAC1D,MAAM,QAAQ,GAAG,OAA+C,CAAC;IACjE,IAAI,QAAQ,CAAC,YAAY,KAAK,SAAS,IAAI,QAAQ,CAAC,YAAY,KAAK,IAAI,EAAE,CAAC;QAC1E,OAAO,QAAQ,CAAC,YAAY,CAAC;IAC/B,CAAC;IACD,IAAI,OAAO,OAAO,CAAC,cAAc,KAAK,QAAQ,IAAI,OAAO,CAAC,cAAc,GAAG,CAAC,EAAE,CAAC;QAC7E,OAAO,IAAI,CAAC;IACd,CAAC;IACD,OAAO,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,OAAO,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC;AAClE,CAAC;AAED,SAAS,0BAA0B,CAAC,OAA+B;IACjE,OAAQ,OAAgD,CAAC,gBAAgB,CAAC;AAC5E,CAAC;AAED,SAAS,mBAAmB,CAAC,OAA+B;IAC1D,OAAQ,OAAgD,CAAC,SAAS,CAAC;AACrE,CAAC"}
|
package/dist/types.d.ts
CHANGED