@agent-cards/sdk 0.23.13 → 0.23.15
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/CHANGELOG.md +39 -0
- package/PREFLIGHT.md +3 -1
- package/README.md +54 -13
- package/dist/adyen-merchant-hosted.generated.js +2 -2
- package/dist/amadeus.d.ts +5 -2
- package/dist/amadeus.js +17 -3
- package/dist/card-fields.generated.js +924 -3
- package/dist/cdp.js +83 -19
- package/dist/client.d.ts +97 -1
- package/dist/client.js +235 -16
- package/dist/creditguard.generated.d.ts +100 -2
- package/dist/creditguard.generated.js +333 -3
- package/dist/datatrans.generated.d.ts +19 -4
- package/dist/datatrans.generated.js +15 -3
- package/dist/ebanx.d.ts +107 -0
- package/dist/ebanx.generated.d.ts +78 -0
- package/dist/ebanx.generated.js +577 -0
- package/dist/ebanx.js +159 -0
- package/dist/index.d.ts +1 -0
- package/dist/index.js +2 -0
- package/dist/lifecycle.d.ts +32 -5
- package/dist/lifecycle.js +40 -5
- package/dist/paddle-tokenex.d.ts +56 -0
- package/dist/paddle-tokenex.generated.d.ts +67 -0
- package/dist/paddle-tokenex.generated.js +951 -0
- package/dist/paddle-tokenex.js +95 -0
- package/dist/paypal-card-forms.d.ts +73 -0
- package/dist/paypal-card-forms.js +126 -0
- package/dist/pre-claim.d.ts +39 -1
- package/dist/pre-claim.js +348 -18
- package/dist/preparation.d.ts +13 -0
- package/dist/preparation.js +22 -0
- package/dist/prepared-processor.d.ts +5 -1
- package/dist/prepared-processor.js +17 -2
- package/dist/primer.generated.js +960 -39
- package/dist/redsys.d.ts +42 -0
- package/dist/redsys.js +68 -0
- package/dist/stripe-checkout.generated.js +494 -9
- package/dist/wix-payments.generated.d.ts +42 -0
- package/dist/wix-payments.generated.js +241 -0
- package/package.json +8 -5
|
@@ -0,0 +1,241 @@
|
|
|
1
|
+
// @ts-nocheck
|
|
2
|
+
// Generated from @agent-cards/payment-core. Do not edit.
|
|
3
|
+
// artifact-sha256: 4e41c8fcd50a59095d1cd3b65d988dc506309c247bfc2de6ec4641210c0846c2
|
|
4
|
+
// src/wix-payments.js
|
|
5
|
+
var WIX_PAYMENTS_PSP = "wix_payments";
|
|
6
|
+
var WIX_PAYMENTS_CAPABILITY = "wix_payments_tokenize";
|
|
7
|
+
var WIX_PAYMENTS_OPERATION = "wix_payments.card_request";
|
|
8
|
+
var WIX_PAYMENTS_HOST = "cashier-pci.wixapps.net";
|
|
9
|
+
var WIX_PAYMENTS_TOKENIZE_URL = "https://cashier-pci.wixapps.net/_api/payment-gateway-web/tokenize/v2/tokens";
|
|
10
|
+
var WIX_PAYMENTS_REFUSAL_CODES = /* @__PURE__ */ Object.freeze(["wix_payments_url_refused", "wix_payments_headers_refused", "wix_payments_body_unsupported"]);
|
|
11
|
+
var BODY_LIMIT = 8192;
|
|
12
|
+
var ROOT_KEYS = /* @__PURE__ */ Object.freeze(["cvv", "creditCard"]);
|
|
13
|
+
var CARD_KEYS = /* @__PURE__ */ Object.freeze(["number", "expiration", "additionalInformation", "billingAddress"]);
|
|
14
|
+
var EXPIRATION_KEYS = /* @__PURE__ */ Object.freeze(["month", "year"]);
|
|
15
|
+
var HOLDER_KEYS = /* @__PURE__ */ Object.freeze(["holderName"]);
|
|
16
|
+
var CARD_NUMBER = /^[0-9]{12,19}$/;
|
|
17
|
+
var SECURITY_CODE = /^[0-9]{3,4}$/;
|
|
18
|
+
var FIRST_YEAR = 2e3;
|
|
19
|
+
var LAST_YEAR = 2099;
|
|
20
|
+
var FIELD_NAME = /^[A-Za-z][A-Za-z0-9]{0,63}$/;
|
|
21
|
+
var MAX_FIELDS = 32;
|
|
22
|
+
var MAX_NESTED_FIELDS = 8;
|
|
23
|
+
var TEXT_LIMIT = 256;
|
|
24
|
+
var CONTROL = /[\u0000-\u001f\u007f]/;
|
|
25
|
+
var INSTANCE = /^[A-Za-z0-9._~+/=-]{16,4096}$/;
|
|
26
|
+
var JSON_TYPE = /^application\/json(?:\s*;\s*charset=utf-8)?$/i;
|
|
27
|
+
var record = (value) => value !== null && typeof value === "object" && !Array.isArray(value);
|
|
28
|
+
var sameKeys = (value, keys) => {
|
|
29
|
+
const own = Object.keys(value);
|
|
30
|
+
return own.length === keys.length && own.every((key, at) => key === keys[at]);
|
|
31
|
+
};
|
|
32
|
+
var plainText = (value) => typeof value === "string" && value.length <= TEXT_LIMIT && !CONTROL.test(value) && (value.match(/[0-9]/g) ?? []).length < 12;
|
|
33
|
+
var refuse = (code) => Object.freeze({ verdict: "refuse", code });
|
|
34
|
+
var CARD = /* @__PURE__ */ Object.freeze({ verdict: "card" });
|
|
35
|
+
function isWixPaymentsTokenizeUrl(url) {
|
|
36
|
+
return url === WIX_PAYMENTS_TOKENIZE_URL;
|
|
37
|
+
}
|
|
38
|
+
function readBody(body) {
|
|
39
|
+
if (typeof body !== "string" || body === "" || body.length > BODY_LIMIT)
|
|
40
|
+
return null;
|
|
41
|
+
let value;
|
|
42
|
+
try {
|
|
43
|
+
value = JSON.parse(body);
|
|
44
|
+
if (!record(value) || JSON.stringify(value) !== body)
|
|
45
|
+
return null;
|
|
46
|
+
}
|
|
47
|
+
catch {
|
|
48
|
+
return null;
|
|
49
|
+
}
|
|
50
|
+
return value;
|
|
51
|
+
}
|
|
52
|
+
var billingText = (value) => value === null || plainText(value);
|
|
53
|
+
function billingFields(value) {
|
|
54
|
+
if (!record(value))
|
|
55
|
+
return false;
|
|
56
|
+
const names = Object.keys(value);
|
|
57
|
+
if (names.length > MAX_FIELDS)
|
|
58
|
+
return false;
|
|
59
|
+
return names.every((name) => {
|
|
60
|
+
const field = value[name];
|
|
61
|
+
if (!FIELD_NAME.test(name))
|
|
62
|
+
return false;
|
|
63
|
+
if (!record(field))
|
|
64
|
+
return billingText(field);
|
|
65
|
+
const nested = Object.keys(field);
|
|
66
|
+
return nested.length <= MAX_NESTED_FIELDS && nested.every((key) => FIELD_NAME.test(key) && billingText(field[key]));
|
|
67
|
+
});
|
|
68
|
+
}
|
|
69
|
+
function wixPaymentsBodyVerdict(body) {
|
|
70
|
+
const value = readBody(body);
|
|
71
|
+
if (value === null || !sameKeys(value, ROOT_KEYS) || !record(value.creditCard) || !sameKeys(value.creditCard, CARD_KEYS)) {
|
|
72
|
+
return refuse("wix_payments_body_unsupported");
|
|
73
|
+
}
|
|
74
|
+
const card = value.creditCard;
|
|
75
|
+
const expiration = card.expiration;
|
|
76
|
+
const holder = card.additionalInformation;
|
|
77
|
+
if (typeof value.cvv !== "string" || !SECURITY_CODE.test(value.cvv) || typeof card.number !== "string" || !CARD_NUMBER.test(card.number) || !record(expiration) || !sameKeys(expiration, EXPIRATION_KEYS) || !Number.isInteger(expiration.month) || expiration.month < 1 || expiration.month > 12 || !Number.isInteger(expiration.year) || expiration.year < FIRST_YEAR || expiration.year > LAST_YEAR || !record(holder) || !sameKeys(holder, HOLDER_KEYS) || !plainText(holder.holderName) || !billingFields(card.billingAddress)) {
|
|
78
|
+
return refuse("wix_payments_body_unsupported");
|
|
79
|
+
}
|
|
80
|
+
return CARD;
|
|
81
|
+
}
|
|
82
|
+
function headerValue(headers, name) {
|
|
83
|
+
const found = Object.keys(headers).filter((key) => key.toLowerCase() === name);
|
|
84
|
+
return found.length === 1 && typeof headers[found[0]] === "string" ? headers[found[0]] : null;
|
|
85
|
+
}
|
|
86
|
+
function wixPaymentsRequestRefusal(request) {
|
|
87
|
+
if (!record(request) || typeof request.method !== "string" || request.method.toUpperCase() !== "POST")
|
|
88
|
+
return "wix_payments_url_refused";
|
|
89
|
+
if (!isWixPaymentsTokenizeUrl(request.url))
|
|
90
|
+
return "wix_payments_url_refused";
|
|
91
|
+
const headers = record(request.headers) ? request.headers : {};
|
|
92
|
+
const contentType = headerValue(headers, "content-type");
|
|
93
|
+
const authorization = headerValue(headers, "authorization");
|
|
94
|
+
if (contentType === null || !JSON_TYPE.test(contentType.trim()) || authorization === null || !INSTANCE.test(authorization)) {
|
|
95
|
+
return "wix_payments_headers_refused";
|
|
96
|
+
}
|
|
97
|
+
const verdict = wixPaymentsBodyVerdict(request.body);
|
|
98
|
+
return verdict.verdict === "card" ? null : verdict.code;
|
|
99
|
+
}
|
|
100
|
+
function isPreparedWixPaymentsRequest(url, method, body, environment, headers) {
|
|
101
|
+
return environment === "production" && wixPaymentsRequestRefusal({ url, method, headers, body }) === null;
|
|
102
|
+
}
|
|
103
|
+
var pin = (fields) => Object.freeze({ ...fields, origins: Object.freeze([...fields.origins]) });
|
|
104
|
+
var WIX_PAYMENTS_MERCHANT_PINS = /* @__PURE__ */ Object.freeze([
|
|
105
|
+
pin({ id: "parahouse_magazine", merchant: "ParaHouse Magazine", origins: ["https://www.parahousemagazine.com"] }),
|
|
106
|
+
pin({ id: "psalms_and_potions", merchant: "Psalms & Potions", origins: ["https://www.psalmsandpotions.com"] }),
|
|
107
|
+
pin({ id: "alexandra_hagel", merchant: "Alexandra Hagel, LLC", origins: ["https://www.alexandrahagel.com"] })
|
|
108
|
+
]);
|
|
109
|
+
function wixPaymentsMerchantPin(merchantOrigin, pins = WIX_PAYMENTS_MERCHANT_PINS) {
|
|
110
|
+
if (typeof merchantOrigin !== "string" || !Array.isArray(pins))
|
|
111
|
+
return null;
|
|
112
|
+
return pins.find((entry) => !!entry && Array.isArray(entry.origins) && entry.origins.includes(merchantOrigin)) ?? null;
|
|
113
|
+
}
|
|
114
|
+
function wixPaymentsMerchantRefusal(environment, merchantOrigin, pins = WIX_PAYMENTS_MERCHANT_PINS) {
|
|
115
|
+
if (environment !== "production")
|
|
116
|
+
return "unsupported_environment";
|
|
117
|
+
return wixPaymentsMerchantPin(merchantOrigin, pins) ? null : "wix_payments_merchant_unreviewed";
|
|
118
|
+
}
|
|
119
|
+
var REFUSAL_MESSAGES = /* @__PURE__ */ Object.freeze({
|
|
120
|
+
wix_payments_url_refused: "Refusing to pay: this Wix card request does not go to Wix's card tokenizer exactly as Wix's card form sends it. Nothing was sent.",
|
|
121
|
+
wix_payments_headers_refused: "Refusing to pay: this Wix card request does not carry the checkout's own headers. Nothing was sent.",
|
|
122
|
+
wix_payments_body_unsupported: "Refusing to pay: this is not the card request of Wix's card form. Nothing was sent."
|
|
123
|
+
});
|
|
124
|
+
function wixPaymentsRefusalMessage(code) {
|
|
125
|
+
return Object.prototype.hasOwnProperty.call(REFUSAL_MESSAGES, code) ? REFUSAL_MESSAGES[code] : REFUSAL_MESSAGES.wix_payments_body_unsupported;
|
|
126
|
+
}
|
|
127
|
+
var WHERE = /* @__PURE__ */ Object.freeze(["cvv", "creditCard.number", "creditCard.expiration.month", "creditCard.expiration.year"]);
|
|
128
|
+
var fullYear = (year) => Number.isInteger(year) && year >= 0 && year <= 99 ? FIRST_YEAR + year : year;
|
|
129
|
+
function frameCard(card) {
|
|
130
|
+
if (!card)
|
|
131
|
+
return null;
|
|
132
|
+
const number = String(card.number);
|
|
133
|
+
const cvv = String(card.cvc);
|
|
134
|
+
const month = Number(card.month);
|
|
135
|
+
const year = fullYear(Number(card.year));
|
|
136
|
+
if (!CARD_NUMBER.test(number) || !SECURITY_CODE.test(cvv) || !Number.isInteger(month) || month < 1 || month > 12 || !Number.isInteger(year) || year < FIRST_YEAR || year > LAST_YEAR)
|
|
137
|
+
return null;
|
|
138
|
+
return { number, cvv, month, year };
|
|
139
|
+
}
|
|
140
|
+
function written(body, values) {
|
|
141
|
+
const value = JSON.parse(body);
|
|
142
|
+
value.cvv = values.cvv;
|
|
143
|
+
value.creditCard.number = values.number;
|
|
144
|
+
value.creditCard.expiration.month = values.month;
|
|
145
|
+
value.creditCard.expiration.year = values.year;
|
|
146
|
+
return JSON.stringify(value);
|
|
147
|
+
}
|
|
148
|
+
function injectWixPaymentsCard(body, card) {
|
|
149
|
+
const verdict = wixPaymentsBodyVerdict(body);
|
|
150
|
+
if (verdict.verdict !== "card")
|
|
151
|
+
throw new Error(wixPaymentsRefusalMessage(verdict.code));
|
|
152
|
+
const values = frameCard(card);
|
|
153
|
+
if (!values)
|
|
154
|
+
throw new Error("Could not fill the card fields for Wix. Nothing was sent.");
|
|
155
|
+
return { body: written(body, values), where: [...WHERE] };
|
|
156
|
+
}
|
|
157
|
+
function isWixPaymentsDeviceRequest(templateBody, deviceBody) {
|
|
158
|
+
if (wixPaymentsBodyVerdict(templateBody).verdict !== "card" || wixPaymentsBodyVerdict(deviceBody).verdict !== "card")
|
|
159
|
+
return false;
|
|
160
|
+
const device = JSON.parse(deviceBody);
|
|
161
|
+
const values = { cvv: device.cvv, number: device.creditCard.number, month: device.creditCard.expiration.month, year: device.creditCard.expiration.year };
|
|
162
|
+
return written(templateBody, values) === deviceBody && values.number !== JSON.parse(templateBody).creditCard.number;
|
|
163
|
+
}
|
|
164
|
+
var ANSWER_LIMIT = 65536;
|
|
165
|
+
var TOKEN = /^[A-Za-z0-9_-]{8,128}$/;
|
|
166
|
+
var LONG_DIGIT_RUN = /[0-9]{13,}/;
|
|
167
|
+
var REFUSAL_CODE = /^[A-Za-z0-9_.:-]{1,64}$/;
|
|
168
|
+
var MAX_CODE_DIGITS = 11;
|
|
169
|
+
function readAnswer(text) {
|
|
170
|
+
if (typeof text !== "string" || text === "" || text.length > ANSWER_LIMIT)
|
|
171
|
+
return null;
|
|
172
|
+
try {
|
|
173
|
+
const value = JSON.parse(text);
|
|
174
|
+
return record(value) ? value : null;
|
|
175
|
+
}
|
|
176
|
+
catch {
|
|
177
|
+
return null;
|
|
178
|
+
}
|
|
179
|
+
}
|
|
180
|
+
var tokenValue = (value) => typeof value === "string" && TOKEN.test(value) && !LONG_DIGIT_RUN.test(value);
|
|
181
|
+
var boundedCode = (value) => typeof value === "string" && REFUSAL_CODE.test(value) && (value.match(/[0-9]/g) ?? []).length <= MAX_CODE_DIGITS ? value : null;
|
|
182
|
+
function wixPaymentsRefusalCode(text) {
|
|
183
|
+
const answer = readAnswer(text);
|
|
184
|
+
const details = answer && record(answer.details) ? answer.details : null;
|
|
185
|
+
const application = details && record(details.applicationError) ? details.applicationError : null;
|
|
186
|
+
return application ? boundedCode(application.code) : null;
|
|
187
|
+
}
|
|
188
|
+
function tokenAnswer(answer) {
|
|
189
|
+
const token = answer && record(answer.token) ? answer.token : null;
|
|
190
|
+
if (!token || !tokenValue(token.token))
|
|
191
|
+
return null;
|
|
192
|
+
const out = { token: token.token };
|
|
193
|
+
if (token.securityCodeToken !== void 0 && token.securityCodeToken !== null) {
|
|
194
|
+
if (!tokenValue(token.securityCodeToken))
|
|
195
|
+
return null;
|
|
196
|
+
out.securityCodeToken = token.securityCodeToken;
|
|
197
|
+
}
|
|
198
|
+
if (token.creditCard !== void 0 && token.creditCard !== null) {
|
|
199
|
+
if (!record(token.creditCard))
|
|
200
|
+
return null;
|
|
201
|
+
const card = {};
|
|
202
|
+
const expiration = token.creditCard.expiration;
|
|
203
|
+
if (expiration !== void 0 && expiration !== null) {
|
|
204
|
+
if (!record(expiration) || !Number.isInteger(expiration.month) || expiration.month < 1 || expiration.month > 12 || !Number.isInteger(expiration.year) || expiration.year < FIRST_YEAR || expiration.year > LAST_YEAR)
|
|
205
|
+
return null;
|
|
206
|
+
card.expiration = { month: expiration.month, year: expiration.year };
|
|
207
|
+
}
|
|
208
|
+
const holder = token.creditCard.additionalInformation;
|
|
209
|
+
if (holder !== void 0 && holder !== null) {
|
|
210
|
+
if (!record(holder) || holder.holderName !== void 0 && !plainText(holder.holderName))
|
|
211
|
+
return null;
|
|
212
|
+
if (holder.holderName !== void 0)
|
|
213
|
+
card.additionalInformation = { holderName: holder.holderName };
|
|
214
|
+
}
|
|
215
|
+
out.creditCard = card;
|
|
216
|
+
}
|
|
217
|
+
return out;
|
|
218
|
+
}
|
|
219
|
+
function wixPaymentsAnswerOutcome(status, text, card) {
|
|
220
|
+
if (!Number.isInteger(status))
|
|
221
|
+
return { outcome: "unknown", reason: "wix_payments_unconfirmed" };
|
|
222
|
+
if (status >= 500)
|
|
223
|
+
return { outcome: "unknown", reason: "server_error" };
|
|
224
|
+
if (status >= 400 && status < 500)
|
|
225
|
+
return { outcome: "refused", code: wixPaymentsRefusalCode(text) ?? `http_${status}` };
|
|
226
|
+
if (status !== 200)
|
|
227
|
+
return { outcome: "unknown", reason: "wix_payments_unconfirmed" };
|
|
228
|
+
const token = tokenAnswer(readAnswer(text));
|
|
229
|
+
if (token === null)
|
|
230
|
+
return { outcome: "unknown", reason: "wix_payments_unsafe_response" };
|
|
231
|
+
const number = card ? String(card.number).replace(/[^0-9]/g, "") : "";
|
|
232
|
+
if (number && [token.token, token.securityCodeToken ?? ""].some((value) => value.replace(/[^0-9]/g, "").includes(number))) {
|
|
233
|
+
return { outcome: "unknown", reason: "wix_payments_unsafe_response" };
|
|
234
|
+
}
|
|
235
|
+
const expiration = token.creditCard && token.creditCard.expiration;
|
|
236
|
+
if (card && expiration && (expiration.month !== Number(card.month) || expiration.year !== fullYear(Number(card.year)))) {
|
|
237
|
+
return { outcome: "unknown", reason: "wix_payments_token_mismatch" };
|
|
238
|
+
}
|
|
239
|
+
return { outcome: "approved", body: JSON.stringify({ token }) };
|
|
240
|
+
}
|
|
241
|
+
export { WIX_PAYMENTS_CAPABILITY, WIX_PAYMENTS_HOST, WIX_PAYMENTS_MERCHANT_PINS, WIX_PAYMENTS_OPERATION, WIX_PAYMENTS_PSP, WIX_PAYMENTS_REFUSAL_CODES, WIX_PAYMENTS_TOKENIZE_URL, injectWixPaymentsCard, isPreparedWixPaymentsRequest, isWixPaymentsDeviceRequest, isWixPaymentsTokenizeUrl, wixPaymentsAnswerOutcome, wixPaymentsBodyVerdict, wixPaymentsMerchantPin, wixPaymentsMerchantRefusal, wixPaymentsRefusalCode, wixPaymentsRefusalMessage, wixPaymentsRequestRefusal };
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@agent-cards/sdk",
|
|
3
|
-
"version": "0.23.
|
|
3
|
+
"version": "0.23.15",
|
|
4
4
|
"description": "Agentcard's SDK: one client, Agentcard, with two modules. checkout pauses a browser purchase and pays it with the person's own card; voice connects a person to your product once and approves a purchase by voice inside it. Card data never enters your process.",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "dist/index.js",
|
|
@@ -24,11 +24,14 @@
|
|
|
24
24
|
"access": "public"
|
|
25
25
|
},
|
|
26
26
|
"scripts": {
|
|
27
|
-
"_comment_build": "The public SDK keeps zero runtime dependencies. Its build vendors deterministic metadata and substitution artifacts from the internal payment core,
|
|
28
|
-
"build": "node ../payment-core/scripts/build.mjs && node scripts/generate-payment-core.mjs && node scripts/generate-voice-stream.mjs && npx -y -p typescript@5.9.3 tsc && node scripts/generate-preflight-contract.mjs",
|
|
27
|
+
"_comment_build": "The public SDK keeps zero runtime dependencies. Its build vendors deterministic metadata and substitution artifacts from the internal payment core (src/*.generated.ts), the voice streaming door from packages/voice/src/core (the phone package, @agent-cards/voice, ships it to phones), and the Kernel kit's inventory from the built catalog; git ignores every file it writes. TypeScript remains pinned.",
|
|
28
|
+
"build": "node ../payment-core/scripts/build.mjs && node scripts/generate-payment-core.mjs && node scripts/generate-voice-stream.mjs && npx -y -p typescript@5.9.3 tsc && node scripts/generate-preflight-contract.mjs && node scripts/generate-kernel-native-inventory.mjs",
|
|
29
29
|
"prepublishOnly": "pnpm build",
|
|
30
|
-
"
|
|
31
|
-
"
|
|
30
|
+
"_comment_test": "check:built runs first and names the command when a file the build generates (the copies in src/, the preflight contracts in dist/, the Kernel inventory) is missing or stale; verify:pack runs last, on the same dist.",
|
|
31
|
+
"check:built": "node scripts/generate-payment-core.mjs --check && node scripts/generate-voice-stream.mjs --check && node scripts/generate-preflight-contract.mjs --check && node scripts/generate-kernel-native-inventory.mjs --check",
|
|
32
|
+
"verify:pack": "node scripts/verify-pack.mjs",
|
|
33
|
+
"test": "npm run check:built && node test.mjs && node --test lifecycle.test.mjs merchant-abort.test.mjs preparation.test.mjs braintree.test.mjs pre-claim.test.mjs ekashu.test.mjs redsys.test.mjs paypal-hosted-fields.test.mjs paypal-card-forms.test.mjs cybersource-secure-acceptance.test.mjs ebanx.test.mjs autopilot.test.mjs stripe-checkout.test.mjs stripe-setup.test.mjs stripe-legacy-checkout.test.mjs payment-core.test.mjs prepared-processor.test.mjs merchant-hosted.test.mjs merchant-total.test.mjs sandbox-declaration.test.mjs minimum-delay.test.mjs paysafe.test.mjs wix-payments.test.mjs payu.test.mjs attachment.test.mjs worker-targets.test.mjs mercado-checkout.test.mjs mercado-polling.test.mjs amadeus.test.mjs pelecard.test.mjs aci.test.mjs primer.test.mjs payrails.test.mjs elavon-converge.test.mjs voice.test.mjs agentcard.test.mjs buy.test.mjs readme.test.mjs gmo.test.mjs cybersource-flex.test.mjs juspay-gate.test.mjs card-endpoint.test.mjs card-endpoint-fastspring.test.mjs card-endpoint-navigation.test.mjs merchant-session-probe.test.mjs datatrans.test.mjs authorize-net-dpm.test.mjs creditguard.test.mjs eprotect.test.mjs wspay.test.mjs shiji-sts.test.mjs worldline-mycheckout.test.mjs verifone.test.mjs gravy.test.mjs paddle-vgs.test.mjs paddle-tokenex.test.mjs lyra.test.mjs redact-url.test.mjs && node --test preflight-package.test.mjs preflight-collector.test.mjs && node --test kernel-native-qualification.test.mjs && node --test ../vault/scripts/recurly-validation/watch-duty-sdk-result.test.mjs && node scripts/verify-pack.mjs",
|
|
34
|
+
"test:browser": "node browser.test.mjs && node stripe-browser.test.mjs && node preparation-browser.test.mjs && node checkout-com-browser.test.mjs && node paysafe-preparation-browser.test.mjs && node owned-shop-browser.test.mjs && node spreedly-browser.test.mjs && node worker-browser.test.mjs && node amadeus-browser.test.mjs && node adyen-merchant-hosted-browser.test.mjs && node adyen-merchant-frames-browser.test.mjs && node fiserv-browser.test.mjs && node gmo-browser.test.mjs && node cybersource-flex-browser.test.mjs && node juspay-browser.test.mjs && node card-endpoint-browser.test.mjs && node datatrans-browser.test.mjs && node authorize-net-dpm-browser.test.mjs && node pelecard-browser.test.mjs && node aci-browser.test.mjs && node creditguard-browser.test.mjs && node primer-browser.test.mjs && node payrails-browser.test.mjs && node elavon-converge-browser.test.mjs && node eprotect-browser.test.mjs && node wspay-browser.test.mjs && node shiji-sts-browser.test.mjs && node worldline-mycheckout-browser.test.mjs && node paypal-hosted-fields-browser.test.mjs && node paypal-card-forms-browser.test.mjs && node cybersource-secure-acceptance-browser.test.mjs && node gravy-browser.test.mjs && node ebanx-browser.test.mjs",
|
|
32
35
|
"check:payment-core": "node scripts/generate-payment-core.mjs --check",
|
|
33
36
|
"check:voice-stream": "node scripts/generate-voice-stream.mjs --check",
|
|
34
37
|
"test:preflight": "node --test preflight-package.test.mjs preflight-collector.test.mjs kernel-native-qualification.test.mjs",
|