@cheqi/sdk 0.1.1 → 0.1.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/dist/cheqi-sdk.d.ts +7 -6
- package/dist/cheqi-sdk.js +7 -2
- package/dist/cheqi-sdk.js.map +1 -1
- package/dist/errors.d.ts +17 -1
- package/dist/errors.js +36 -1
- package/dist/errors.js.map +1 -1
- package/dist/http/client.js +46 -8
- package/dist/http/client.js.map +1 -1
- package/dist/http/retry.js +12 -5
- package/dist/http/retry.js.map +1 -1
- package/dist/index.d.ts +2 -1
- package/dist/index.js +1 -0
- package/dist/index.js.map +1 -1
- package/dist/models/domain.js +9 -1
- package/dist/models/domain.js.map +1 -1
- package/dist/models/generated/AuthorizedCompanyDTO.d.ts +0 -6
- package/dist/models/generated/AuthorizedCompanyDTO.js +0 -2
- package/dist/models/generated/AuthorizedCompanyDTO.js.map +1 -1
- package/dist/models/generated/CompanyCreationRequest.d.ts +6 -6
- package/dist/models/generated/CompanyCreationRequest.js +2 -2
- package/dist/models/generated/CompanyCreationRequest.js.map +1 -1
- package/dist/models/generated/CompanyResponseBody.d.ts +6 -6
- package/dist/models/generated/CompanyResponseBody.js +2 -2
- package/dist/models/generated/CompanyResponseBody.js.map +1 -1
- package/dist/models/generated/EncryptedCreditNoteDto.d.ts +4 -13
- package/dist/models/generated/EncryptedCreditNoteDto.js +3 -11
- package/dist/models/generated/EncryptedCreditNoteDto.js.map +1 -1
- package/dist/models/generated/EncryptedReceipt.d.ts +109 -0
- package/dist/models/generated/{EncryptedReceiptDto.js → EncryptedReceipt.js} +12 -20
- package/dist/models/generated/EncryptedReceipt.js.map +1 -0
- package/dist/models/generated/IdentificationDetails.d.ts +1 -1
- package/dist/models/generated/ReceiptCreatedResponse.d.ts +6 -0
- package/dist/models/generated/ReceiptCreatedResponse.js +2 -0
- package/dist/models/generated/ReceiptCreatedResponse.js.map +1 -1
- package/dist/models/generated/ReceiptTemplateGenerationRequest.d.ts +2 -2
- package/dist/models/generated/ReceiptTemplateGenerationRequest.js +1 -3
- package/dist/models/generated/ReceiptTemplateGenerationRequest.js.map +1 -1
- package/dist/models/generated/ReceiverType.d.ts +28 -0
- package/dist/models/generated/ReceiverType.js +47 -0
- package/dist/models/generated/ReceiverType.js.map +1 -0
- package/dist/models/generated/RecipientResolutionResponse.d.ts +1 -13
- package/dist/models/generated/RecipientResolutionResponse.js +2 -6
- package/dist/models/generated/RecipientResolutionResponse.js.map +1 -1
- package/dist/models/generated/WebhookEventDTO.d.ts +3 -3
- package/dist/models/generated/WebhookEventDTO.js +3 -3
- package/dist/models/generated/WebhookEventDTO.js.map +1 -1
- package/dist/models/generated/index.d.ts +2 -1
- package/dist/models/generated/index.js +2 -1
- package/dist/models/generated/index.js.map +1 -1
- package/dist/models.d.ts +30 -0
- package/dist/models.js +90 -7
- package/dist/models.js.map +1 -1
- package/dist/rfc8785.d.ts +17 -0
- package/dist/rfc8785.js +241 -9
- package/dist/rfc8785.js.map +1 -1
- package/dist/services/credit-note.d.ts +7 -4
- package/dist/services/credit-note.js +14 -3
- package/dist/services/credit-note.js.map +1 -1
- package/dist/services/decryption.js +2 -2
- package/dist/services/decryption.js.map +1 -1
- package/dist/services/encryption.js +17 -6
- package/dist/services/encryption.js.map +1 -1
- package/dist/services/matching.js +2 -2
- package/dist/services/matching.js.map +1 -1
- package/dist/services/receipt-processor.d.ts +27 -0
- package/dist/services/receipt-processor.js +111 -0
- package/dist/services/receipt-processor.js.map +1 -0
- package/dist/services/receipt.js +4 -1
- package/dist/services/receipt.js.map +1 -1
- package/dist/types.d.ts +42 -2
- package/dist/utils.d.ts +13 -0
- package/dist/utils.js +32 -1
- package/dist/utils.js.map +1 -1
- package/dist/xml.d.ts +6 -0
- package/dist/xml.js +155 -3
- package/dist/xml.js.map +1 -1
- package/package.json +4 -1
- package/dist/models/generated/EncryptedReceiptDto.d.ts +0 -118
- package/dist/models/generated/EncryptedReceiptDto.js.map +0 -1
|
@@ -0,0 +1,111 @@
|
|
|
1
|
+
import { DecryptionError } from "../errors.js";
|
|
2
|
+
import { ReceiptContextEnvelopeFromJSON } from "../models/generated/ReceiptContextEnvelope.js";
|
|
3
|
+
import { ReceiptEnvelopeFromJSON } from "../models/generated/ReceiptEnvelope.js";
|
|
4
|
+
const CUSTOMER_PARTY_PLACEHOLDER = "<cac:AccountingCustomerParty/>";
|
|
5
|
+
const CUSTOMER_PARTY_CLOSING_TAG = "</cac:AccountingCustomerParty>";
|
|
6
|
+
/**
|
|
7
|
+
* Decrypts an encrypted receipt and merges the receipt context (receiving party
|
|
8
|
+
* and payment means) into both the UBL XML and CheqiReceipt formats.
|
|
9
|
+
*
|
|
10
|
+
* Mirrors the Java SDK `ReceiptProcessor` + `ReceiptMergeService`:
|
|
11
|
+
* - UBL XML: the `<cac:AccountingCustomerParty/>` placeholder is replaced with
|
|
12
|
+
* the `xmlReceivingParty` fragment.
|
|
13
|
+
* - UBL XML: `xmlPaymentMeans` is injected immediately after the
|
|
14
|
+
* AccountingCustomerParty element when present.
|
|
15
|
+
* - CheqiReceipt: the `receivingParty` is injected from the receipt context.
|
|
16
|
+
*/
|
|
17
|
+
export class ReceiptProcessor {
|
|
18
|
+
decryptionService;
|
|
19
|
+
constructor(decryptionService) {
|
|
20
|
+
this.decryptionService = decryptionService;
|
|
21
|
+
}
|
|
22
|
+
/**
|
|
23
|
+
* Decrypt an encrypted receipt and return a fully merged {@link DecryptedReceipt}.
|
|
24
|
+
* @param encryptedReceipt The encrypted receipt payload.
|
|
25
|
+
* @param privateKey Base64-encoded PKCS#8 DER private key.
|
|
26
|
+
*/
|
|
27
|
+
processEncryptedReceipt(encryptedReceipt, privateKey) {
|
|
28
|
+
const { receiptContent, customerDetails } = this.decryptionService.decryptReceipt(encryptedReceipt, privateKey);
|
|
29
|
+
let receiptEnvelope;
|
|
30
|
+
try {
|
|
31
|
+
receiptEnvelope = ReceiptEnvelopeFromJSON(JSON.parse(receiptContent));
|
|
32
|
+
}
|
|
33
|
+
catch (error) {
|
|
34
|
+
throw new DecryptionError("Failed to deserialize decrypted receipt envelope", { cause: error });
|
|
35
|
+
}
|
|
36
|
+
let receiptContextEnvelope = null;
|
|
37
|
+
if (customerDetails && customerDetails.trim() !== "") {
|
|
38
|
+
try {
|
|
39
|
+
receiptContextEnvelope = ReceiptContextEnvelopeFromJSON(JSON.parse(customerDetails));
|
|
40
|
+
}
|
|
41
|
+
catch (error) {
|
|
42
|
+
throw new DecryptionError("Failed to deserialize decrypted receipt context envelope", { cause: error });
|
|
43
|
+
}
|
|
44
|
+
}
|
|
45
|
+
const decrypted = {
|
|
46
|
+
receiptEnvelope,
|
|
47
|
+
receiptContextEnvelope,
|
|
48
|
+
rawReceiptJson: receiptContent,
|
|
49
|
+
rawReceiptContextJson: customerDetails
|
|
50
|
+
};
|
|
51
|
+
this.merge(decrypted);
|
|
52
|
+
return decrypted;
|
|
53
|
+
}
|
|
54
|
+
merge(decrypted) {
|
|
55
|
+
const context = decrypted.receiptContextEnvelope;
|
|
56
|
+
if (!context) {
|
|
57
|
+
return;
|
|
58
|
+
}
|
|
59
|
+
this.mergeXmlParty(decrypted.receiptEnvelope, context);
|
|
60
|
+
this.mergeXmlPaymentMeans(decrypted.receiptEnvelope, context);
|
|
61
|
+
this.mergeReceivingParty(decrypted.receiptEnvelope, context);
|
|
62
|
+
}
|
|
63
|
+
mergeXmlParty(receiptEnvelope, context) {
|
|
64
|
+
const xmlReceivingParty = context.receivingParty?.xmlReceivingParty;
|
|
65
|
+
if (!xmlReceivingParty) {
|
|
66
|
+
return;
|
|
67
|
+
}
|
|
68
|
+
receiptEnvelope.ublPurchaseReceipt = mergeXmlPayload(receiptEnvelope.ublPurchaseReceipt, xmlReceivingParty);
|
|
69
|
+
receiptEnvelope.ublInvoice = mergeXmlPayload(receiptEnvelope.ublInvoice, xmlReceivingParty);
|
|
70
|
+
}
|
|
71
|
+
mergeXmlPaymentMeans(receiptEnvelope, context) {
|
|
72
|
+
const xmlPaymentMeans = context.paymentMeans?.xmlPaymentMeans;
|
|
73
|
+
if (!xmlPaymentMeans) {
|
|
74
|
+
return;
|
|
75
|
+
}
|
|
76
|
+
receiptEnvelope.ublPurchaseReceipt = injectPaymentMeans(receiptEnvelope.ublPurchaseReceipt, xmlPaymentMeans);
|
|
77
|
+
receiptEnvelope.ublInvoice = injectPaymentMeans(receiptEnvelope.ublInvoice, xmlPaymentMeans);
|
|
78
|
+
}
|
|
79
|
+
mergeReceivingParty(receiptEnvelope, context) {
|
|
80
|
+
const receivingParty = context.receivingParty?.receivingParty;
|
|
81
|
+
if (!receivingParty || !receiptEnvelope.cheqi) {
|
|
82
|
+
return;
|
|
83
|
+
}
|
|
84
|
+
receiptEnvelope.cheqi = {
|
|
85
|
+
...receiptEnvelope.cheqi,
|
|
86
|
+
receivingParty
|
|
87
|
+
};
|
|
88
|
+
}
|
|
89
|
+
}
|
|
90
|
+
function mergeXmlPayload(xml, xmlReceivingParty) {
|
|
91
|
+
if (xml == null) {
|
|
92
|
+
return xml;
|
|
93
|
+
}
|
|
94
|
+
if (!xml.includes(CUSTOMER_PARTY_PLACEHOLDER)) {
|
|
95
|
+
return xml;
|
|
96
|
+
}
|
|
97
|
+
return xml.replace(CUSTOMER_PARTY_PLACEHOLDER, xmlReceivingParty);
|
|
98
|
+
}
|
|
99
|
+
function injectPaymentMeans(xml, xmlPaymentMeans) {
|
|
100
|
+
if (xml == null) {
|
|
101
|
+
return xml;
|
|
102
|
+
}
|
|
103
|
+
if (xml.includes(CUSTOMER_PARTY_CLOSING_TAG)) {
|
|
104
|
+
return xml.replace(CUSTOMER_PARTY_CLOSING_TAG, CUSTOMER_PARTY_CLOSING_TAG + xmlPaymentMeans);
|
|
105
|
+
}
|
|
106
|
+
if (xml.includes(CUSTOMER_PARTY_PLACEHOLDER)) {
|
|
107
|
+
return xml.replace(CUSTOMER_PARTY_PLACEHOLDER, CUSTOMER_PARTY_PLACEHOLDER + xmlPaymentMeans);
|
|
108
|
+
}
|
|
109
|
+
return xml;
|
|
110
|
+
}
|
|
111
|
+
//# sourceMappingURL=receipt-processor.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"receipt-processor.js","sourceRoot":"","sources":["../../src/services/receipt-processor.ts"],"names":[],"mappings":"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"}
|
package/dist/services/receipt.js
CHANGED
|
@@ -18,7 +18,7 @@ function routeFound(matchResponse) {
|
|
|
18
18
|
return Boolean(matchResponse.routeFound ?? matchResponse.customerFound);
|
|
19
19
|
}
|
|
20
20
|
function matchedRecipients(matchResponse) {
|
|
21
|
-
return matchResponse.recipients ??
|
|
21
|
+
return matchResponse.recipients ?? [];
|
|
22
22
|
}
|
|
23
23
|
export class ReceiptService {
|
|
24
24
|
apiClient;
|
|
@@ -52,6 +52,9 @@ export class ReceiptService {
|
|
|
52
52
|
: (templateResponse.ublPurchaseReceipt ?? "");
|
|
53
53
|
const templateHash = sha256Hex(templateContent);
|
|
54
54
|
const createdResponse = await this.sendEncryptedReceipts(encryptedReceipts, templateHash, matchResponse, accessToken);
|
|
55
|
+
if (createdResponse.downloadUrl != null) {
|
|
56
|
+
return ReceiptResult.deliveredViaDownload(createdResponse, templateContent);
|
|
57
|
+
}
|
|
55
58
|
return ReceiptResult.deliveredToApp(createdResponse, templateContent);
|
|
56
59
|
}
|
|
57
60
|
return this.sendReceiptViaEmail(recipientEmail ?? "", (templateResponse.cheqi ?? {}), accessToken);
|
|
@@ -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;AAc7C,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,
|
|
1
|
+
{"version":3,"file":"receipt.js","sourceRoot":"","sources":["../../src/services/receipt.ts"],"names":[],"mappings":"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"}
|
package/dist/types.d.ts
CHANGED
|
@@ -4,22 +4,62 @@ export type JsonValue = JsonPrimitive | JsonObject | JsonValue[];
|
|
|
4
4
|
export interface JsonObject {
|
|
5
5
|
[key: string]: JsonValue | undefined;
|
|
6
6
|
}
|
|
7
|
-
export type { AddressDTO, BarcodeType, BuyerType, CardDetails, CreditNoteContextEnvelope, Charge, CheqiCreditNote, CheqiReceipt, CreateStoreRequest, CreditNoteTemplateGenerationRequest, CreditNoteTemplateRequest, CreditNoteTemplateResponse, Discount, EncryptedCreditNote, EncryptedCreditNoteInitiationRequest, EncryptedReceiptRequest, EncryptedReceiptsRequest, IdentificationDetails, Identifier, MatchedRecipient, NotificationDisplayCode, PaymentAccountDetails, Period, Product, ReceiptCreatedResponse, ReceiptEnvelope, ReceiptFormat, ReceiptTemplateGenerationRequest, ReceiptTemplateRequest, ReceiptTemplateResponse, RecipientResolutionResponse, SellingParty, ReceivingParty, StoreDTO, Tax, VatMetadata, } from "./models/generated/index.js";
|
|
7
|
+
export type { AddressDTO, BarcodeType, BuyerType, CardDetails, CreditNoteContextEnvelope, ReceiptContextEnvelope, Charge, CheqiCreditNote, CheqiReceipt, CreateStoreRequest, CreditNoteTemplateGenerationRequest, CreditNoteTemplateRequest, CreditNoteTemplateResponse, Discount, EncryptedCreditNote, EncryptedCreditNoteInitiationRequest, EncryptedReceiptRequest, EncryptedReceiptsRequest, IdentificationDetails, Identifier, MatchedRecipient, NotificationDisplayCode, PaymentAccountDetails, Period, Product, ReceiptCreatedResponse, ReceiptEnvelope, ReceiptFormat, ReceiptTemplateGenerationRequest, ReceiptTemplateRequest, ReceiptTemplateResponse, RecipientResolutionResponse, SellingParty, ReceivingParty, StoreDTO, Tax, VatMetadata, } from "./models/generated/index.js";
|
|
8
8
|
export type CompanyDTO = import("./models/generated/index.js").CompanyCreationRequest;
|
|
9
9
|
export type IdentificationDetailsPaymentTypeEnum = import("./models/generated/index.js").PaymentType;
|
|
10
10
|
export type ProvisionCompanyRequest = import("./models/generated/index.js").CreateChildCompanyRequest;
|
|
11
11
|
export type ProvisionCompanyResponse = import("./models/generated/index.js").CompanyResponseBody;
|
|
12
|
-
export type ReceiverType = import("./models/generated/index.js").
|
|
12
|
+
export type ReceiverType = import("./models/generated/index.js").ReceiverType;
|
|
13
13
|
export interface CreditNoteEnvelope {
|
|
14
14
|
cheqiCreditNote?: import("./models/generated/index.js").CheqiCreditNote;
|
|
15
15
|
ublCreditNote?: string;
|
|
16
16
|
}
|
|
17
|
+
/** Condition of a returned line item. Mirrors the Java SDK `ReturnCondition`. */
|
|
18
|
+
export type ReturnCondition = "DEFECTIVE" | "DAMAGED" | "WRONG_ITEM" | "NOT_AS_DESCRIBED" | "UNWANTED" | "EXPIRED" | "INCOMPLETE";
|
|
19
|
+
/** Refund preference for a customer-initiated return. Mirrors the Java SDK `RefundPreference`. */
|
|
20
|
+
export type RefundPreference = "ORIGINAL_PAYMENT_METHOD" | "BANK_TRANSFER" | "STORE_CREDIT";
|
|
21
|
+
/** Bank account details for a bank-transfer refund. Mirrors the Java SDK `RefundBankAccount`. */
|
|
22
|
+
export interface RefundBankAccount {
|
|
23
|
+
iban?: string;
|
|
24
|
+
bic?: string;
|
|
25
|
+
accountHolder?: string;
|
|
26
|
+
}
|
|
27
|
+
/** A single returned line item. Mirrors the Java SDK `ReturnLineItem`. */
|
|
28
|
+
export interface ReturnLineItem {
|
|
29
|
+
lineItemId?: string;
|
|
30
|
+
quantityReturned?: number;
|
|
31
|
+
condition?: ReturnCondition;
|
|
32
|
+
conditionNotes?: string;
|
|
33
|
+
}
|
|
34
|
+
/**
|
|
35
|
+
* A decrypted customer-initiated credit-note (return) request.
|
|
36
|
+
* Mirrors the Java SDK `CreditNoteInitiationRequest`.
|
|
37
|
+
*/
|
|
38
|
+
export interface CreditNoteInitiationRequest {
|
|
39
|
+
cheqiReceiptId?: string;
|
|
40
|
+
receiptId?: string;
|
|
41
|
+
returnReason?: string;
|
|
42
|
+
returnReasonDescription?: string;
|
|
43
|
+
lineItems?: ReturnLineItem[];
|
|
44
|
+
refundPreference?: RefundPreference;
|
|
45
|
+
refundBankAccount?: RefundBankAccount;
|
|
46
|
+
}
|
|
17
47
|
export interface DecryptedDeliveredCreditNote {
|
|
18
48
|
creditNoteEnvelope: CreditNoteEnvelope;
|
|
19
49
|
creditNoteContextEnvelope: import("./models/generated/index.js").CreditNoteContextEnvelope | null;
|
|
20
50
|
rawJson: string;
|
|
21
51
|
rawCreditNoteContextJson: string | null;
|
|
22
52
|
}
|
|
53
|
+
/**
|
|
54
|
+
* A decrypted receipt with its context merged into both receipt formats.
|
|
55
|
+
* Mirrors the Java SDK `DecryptedReceipt` returned by `ReceiptProcessor`.
|
|
56
|
+
*/
|
|
57
|
+
export interface DecryptedReceipt {
|
|
58
|
+
receiptEnvelope: import("./models/generated/index.js").ReceiptEnvelope;
|
|
59
|
+
receiptContextEnvelope: import("./models/generated/index.js").ReceiptContextEnvelope | null;
|
|
60
|
+
rawReceiptJson: string;
|
|
61
|
+
rawReceiptContextJson: string | null;
|
|
62
|
+
}
|
|
23
63
|
export interface EncryptedReceipt {
|
|
24
64
|
recipientId?: string;
|
|
25
65
|
receiptId?: string;
|
package/dist/utils.d.ts
CHANGED
|
@@ -7,5 +7,18 @@ export declare function sha256Hex(value: string): string;
|
|
|
7
7
|
export declare function toCamelCase(value: string): string;
|
|
8
8
|
export declare function normalizeValue<T>(value: T): unknown;
|
|
9
9
|
export declare function serializeJson<T>(value: T): string;
|
|
10
|
+
/**
|
|
11
|
+
* Decode a key string into raw DER bytes.
|
|
12
|
+
*
|
|
13
|
+
* Accepts:
|
|
14
|
+
* - raw base64-encoded DER (the common case),
|
|
15
|
+
* - PEM-wrapped keys (`-----BEGIN ... KEY-----`), and
|
|
16
|
+
* - base64-encoded PEM (a PEM document that was itself base64-encoded).
|
|
17
|
+
*
|
|
18
|
+
* Mirrors the Java SDK `PemUtils.decodeKey` so both PEM-wrapped and raw base64
|
|
19
|
+
* keys are accepted interchangeably.
|
|
20
|
+
*/
|
|
21
|
+
export declare function decodeKey(keyString: string): Buffer;
|
|
22
|
+
/** @deprecated Use {@link decodeKey}, which also handles PEM-wrapped keys. */
|
|
10
23
|
export declare function parseBase64Der(base64: string): Buffer;
|
|
11
24
|
export declare function sleep(ms: number): Promise<void>;
|
package/dist/utils.js
CHANGED
|
@@ -45,8 +45,39 @@ export function normalizeValue(value) {
|
|
|
45
45
|
export function serializeJson(value) {
|
|
46
46
|
return JSON.stringify(normalizeValue(value));
|
|
47
47
|
}
|
|
48
|
+
/**
|
|
49
|
+
* Decode a key string into raw DER bytes.
|
|
50
|
+
*
|
|
51
|
+
* Accepts:
|
|
52
|
+
* - raw base64-encoded DER (the common case),
|
|
53
|
+
* - PEM-wrapped keys (`-----BEGIN ... KEY-----`), and
|
|
54
|
+
* - base64-encoded PEM (a PEM document that was itself base64-encoded).
|
|
55
|
+
*
|
|
56
|
+
* Mirrors the Java SDK `PemUtils.decodeKey` so both PEM-wrapped and raw base64
|
|
57
|
+
* keys are accepted interchangeably.
|
|
58
|
+
*/
|
|
59
|
+
export function decodeKey(keyString) {
|
|
60
|
+
// If the input doesn't contain PEM headers, it may be base64-encoded PEM.
|
|
61
|
+
if (!keyString.includes("-----BEGIN")) {
|
|
62
|
+
try {
|
|
63
|
+
const decoded = Buffer.from(keyString.replace(/\s+/g, ""), "base64").toString("latin1");
|
|
64
|
+
if (decoded.includes("-----BEGIN")) {
|
|
65
|
+
return decodeKey(decoded);
|
|
66
|
+
}
|
|
67
|
+
}
|
|
68
|
+
catch {
|
|
69
|
+
// Not base64-encoded PEM — fall through to plain base64 handling.
|
|
70
|
+
}
|
|
71
|
+
}
|
|
72
|
+
const cleanKey = keyString
|
|
73
|
+
.replace(/-+BEGIN [A-Z ]+KEY-+/g, "")
|
|
74
|
+
.replace(/-+END [A-Z ]+KEY-+/g, "")
|
|
75
|
+
.replace(/\s+/g, "");
|
|
76
|
+
return Buffer.from(cleanKey, "base64");
|
|
77
|
+
}
|
|
78
|
+
/** @deprecated Use {@link decodeKey}, which also handles PEM-wrapped keys. */
|
|
48
79
|
export function parseBase64Der(base64) {
|
|
49
|
-
return
|
|
80
|
+
return decodeKey(base64);
|
|
50
81
|
}
|
|
51
82
|
export function sleep(ms) {
|
|
52
83
|
return new Promise((resolve) => setTimeout(resolve, ms));
|
package/dist/utils.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"utils.js","sourceRoot":"","sources":["../src/utils.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAEzC,MAAM,UAAU,QAAQ,CAAC,KAAc;IACrC,OAAO,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,KAAK,IAAI,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;AAC9E,CAAC;AAED,MAAM,UAAU,gBAAgB,CAAC,KAAc;IAC7C,OAAO,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,CAAC,IAAI,EAAE,KAAK,EAAE,CAAC;AAC1D,CAAC;AAED,MAAM,UAAU,cAAc,CAAC,GAAG,MAAiB;IACjD,KAAK,MAAM,KAAK,IAAI,MAAM,EAAE,CAAC;QAC3B,IAAI,gBAAgB,CAAC,KAAK,CAAC,EAAE,CAAC;YAC5B,OAAO,KAAK,CAAC;QACf,CAAC;IACH,CAAC;IACD,OAAO,SAAS,CAAC;AACnB,CAAC;AAED,8EAA8E;AAC9E,MAAM,UAAU,YAAY,CAAC,KAAa;IACxC,OAAO,4BAA4B,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;AAClD,CAAC;AAED,MAAM,UAAU,SAAS,CAAC,KAAa;IACrC,OAAO,UAAU,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;AAClE,CAAC;AAED,MAAM,UAAU,WAAW,CAAC,KAAa;IACvC,OAAO,KAAK,CAAC,OAAO,CAAC,cAAc,EAAE,CAAC,CAAC,EAAE,SAAiB,EAAE,EAAE,CAAC,SAAS,CAAC,WAAW,EAAE,CAAC,CAAC;AAC1F,CAAC;AAED,MAAM,UAAU,cAAc,CAAI,KAAQ;IACxC,IAAI,KAAK,YAAY,IAAI,EAAE,CAAC;QAC1B,OAAO,KAAK,CAAC,WAAW,EAAE,CAAC;IAC7B,CAAC;IACD,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;QACzB,OAAO,KAAK,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,cAAc,CAAC,KAAK,CAAC,CAAC,CAAC;IACrD,CAAC;IACD,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,CAAC;QACrB,OAAO,KAAK,CAAC;IACf,CAAC;IAED,MAAM,UAAU,GAA4B,EAAE,CAAC;IAC/C,KAAK,MAAM,CAAC,GAAG,EAAE,UAAU,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;QACtD,IAAI,UAAU,KAAK,SAAS,IAAI,UAAU,KAAK,IAAI,EAAE,CAAC;YACpD,SAAS;QACX,CAAC;QACD,UAAU,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC,GAAG,cAAc,CAAC,UAAU,CAAC,CAAC;IAC5D,CAAC;IACD,OAAO,UAAU,CAAC;AACpB,CAAC;AAED,MAAM,UAAU,aAAa,CAAI,KAAQ;IACvC,OAAO,IAAI,CAAC,SAAS,CAAC,cAAc,CAAC,KAAK,CAAC,CAAC,CAAC;AAC/C,CAAC;AAED,MAAM,UAAU,
|
|
1
|
+
{"version":3,"file":"utils.js","sourceRoot":"","sources":["../src/utils.ts"],"names":[],"mappings":"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"}
|
package/dist/xml.d.ts
CHANGED
|
@@ -1,2 +1,8 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Canonicalizes an XML string using Exclusive XML Canonicalization 1.0 (comments omitted).
|
|
3
|
+
*
|
|
4
|
+
* @throws if `xml` is null/empty or cannot be parsed.
|
|
5
|
+
*/
|
|
1
6
|
export declare function canonicalizeXml(xml: string): string;
|
|
7
|
+
/** Canonicalize XML and return its SHA-256 hash as a lowercase hex string. */
|
|
2
8
|
export declare function canonicalizeAndHashXml(xml: string): string;
|
package/dist/xml.js
CHANGED
|
@@ -1,10 +1,162 @@
|
|
|
1
|
+
import { DOMParser } from "@xmldom/xmldom";
|
|
1
2
|
import { sha256Hex } from "./utils.js";
|
|
2
|
-
|
|
3
|
-
|
|
3
|
+
/**
|
|
4
|
+
* XML Exclusive Canonicalization (C14N) 1.0 — W3C `xml-exc-c14n#`, comments omitted.
|
|
5
|
+
*
|
|
6
|
+
* Produces byte-for-byte deterministic output matching:
|
|
7
|
+
* - iOS: libxml2 `xmlC14NDocDumpMemory` with `XML_C14N_EXCLUSIVE_1_0`
|
|
8
|
+
* - Java backend: Apache Santuario `Canonicalizer.ALGO_ID_C14N_EXCL_OMIT_COMMENTS`
|
|
9
|
+
* - Cheqi Java SDK: `XMLCanonicalService` (javax.xml.crypto.dsig EXCLUSIVE)
|
|
10
|
+
*
|
|
11
|
+
* Mirrors the Java SDK behaviour of stripping whitespace-only text nodes before
|
|
12
|
+
* canonicalizing so formatting differences do not affect the resulting hash.
|
|
13
|
+
*/
|
|
14
|
+
const XMLNS_NS = "http://www.w3.org/2000/xmlns/";
|
|
15
|
+
const ELEMENT_NODE = 1;
|
|
16
|
+
const TEXT_NODE = 3;
|
|
17
|
+
const CDATA_SECTION_NODE = 4;
|
|
18
|
+
const PROCESSING_INSTRUCTION_NODE = 7;
|
|
19
|
+
const DOCUMENT_NODE = 9;
|
|
20
|
+
function escapeText(value) {
|
|
21
|
+
return value
|
|
22
|
+
.replace(/&/g, "&")
|
|
23
|
+
.replace(/</g, "<")
|
|
24
|
+
.replace(/>/g, ">")
|
|
25
|
+
.replace(/\r/g, "
");
|
|
4
26
|
}
|
|
27
|
+
function escapeAttr(value) {
|
|
28
|
+
return value
|
|
29
|
+
.replace(/&/g, "&")
|
|
30
|
+
.replace(/</g, "<")
|
|
31
|
+
.replace(/"/g, """)
|
|
32
|
+
.replace(/\t/g, "	")
|
|
33
|
+
.replace(/\n/g, "
")
|
|
34
|
+
.replace(/\r/g, "
");
|
|
35
|
+
}
|
|
36
|
+
function isWhitespaceOnly(value) {
|
|
37
|
+
return value.trim() === "";
|
|
38
|
+
}
|
|
39
|
+
function compare(a, b) {
|
|
40
|
+
return a < b ? -1 : a > b ? 1 : 0;
|
|
41
|
+
}
|
|
42
|
+
function serializeElement(el, ancestorNamespaces, out) {
|
|
43
|
+
// Copy of the namespace declarations visible to children (output-ancestor context).
|
|
44
|
+
const rendered = new Map(ancestorNamespaces);
|
|
45
|
+
// Collect "visibly utilized" namespaces (element prefix + prefixed attributes).
|
|
46
|
+
const utilized = new Map();
|
|
47
|
+
utilized.set(el.prefix ?? "", el.namespaceURI ?? "");
|
|
48
|
+
const regularAttrs = [];
|
|
49
|
+
if (el.attributes) {
|
|
50
|
+
for (let i = 0; i < el.attributes.length; i++) {
|
|
51
|
+
const attr = el.attributes.item(i);
|
|
52
|
+
// Skip namespace declaration attributes — these are reconstructed from namespaceURI.
|
|
53
|
+
if (attr.nodeName === "xmlns" || attr.prefix === "xmlns" || attr.namespaceURI === XMLNS_NS) {
|
|
54
|
+
continue;
|
|
55
|
+
}
|
|
56
|
+
regularAttrs.push(attr);
|
|
57
|
+
if (attr.prefix) {
|
|
58
|
+
utilized.set(attr.prefix, attr.namespaceURI ?? "");
|
|
59
|
+
}
|
|
60
|
+
}
|
|
61
|
+
}
|
|
62
|
+
// Decide which namespace declarations must be emitted on this element.
|
|
63
|
+
const nsToRender = [];
|
|
64
|
+
for (const [prefix, value] of utilized) {
|
|
65
|
+
if (prefix === "") {
|
|
66
|
+
if (value !== "") {
|
|
67
|
+
if (rendered.get("") !== value) {
|
|
68
|
+
nsToRender.push(["", value]);
|
|
69
|
+
rendered.set("", value);
|
|
70
|
+
}
|
|
71
|
+
}
|
|
72
|
+
else {
|
|
73
|
+
// Element is in no namespace — only emit xmlns="" to undeclare an inherited default.
|
|
74
|
+
const current = rendered.get("");
|
|
75
|
+
if (current !== undefined && current !== "") {
|
|
76
|
+
nsToRender.push(["", ""]);
|
|
77
|
+
rendered.set("", "");
|
|
78
|
+
}
|
|
79
|
+
}
|
|
80
|
+
}
|
|
81
|
+
else if (rendered.get(prefix) !== value) {
|
|
82
|
+
nsToRender.push([prefix, value]);
|
|
83
|
+
rendered.set(prefix, value);
|
|
84
|
+
}
|
|
85
|
+
}
|
|
86
|
+
// Namespace declarations sorted by prefix (default namespace first).
|
|
87
|
+
nsToRender.sort((a, b) => compare(a[0], b[0]));
|
|
88
|
+
// Attributes sorted by namespace URI (empty first) then local name.
|
|
89
|
+
regularAttrs.sort((a, b) => {
|
|
90
|
+
const uriCmp = compare(a.namespaceURI ?? "", b.namespaceURI ?? "");
|
|
91
|
+
if (uriCmp !== 0) {
|
|
92
|
+
return uriCmp;
|
|
93
|
+
}
|
|
94
|
+
return compare(a.localName ?? a.nodeName, b.localName ?? b.nodeName);
|
|
95
|
+
});
|
|
96
|
+
const qname = el.nodeName;
|
|
97
|
+
out.push("<", qname);
|
|
98
|
+
for (const [prefix, value] of nsToRender) {
|
|
99
|
+
out.push(prefix === "" ? ` xmlns="${escapeAttr(value)}"` : ` xmlns:${prefix}="${escapeAttr(value)}"`);
|
|
100
|
+
}
|
|
101
|
+
for (const attr of regularAttrs) {
|
|
102
|
+
out.push(` ${attr.nodeName}="${escapeAttr(attr.value ?? "")}"`);
|
|
103
|
+
}
|
|
104
|
+
out.push(">");
|
|
105
|
+
serializeChildren(el, rendered, out);
|
|
106
|
+
out.push("</", qname, ">");
|
|
107
|
+
}
|
|
108
|
+
function serializeChildren(node, rendered, out) {
|
|
109
|
+
const children = node.childNodes;
|
|
110
|
+
if (!children) {
|
|
111
|
+
return;
|
|
112
|
+
}
|
|
113
|
+
for (let i = 0; i < children.length; i++) {
|
|
114
|
+
serializeNode(children.item(i), rendered, out);
|
|
115
|
+
}
|
|
116
|
+
}
|
|
117
|
+
function serializeNode(node, rendered, out) {
|
|
118
|
+
switch (node.nodeType) {
|
|
119
|
+
case ELEMENT_NODE:
|
|
120
|
+
serializeElement(node, rendered, out);
|
|
121
|
+
break;
|
|
122
|
+
case TEXT_NODE:
|
|
123
|
+
case CDATA_SECTION_NODE: {
|
|
124
|
+
const text = node.nodeValue ?? "";
|
|
125
|
+
// Mirror the Java SDK: whitespace-only (formatting) text nodes are dropped.
|
|
126
|
+
if (!isWhitespaceOnly(text)) {
|
|
127
|
+
out.push(escapeText(text));
|
|
128
|
+
}
|
|
129
|
+
break;
|
|
130
|
+
}
|
|
131
|
+
case PROCESSING_INSTRUCTION_NODE: {
|
|
132
|
+
const data = node.data ?? "";
|
|
133
|
+
out.push(data ? `<?${node.target} ${data}?>` : `<?${node.target}?>`);
|
|
134
|
+
break;
|
|
135
|
+
}
|
|
136
|
+
// Comments are omitted (exc-c14n#, OMIT_COMMENTS).
|
|
137
|
+
default:
|
|
138
|
+
break;
|
|
139
|
+
}
|
|
140
|
+
}
|
|
141
|
+
/**
|
|
142
|
+
* Canonicalizes an XML string using Exclusive XML Canonicalization 1.0 (comments omitted).
|
|
143
|
+
*
|
|
144
|
+
* @throws if `xml` is null/empty or cannot be parsed.
|
|
145
|
+
*/
|
|
5
146
|
export function canonicalizeXml(xml) {
|
|
6
|
-
|
|
147
|
+
if (xml == null || xml.trim() === "") {
|
|
148
|
+
throw new Error("XML string cannot be null or empty");
|
|
149
|
+
}
|
|
150
|
+
const doc = new DOMParser().parseFromString(xml, "text/xml");
|
|
151
|
+
const root = doc.nodeType === DOCUMENT_NODE ? doc.documentElement ?? null : doc;
|
|
152
|
+
if (!root) {
|
|
153
|
+
throw new Error("XML Exclusive C14N canonicalization failed: no document element");
|
|
154
|
+
}
|
|
155
|
+
const out = [];
|
|
156
|
+
serializeNode(root, new Map(), out);
|
|
157
|
+
return out.join("");
|
|
7
158
|
}
|
|
159
|
+
/** Canonicalize XML and return its SHA-256 hash as a lowercase hex string. */
|
|
8
160
|
export function canonicalizeAndHashXml(xml) {
|
|
9
161
|
return sha256Hex(canonicalizeXml(xml));
|
|
10
162
|
}
|
package/dist/xml.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"xml.js","sourceRoot":"","sources":["../src/xml.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AAEvC,SAAS,
|
|
1
|
+
{"version":3,"file":"xml.js","sourceRoot":"","sources":["../src/xml.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@cheqi/sdk",
|
|
3
|
-
"version": "0.1.
|
|
3
|
+
"version": "0.1.3",
|
|
4
4
|
"description": "Cheqi TypeScript SDK for encrypted receipt and credit note processing",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"author": "Cheqi",
|
|
@@ -52,5 +52,8 @@
|
|
|
52
52
|
"devDependencies": {
|
|
53
53
|
"@types/node": "^25.5.0",
|
|
54
54
|
"typescript": "^5.9.3"
|
|
55
|
+
},
|
|
56
|
+
"dependencies": {
|
|
57
|
+
"@xmldom/xmldom": "^0.9.10"
|
|
55
58
|
}
|
|
56
59
|
}
|
|
@@ -1,118 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Cheqi API
|
|
3
|
-
* Cheqi provides APIs for creating receipts and reading receipts for customers
|
|
4
|
-
*
|
|
5
|
-
* The version of the OpenAPI document: v1
|
|
6
|
-
*
|
|
7
|
-
*
|
|
8
|
-
* NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
|
|
9
|
-
* https://openapi-generator.tech
|
|
10
|
-
* Do not edit the class manually.
|
|
11
|
-
*/
|
|
12
|
-
import type { NotificationDisplayCode } from './NotificationDisplayCode.js';
|
|
13
|
-
import type { ReceiptFormat } from './ReceiptFormat.js';
|
|
14
|
-
/**
|
|
15
|
-
*
|
|
16
|
-
* @export
|
|
17
|
-
* @interface EncryptedReceiptDto
|
|
18
|
-
*/
|
|
19
|
-
export interface EncryptedReceiptDto {
|
|
20
|
-
/**
|
|
21
|
-
*
|
|
22
|
-
* @type {{ [key: string]: object; }}
|
|
23
|
-
* @memberof EncryptedReceiptDto
|
|
24
|
-
*/
|
|
25
|
-
additionalProperties?: {
|
|
26
|
-
[key: string]: object;
|
|
27
|
-
};
|
|
28
|
-
/**
|
|
29
|
-
*
|
|
30
|
-
* @type {string}
|
|
31
|
-
* @memberof EncryptedReceiptDto
|
|
32
|
-
*/
|
|
33
|
-
recipientId?: string;
|
|
34
|
-
/**
|
|
35
|
-
*
|
|
36
|
-
* @type {string}
|
|
37
|
-
* @memberof EncryptedReceiptDto
|
|
38
|
-
*/
|
|
39
|
-
receiptId?: string;
|
|
40
|
-
/**
|
|
41
|
-
* Type of receiver for this receipt
|
|
42
|
-
* @type {string}
|
|
43
|
-
* @memberof EncryptedReceiptDto
|
|
44
|
-
*/
|
|
45
|
-
receiverType?: EncryptedReceiptDtoReceiverTypeEnum;
|
|
46
|
-
/**
|
|
47
|
-
*
|
|
48
|
-
* @type {string}
|
|
49
|
-
* @memberof EncryptedReceiptDto
|
|
50
|
-
*/
|
|
51
|
-
encryptedReceipt?: string;
|
|
52
|
-
/**
|
|
53
|
-
*
|
|
54
|
-
* @type {string}
|
|
55
|
-
* @memberof EncryptedReceiptDto
|
|
56
|
-
*/
|
|
57
|
-
encryptedSymmetricKey?: string;
|
|
58
|
-
/**
|
|
59
|
-
*
|
|
60
|
-
* @type {string}
|
|
61
|
-
* @memberof EncryptedReceiptDto
|
|
62
|
-
*/
|
|
63
|
-
encryptedCustomerDetails?: string;
|
|
64
|
-
/**
|
|
65
|
-
*
|
|
66
|
-
* @type {string}
|
|
67
|
-
* @memberof EncryptedReceiptDto
|
|
68
|
-
*/
|
|
69
|
-
encryptedCustomerAesKey?: string;
|
|
70
|
-
/**
|
|
71
|
-
*
|
|
72
|
-
* @type {string}
|
|
73
|
-
* @memberof EncryptedReceiptDto
|
|
74
|
-
*/
|
|
75
|
-
finalHash?: string;
|
|
76
|
-
/**
|
|
77
|
-
*
|
|
78
|
-
* @type {string}
|
|
79
|
-
* @memberof EncryptedReceiptDto
|
|
80
|
-
*/
|
|
81
|
-
publicKey?: string;
|
|
82
|
-
/**
|
|
83
|
-
*
|
|
84
|
-
* @type {string}
|
|
85
|
-
* @memberof EncryptedReceiptDto
|
|
86
|
-
*/
|
|
87
|
-
supplierPartyId?: string;
|
|
88
|
-
/**
|
|
89
|
-
*
|
|
90
|
-
* @type {Array<ReceiptFormat>}
|
|
91
|
-
* @memberof EncryptedReceiptDto
|
|
92
|
-
*/
|
|
93
|
-
receiptFormats?: Array<ReceiptFormat>;
|
|
94
|
-
/**
|
|
95
|
-
*
|
|
96
|
-
* @type {NotificationDisplayCode}
|
|
97
|
-
* @memberof EncryptedReceiptDto
|
|
98
|
-
*/
|
|
99
|
-
notificationDisplayCode?: NotificationDisplayCode;
|
|
100
|
-
}
|
|
101
|
-
/**
|
|
102
|
-
* @export
|
|
103
|
-
*/
|
|
104
|
-
export declare const EncryptedReceiptDtoReceiverTypeEnum: {
|
|
105
|
-
readonly DEVICE: "DEVICE";
|
|
106
|
-
readonly CLIENT_APPLICATION: "CLIENT_APPLICATION";
|
|
107
|
-
readonly COMPANY: "COMPANY";
|
|
108
|
-
readonly EMAIL_FALLBACK: "EMAIL_FALLBACK";
|
|
109
|
-
};
|
|
110
|
-
export type EncryptedReceiptDtoReceiverTypeEnum = typeof EncryptedReceiptDtoReceiverTypeEnum[keyof typeof EncryptedReceiptDtoReceiverTypeEnum];
|
|
111
|
-
/**
|
|
112
|
-
* Check if a given object implements the EncryptedReceiptDto interface.
|
|
113
|
-
*/
|
|
114
|
-
export declare function instanceOfEncryptedReceiptDto(value: object): value is EncryptedReceiptDto;
|
|
115
|
-
export declare function EncryptedReceiptDtoFromJSON(json: any): EncryptedReceiptDto;
|
|
116
|
-
export declare function EncryptedReceiptDtoFromJSONTyped(json: any, ignoreDiscriminator: boolean): EncryptedReceiptDto;
|
|
117
|
-
export declare function EncryptedReceiptDtoToJSON(json: any): EncryptedReceiptDto;
|
|
118
|
-
export declare function EncryptedReceiptDtoToJSONTyped(value?: EncryptedReceiptDto | null, ignoreDiscriminator?: boolean): any;
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"EncryptedReceiptDto.js","sourceRoot":"","sources":["../../../src/models/generated/EncryptedReceiptDto.ts"],"names":[],"mappings":"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"}
|