@ozura/elements 1.0.2 → 1.1.0-next.21
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/LICENSE +21 -21
- package/README.md +167 -21
- package/dist/frame/element-frame.js +92 -20
- package/dist/frame/element-frame.js.map +1 -1
- package/dist/frame/tokenizer-frame.html +1 -1
- package/dist/frame/tokenizer-frame.js +20 -4
- package/dist/frame/tokenizer-frame.js.map +1 -1
- package/dist/oz-elements.esm.js +226 -15
- package/dist/oz-elements.esm.js.map +1 -1
- package/dist/oz-elements.umd.js +226 -15
- package/dist/oz-elements.umd.js.map +1 -1
- package/dist/react/frame/elementFrame.d.ts +70 -1
- package/dist/react/frame/protocol.d.ts +12 -0
- package/dist/react/index.cjs.js +326 -123
- package/dist/react/index.cjs.js.map +1 -1
- package/dist/react/index.esm.js +327 -124
- package/dist/react/index.esm.js.map +1 -1
- package/dist/react/react/index.d.ts +28 -1
- package/dist/react/sdk/OzVault.d.ts +49 -0
- package/dist/react/types/index.d.ts +20 -0
- package/dist/server/frame/elementFrame.d.ts +70 -1
- package/dist/server/frame/protocol.d.ts +12 -0
- package/dist/server/index.cjs.js +2 -2
- package/dist/server/index.cjs.js.map +1 -1
- package/dist/server/index.esm.js +2 -2
- package/dist/server/index.esm.js.map +1 -1
- package/dist/server/sdk/OzVault.d.ts +49 -0
- package/dist/server/types/index.d.ts +20 -0
- package/dist/types/frame/elementFrame.d.ts +70 -1
- package/dist/types/frame/protocol.d.ts +12 -0
- package/dist/types/sdk/OzVault.d.ts +49 -0
- package/dist/types/types/index.d.ts +20 -0
- package/package.json +1 -1
|
@@ -18,6 +18,19 @@ var _OzTokenizerFrame = (function (exports) {
|
|
|
18
18
|
return typeof value === 'string' && OZ_ERROR_CODES.has(value);
|
|
19
19
|
}
|
|
20
20
|
|
|
21
|
+
/**
|
|
22
|
+
* Shared postMessage protocol constants.
|
|
23
|
+
*
|
|
24
|
+
* PROTOCOL_VERSION must be incremented any time a breaking change is made to
|
|
25
|
+
* the postMessage message shape (new required fields, renamed types, removed
|
|
26
|
+
* fields, changed semantics). The SDK reads this value from OZ_FRAME_READY
|
|
27
|
+
* messages and warns when the frame and SDK are out of sync.
|
|
28
|
+
*
|
|
29
|
+
* Non-breaking additions (new optional fields, new message types that old
|
|
30
|
+
* frames can safely ignore) do NOT require a version bump.
|
|
31
|
+
*/
|
|
32
|
+
const PROTOCOL_VERSION = 1;
|
|
33
|
+
|
|
21
34
|
/**
|
|
22
35
|
* tokenizerFrame.ts — runs inside a hidden <iframe> served from Ozura's domain.
|
|
23
36
|
*
|
|
@@ -25,12 +38,13 @@ var _OzTokenizerFrame = (function (exports) {
|
|
|
25
38
|
* assembles the vault tokenization payload, and POSTs it directly to the
|
|
26
39
|
* vault API. The merchant page never sees raw card data.
|
|
27
40
|
*
|
|
28
|
-
* The vault URL is determined by "https://
|
|
41
|
+
* The vault URL is determined by "https://pci-vault-staging-drc0duhcakf4g4fr.eastus-01.azurewebsites.net", injected at build time.
|
|
29
42
|
* The tokenizer ignores any apiUrl sent by the SDK in OZ_TOKENIZE messages —
|
|
30
43
|
* an attacker who XSSes the merchant page cannot redirect where card data is
|
|
31
44
|
* sent because the destination is hardcoded in this Ozura-controlled bundle.
|
|
32
45
|
*/
|
|
33
|
-
|
|
46
|
+
var _a;
|
|
47
|
+
const VAULT_API_URL = "https://pci-vault-staging-drc0duhcakf4g4fr.eastus-01.azurewebsites.net";
|
|
34
48
|
/**
|
|
35
49
|
* Defense-in-depth guard: only allows the build-time vault URL origin.
|
|
36
50
|
* The tokenizer already uses VAULT_API_URL directly and never reads
|
|
@@ -69,7 +83,7 @@ var _OzTokenizerFrame = (function (exports) {
|
|
|
69
83
|
if (fromUrl)
|
|
70
84
|
this.hostOrigin = fromUrl;
|
|
71
85
|
window.addEventListener('message', this.onMessage.bind(this));
|
|
72
|
-
window.parent.postMessage({ __oz: true, vaultId: this.vaultId, type: 'OZ_FRAME_READY', frameId: '__tokenizer__' }, this.hostOrigin || window.location.origin);
|
|
86
|
+
window.parent.postMessage({ __oz: true, vaultId: this.vaultId, type: 'OZ_FRAME_READY', frameId: '__tokenizer__', __ozVersion: PROTOCOL_VERSION }, this.hostOrigin || window.location.origin);
|
|
73
87
|
}
|
|
74
88
|
onMessage(event) {
|
|
75
89
|
const msg = event.data;
|
|
@@ -455,7 +469,9 @@ var _OzTokenizerFrame = (function (exports) {
|
|
|
455
469
|
}
|
|
456
470
|
}
|
|
457
471
|
}
|
|
458
|
-
|
|
472
|
+
if (!((_a = undefined) === null || _a === void 0 ? void 0 : _a.VITEST)) {
|
|
473
|
+
new TokenizerFrame();
|
|
474
|
+
}
|
|
459
475
|
|
|
460
476
|
exports.TokenizerFrame = TokenizerFrame;
|
|
461
477
|
exports.isAllowedVaultOrigin = isAllowedVaultOrigin;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tokenizer-frame.js","sources":["../../src/sdk/errors.ts","../../src/frame/tokenizerFrame.ts"],"sourcesContent":[null,null],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"tokenizer-frame.js","sources":["../../src/sdk/errors.ts","../../src/frame/protocol.ts","../../src/frame/tokenizerFrame.ts"],"sourcesContent":[null,null,null],"names":[],"mappings":"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"}
|
package/dist/oz-elements.esm.js
CHANGED
|
@@ -407,7 +407,7 @@ class OzElement {
|
|
|
407
407
|
* (useful when integrating with React refs).
|
|
408
408
|
*/
|
|
409
409
|
mount(target) {
|
|
410
|
-
var _a;
|
|
410
|
+
var _a, _b;
|
|
411
411
|
if (this._destroyed)
|
|
412
412
|
throw new OzError('Cannot mount a destroyed element.');
|
|
413
413
|
if (this.iframe)
|
|
@@ -424,7 +424,13 @@ class OzElement {
|
|
|
424
424
|
iframe.setAttribute('scrolling', 'no');
|
|
425
425
|
iframe.setAttribute('allowtransparency', 'true');
|
|
426
426
|
iframe.style.cssText = 'border:none;width:100%;height:46px;display:block;overflow:hidden;';
|
|
427
|
-
iframe.title = `Secure ${
|
|
427
|
+
iframe.title = `Secure ${(_a = {
|
|
428
|
+
cardNumber: 'card number',
|
|
429
|
+
expirationDate: 'expiration date',
|
|
430
|
+
cvv: 'CVV',
|
|
431
|
+
accountNumber: 'account number',
|
|
432
|
+
routingNumber: 'routing number',
|
|
433
|
+
}[this.elementType]) !== null && _a !== void 0 ? _a : this.elementType} input`;
|
|
428
434
|
// Note: the `sandbox` attribute is intentionally NOT set. Field values are
|
|
429
435
|
// delivered to the tokenizer iframe via a MessageChannel port (transferred
|
|
430
436
|
// in OZ_BEGIN_COLLECT), so no window.parent named-frame lookup is needed.
|
|
@@ -438,7 +444,7 @@ class OzElement {
|
|
|
438
444
|
container.appendChild(iframe);
|
|
439
445
|
this.iframe = iframe;
|
|
440
446
|
this._frameWindow = iframe.contentWindow;
|
|
441
|
-
const timeout = (
|
|
447
|
+
const timeout = (_b = this.options.loadTimeoutMs) !== null && _b !== void 0 ? _b : 10000;
|
|
442
448
|
this._loadTimer = setTimeout(() => {
|
|
443
449
|
if (!this._ready && !this._destroyed) {
|
|
444
450
|
this.emit('loaderror', { elementType: this.elementType, error: `${this.elementType} iframe failed to load within ${timeout}ms` });
|
|
@@ -871,13 +877,26 @@ function validateBilling(billing) {
|
|
|
871
877
|
return { valid: errors.length === 0, errors, normalized };
|
|
872
878
|
}
|
|
873
879
|
|
|
880
|
+
/**
|
|
881
|
+
* Shared postMessage protocol constants.
|
|
882
|
+
*
|
|
883
|
+
* PROTOCOL_VERSION must be incremented any time a breaking change is made to
|
|
884
|
+
* the postMessage message shape (new required fields, renamed types, removed
|
|
885
|
+
* fields, changed semantics). The SDK reads this value from OZ_FRAME_READY
|
|
886
|
+
* messages and warns when the frame and SDK are out of sync.
|
|
887
|
+
*
|
|
888
|
+
* Non-breaking additions (new optional fields, new message types that old
|
|
889
|
+
* frames can safely ignore) do NOT require a version bump.
|
|
890
|
+
*/
|
|
891
|
+
const PROTOCOL_VERSION = 1;
|
|
892
|
+
|
|
874
893
|
function isCardMetadata(v) {
|
|
875
894
|
return !!v && typeof v === 'object' && typeof v.last4 === 'string';
|
|
876
895
|
}
|
|
877
896
|
function isBankAccountMetadata(v) {
|
|
878
897
|
return !!v && typeof v === 'object' && typeof v.last4 === 'string';
|
|
879
898
|
}
|
|
880
|
-
const DEFAULT_FRAME_BASE_URL = "https://
|
|
899
|
+
const DEFAULT_FRAME_BASE_URL = "https://lively-hill-097170c0f.4.azurestaticapps.net";
|
|
881
900
|
/**
|
|
882
901
|
* The main entry point for OzElements. Creates and manages iframe-based
|
|
883
902
|
* card input elements that keep raw card data isolated from the merchant page.
|
|
@@ -910,7 +929,7 @@ class OzVault {
|
|
|
910
929
|
* @internal
|
|
911
930
|
*/
|
|
912
931
|
constructor(options, waxKey, tokenizationSessionId) {
|
|
913
|
-
var _a, _b, _c;
|
|
932
|
+
var _a, _b, _c, _d;
|
|
914
933
|
this.elements = new Map();
|
|
915
934
|
this.elementsByType = new Map();
|
|
916
935
|
this.bankElementsByType = new Map();
|
|
@@ -923,6 +942,9 @@ class OzVault {
|
|
|
923
942
|
this.tokenizerReady = false;
|
|
924
943
|
this._tokenizing = null;
|
|
925
944
|
this._destroyed = false;
|
|
945
|
+
// Incremented every time reset() cancels an active tokenization so that
|
|
946
|
+
// any in-flight wax-key refresh retry can detect it was superseded.
|
|
947
|
+
this._resetCount = 0;
|
|
926
948
|
// Tracks successful tokenizations against the per-key call budget so the SDK
|
|
927
949
|
// can proactively refresh the wax key after it has been consumed rather than
|
|
928
950
|
// waiting for the next createToken() call to fail.
|
|
@@ -942,13 +964,14 @@ class OzVault {
|
|
|
942
964
|
this.resolvedAppearance = resolveAppearance(options.appearance);
|
|
943
965
|
this.vaultId = `vault-${uuid()}`;
|
|
944
966
|
this._maxTokenizeCalls = (_b = options.maxTokenizeCalls) !== null && _b !== void 0 ? _b : 3;
|
|
967
|
+
this._debug = (_c = options.debug) !== null && _c !== void 0 ? _c : false;
|
|
945
968
|
this.boundHandleMessage = this.handleMessage.bind(this);
|
|
946
969
|
window.addEventListener('message', this.boundHandleMessage);
|
|
947
970
|
this.boundHandleVisibility = this.handleVisibilityChange.bind(this);
|
|
948
971
|
document.addEventListener('visibilitychange', this.boundHandleVisibility);
|
|
949
972
|
this.mountTokenizerFrame();
|
|
950
973
|
if (options.onLoadError) {
|
|
951
|
-
const timeout = (
|
|
974
|
+
const timeout = (_d = options.loadTimeoutMs) !== null && _d !== void 0 ? _d : 10000;
|
|
952
975
|
this.loadErrorTimeoutId = setTimeout(() => {
|
|
953
976
|
this.loadErrorTimeoutId = null;
|
|
954
977
|
if (!this._destroyed && !this.tokenizerReady) {
|
|
@@ -958,6 +981,7 @@ class OzVault {
|
|
|
958
981
|
}
|
|
959
982
|
this._onWaxRefresh = options.onWaxRefresh;
|
|
960
983
|
this._onReady = options.onReady;
|
|
984
|
+
this.log('vault created', { vaultId: this.vaultId, frameBaseUrl: this.frameBaseUrl, maxTokenizeCalls: this._maxTokenizeCalls });
|
|
961
985
|
}
|
|
962
986
|
/**
|
|
963
987
|
* Creates and returns a ready `OzVault` instance.
|
|
@@ -1027,6 +1051,7 @@ class OzVault {
|
|
|
1027
1051
|
if (vault.tokenizerReady) {
|
|
1028
1052
|
vault.sendToTokenizer({ type: 'OZ_INIT', frameId: '__tokenizer__', waxKey });
|
|
1029
1053
|
}
|
|
1054
|
+
vault.log('wax key received — vault ready');
|
|
1030
1055
|
return vault;
|
|
1031
1056
|
}
|
|
1032
1057
|
/**
|
|
@@ -1168,8 +1193,13 @@ class OzVault {
|
|
|
1168
1193
|
const readyBankElements = [accountEl, routingEl];
|
|
1169
1194
|
this._tokenizing = 'bank';
|
|
1170
1195
|
const requestId = `req-${uuid()}`;
|
|
1196
|
+
this.log('createBankToken() called');
|
|
1171
1197
|
return new Promise((resolve, reject) => {
|
|
1172
|
-
const
|
|
1198
|
+
const resetCountAtStart = this._resetCount;
|
|
1199
|
+
const cleanup = () => {
|
|
1200
|
+
if (this._resetCount === resetCountAtStart)
|
|
1201
|
+
this._tokenizing = null;
|
|
1202
|
+
};
|
|
1173
1203
|
this.bankTokenizeResolvers.set(requestId, {
|
|
1174
1204
|
resolve: (v) => { cleanup(); resolve(v); },
|
|
1175
1205
|
reject: (e) => { cleanup(); reject(e); },
|
|
@@ -1180,6 +1210,7 @@ class OzVault {
|
|
|
1180
1210
|
});
|
|
1181
1211
|
try {
|
|
1182
1212
|
const bankChannels = readyBankElements.map(() => new MessageChannel());
|
|
1213
|
+
const bankTokenizeStartMs = Date.now();
|
|
1183
1214
|
this.sendToTokenizer({
|
|
1184
1215
|
type: 'OZ_BANK_TOKENIZE',
|
|
1185
1216
|
requestId,
|
|
@@ -1190,6 +1221,7 @@ class OzVault {
|
|
|
1190
1221
|
lastName: options.lastName.trim(),
|
|
1191
1222
|
fieldCount: readyBankElements.length,
|
|
1192
1223
|
}, bankChannels.map(ch => ch.port1));
|
|
1224
|
+
this.log('OZ_BANK_TOKENIZE sent', { requestIdPrefix: `${requestId.slice(0, 12)}...`, fieldCount: readyBankElements.length });
|
|
1193
1225
|
readyBankElements.forEach((el, i) => el.beginCollect(requestId, bankChannels[i].port2));
|
|
1194
1226
|
const bankTimeoutId = setTimeout(() => {
|
|
1195
1227
|
if (this.bankTokenizeResolvers.has(requestId)) {
|
|
@@ -1200,8 +1232,10 @@ class OzVault {
|
|
|
1200
1232
|
}
|
|
1201
1233
|
}, 30000);
|
|
1202
1234
|
const bankPendingEntry = this.bankTokenizeResolvers.get(requestId);
|
|
1203
|
-
if (bankPendingEntry)
|
|
1235
|
+
if (bankPendingEntry) {
|
|
1204
1236
|
bankPendingEntry.timeoutId = bankTimeoutId;
|
|
1237
|
+
bankPendingEntry.tokenizeStartMs = bankTokenizeStartMs;
|
|
1238
|
+
}
|
|
1205
1239
|
}
|
|
1206
1240
|
catch (err) {
|
|
1207
1241
|
this.bankTokenizeResolvers.delete(requestId);
|
|
@@ -1272,8 +1306,15 @@ class OzVault {
|
|
|
1272
1306
|
}
|
|
1273
1307
|
this._tokenizing = 'card';
|
|
1274
1308
|
const requestId = `req-${uuid()}`;
|
|
1309
|
+
this.log('createToken() called');
|
|
1275
1310
|
return new Promise((resolve, reject) => {
|
|
1276
|
-
|
|
1311
|
+
// Capture the reset generation so cleanup() only zeros _tokenizing when it
|
|
1312
|
+
// still belongs to this invocation — not a newer one that started after a reset.
|
|
1313
|
+
const resetCountAtStart = this._resetCount;
|
|
1314
|
+
const cleanup = () => {
|
|
1315
|
+
if (this._resetCount === resetCountAtStart)
|
|
1316
|
+
this._tokenizing = null;
|
|
1317
|
+
};
|
|
1277
1318
|
this.tokenizeResolvers.set(requestId, {
|
|
1278
1319
|
resolve: (v) => { cleanup(); resolve(v); },
|
|
1279
1320
|
reject: (e) => { cleanup(); reject(e); },
|
|
@@ -1286,6 +1327,7 @@ class OzVault {
|
|
|
1286
1327
|
try {
|
|
1287
1328
|
// Tell tokenizer frame to expect N field values, then tokenize
|
|
1288
1329
|
const cardChannels = readyElements.map(() => new MessageChannel());
|
|
1330
|
+
const tokenizeStartMs = Date.now();
|
|
1289
1331
|
this.sendToTokenizer({
|
|
1290
1332
|
type: 'OZ_TOKENIZE',
|
|
1291
1333
|
requestId,
|
|
@@ -1296,6 +1338,11 @@ class OzVault {
|
|
|
1296
1338
|
lastName,
|
|
1297
1339
|
fieldCount: readyElements.length,
|
|
1298
1340
|
}, cardChannels.map(ch => ch.port1));
|
|
1341
|
+
this.log('OZ_TOKENIZE sent', { requestIdPrefix: `${requestId.slice(0, 12)}...`, fieldCount: readyElements.length });
|
|
1342
|
+
// Store start time for elapsed-ms logging on result
|
|
1343
|
+
const cardEntry = this.tokenizeResolvers.get(requestId);
|
|
1344
|
+
if (cardEntry)
|
|
1345
|
+
cardEntry.tokenizeStartMs = tokenizeStartMs;
|
|
1299
1346
|
// Tell each ready element frame to send its raw value to the tokenizer
|
|
1300
1347
|
readyElements.forEach((el, i) => el.beginCollect(requestId, cardChannels[i].port2));
|
|
1301
1348
|
const cardTimeoutId = setTimeout(() => {
|
|
@@ -1317,6 +1364,63 @@ class OzVault {
|
|
|
1317
1364
|
}
|
|
1318
1365
|
});
|
|
1319
1366
|
}
|
|
1367
|
+
/**
|
|
1368
|
+
* Clears all mounted element fields without tearing down the vault.
|
|
1369
|
+
*
|
|
1370
|
+
* Call this after a failed payment (e.g. card declined) to let the customer
|
|
1371
|
+
* re-enter their details. The vault instance, tokenizer iframe, wax key, and
|
|
1372
|
+
* tokenization budget counter are all preserved — no network calls are made.
|
|
1373
|
+
*
|
|
1374
|
+
* **Wax key session model:** by design, one wax key covers the full checkout
|
|
1375
|
+
* session. The default `max_tokenize_calls: 3` supports two declined attempts
|
|
1376
|
+
* and one final attempt on the same key. Do not call `vault.destroy()` and
|
|
1377
|
+
* recreate the vault between declines — that unnecessarily re-mints the key
|
|
1378
|
+
* and discards the remaining budget.
|
|
1379
|
+
*
|
|
1380
|
+
* @example
|
|
1381
|
+
* try {
|
|
1382
|
+
* const { token, cvcSession } = await vault.createToken({ billing });
|
|
1383
|
+
* await chargeCard(token, cvcSession);
|
|
1384
|
+
* } catch (err) {
|
|
1385
|
+
* vault.reset(); // clear fields; let customer re-enter
|
|
1386
|
+
* showError(err.message);
|
|
1387
|
+
* }
|
|
1388
|
+
*/
|
|
1389
|
+
reset() {
|
|
1390
|
+
if (this._destroyed)
|
|
1391
|
+
return;
|
|
1392
|
+
const cancelling = Boolean(this._tokenizing);
|
|
1393
|
+
this.log('reset() called', { tokenizing: this._tokenizing, cancelling });
|
|
1394
|
+
if (this._tokenizing) {
|
|
1395
|
+
this._tokenizing = null;
|
|
1396
|
+
this._resetCount++;
|
|
1397
|
+
this.tokenizeResolvers.forEach(({ reject, timeoutId }, requestId) => {
|
|
1398
|
+
if (timeoutId != null)
|
|
1399
|
+
clearTimeout(timeoutId);
|
|
1400
|
+
this.sendToTokenizer({ type: 'OZ_TOKENIZE_CANCEL', requestId });
|
|
1401
|
+
reject(new OzError('Vault was reset while tokenization was in progress.'));
|
|
1402
|
+
});
|
|
1403
|
+
this.tokenizeResolvers.clear();
|
|
1404
|
+
this.bankTokenizeResolvers.forEach(({ reject, timeoutId }, requestId) => {
|
|
1405
|
+
if (timeoutId != null)
|
|
1406
|
+
clearTimeout(timeoutId);
|
|
1407
|
+
this.sendToTokenizer({ type: 'OZ_TOKENIZE_CANCEL', requestId });
|
|
1408
|
+
reject(new OzError('Vault was reset while tokenization was in progress.'));
|
|
1409
|
+
});
|
|
1410
|
+
this.bankTokenizeResolvers.clear();
|
|
1411
|
+
}
|
|
1412
|
+
// Clear field values in all mounted element iframes
|
|
1413
|
+
this.elementsByType.forEach(el => el.clear());
|
|
1414
|
+
this.bankElementsByType.forEach(el => el.clear());
|
|
1415
|
+
// Reset per-element completion state so auto-advance starts fresh on re-entry
|
|
1416
|
+
for (const frameId of this.completionState.keys()) {
|
|
1417
|
+
this.completionState.set(frameId, false);
|
|
1418
|
+
}
|
|
1419
|
+
// NOTE: _tokenizeSuccessCount is intentionally NOT reset.
|
|
1420
|
+
// It reflects real server-side wax key budget consumption. Zeroing it
|
|
1421
|
+
// would desync the proactive refresh logic from the vault's state and
|
|
1422
|
+
// risk triggering a mid-session re-mint on what should be a clean retry.
|
|
1423
|
+
}
|
|
1320
1424
|
/**
|
|
1321
1425
|
* Tears down the vault: removes all element iframes, the tokenizer iframe,
|
|
1322
1426
|
* and the global message listener. Call this when the checkout component
|
|
@@ -1327,6 +1431,7 @@ class OzVault {
|
|
|
1327
1431
|
if (this._destroyed)
|
|
1328
1432
|
return;
|
|
1329
1433
|
this._destroyed = true;
|
|
1434
|
+
this.log('destroy() called');
|
|
1330
1435
|
window.removeEventListener('message', this.boundHandleMessage);
|
|
1331
1436
|
document.removeEventListener('visibilitychange', this.boundHandleVisibility);
|
|
1332
1437
|
if (this._pendingMount) {
|
|
@@ -1381,13 +1486,17 @@ class OzVault {
|
|
|
1381
1486
|
const REFRESH_THRESHOLD_MS = 20 * 60 * 1000; // 20 minutes
|
|
1382
1487
|
if (document.hidden) {
|
|
1383
1488
|
this._hiddenAt = Date.now();
|
|
1489
|
+
this.log('tab hidden');
|
|
1384
1490
|
}
|
|
1385
1491
|
else {
|
|
1386
|
-
|
|
1387
|
-
|
|
1388
|
-
|
|
1492
|
+
const hiddenMs = this._hiddenAt !== null ? Date.now() - this._hiddenAt : 0;
|
|
1493
|
+
const willRefresh = (this._hiddenAt !== null &&
|
|
1494
|
+
hiddenMs >= REFRESH_THRESHOLD_MS &&
|
|
1495
|
+
Boolean(this._storedFetchWaxKey) &&
|
|
1389
1496
|
!this._tokenizing &&
|
|
1390
|
-
!this._waxRefreshing)
|
|
1497
|
+
!this._waxRefreshing);
|
|
1498
|
+
this.log('tab visible', { hiddenMs, willRefresh });
|
|
1499
|
+
if (willRefresh) {
|
|
1391
1500
|
this.refreshWaxKey().catch((err) => {
|
|
1392
1501
|
// Proactive refresh failure is non-fatal — the reactive path on the
|
|
1393
1502
|
// next createToken() call will handle it, including the auth retry.
|
|
@@ -1397,6 +1506,56 @@ class OzVault {
|
|
|
1397
1506
|
this._hiddenAt = null;
|
|
1398
1507
|
}
|
|
1399
1508
|
}
|
|
1509
|
+
// ─── Debug ───────────────────────────────────────────────────────────────
|
|
1510
|
+
/**
|
|
1511
|
+
* Emits a `[OzVault]`-prefixed entry to `console.log`. No-op when `debug` is
|
|
1512
|
+
* not set. Never called with sensitive values — callers use presence flags only.
|
|
1513
|
+
*/
|
|
1514
|
+
log(message, data) {
|
|
1515
|
+
if (!this._debug)
|
|
1516
|
+
return;
|
|
1517
|
+
if (data !== undefined) {
|
|
1518
|
+
console.log(`[OzVault] ${message}`, data);
|
|
1519
|
+
}
|
|
1520
|
+
else {
|
|
1521
|
+
console.log(`[OzVault] ${message}`);
|
|
1522
|
+
}
|
|
1523
|
+
}
|
|
1524
|
+
/**
|
|
1525
|
+
* Returns a plain-object snapshot of the vault's current internal state.
|
|
1526
|
+
* Safe to attach to bug reports — no wax keys, tokens, or billing data included.
|
|
1527
|
+
*
|
|
1528
|
+
* Available on all vault instances regardless of whether `debug` was enabled.
|
|
1529
|
+
*
|
|
1530
|
+
* @example
|
|
1531
|
+
* console.log(vault.debugState());
|
|
1532
|
+
* // {
|
|
1533
|
+
* // vaultId: 'vault-abc123',
|
|
1534
|
+
* // isReady: true,
|
|
1535
|
+
* // tokenizing: null,
|
|
1536
|
+
* // destroyed: false,
|
|
1537
|
+
* // waxKeyPresent: true,
|
|
1538
|
+
* // elements: ['cardNumber', 'expirationDate', 'cvv'],
|
|
1539
|
+
* // ...
|
|
1540
|
+
* // }
|
|
1541
|
+
*/
|
|
1542
|
+
debugState() {
|
|
1543
|
+
return {
|
|
1544
|
+
vaultId: this.vaultId,
|
|
1545
|
+
isReady: this.tokenizerReady,
|
|
1546
|
+
tokenizing: this._tokenizing,
|
|
1547
|
+
destroyed: this._destroyed,
|
|
1548
|
+
waxKeyPresent: Boolean(this.waxKey),
|
|
1549
|
+
tokenizeSuccessCount: this._tokenizeSuccessCount,
|
|
1550
|
+
maxTokenizeCalls: this._maxTokenizeCalls,
|
|
1551
|
+
resetCount: this._resetCount,
|
|
1552
|
+
elements: [...this.elementsByType.keys()],
|
|
1553
|
+
bankElements: [...this.bankElementsByType.keys()],
|
|
1554
|
+
completionState: Object.fromEntries([...this.completionState.entries()].map(([id, v]) => [id.slice(0, 8), v])),
|
|
1555
|
+
pendingTokenizations: this.tokenizeResolvers.size,
|
|
1556
|
+
pendingBankTokenizations: this.bankTokenizeResolvers.size,
|
|
1557
|
+
};
|
|
1558
|
+
}
|
|
1400
1559
|
mountTokenizerFrame() {
|
|
1401
1560
|
const mount = () => {
|
|
1402
1561
|
this._pendingMount = null;
|
|
@@ -1408,6 +1567,7 @@ class OzVault {
|
|
|
1408
1567
|
iframe.src = `${this.frameBaseUrl}/frame/tokenizer-frame.html#vaultId=${encodeURIComponent(this.vaultId)}${parentOrigin ? `&parentOrigin=${encodeURIComponent(parentOrigin)}` : ''}`;
|
|
1409
1568
|
document.body.appendChild(iframe);
|
|
1410
1569
|
this.tokenizerFrame = iframe;
|
|
1570
|
+
this.log('mounting tokenizer iframe');
|
|
1411
1571
|
};
|
|
1412
1572
|
if (document.readyState === 'loading') {
|
|
1413
1573
|
this._pendingMount = mount;
|
|
@@ -1443,6 +1603,12 @@ class OzVault {
|
|
|
1443
1603
|
// the previous session and justCompleted never fires, breaking auto-advance.
|
|
1444
1604
|
if (msg.type === 'OZ_FRAME_READY') {
|
|
1445
1605
|
this.completionState.set(frameId, false);
|
|
1606
|
+
if (msg.__ozVersion !== PROTOCOL_VERSION) {
|
|
1607
|
+
console.warn(`[OzVault] Protocol version mismatch on element frame "${frameId}" — ` +
|
|
1608
|
+
`SDK expects v${PROTOCOL_VERSION}, frame reported v${typeof msg.__ozVersion === 'number' ? msg.__ozVersion : '(none)'}. ` +
|
|
1609
|
+
'Deploy the matching frame assets to elements.ozura.com and purge the Azure CDN cache.');
|
|
1610
|
+
}
|
|
1611
|
+
this.log('element iframe ready', { type: el.type, frameIdPrefix: frameId.slice(0, 8) });
|
|
1446
1612
|
}
|
|
1447
1613
|
// Intercept OZ_CHANGE before forwarding — handle auto-advance and CVV sync
|
|
1448
1614
|
if (msg.type === 'OZ_CHANGE') {
|
|
@@ -1466,6 +1632,7 @@ class OzVault {
|
|
|
1466
1632
|
// Require valid too — avoids advancing at 13 digits for unknown-brand cards
|
|
1467
1633
|
// where isComplete() fires before the user has finished typing.
|
|
1468
1634
|
const justCompleted = complete && valid && !wasComplete;
|
|
1635
|
+
this.log('field changed', { type: el.type, complete, valid, justCompleted });
|
|
1469
1636
|
// Sync CVV length when card brand changes
|
|
1470
1637
|
if (el.type === 'cardNumber') {
|
|
1471
1638
|
const brand = msg.cardBrand;
|
|
@@ -1477,17 +1644,25 @@ class OzVault {
|
|
|
1477
1644
|
// Auto-advance focus on completion
|
|
1478
1645
|
if (justCompleted) {
|
|
1479
1646
|
if (el.type === 'cardNumber') {
|
|
1647
|
+
this.log('auto-advance', { from: 'cardNumber', to: 'expirationDate' });
|
|
1480
1648
|
(_b = this.elementsByType.get('expirationDate')) === null || _b === void 0 ? void 0 : _b.focus();
|
|
1481
1649
|
}
|
|
1482
1650
|
else if (el.type === 'expirationDate') {
|
|
1651
|
+
this.log('auto-advance', { from: 'expirationDate', to: 'cvv' });
|
|
1483
1652
|
(_c = this.elementsByType.get('cvv')) === null || _c === void 0 ? void 0 : _c.focus();
|
|
1484
1653
|
}
|
|
1485
1654
|
}
|
|
1486
1655
|
}
|
|
1487
1656
|
handleTokenizerMessage(msg) {
|
|
1488
|
-
var _a, _b, _c;
|
|
1657
|
+
var _a, _b, _c, _d;
|
|
1489
1658
|
switch (msg.type) {
|
|
1490
1659
|
case 'OZ_FRAME_READY':
|
|
1660
|
+
if (msg.__ozVersion !== PROTOCOL_VERSION) {
|
|
1661
|
+
console.warn(`[OzVault] Protocol version mismatch — SDK expects v${PROTOCOL_VERSION}, ` +
|
|
1662
|
+
`tokenizer frame reported v${typeof msg.__ozVersion === 'number' ? msg.__ozVersion : '(none)'}. ` +
|
|
1663
|
+
'This usually means the deployed frame files are stale. ' +
|
|
1664
|
+
'Deploy the matching frame assets to elements.ozura.com and purge the Azure CDN cache.');
|
|
1665
|
+
}
|
|
1491
1666
|
this.tokenizerReady = true;
|
|
1492
1667
|
if (this.loadErrorTimeoutId != null) {
|
|
1493
1668
|
clearTimeout(this.loadErrorTimeoutId);
|
|
@@ -1499,6 +1674,7 @@ class OzVault {
|
|
|
1499
1674
|
// sent again from create() once the key is available.
|
|
1500
1675
|
this.sendToTokenizer(Object.assign({ type: 'OZ_INIT', frameId: '__tokenizer__' }, (this.waxKey ? { waxKey: this.waxKey } : {})));
|
|
1501
1676
|
(_c = this._onReady) === null || _c === void 0 ? void 0 : _c.call(this);
|
|
1677
|
+
this.log('tokenizer iframe ready', { protocolVersion: (_d = msg.__ozVersion) !== null && _d !== void 0 ? _d : null });
|
|
1502
1678
|
break;
|
|
1503
1679
|
case 'OZ_TOKEN_RESULT': {
|
|
1504
1680
|
if (typeof msg.requestId !== 'string' || !msg.requestId) {
|
|
@@ -1523,11 +1699,18 @@ class OzVault {
|
|
|
1523
1699
|
}
|
|
1524
1700
|
pending.resolve(Object.assign(Object.assign({ token,
|
|
1525
1701
|
cvcSession }, (card ? { card } : {})), (pending.billing ? { billing: pending.billing } : {})));
|
|
1702
|
+
this.log('token received', {
|
|
1703
|
+
elapsedMs: pending.tokenizeStartMs != null ? Date.now() - pending.tokenizeStartMs : null,
|
|
1704
|
+
tokenPresent: true,
|
|
1705
|
+
cvcSessionPresent: true,
|
|
1706
|
+
cardMetadataPresent: Boolean(card),
|
|
1707
|
+
});
|
|
1526
1708
|
// Increment the per-key success counter and proactively refresh once
|
|
1527
1709
|
// the budget is exhausted so the next createToken() call uses a fresh
|
|
1528
1710
|
// key without waiting for a vault rejection.
|
|
1529
1711
|
this._tokenizeSuccessCount++;
|
|
1530
1712
|
if (this._tokenizeSuccessCount >= this._maxTokenizeCalls) {
|
|
1713
|
+
this.log('proactive wax key refresh triggered', { tokenizeSuccessCount: this._tokenizeSuccessCount, maxTokenizeCalls: this._maxTokenizeCalls });
|
|
1531
1714
|
this.refreshWaxKey().catch((err) => {
|
|
1532
1715
|
console.warn('[OzVault] Post-budget wax key refresh failed:', err instanceof Error ? err.message : err);
|
|
1533
1716
|
});
|
|
@@ -1547,14 +1730,25 @@ class OzVault {
|
|
|
1547
1730
|
this.tokenizeResolvers.delete(msg.requestId);
|
|
1548
1731
|
if (pending.timeoutId != null)
|
|
1549
1732
|
clearTimeout(pending.timeoutId);
|
|
1733
|
+
const willRefresh = this.isRefreshableAuthError(errorCode, raw) && !pending.retried && Boolean(this._storedFetchWaxKey);
|
|
1734
|
+
this.log('token error', { errorCode, willRefresh });
|
|
1550
1735
|
// Auto-refresh: if the wax key expired or was consumed and we haven't
|
|
1551
1736
|
// already retried for this request, transparently re-mint and retry.
|
|
1552
|
-
if (
|
|
1737
|
+
if (willRefresh) {
|
|
1738
|
+
const resetCountAtRetry = this._resetCount;
|
|
1553
1739
|
this.refreshWaxKey().then(() => {
|
|
1554
1740
|
if (this._destroyed) {
|
|
1555
1741
|
pending.reject(new OzError('Vault destroyed during wax key refresh.'));
|
|
1556
1742
|
return;
|
|
1557
1743
|
}
|
|
1744
|
+
if (this._resetCount !== resetCountAtRetry) {
|
|
1745
|
+
// reset() was called while the wax key was refreshing — the fields
|
|
1746
|
+
// have been cleared and _tokenizing was zeroed. Reject the original
|
|
1747
|
+
// promise so it doesn't stay pending, and bail out without starting
|
|
1748
|
+
// a new retry (which would tokenize against empty fields).
|
|
1749
|
+
pending.reject(new OzError('Vault was reset while tokenization was in progress.'));
|
|
1750
|
+
return;
|
|
1751
|
+
}
|
|
1558
1752
|
const newRequestId = `req-${uuid()}`;
|
|
1559
1753
|
// _tokenizing is still 'card' (cleanup() hasn't been called yet)
|
|
1560
1754
|
this.tokenizeResolvers.set(newRequestId, Object.assign(Object.assign({}, pending), { retried: true }));
|
|
@@ -1601,11 +1795,16 @@ class OzVault {
|
|
|
1601
1795
|
if (bankPending.timeoutId != null)
|
|
1602
1796
|
clearTimeout(bankPending.timeoutId);
|
|
1603
1797
|
if (this.isRefreshableAuthError(errorCode, raw) && !bankPending.retried && this._storedFetchWaxKey) {
|
|
1798
|
+
const resetCountAtRetry = this._resetCount;
|
|
1604
1799
|
this.refreshWaxKey().then(() => {
|
|
1605
1800
|
if (this._destroyed) {
|
|
1606
1801
|
bankPending.reject(new OzError('Vault destroyed during wax key refresh.'));
|
|
1607
1802
|
return;
|
|
1608
1803
|
}
|
|
1804
|
+
if (this._resetCount !== resetCountAtRetry) {
|
|
1805
|
+
bankPending.reject(new OzError('Vault was reset while tokenization was in progress.'));
|
|
1806
|
+
return;
|
|
1807
|
+
}
|
|
1609
1808
|
const newRequestId = `req-${uuid()}`;
|
|
1610
1809
|
this.bankTokenizeResolvers.set(newRequestId, Object.assign(Object.assign({}, bankPending), { retried: true }));
|
|
1611
1810
|
try {
|
|
@@ -1663,9 +1862,15 @@ class OzVault {
|
|
|
1663
1862
|
}
|
|
1664
1863
|
const bank = isBankAccountMetadata(msg.bank) ? msg.bank : undefined;
|
|
1665
1864
|
pending.resolve(Object.assign({ token }, (bank ? { bank } : {})));
|
|
1865
|
+
this.log('bank token received', {
|
|
1866
|
+
elapsedMs: pending.tokenizeStartMs != null ? Date.now() - pending.tokenizeStartMs : null,
|
|
1867
|
+
tokenPresent: true,
|
|
1868
|
+
bankMetadataPresent: Boolean(bank),
|
|
1869
|
+
});
|
|
1666
1870
|
// Same proactive refresh logic as card tokenization.
|
|
1667
1871
|
this._tokenizeSuccessCount++;
|
|
1668
1872
|
if (this._tokenizeSuccessCount >= this._maxTokenizeCalls) {
|
|
1873
|
+
this.log('proactive wax key refresh triggered', { tokenizeSuccessCount: this._tokenizeSuccessCount, maxTokenizeCalls: this._maxTokenizeCalls });
|
|
1669
1874
|
this.refreshWaxKey().catch((err) => {
|
|
1670
1875
|
console.warn('[OzVault] Post-budget wax key refresh failed:', err instanceof Error ? err.message : err);
|
|
1671
1876
|
});
|
|
@@ -1721,6 +1926,7 @@ class OzVault {
|
|
|
1721
1926
|
}
|
|
1722
1927
|
const newSessionId = uuid();
|
|
1723
1928
|
(_a = this._onWaxRefresh) === null || _a === void 0 ? void 0 : _a.call(this);
|
|
1929
|
+
this.log('wax key refresh started');
|
|
1724
1930
|
this._waxRefreshing = this._storedFetchWaxKey(newSessionId)
|
|
1725
1931
|
.then(newWaxKey => {
|
|
1726
1932
|
if (typeof newWaxKey !== 'string' || !newWaxKey.trim()) {
|
|
@@ -1734,6 +1940,11 @@ class OzVault {
|
|
|
1734
1940
|
if (!this._destroyed && this.tokenizerReady) {
|
|
1735
1941
|
this.sendToTokenizer({ type: 'OZ_INIT', frameId: '__tokenizer__', waxKey: newWaxKey });
|
|
1736
1942
|
}
|
|
1943
|
+
this.log('wax key refresh succeeded');
|
|
1944
|
+
})
|
|
1945
|
+
.catch((err) => {
|
|
1946
|
+
this.log('wax key refresh failed', { error: err instanceof Error ? err.message : String(err) });
|
|
1947
|
+
throw err;
|
|
1737
1948
|
})
|
|
1738
1949
|
.finally(() => {
|
|
1739
1950
|
this._waxRefreshing = null;
|