@cheqi/sdk 0.1.1 → 0.1.2
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 +0 -6
- package/dist/models/generated/CompanyCreationRequest.js +0 -2
- package/dist/models/generated/CompanyCreationRequest.js.map +1 -1
- package/dist/models/generated/CompanyResponseBody.d.ts +0 -6
- package/dist/models/generated/CompanyResponseBody.js +0 -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/ReceiverType.d.ts +27 -0
- package/dist/models/generated/ReceiverType.js +46 -0
- package/dist/models/generated/ReceiverType.js.map +1 -0
- 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 +21 -0
- package/dist/models.js +65 -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 +13 -2
- 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/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
package/dist/models.d.ts
CHANGED
|
@@ -1,5 +1,14 @@
|
|
|
1
|
+
/** Delivery outcome of a processed receipt. Mirrors the Java SDK `DeliveryStatus`. */
|
|
2
|
+
export declare const DeliveryStatus: {
|
|
3
|
+
readonly DELIVERED_DIGITAL: "DELIVERED_DIGITAL";
|
|
4
|
+
readonly DELIVERED_EMAIL: "DELIVERED_EMAIL";
|
|
5
|
+
readonly CUSTOMER_NOT_FOUND: "CUSTOMER_NOT_FOUND";
|
|
6
|
+
readonly FAILED: "FAILED";
|
|
7
|
+
};
|
|
8
|
+
export type DeliveryStatus = (typeof DeliveryStatus)[keyof typeof DeliveryStatus];
|
|
1
9
|
export interface ReceiptResultInit {
|
|
2
10
|
success: boolean;
|
|
11
|
+
deliveryStatus?: DeliveryStatus | null;
|
|
3
12
|
deliveryMethod?: string | null;
|
|
4
13
|
customerFound?: boolean;
|
|
5
14
|
receiptCount?: number;
|
|
@@ -10,6 +19,7 @@ export interface ReceiptResultInit {
|
|
|
10
19
|
}
|
|
11
20
|
export declare class ReceiptResult {
|
|
12
21
|
readonly success: boolean;
|
|
22
|
+
readonly deliveryStatus: DeliveryStatus | null;
|
|
13
23
|
readonly deliveryMethod: string | null;
|
|
14
24
|
readonly customerFound: boolean;
|
|
15
25
|
readonly receiptCount: number;
|
|
@@ -21,31 +31,42 @@ export declare class ReceiptResult {
|
|
|
21
31
|
static deliveredToApp(response: Record<string, unknown>, templateContent: string): ReceiptResult;
|
|
22
32
|
static deliveredViaEmail(customerEmail: string): ReceiptResult;
|
|
23
33
|
static customerNotFound(): ReceiptResult;
|
|
34
|
+
static failed(message: string): ReceiptResult;
|
|
24
35
|
isSuccess(): boolean;
|
|
25
36
|
isCustomerNotFound(): boolean;
|
|
37
|
+
getDeliveryStatus(): DeliveryStatus | null;
|
|
26
38
|
getReceiptCount(): number;
|
|
39
|
+
getEmailAddress(): string | null;
|
|
27
40
|
getMessage(): string | null;
|
|
28
41
|
}
|
|
29
42
|
export interface CreditNoteResultInit {
|
|
30
43
|
success: boolean;
|
|
44
|
+
deliveryStatus?: DeliveryStatus | null;
|
|
31
45
|
customerFound?: boolean;
|
|
32
46
|
creditNoteCount?: number;
|
|
33
47
|
response?: unknown;
|
|
34
48
|
templateContent?: string | null;
|
|
35
49
|
message?: string | null;
|
|
50
|
+
emailAddress?: string | null;
|
|
36
51
|
}
|
|
37
52
|
export declare class CreditNoteResult {
|
|
38
53
|
readonly success: boolean;
|
|
54
|
+
readonly deliveryStatus: DeliveryStatus | null;
|
|
39
55
|
readonly customerFound: boolean;
|
|
40
56
|
readonly creditNoteCount: number;
|
|
41
57
|
readonly response: unknown;
|
|
42
58
|
readonly templateContent: string | null;
|
|
43
59
|
readonly message: string | null;
|
|
60
|
+
readonly emailAddress: string | null;
|
|
44
61
|
constructor(init: CreditNoteResultInit);
|
|
45
62
|
static deliveredToApp(response: Record<string, unknown>, templateContent: string): CreditNoteResult;
|
|
63
|
+
static deliveredViaEmail(emailAddress: string): CreditNoteResult;
|
|
46
64
|
static customerNotFound(): CreditNoteResult;
|
|
65
|
+
static failed(message: string): CreditNoteResult;
|
|
47
66
|
isSuccess(): boolean;
|
|
48
67
|
isCustomerNotFound(): boolean;
|
|
68
|
+
getDeliveryStatus(): DeliveryStatus | null;
|
|
49
69
|
getCreditNoteCount(): number;
|
|
70
|
+
getEmailAddress(): string | null;
|
|
50
71
|
getMessage(): string | null;
|
|
51
72
|
}
|
package/dist/models.js
CHANGED
|
@@ -1,5 +1,13 @@
|
|
|
1
|
+
/** Delivery outcome of a processed receipt. Mirrors the Java SDK `DeliveryStatus`. */
|
|
2
|
+
export const DeliveryStatus = {
|
|
3
|
+
DELIVERED_DIGITAL: "DELIVERED_DIGITAL",
|
|
4
|
+
DELIVERED_EMAIL: "DELIVERED_EMAIL",
|
|
5
|
+
CUSTOMER_NOT_FOUND: "CUSTOMER_NOT_FOUND",
|
|
6
|
+
FAILED: "FAILED"
|
|
7
|
+
};
|
|
1
8
|
export class ReceiptResult {
|
|
2
9
|
success;
|
|
10
|
+
deliveryStatus;
|
|
3
11
|
deliveryMethod;
|
|
4
12
|
customerFound;
|
|
5
13
|
receiptCount;
|
|
@@ -9,6 +17,7 @@ export class ReceiptResult {
|
|
|
9
17
|
customerEmail;
|
|
10
18
|
constructor(init) {
|
|
11
19
|
this.success = init.success;
|
|
20
|
+
this.deliveryStatus = init.deliveryStatus ?? null;
|
|
12
21
|
this.deliveryMethod = init.deliveryMethod ?? null;
|
|
13
22
|
this.customerFound = init.customerFound ?? false;
|
|
14
23
|
this.receiptCount = init.receiptCount ?? 0;
|
|
@@ -22,83 +31,132 @@ export class ReceiptResult {
|
|
|
22
31
|
(typeof response.receiptCount === "number" ? response.receiptCount : 0);
|
|
23
32
|
return new ReceiptResult({
|
|
24
33
|
success: true,
|
|
34
|
+
deliveryStatus: DeliveryStatus.DELIVERED_DIGITAL,
|
|
25
35
|
deliveryMethod: "APP",
|
|
26
36
|
customerFound: true,
|
|
27
37
|
receiptCount,
|
|
28
38
|
response,
|
|
29
|
-
templateContent
|
|
39
|
+
templateContent,
|
|
40
|
+
message: "Receipt delivered to customer's Cheqi app"
|
|
30
41
|
});
|
|
31
42
|
}
|
|
32
43
|
static deliveredViaEmail(customerEmail) {
|
|
33
44
|
return new ReceiptResult({
|
|
34
45
|
success: true,
|
|
46
|
+
deliveryStatus: DeliveryStatus.DELIVERED_EMAIL,
|
|
35
47
|
deliveryMethod: "EMAIL",
|
|
36
48
|
customerFound: false,
|
|
37
|
-
customerEmail
|
|
49
|
+
customerEmail,
|
|
50
|
+
message: `Receipt sent via email to ${customerEmail}`
|
|
38
51
|
});
|
|
39
52
|
}
|
|
40
53
|
static customerNotFound() {
|
|
41
54
|
return new ReceiptResult({
|
|
42
55
|
success: false,
|
|
56
|
+
deliveryStatus: DeliveryStatus.CUSTOMER_NOT_FOUND,
|
|
43
57
|
customerFound: false,
|
|
44
|
-
message: "Customer not found"
|
|
58
|
+
message: "Customer not found with provided payment details"
|
|
59
|
+
});
|
|
60
|
+
}
|
|
61
|
+
static failed(message) {
|
|
62
|
+
return new ReceiptResult({
|
|
63
|
+
success: false,
|
|
64
|
+
deliveryStatus: DeliveryStatus.FAILED,
|
|
65
|
+
customerFound: false,
|
|
66
|
+
message
|
|
45
67
|
});
|
|
46
68
|
}
|
|
47
69
|
isSuccess() {
|
|
48
70
|
return this.success;
|
|
49
71
|
}
|
|
50
72
|
isCustomerNotFound() {
|
|
51
|
-
return
|
|
73
|
+
return this.deliveryStatus === DeliveryStatus.CUSTOMER_NOT_FOUND;
|
|
74
|
+
}
|
|
75
|
+
getDeliveryStatus() {
|
|
76
|
+
return this.deliveryStatus;
|
|
52
77
|
}
|
|
53
78
|
getReceiptCount() {
|
|
54
79
|
return this.receiptCount;
|
|
55
80
|
}
|
|
81
|
+
getEmailAddress() {
|
|
82
|
+
return this.customerEmail;
|
|
83
|
+
}
|
|
56
84
|
getMessage() {
|
|
57
85
|
return this.message;
|
|
58
86
|
}
|
|
59
87
|
}
|
|
60
88
|
export class CreditNoteResult {
|
|
61
89
|
success;
|
|
90
|
+
deliveryStatus;
|
|
62
91
|
customerFound;
|
|
63
92
|
creditNoteCount;
|
|
64
93
|
response;
|
|
65
94
|
templateContent;
|
|
66
95
|
message;
|
|
96
|
+
emailAddress;
|
|
67
97
|
constructor(init) {
|
|
68
98
|
this.success = init.success;
|
|
99
|
+
this.deliveryStatus = init.deliveryStatus ?? null;
|
|
69
100
|
this.customerFound = init.customerFound ?? false;
|
|
70
101
|
this.creditNoteCount = init.creditNoteCount ?? 0;
|
|
71
102
|
this.response = init.response ?? null;
|
|
72
103
|
this.templateContent = init.templateContent ?? null;
|
|
73
104
|
this.message = init.message ?? null;
|
|
105
|
+
this.emailAddress = init.emailAddress ?? null;
|
|
74
106
|
}
|
|
75
107
|
static deliveredToApp(response, templateContent) {
|
|
76
108
|
const creditNoteCount = (Array.isArray(response.createdCreditNotes) ? response.createdCreditNotes.length : undefined) ??
|
|
77
109
|
(typeof response.creditNoteCount === "number" ? response.creditNoteCount : 0);
|
|
78
110
|
return new CreditNoteResult({
|
|
79
111
|
success: true,
|
|
112
|
+
deliveryStatus: DeliveryStatus.DELIVERED_DIGITAL,
|
|
80
113
|
customerFound: true,
|
|
81
114
|
creditNoteCount,
|
|
82
115
|
response,
|
|
83
|
-
templateContent
|
|
116
|
+
templateContent,
|
|
117
|
+
message: "Credit note delivered to customer's Cheqi app"
|
|
118
|
+
});
|
|
119
|
+
}
|
|
120
|
+
static deliveredViaEmail(emailAddress) {
|
|
121
|
+
return new CreditNoteResult({
|
|
122
|
+
success: true,
|
|
123
|
+
deliveryStatus: DeliveryStatus.DELIVERED_EMAIL,
|
|
124
|
+
customerFound: false,
|
|
125
|
+
emailAddress,
|
|
126
|
+
message: `Credit note sent via email to ${emailAddress}`
|
|
84
127
|
});
|
|
85
128
|
}
|
|
86
129
|
static customerNotFound() {
|
|
87
130
|
return new CreditNoteResult({
|
|
88
131
|
success: false,
|
|
132
|
+
deliveryStatus: DeliveryStatus.CUSTOMER_NOT_FOUND,
|
|
89
133
|
customerFound: false,
|
|
90
|
-
message: "Customer not found"
|
|
134
|
+
message: "Customer not found with provided payment details"
|
|
135
|
+
});
|
|
136
|
+
}
|
|
137
|
+
static failed(message) {
|
|
138
|
+
return new CreditNoteResult({
|
|
139
|
+
success: false,
|
|
140
|
+
deliveryStatus: DeliveryStatus.FAILED,
|
|
141
|
+
customerFound: false,
|
|
142
|
+
message
|
|
91
143
|
});
|
|
92
144
|
}
|
|
93
145
|
isSuccess() {
|
|
94
146
|
return this.success;
|
|
95
147
|
}
|
|
96
148
|
isCustomerNotFound() {
|
|
97
|
-
return
|
|
149
|
+
return this.deliveryStatus === DeliveryStatus.CUSTOMER_NOT_FOUND;
|
|
150
|
+
}
|
|
151
|
+
getDeliveryStatus() {
|
|
152
|
+
return this.deliveryStatus;
|
|
98
153
|
}
|
|
99
154
|
getCreditNoteCount() {
|
|
100
155
|
return this.creditNoteCount;
|
|
101
156
|
}
|
|
157
|
+
getEmailAddress() {
|
|
158
|
+
return this.emailAddress;
|
|
159
|
+
}
|
|
102
160
|
getMessage() {
|
|
103
161
|
return this.message;
|
|
104
162
|
}
|
package/dist/models.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"models.js","sourceRoot":"","sources":["../src/models.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"models.js","sourceRoot":"","sources":["../src/models.ts"],"names":[],"mappings":"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"}
|
package/dist/rfc8785.d.ts
CHANGED
|
@@ -1 +1,18 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* RFC 8785-style JSON canonicalization, byte-compatible with the Cheqi Java SDK
|
|
3
|
+
* `RFC8785Canonicalizer`:
|
|
4
|
+
* - object keys sorted lexicographically (UTF-16 code-unit order),
|
|
5
|
+
* - strings escaped exactly as Java/`JSON.stringify` (control chars < 0x20 as
|
|
6
|
+
* `\u00xx`; `
|
|
7
|
+
`/`
|
|
8
|
+
` left unescaped),
|
|
9
|
+
* - numbers rendered like Jackson: integral tokens as integers, decimal tokens
|
|
10
|
+
* via `BigDecimal.toPlainString()` (no scientific notation, original scale
|
|
11
|
+
* preserved).
|
|
12
|
+
*
|
|
13
|
+
* When the input is a JSON **string**, original number tokens are preserved so
|
|
14
|
+
* the output matches the backend byte-for-byte (e.g. `12.10` stays `12.10`).
|
|
15
|
+
* When the input is an already-parsed object, numbers are JS `number`s and the
|
|
16
|
+
* original textual scale cannot be recovered (e.g. `12.10` becomes `12.1`).
|
|
17
|
+
*/
|
|
1
18
|
export declare function canonicalizeJson(value: string | object): string;
|
package/dist/rfc8785.js
CHANGED
|
@@ -1,26 +1,102 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* RFC 8785-style JSON canonicalization, byte-compatible with the Cheqi Java SDK
|
|
3
|
+
* `RFC8785Canonicalizer`:
|
|
4
|
+
* - object keys sorted lexicographically (UTF-16 code-unit order),
|
|
5
|
+
* - strings escaped exactly as Java/`JSON.stringify` (control chars < 0x20 as
|
|
6
|
+
* `\u00xx`; `
|
|
7
|
+
`/`
|
|
8
|
+
` left unescaped),
|
|
9
|
+
* - numbers rendered like Jackson: integral tokens as integers, decimal tokens
|
|
10
|
+
* via `BigDecimal.toPlainString()` (no scientific notation, original scale
|
|
11
|
+
* preserved).
|
|
12
|
+
*
|
|
13
|
+
* When the input is a JSON **string**, original number tokens are preserved so
|
|
14
|
+
* the output matches the backend byte-for-byte (e.g. `12.10` stays `12.10`).
|
|
15
|
+
* When the input is an already-parsed object, numbers are JS `number`s and the
|
|
16
|
+
* original textual scale cannot be recovered (e.g. `12.10` becomes `12.1`).
|
|
17
|
+
*/
|
|
18
|
+
/** Wrapper preserving the exact source text of a JSON number token. */
|
|
19
|
+
class JsonNumberToken {
|
|
20
|
+
raw;
|
|
21
|
+
constructor(raw) {
|
|
22
|
+
this.raw = raw;
|
|
23
|
+
}
|
|
24
|
+
}
|
|
1
25
|
function serializeString(value) {
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
26
|
+
// JSON.stringify escapes the same set Java's canonicalizeString does and
|
|
27
|
+
// leaves U+2028/U+2029 unescaped — matching the Java SDK.
|
|
28
|
+
return JSON.stringify(value);
|
|
5
29
|
}
|
|
6
|
-
|
|
30
|
+
/** Render a JSON number token like Jackson: integral as-is, decimal via BigDecimal.toPlainString(). */
|
|
31
|
+
function formatNumberToken(token) {
|
|
32
|
+
const match = /^(-?)(\d+)(?:\.(\d+))?(?:[eE]([+-]?\d+))?$/.exec(token);
|
|
33
|
+
if (!match) {
|
|
34
|
+
return serializeJsNumber(Number(token));
|
|
35
|
+
}
|
|
36
|
+
const sign = match[1];
|
|
37
|
+
const intPart = match[2];
|
|
38
|
+
const fracPart = match[3] ?? "";
|
|
39
|
+
const exp = match[4] ? Number.parseInt(match[4], 10) : 0;
|
|
40
|
+
// Integral token (no fraction, no exponent) → integer representation.
|
|
41
|
+
if (fracPart === "" && exp === 0) {
|
|
42
|
+
return BigInt(sign + intPart).toString();
|
|
43
|
+
}
|
|
44
|
+
// Decimal token → BigDecimal.toPlainString().
|
|
45
|
+
const scale = fracPart.length - exp;
|
|
46
|
+
let magnitude = (intPart + fracPart).replace(/^0+/, "");
|
|
47
|
+
if (magnitude === "") {
|
|
48
|
+
magnitude = "0";
|
|
49
|
+
}
|
|
50
|
+
let result;
|
|
51
|
+
if (scale === 0) {
|
|
52
|
+
result = magnitude;
|
|
53
|
+
}
|
|
54
|
+
else if (scale < 0) {
|
|
55
|
+
result = magnitude + "0".repeat(-scale);
|
|
56
|
+
}
|
|
57
|
+
else if (magnitude.length > scale) {
|
|
58
|
+
const pointPos = magnitude.length - scale;
|
|
59
|
+
result = `${magnitude.slice(0, pointPos)}.${magnitude.slice(pointPos)}`;
|
|
60
|
+
}
|
|
61
|
+
else {
|
|
62
|
+
result = `0.${"0".repeat(scale - magnitude.length)}${magnitude}`;
|
|
63
|
+
}
|
|
64
|
+
// Drop the sign for zero (BigDecimal has no negative zero).
|
|
65
|
+
return sign === "-" && /[1-9]/.test(result) ? `-${result}` : result;
|
|
66
|
+
}
|
|
67
|
+
/** Format an already-parsed JS number without scientific notation. */
|
|
68
|
+
function serializeJsNumber(value) {
|
|
7
69
|
if (!Number.isFinite(value)) {
|
|
8
70
|
throw new Error("NaN and Infinity are not valid JSON values");
|
|
9
71
|
}
|
|
10
|
-
if (
|
|
72
|
+
if (value === 0) {
|
|
11
73
|
return "0";
|
|
12
74
|
}
|
|
13
|
-
|
|
75
|
+
if (Number.isInteger(value) && Math.abs(value) < 1e21) {
|
|
76
|
+
return value.toString();
|
|
77
|
+
}
|
|
78
|
+
const text = value.toString();
|
|
79
|
+
if (!/[eE]/.test(text)) {
|
|
80
|
+
return text;
|
|
81
|
+
}
|
|
82
|
+
// Expand scientific notation produced by Number.toString() into plain form.
|
|
83
|
+
return formatNumberToken(text);
|
|
14
84
|
}
|
|
15
85
|
function serialize(value) {
|
|
16
86
|
if (value === null) {
|
|
17
87
|
return "null";
|
|
18
88
|
}
|
|
89
|
+
if (value instanceof JsonNumberToken) {
|
|
90
|
+
return formatNumberToken(value.raw);
|
|
91
|
+
}
|
|
19
92
|
if (typeof value === "boolean") {
|
|
20
93
|
return value ? "true" : "false";
|
|
21
94
|
}
|
|
22
95
|
if (typeof value === "number") {
|
|
23
|
-
return
|
|
96
|
+
return serializeJsNumber(value);
|
|
97
|
+
}
|
|
98
|
+
if (typeof value === "bigint") {
|
|
99
|
+
return value.toString();
|
|
24
100
|
}
|
|
25
101
|
if (typeof value === "string") {
|
|
26
102
|
return serializeString(value);
|
|
@@ -35,8 +111,164 @@ function serialize(value) {
|
|
|
35
111
|
}
|
|
36
112
|
throw new TypeError(`Cannot canonicalize type: ${typeof value}`);
|
|
37
113
|
}
|
|
114
|
+
// ── Tokenizing JSON parser that preserves number source text ──────────────────
|
|
115
|
+
function parseJsonPreservingNumbers(text) {
|
|
116
|
+
let i = 0;
|
|
117
|
+
function error(message) {
|
|
118
|
+
throw new SyntaxError(`Invalid JSON at position ${i}: ${message}`);
|
|
119
|
+
}
|
|
120
|
+
function skipWhitespace() {
|
|
121
|
+
while (i < text.length) {
|
|
122
|
+
const c = text.charCodeAt(i);
|
|
123
|
+
if (c === 0x20 || c === 0x09 || c === 0x0a || c === 0x0d) {
|
|
124
|
+
i += 1;
|
|
125
|
+
}
|
|
126
|
+
else {
|
|
127
|
+
break;
|
|
128
|
+
}
|
|
129
|
+
}
|
|
130
|
+
}
|
|
131
|
+
function parseValue() {
|
|
132
|
+
skipWhitespace();
|
|
133
|
+
const ch = text[i];
|
|
134
|
+
if (ch === "{") {
|
|
135
|
+
return parseObject();
|
|
136
|
+
}
|
|
137
|
+
if (ch === "[") {
|
|
138
|
+
return parseArray();
|
|
139
|
+
}
|
|
140
|
+
if (ch === '"') {
|
|
141
|
+
return parseString();
|
|
142
|
+
}
|
|
143
|
+
if (ch === "-" || (ch >= "0" && ch <= "9")) {
|
|
144
|
+
return parseNumber();
|
|
145
|
+
}
|
|
146
|
+
if (text.startsWith("true", i)) {
|
|
147
|
+
i += 4;
|
|
148
|
+
return true;
|
|
149
|
+
}
|
|
150
|
+
if (text.startsWith("false", i)) {
|
|
151
|
+
i += 5;
|
|
152
|
+
return false;
|
|
153
|
+
}
|
|
154
|
+
if (text.startsWith("null", i)) {
|
|
155
|
+
i += 4;
|
|
156
|
+
return null;
|
|
157
|
+
}
|
|
158
|
+
error(`unexpected token '${ch ?? "EOF"}'`);
|
|
159
|
+
}
|
|
160
|
+
function parseObject() {
|
|
161
|
+
const obj = {};
|
|
162
|
+
i += 1; // {
|
|
163
|
+
skipWhitespace();
|
|
164
|
+
if (text[i] === "}") {
|
|
165
|
+
i += 1;
|
|
166
|
+
return obj;
|
|
167
|
+
}
|
|
168
|
+
for (;;) {
|
|
169
|
+
skipWhitespace();
|
|
170
|
+
if (text[i] !== '"') {
|
|
171
|
+
error("expected string key");
|
|
172
|
+
}
|
|
173
|
+
const key = parseString();
|
|
174
|
+
skipWhitespace();
|
|
175
|
+
if (text[i] !== ":") {
|
|
176
|
+
error("expected ':'");
|
|
177
|
+
}
|
|
178
|
+
i += 1;
|
|
179
|
+
obj[key] = parseValue();
|
|
180
|
+
skipWhitespace();
|
|
181
|
+
const ch = text[i];
|
|
182
|
+
if (ch === ",") {
|
|
183
|
+
i += 1;
|
|
184
|
+
continue;
|
|
185
|
+
}
|
|
186
|
+
if (ch === "}") {
|
|
187
|
+
i += 1;
|
|
188
|
+
return obj;
|
|
189
|
+
}
|
|
190
|
+
error("expected ',' or '}'");
|
|
191
|
+
}
|
|
192
|
+
}
|
|
193
|
+
function parseArray() {
|
|
194
|
+
const arr = [];
|
|
195
|
+
i += 1; // [
|
|
196
|
+
skipWhitespace();
|
|
197
|
+
if (text[i] === "]") {
|
|
198
|
+
i += 1;
|
|
199
|
+
return arr;
|
|
200
|
+
}
|
|
201
|
+
for (;;) {
|
|
202
|
+
arr.push(parseValue());
|
|
203
|
+
skipWhitespace();
|
|
204
|
+
const ch = text[i];
|
|
205
|
+
if (ch === ",") {
|
|
206
|
+
i += 1;
|
|
207
|
+
continue;
|
|
208
|
+
}
|
|
209
|
+
if (ch === "]") {
|
|
210
|
+
i += 1;
|
|
211
|
+
return arr;
|
|
212
|
+
}
|
|
213
|
+
error("expected ',' or ']'");
|
|
214
|
+
}
|
|
215
|
+
}
|
|
216
|
+
function parseString() {
|
|
217
|
+
const start = i;
|
|
218
|
+
i += 1; // opening quote
|
|
219
|
+
while (i < text.length) {
|
|
220
|
+
const ch = text[i];
|
|
221
|
+
if (ch === "\\") {
|
|
222
|
+
i += 2;
|
|
223
|
+
continue;
|
|
224
|
+
}
|
|
225
|
+
if (ch === '"') {
|
|
226
|
+
i += 1;
|
|
227
|
+
return JSON.parse(text.slice(start, i));
|
|
228
|
+
}
|
|
229
|
+
i += 1;
|
|
230
|
+
}
|
|
231
|
+
error("unterminated string");
|
|
232
|
+
}
|
|
233
|
+
function parseNumber() {
|
|
234
|
+
const start = i;
|
|
235
|
+
if (text[i] === "-") {
|
|
236
|
+
i += 1;
|
|
237
|
+
}
|
|
238
|
+
while (i < text.length && text[i] >= "0" && text[i] <= "9") {
|
|
239
|
+
i += 1;
|
|
240
|
+
}
|
|
241
|
+
if (text[i] === ".") {
|
|
242
|
+
i += 1;
|
|
243
|
+
while (i < text.length && text[i] >= "0" && text[i] <= "9") {
|
|
244
|
+
i += 1;
|
|
245
|
+
}
|
|
246
|
+
}
|
|
247
|
+
if (text[i] === "e" || text[i] === "E") {
|
|
248
|
+
i += 1;
|
|
249
|
+
if (text[i] === "+" || text[i] === "-") {
|
|
250
|
+
i += 1;
|
|
251
|
+
}
|
|
252
|
+
while (i < text.length && text[i] >= "0" && text[i] <= "9") {
|
|
253
|
+
i += 1;
|
|
254
|
+
}
|
|
255
|
+
}
|
|
256
|
+
return new JsonNumberToken(text.slice(start, i));
|
|
257
|
+
}
|
|
258
|
+
const result = parseValue();
|
|
259
|
+
skipWhitespace();
|
|
260
|
+
if (i < text.length) {
|
|
261
|
+
error("trailing content");
|
|
262
|
+
}
|
|
263
|
+
return result;
|
|
264
|
+
}
|
|
38
265
|
export function canonicalizeJson(value) {
|
|
39
|
-
|
|
40
|
-
|
|
266
|
+
if (typeof value === "string") {
|
|
267
|
+
if (value.trim() === "") {
|
|
268
|
+
throw new Error("JSON string cannot be null or empty");
|
|
269
|
+
}
|
|
270
|
+
return serialize(parseJsonPreservingNumbers(value));
|
|
271
|
+
}
|
|
272
|
+
return serialize(value);
|
|
41
273
|
}
|
|
42
274
|
//# sourceMappingURL=rfc8785.js.map
|
package/dist/rfc8785.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"rfc8785.js","sourceRoot":"","sources":["../src/rfc8785.ts"],"names":[],"mappings":"AAAA,SAAS,eAAe,CAAC,KAAa;IACpC,OAAO,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC;
|
|
1
|
+
{"version":3,"file":"rfc8785.js","sourceRoot":"","sources":["../src/rfc8785.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { CreditNoteResult } from "../models.js";
|
|
2
|
-
import type { CheqiApiClient, CreditNoteTemplateGenerationRequest, CreditNoteTemplateRequest, CreditNoteTemplateResponse, DecryptedDeliveredCreditNote, EncryptedCreditNote, EncryptedCreditNoteInitiationRequest, IdentificationDetails, MatchedRecipient, RecipientResolutionResponse } from "../types.js";
|
|
2
|
+
import type { CheqiApiClient, CreditNoteInitiationRequest, CreditNoteTemplateGenerationRequest, CreditNoteTemplateRequest, CreditNoteTemplateResponse, DecryptedDeliveredCreditNote, EncryptedCreditNote, EncryptedCreditNoteInitiationRequest, IdentificationDetails, MatchedRecipient, RecipientResolutionResponse } from "../types.js";
|
|
3
3
|
import { DecryptionService } from "./decryption.js";
|
|
4
4
|
import { EncryptionService } from "./encryption.js";
|
|
5
5
|
import { MatchingService } from "./matching.js";
|
|
@@ -13,9 +13,12 @@ export declare class CreditNoteService {
|
|
|
13
13
|
generateCreditNoteTemplate(request: CreditNoteTemplateGenerationRequest, accessToken?: string | null): Promise<CreditNoteTemplateResponse>;
|
|
14
14
|
createEncryptedCreditNote(creditNoteEnvelope: string, recipient: MatchedRecipient): EncryptedCreditNote;
|
|
15
15
|
sendEncryptedCreditNotes(parentCheqiReceiptId: string, encryptedCreditNotes: EncryptedCreditNote[], templateHash: string, matchResponse: RecipientResolutionResponse, accessToken?: string | null): Promise<Record<string, unknown>>;
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
16
|
+
/**
|
|
17
|
+
* Decrypt and parse a customer-initiated credit-note (return) request.
|
|
18
|
+
* Mirrors the Java SDK, which deserializes the decrypted JSON into a
|
|
19
|
+
* structured {@link CreditNoteInitiationRequest}.
|
|
20
|
+
*/
|
|
21
|
+
decryptCreditNoteRequest(encryptedCreditNote: EncryptedCreditNoteInitiationRequest, privateKeyBase64: string): CreditNoteInitiationRequest;
|
|
19
22
|
decryptDeliveredCreditNote(encryptedCreditNote: EncryptedCreditNote, privateKeyBase64: string): DecryptedDeliveredCreditNote;
|
|
20
23
|
private buildEncryptedCreditNotes;
|
|
21
24
|
private mergeCreditNoteContext;
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { CheqiSDKError, CreditNoteProcessingError, ErrorCodes } from "../errors.js";
|
|
1
|
+
import { CheqiSDKError, CreditNoteProcessingError, DecryptionError, ErrorCodes } from "../errors.js";
|
|
2
2
|
import { CreditNoteResult } from "../models.js";
|
|
3
3
|
import { serializeJson, sha256Hex } from "../utils.js";
|
|
4
4
|
const CUSTOMER_PARTY_PLACEHOLDER = "<cac:AccountingCustomerParty/>";
|
|
@@ -127,13 +127,24 @@ export class CreditNoteService {
|
|
|
127
127
|
}
|
|
128
128
|
return this.apiClient.sendEncryptedCreditNotes(matchResponse.matchId, parentCheqiReceiptId, encryptedCreditNotes, templateHash, accessToken);
|
|
129
129
|
}
|
|
130
|
+
/**
|
|
131
|
+
* Decrypt and parse a customer-initiated credit-note (return) request.
|
|
132
|
+
* Mirrors the Java SDK, which deserializes the decrypted JSON into a
|
|
133
|
+
* structured {@link CreditNoteInitiationRequest}.
|
|
134
|
+
*/
|
|
130
135
|
decryptCreditNoteRequest(encryptedCreditNote, privateKeyBase64) {
|
|
131
136
|
if (!this.decryptionService) {
|
|
132
137
|
throw new CheqiSDKError("Decryption service is not configured", {
|
|
133
138
|
errorCode: ErrorCodes.DECRYPTION_ERROR
|
|
134
139
|
});
|
|
135
140
|
}
|
|
136
|
-
|
|
141
|
+
const { content } = this.decryptionService.decryptCreditNote(encryptedCreditNote, privateKeyBase64);
|
|
142
|
+
try {
|
|
143
|
+
return JSON.parse(content);
|
|
144
|
+
}
|
|
145
|
+
catch (error) {
|
|
146
|
+
throw new DecryptionError("Failed to deserialize decrypted credit note request", { cause: error });
|
|
147
|
+
}
|
|
137
148
|
}
|
|
138
149
|
decryptDeliveredCreditNote(encryptedCreditNote, privateKeyBase64) {
|
|
139
150
|
if (!this.decryptionService) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"credit-note.js","sourceRoot":"","sources":["../../src/services/credit-note.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,yBAAyB,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;
|
|
1
|
+
{"version":3,"file":"credit-note.js","sourceRoot":"","sources":["../../src/services/credit-note.ts"],"names":[],"mappings":"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"}
|