@conto_finance/sdk 0.1.0 → 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 +455 -4
- package/dist/browserbase.d.mts +139 -0
- package/dist/browserbase.d.ts +139 -0
- package/dist/browserbase.js +1980 -0
- package/dist/browserbase.mjs +604 -0
- package/dist/checkout-verifier.d.mts +95 -0
- package/dist/checkout-verifier.d.ts +95 -0
- package/dist/checkout-verifier.js +400 -0
- package/dist/checkout-verifier.mjs +372 -0
- package/dist/chunk-B7F5QLE5.mjs +34 -0
- package/dist/chunk-HM4EG5MH.mjs +1256 -0
- package/dist/chunk-O5RAAB2U.mjs +123 -0
- package/dist/index.d.mts +1775 -143
- package/dist/index.d.ts +1775 -143
- package/dist/index.js +1467 -160
- package/dist/index.mjs +1348 -188
- package/dist/playwright.d.mts +255 -0
- package/dist/playwright.d.ts +255 -0
- package/dist/playwright.js +1394 -0
- package/dist/playwright.mjs +22 -0
- package/package.json +37 -9
|
@@ -0,0 +1,372 @@
|
|
|
1
|
+
import "./chunk-B7F5QLE5.mjs";
|
|
2
|
+
|
|
3
|
+
// src/checkout-verifier.ts
|
|
4
|
+
import { createHash, randomUUID } from "crypto";
|
|
5
|
+
var CHECKOUT_CAPABILITY_MANIFEST_VERSION = "conto.checkout-capabilities.v1";
|
|
6
|
+
var CHECKOUT_VERIFICATION_REPORT_VERSION = "conto.checkout-verification.v1";
|
|
7
|
+
var CHECKOUT_METHOD_IDS = ["LINK", "CARD", "SHOP_PAY", "PAYPAL"];
|
|
8
|
+
var CHECKOUT_CAPABILITY_KINDS = [
|
|
9
|
+
"GUARDED_CHECKOUT",
|
|
10
|
+
"NAVIGATION",
|
|
11
|
+
"INSPECTION",
|
|
12
|
+
"CLICK",
|
|
13
|
+
"FORM_SUBMIT",
|
|
14
|
+
"KEYBOARD_INPUT",
|
|
15
|
+
"SCRIPT_EVALUATION",
|
|
16
|
+
"CREDENTIAL_ACCESS",
|
|
17
|
+
"PROVIDER_CONTROL",
|
|
18
|
+
"ALTERNATE_PAYMENT"
|
|
19
|
+
];
|
|
20
|
+
var CHECKOUT_CONFORMANCE_PROBE_IDS = [
|
|
21
|
+
"DENIAL_NO_MUTATION",
|
|
22
|
+
"APPROVAL_SINGLE_USE",
|
|
23
|
+
"AMOUNT_TAMPER_FAILS_CLOSED",
|
|
24
|
+
"CART_TAMPER_FAILS_CLOSED",
|
|
25
|
+
"MERCHANT_TAMPER_FAILS_CLOSED",
|
|
26
|
+
"SESSION_TAMPER_FAILS_CLOSED",
|
|
27
|
+
"TAB_TAMPER_FAILS_CLOSED",
|
|
28
|
+
"TARGET_TAMPER_FAILS_CLOSED",
|
|
29
|
+
"ALTERNATE_PAYMENT_PATHS_BLOCKED",
|
|
30
|
+
"AMBIGUOUS_DISPATCH_NO_RETRY"
|
|
31
|
+
];
|
|
32
|
+
var COMPONENT_ID = /^[a-z0-9][a-z0-9._-]{0,127}$/;
|
|
33
|
+
var COMPONENT_VERSION = /^[A-Za-z0-9][A-Za-z0-9.+_-]{0,63}$/;
|
|
34
|
+
var CAPABILITY_ID = /^[A-Za-z0-9][A-Za-z0-9._:-]{0,127}$/;
|
|
35
|
+
var CHALLENGE_ID = /^[A-Za-z0-9][A-Za-z0-9_-]{15,127}$/;
|
|
36
|
+
var EXPOSURES = /* @__PURE__ */ new Set([
|
|
37
|
+
"AGENT",
|
|
38
|
+
"PRIVILEGED_RUNTIME",
|
|
39
|
+
"AUTHENTICATED_OPERATOR"
|
|
40
|
+
]);
|
|
41
|
+
var PAYMENT_BOUNDARIES = /* @__PURE__ */ new Set([
|
|
42
|
+
"NOT_PAYMENT_CAPABLE",
|
|
43
|
+
"CONTO_GUARDED",
|
|
44
|
+
"UNRESTRICTED"
|
|
45
|
+
]);
|
|
46
|
+
var SESSION_BINDINGS = /* @__PURE__ */ new Set([
|
|
47
|
+
"CONTO_RUNTIME",
|
|
48
|
+
"PROOF_CARRYING_HANDOFF",
|
|
49
|
+
"CALLER_ASSERTED"
|
|
50
|
+
]);
|
|
51
|
+
var INVENTORY_SCOPES = /* @__PURE__ */ new Set([
|
|
52
|
+
"COMPLETE_AGENT_CAPABILITY_SET",
|
|
53
|
+
"DECLARED_SUBSET"
|
|
54
|
+
]);
|
|
55
|
+
var METHOD_IDS = new Set(CHECKOUT_METHOD_IDS);
|
|
56
|
+
var CAPABILITY_KINDS = new Set(CHECKOUT_CAPABILITY_KINDS);
|
|
57
|
+
var PROBE_OUTCOMES = /* @__PURE__ */ new Set([
|
|
58
|
+
"DENIED_NO_MUTATION",
|
|
59
|
+
"ONE_DISPATCH_REPLAY_BLOCKED",
|
|
60
|
+
"REJECTED_NO_MUTATION",
|
|
61
|
+
"INDETERMINATE_NO_RETRY"
|
|
62
|
+
]);
|
|
63
|
+
var PAYMENT_SENSITIVE_KINDS = /* @__PURE__ */ new Set([
|
|
64
|
+
"GUARDED_CHECKOUT",
|
|
65
|
+
"CLICK",
|
|
66
|
+
"FORM_SUBMIT",
|
|
67
|
+
"KEYBOARD_INPUT",
|
|
68
|
+
"SCRIPT_EVALUATION",
|
|
69
|
+
"CREDENTIAL_ACCESS",
|
|
70
|
+
"PROVIDER_CONTROL",
|
|
71
|
+
"ALTERNATE_PAYMENT"
|
|
72
|
+
]);
|
|
73
|
+
var EXPECTED_PROBE_OUTCOMES = {
|
|
74
|
+
DENIAL_NO_MUTATION: "DENIED_NO_MUTATION",
|
|
75
|
+
APPROVAL_SINGLE_USE: "ONE_DISPATCH_REPLAY_BLOCKED",
|
|
76
|
+
AMOUNT_TAMPER_FAILS_CLOSED: "REJECTED_NO_MUTATION",
|
|
77
|
+
CART_TAMPER_FAILS_CLOSED: "REJECTED_NO_MUTATION",
|
|
78
|
+
MERCHANT_TAMPER_FAILS_CLOSED: "REJECTED_NO_MUTATION",
|
|
79
|
+
SESSION_TAMPER_FAILS_CLOSED: "REJECTED_NO_MUTATION",
|
|
80
|
+
TAB_TAMPER_FAILS_CLOSED: "REJECTED_NO_MUTATION",
|
|
81
|
+
TARGET_TAMPER_FAILS_CLOSED: "REJECTED_NO_MUTATION",
|
|
82
|
+
ALTERNATE_PAYMENT_PATHS_BLOCKED: "REJECTED_NO_MUTATION",
|
|
83
|
+
AMBIGUOUS_DISPATCH_NO_RETRY: "INDETERMINATE_NO_RETRY"
|
|
84
|
+
};
|
|
85
|
+
function isRecord(value) {
|
|
86
|
+
return !!value && typeof value === "object" && !Array.isArray(value);
|
|
87
|
+
}
|
|
88
|
+
function hasExactKeys(value, keys) {
|
|
89
|
+
const actual = Object.keys(value).sort();
|
|
90
|
+
const expected = [...keys].sort();
|
|
91
|
+
return actual.length === expected.length && actual.every((key, index) => key === expected[index]);
|
|
92
|
+
}
|
|
93
|
+
function component(value) {
|
|
94
|
+
if (!isRecord(value) || !hasExactKeys(value, ["id", "version"])) return false;
|
|
95
|
+
return typeof value.id === "string" && COMPONENT_ID.test(value.id) && typeof value.version === "string" && COMPONENT_VERSION.test(value.version);
|
|
96
|
+
}
|
|
97
|
+
function capability(value) {
|
|
98
|
+
if (!isRecord(value) || !hasExactKeys(value, ["id", "kind", "exposure", "paymentBoundary"])) {
|
|
99
|
+
return false;
|
|
100
|
+
}
|
|
101
|
+
return typeof value.id === "string" && CAPABILITY_ID.test(value.id) && typeof value.kind === "string" && CAPABILITY_KINDS.has(value.kind) && typeof value.exposure === "string" && EXPOSURES.has(value.exposure) && typeof value.paymentBoundary === "string" && PAYMENT_BOUNDARIES.has(value.paymentBoundary);
|
|
102
|
+
}
|
|
103
|
+
function manifest(value) {
|
|
104
|
+
if (!isRecord(value) || !hasExactKeys(value, [
|
|
105
|
+
"schemaVersion",
|
|
106
|
+
"agentHost",
|
|
107
|
+
"browserProvider",
|
|
108
|
+
"adapter",
|
|
109
|
+
"checkoutMethods",
|
|
110
|
+
"sessionBinding",
|
|
111
|
+
"inventoryScope",
|
|
112
|
+
"capabilities"
|
|
113
|
+
]) || value.schemaVersion !== CHECKOUT_CAPABILITY_MANIFEST_VERSION || !component(value.agentHost) || !component(value.browserProvider) || !component(value.adapter) || !Array.isArray(value.checkoutMethods) || value.checkoutMethods.length === 0 || value.checkoutMethods.length > CHECKOUT_METHOD_IDS.length || !value.checkoutMethods.every(
|
|
114
|
+
(method) => typeof method === "string" && METHOD_IDS.has(method)
|
|
115
|
+
) || new Set(value.checkoutMethods).size !== value.checkoutMethods.length || typeof value.sessionBinding !== "string" || !SESSION_BINDINGS.has(value.sessionBinding) || typeof value.inventoryScope !== "string" || !INVENTORY_SCOPES.has(value.inventoryScope) || !Array.isArray(value.capabilities) || value.capabilities.length === 0 || value.capabilities.length > 100 || !value.capabilities.every(capability)) {
|
|
116
|
+
return false;
|
|
117
|
+
}
|
|
118
|
+
return new Set(value.capabilities.map(({ id }) => id)).size === value.capabilities.length;
|
|
119
|
+
}
|
|
120
|
+
function fingerprint(value) {
|
|
121
|
+
const canonical = {
|
|
122
|
+
schemaVersion: value.schemaVersion,
|
|
123
|
+
agentHost: { id: value.agentHost.id, version: value.agentHost.version },
|
|
124
|
+
browserProvider: { id: value.browserProvider.id, version: value.browserProvider.version },
|
|
125
|
+
adapter: { id: value.adapter.id, version: value.adapter.version },
|
|
126
|
+
checkoutMethods: [...value.checkoutMethods].sort(),
|
|
127
|
+
sessionBinding: value.sessionBinding,
|
|
128
|
+
inventoryScope: value.inventoryScope,
|
|
129
|
+
capabilities: value.capabilities.map(({ id, kind, exposure, paymentBoundary }) => ({
|
|
130
|
+
id,
|
|
131
|
+
kind,
|
|
132
|
+
exposure,
|
|
133
|
+
paymentBoundary
|
|
134
|
+
})).sort((left, right) => left.id < right.id ? -1 : left.id > right.id ? 1 : 0)
|
|
135
|
+
};
|
|
136
|
+
return `sha256:${createHash("sha256").update(JSON.stringify(canonical)).digest("hex")}`;
|
|
137
|
+
}
|
|
138
|
+
function emptyProbeResults(status) {
|
|
139
|
+
return CHECKOUT_CONFORMANCE_PROBE_IDS.map((probeId) => ({
|
|
140
|
+
probeId,
|
|
141
|
+
status,
|
|
142
|
+
expectedOutcome: EXPECTED_PROBE_OUTCOMES[probeId]
|
|
143
|
+
}));
|
|
144
|
+
}
|
|
145
|
+
function report(input) {
|
|
146
|
+
return Object.freeze({
|
|
147
|
+
schemaVersion: CHECKOUT_VERIFICATION_REPORT_VERSION,
|
|
148
|
+
status: input.status,
|
|
149
|
+
canBypass: input.status !== "ENFORCEABLE",
|
|
150
|
+
...input.manifestFingerprint ? { manifestFingerprint: input.manifestFingerprint } : {},
|
|
151
|
+
verifiedAt: input.verifiedAt,
|
|
152
|
+
inventory: Object.freeze({
|
|
153
|
+
...input.inventory,
|
|
154
|
+
bypassCapabilityIds: Object.freeze([...input.inventory.bypassCapabilityIds])
|
|
155
|
+
}),
|
|
156
|
+
findings: Object.freeze(input.findings.map((finding) => Object.freeze({ ...finding }))),
|
|
157
|
+
probes: Object.freeze(input.probes.map((probe) => Object.freeze({ ...probe })))
|
|
158
|
+
});
|
|
159
|
+
}
|
|
160
|
+
function probeObservation(value, request) {
|
|
161
|
+
if (!isRecord(value) || !hasExactKeys(value, ["probeId", "challengeId", "outcome"])) return false;
|
|
162
|
+
return value.probeId === request.probeId && value.challengeId === request.challengeId && typeof value.outcome === "string" && PROBE_OUTCOMES.has(value.outcome);
|
|
163
|
+
}
|
|
164
|
+
async function verifyCheckoutIntegration(value, options = {}) {
|
|
165
|
+
const now = options.now ?? (() => /* @__PURE__ */ new Date());
|
|
166
|
+
let verifiedAtDate;
|
|
167
|
+
try {
|
|
168
|
+
verifiedAtDate = now();
|
|
169
|
+
} catch {
|
|
170
|
+
verifiedAtDate = null;
|
|
171
|
+
}
|
|
172
|
+
const validVerifiedAt = verifiedAtDate instanceof Date && Number.isFinite(verifiedAtDate.getTime());
|
|
173
|
+
const verifiedAt = validVerifiedAt ? verifiedAtDate.toISOString() : (/* @__PURE__ */ new Date(0)).toISOString();
|
|
174
|
+
const emptyInventory = {
|
|
175
|
+
totalCapabilities: 0,
|
|
176
|
+
agentExposedCapabilities: 0,
|
|
177
|
+
paymentSensitiveCapabilities: 0,
|
|
178
|
+
bypassCapabilityIds: []
|
|
179
|
+
};
|
|
180
|
+
if (!validVerifiedAt || !manifest(value)) {
|
|
181
|
+
return report({
|
|
182
|
+
status: "MISCONFIGURED",
|
|
183
|
+
verifiedAt,
|
|
184
|
+
inventory: emptyInventory,
|
|
185
|
+
findings: [
|
|
186
|
+
{
|
|
187
|
+
code: "MANIFEST_INVALID",
|
|
188
|
+
severity: "BLOCKER",
|
|
189
|
+
message: "The checkout capability manifest is invalid."
|
|
190
|
+
}
|
|
191
|
+
],
|
|
192
|
+
probes: emptyProbeResults("NOT_RUN")
|
|
193
|
+
});
|
|
194
|
+
}
|
|
195
|
+
const manifestFingerprint = fingerprint(value);
|
|
196
|
+
const agentCapabilities = value.capabilities.filter(({ exposure }) => exposure === "AGENT");
|
|
197
|
+
const paymentSensitiveCapabilities = value.capabilities.filter(
|
|
198
|
+
({ kind, paymentBoundary }) => paymentBoundary === "UNRESTRICTED" || PAYMENT_SENSITIVE_KINDS.has(kind)
|
|
199
|
+
);
|
|
200
|
+
const bypassCapabilities = agentCapabilities.filter(
|
|
201
|
+
({ paymentBoundary }) => paymentBoundary === "UNRESTRICTED"
|
|
202
|
+
);
|
|
203
|
+
const inventory = {
|
|
204
|
+
totalCapabilities: value.capabilities.length,
|
|
205
|
+
agentExposedCapabilities: agentCapabilities.length,
|
|
206
|
+
paymentSensitiveCapabilities: paymentSensitiveCapabilities.length,
|
|
207
|
+
bypassCapabilityIds: bypassCapabilities.map(({ id }) => id).sort()
|
|
208
|
+
};
|
|
209
|
+
const findings = [];
|
|
210
|
+
const guardedCheckoutPresent = agentCapabilities.some(
|
|
211
|
+
({ kind, paymentBoundary }) => kind === "GUARDED_CHECKOUT" && paymentBoundary === "CONTO_GUARDED"
|
|
212
|
+
);
|
|
213
|
+
if (!guardedCheckoutPresent) {
|
|
214
|
+
findings.push({
|
|
215
|
+
code: "GUARDED_CHECKOUT_MISSING",
|
|
216
|
+
severity: "BLOCKER",
|
|
217
|
+
message: "No agent-facing checkout capability is bound to the Conto guarded runtime."
|
|
218
|
+
});
|
|
219
|
+
}
|
|
220
|
+
if (value.inventoryScope === "DECLARED_SUBSET") {
|
|
221
|
+
findings.push({
|
|
222
|
+
code: "CAPABILITY_INVENTORY_INCOMPLETE",
|
|
223
|
+
severity: "BLOCKER",
|
|
224
|
+
message: "The manifest does not cover every capability exposed to the agent."
|
|
225
|
+
});
|
|
226
|
+
}
|
|
227
|
+
if (value.sessionBinding === "CALLER_ASSERTED") {
|
|
228
|
+
findings.push({
|
|
229
|
+
code: "SESSION_BINDING_NOT_PROVEN",
|
|
230
|
+
severity: "BLOCKER",
|
|
231
|
+
message: "Browser-session ownership is caller asserted rather than runtime owned or proven."
|
|
232
|
+
});
|
|
233
|
+
}
|
|
234
|
+
for (const bypass of bypassCapabilities) {
|
|
235
|
+
findings.push({
|
|
236
|
+
code: "AGENT_PAYMENT_BYPASS",
|
|
237
|
+
severity: "BLOCKER",
|
|
238
|
+
capabilityId: bypass.id,
|
|
239
|
+
message: "An agent-exposed capability can trigger payment outside the Conto guard."
|
|
240
|
+
});
|
|
241
|
+
}
|
|
242
|
+
if (findings.length > 0) {
|
|
243
|
+
const advisory = guardedCheckoutPresent && findings.every(
|
|
244
|
+
({ code }) => [
|
|
245
|
+
"CAPABILITY_INVENTORY_INCOMPLETE",
|
|
246
|
+
"SESSION_BINDING_NOT_PROVEN",
|
|
247
|
+
"AGENT_PAYMENT_BYPASS"
|
|
248
|
+
].includes(code)
|
|
249
|
+
);
|
|
250
|
+
return report({
|
|
251
|
+
status: advisory ? "ADVISORY" : "MISCONFIGURED",
|
|
252
|
+
manifestFingerprint,
|
|
253
|
+
verifiedAt,
|
|
254
|
+
inventory,
|
|
255
|
+
findings,
|
|
256
|
+
probes: emptyProbeResults("NOT_RUN")
|
|
257
|
+
});
|
|
258
|
+
}
|
|
259
|
+
if (!options.runProbe) {
|
|
260
|
+
return report({
|
|
261
|
+
status: "UNVERIFIED",
|
|
262
|
+
manifestFingerprint,
|
|
263
|
+
verifiedAt,
|
|
264
|
+
inventory,
|
|
265
|
+
findings: [
|
|
266
|
+
{
|
|
267
|
+
code: "CONFORMANCE_PROBES_NOT_RUN",
|
|
268
|
+
severity: "WARNING",
|
|
269
|
+
message: "Static isolation passed, but active checkout conformance probes were not run."
|
|
270
|
+
}
|
|
271
|
+
],
|
|
272
|
+
probes: emptyProbeResults("NOT_RUN")
|
|
273
|
+
});
|
|
274
|
+
}
|
|
275
|
+
const makeChallengeId = options.challengeId ?? randomUUID;
|
|
276
|
+
const usedChallenges = /* @__PURE__ */ new Set();
|
|
277
|
+
const probes = [];
|
|
278
|
+
for (const probeId of CHECKOUT_CONFORMANCE_PROBE_IDS) {
|
|
279
|
+
const expectedOutcome = EXPECTED_PROBE_OUTCOMES[probeId];
|
|
280
|
+
let challengeId;
|
|
281
|
+
try {
|
|
282
|
+
challengeId = makeChallengeId();
|
|
283
|
+
} catch {
|
|
284
|
+
challengeId = null;
|
|
285
|
+
}
|
|
286
|
+
if (typeof challengeId !== "string" || !CHALLENGE_ID.test(challengeId) || usedChallenges.has(challengeId)) {
|
|
287
|
+
probes.push({
|
|
288
|
+
probeId,
|
|
289
|
+
status: "FAILED",
|
|
290
|
+
expectedOutcome,
|
|
291
|
+
observedOutcome: "INVALID_RESULT"
|
|
292
|
+
});
|
|
293
|
+
findings.push({
|
|
294
|
+
code: "CONFORMANCE_PROBE_FAILED",
|
|
295
|
+
severity: "BLOCKER",
|
|
296
|
+
probeId,
|
|
297
|
+
message: "The checkout conformance probe did not return a valid fresh result."
|
|
298
|
+
});
|
|
299
|
+
continue;
|
|
300
|
+
}
|
|
301
|
+
usedChallenges.add(challengeId);
|
|
302
|
+
const request = Object.freeze({ probeId, challengeId, manifestFingerprint });
|
|
303
|
+
try {
|
|
304
|
+
const observation = await options.runProbe(request);
|
|
305
|
+
if (!probeObservation(observation, request)) {
|
|
306
|
+
probes.push({
|
|
307
|
+
probeId,
|
|
308
|
+
status: "FAILED",
|
|
309
|
+
expectedOutcome,
|
|
310
|
+
observedOutcome: "INVALID_RESULT"
|
|
311
|
+
});
|
|
312
|
+
findings.push({
|
|
313
|
+
code: "CONFORMANCE_PROBE_FAILED",
|
|
314
|
+
severity: "BLOCKER",
|
|
315
|
+
probeId,
|
|
316
|
+
message: "The checkout conformance probe returned an invalid or failing result."
|
|
317
|
+
});
|
|
318
|
+
continue;
|
|
319
|
+
}
|
|
320
|
+
if (observation.outcome !== expectedOutcome) {
|
|
321
|
+
probes.push({
|
|
322
|
+
probeId,
|
|
323
|
+
status: "FAILED",
|
|
324
|
+
expectedOutcome,
|
|
325
|
+
observedOutcome: observation.outcome
|
|
326
|
+
});
|
|
327
|
+
findings.push({
|
|
328
|
+
code: "CONFORMANCE_PROBE_FAILED",
|
|
329
|
+
severity: "BLOCKER",
|
|
330
|
+
probeId,
|
|
331
|
+
message: "The checkout conformance probe observed a failing outcome."
|
|
332
|
+
});
|
|
333
|
+
continue;
|
|
334
|
+
}
|
|
335
|
+
probes.push({
|
|
336
|
+
probeId,
|
|
337
|
+
status: "PASSED",
|
|
338
|
+
expectedOutcome,
|
|
339
|
+
observedOutcome: observation.outcome
|
|
340
|
+
});
|
|
341
|
+
} catch {
|
|
342
|
+
probes.push({
|
|
343
|
+
probeId,
|
|
344
|
+
status: "FAILED",
|
|
345
|
+
expectedOutcome,
|
|
346
|
+
observedOutcome: "RUNNER_ERROR"
|
|
347
|
+
});
|
|
348
|
+
findings.push({
|
|
349
|
+
code: "CONFORMANCE_PROBE_FAILED",
|
|
350
|
+
severity: "BLOCKER",
|
|
351
|
+
probeId,
|
|
352
|
+
message: "The checkout conformance probe runner failed."
|
|
353
|
+
});
|
|
354
|
+
}
|
|
355
|
+
}
|
|
356
|
+
return report({
|
|
357
|
+
status: findings.length === 0 ? "ENFORCEABLE" : "MISCONFIGURED",
|
|
358
|
+
manifestFingerprint,
|
|
359
|
+
verifiedAt,
|
|
360
|
+
inventory,
|
|
361
|
+
findings,
|
|
362
|
+
probes
|
|
363
|
+
});
|
|
364
|
+
}
|
|
365
|
+
export {
|
|
366
|
+
CHECKOUT_CAPABILITY_KINDS,
|
|
367
|
+
CHECKOUT_CAPABILITY_MANIFEST_VERSION,
|
|
368
|
+
CHECKOUT_CONFORMANCE_PROBE_IDS,
|
|
369
|
+
CHECKOUT_METHOD_IDS,
|
|
370
|
+
CHECKOUT_VERIFICATION_REPORT_VERSION,
|
|
371
|
+
verifyCheckoutIntegration
|
|
372
|
+
};
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
var __create = Object.create;
|
|
2
|
+
var __defProp = Object.defineProperty;
|
|
3
|
+
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
4
|
+
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
5
|
+
var __getProtoOf = Object.getPrototypeOf;
|
|
6
|
+
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
7
|
+
var __commonJS = (cb, mod) => function __require() {
|
|
8
|
+
try {
|
|
9
|
+
return mod || (0, cb[__getOwnPropNames(cb)[0]])((mod = { exports: {} }).exports, mod), mod.exports;
|
|
10
|
+
} catch (e) {
|
|
11
|
+
throw mod = 0, e;
|
|
12
|
+
}
|
|
13
|
+
};
|
|
14
|
+
var __copyProps = (to, from, except, desc) => {
|
|
15
|
+
if (from && typeof from === "object" || typeof from === "function") {
|
|
16
|
+
for (let key of __getOwnPropNames(from))
|
|
17
|
+
if (!__hasOwnProp.call(to, key) && key !== except)
|
|
18
|
+
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
|
|
19
|
+
}
|
|
20
|
+
return to;
|
|
21
|
+
};
|
|
22
|
+
var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
|
|
23
|
+
// If the importer is in node compatibility mode or this is not an ESM
|
|
24
|
+
// file that has been converted to a CommonJS file using a Babel-
|
|
25
|
+
// compatible transform (i.e. "__esModule" has not been set), then set
|
|
26
|
+
// "default" to the CommonJS "module.exports" for node compatibility.
|
|
27
|
+
isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target,
|
|
28
|
+
mod
|
|
29
|
+
));
|
|
30
|
+
|
|
31
|
+
export {
|
|
32
|
+
__commonJS,
|
|
33
|
+
__toESM
|
|
34
|
+
};
|