@ozura/elements 0.1.0-beta.4 → 0.1.0-beta.6
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 +30 -27
- package/dist/frame/element-frame.html +1 -1
- package/dist/frame/tokenizer-frame.html +1 -1
- package/dist/frame/tokenizer-frame.js +33 -34
- package/dist/frame/tokenizer-frame.js.map +1 -1
- package/dist/oz-elements.esm.js +31 -37
- package/dist/oz-elements.esm.js.map +1 -1
- package/dist/oz-elements.umd.js +31 -36
- package/dist/oz-elements.umd.js.map +1 -1
- package/dist/react/frame/tokenizerFrame.d.ts +9 -9
- package/dist/react/index.cjs.js +33 -39
- package/dist/react/index.cjs.js.map +1 -1
- package/dist/react/index.esm.js +33 -39
- package/dist/react/index.esm.js.map +1 -1
- package/dist/react/react/index.d.ts +1 -3
- package/dist/react/sdk/OzVault.d.ts +1 -1
- package/dist/react/sdk/errors.d.ts +4 -3
- package/dist/react/sdk/index.d.ts +2 -2
- package/dist/react/server/index.d.ts +11 -17
- package/dist/react/types/index.d.ts +92 -5
- package/dist/server/frame/tokenizerFrame.d.ts +9 -9
- package/dist/server/index.cjs.js +18 -26
- package/dist/server/index.cjs.js.map +1 -1
- package/dist/server/index.esm.js +18 -26
- package/dist/server/index.esm.js.map +1 -1
- package/dist/server/sdk/OzVault.d.ts +1 -1
- package/dist/server/sdk/errors.d.ts +4 -3
- package/dist/server/sdk/index.d.ts +2 -2
- package/dist/server/server/index.d.ts +11 -17
- package/dist/server/types/index.d.ts +92 -5
- package/dist/types/frame/tokenizerFrame.d.ts +9 -9
- package/dist/types/sdk/OzVault.d.ts +1 -1
- package/dist/types/sdk/errors.d.ts +4 -3
- package/dist/types/sdk/index.d.ts +2 -2
- package/dist/types/server/index.d.ts +11 -17
- package/dist/types/types/index.d.ts +92 -5
- package/package.json +2 -2
package/README.md
CHANGED
|
@@ -23,7 +23,7 @@ The Ozura Vault stores and tokenizes sensitive card data. OzElements is the fron
|
|
|
23
23
|
```
|
|
24
24
|
Your page (yoursite.com)
|
|
25
25
|
│
|
|
26
|
-
│ import { OzVault } from '
|
|
26
|
+
│ import { OzVault } from '@ozura/elements'
|
|
27
27
|
│
|
|
28
28
|
│ const vault = new OzVault('vault_api_key');
|
|
29
29
|
│
|
|
@@ -52,21 +52,23 @@ Raw card data travels one path: element iframe → tokenizer iframe (direct same
|
|
|
52
52
|
## Installation
|
|
53
53
|
|
|
54
54
|
```bash
|
|
55
|
-
npm install
|
|
55
|
+
npm install @ozura/elements
|
|
56
56
|
```
|
|
57
57
|
|
|
58
|
-
Or via script tag (UMD):
|
|
58
|
+
Or via script tag (UMD) from jsDelivr (served from npm after you publish):
|
|
59
59
|
|
|
60
60
|
```html
|
|
61
|
-
<script src="https://cdn.
|
|
61
|
+
<script src="https://cdn.jsdelivr.net/npm/@ozura/elements/dist/oz-elements.umd.js"></script>
|
|
62
62
|
```
|
|
63
63
|
|
|
64
|
+
For production, pin a version: `.../npm/@ozura/elements@1.0.0/dist/oz-elements.umd.js`
|
|
65
|
+
|
|
64
66
|
---
|
|
65
67
|
|
|
66
68
|
## Quick start
|
|
67
69
|
|
|
68
70
|
```js
|
|
69
|
-
import { OzVault } from '
|
|
71
|
+
import { OzVault } from '@ozura/elements';
|
|
70
72
|
|
|
71
73
|
const vault = new OzVault('your_vault_api_key', {
|
|
72
74
|
pubKey: 'your_pub_key',
|
|
@@ -236,21 +238,21 @@ Updates `style`, `placeholder`, or `disabled` on a mounted element without remou
|
|
|
236
238
|
## React
|
|
237
239
|
|
|
238
240
|
```bash
|
|
239
|
-
npm install
|
|
241
|
+
npm install @ozura/elements
|
|
240
242
|
```
|
|
241
243
|
|
|
242
244
|
Import from the `/react` subpath:
|
|
243
245
|
|
|
244
246
|
```tsx
|
|
245
|
-
import { OzElements, OzCardNumber, OzExpiry, OzCvv, useOzElements } from '
|
|
247
|
+
import { OzElements, OzCardNumber, OzExpiry, OzCvv, useOzElements } from '@ozura/elements/react';
|
|
246
248
|
```
|
|
247
249
|
|
|
248
250
|
### Example
|
|
249
251
|
|
|
250
252
|
```tsx
|
|
251
253
|
import { useState } from 'react';
|
|
252
|
-
import { OzElements, OzCardNumber, OzExpiry, OzCvv, useOzElements } from '
|
|
253
|
-
import { normalizeCardSaleError } from '
|
|
254
|
+
import { OzElements, OzCardNumber, OzExpiry, OzCvv, useOzElements } from '@ozura/elements/react';
|
|
255
|
+
import { normalizeCardSaleError } from '@ozura/elements';
|
|
254
256
|
|
|
255
257
|
const fieldStyle = {
|
|
256
258
|
base: { color: '#111827', fontSize: '16px', fontFamily: 'Inter, sans-serif' },
|
|
@@ -389,7 +391,7 @@ For the full credential setup, billing form field requirements, validation rules
|
|
|
389
391
|
### 1 — Collect card data + billing in one call
|
|
390
392
|
|
|
391
393
|
```js
|
|
392
|
-
import { OzVault, normalizeCardSaleError } from '
|
|
394
|
+
import { OzVault, normalizeCardSaleError } from '@ozura/elements';
|
|
393
395
|
|
|
394
396
|
const vault = new OzVault('vault_api_key_here', {
|
|
395
397
|
pubKey: 'your_pub_key',
|
|
@@ -470,7 +472,7 @@ Your server proxies to the Ozura Pay API with **two API keys** in the headers:
|
|
|
470
472
|
|
|
471
473
|
```js
|
|
472
474
|
// Node.js / Express example
|
|
473
|
-
import type { CardSaleRequest, CardSaleApiResponse } from '
|
|
475
|
+
import type { CardSaleRequest, CardSaleApiResponse } from '@ozura/elements';
|
|
474
476
|
|
|
475
477
|
app.post('/api/charge', async (req, res) => {
|
|
476
478
|
const body = req.body;
|
|
@@ -545,7 +547,7 @@ app.post('/api/charge', async (req, res) => {
|
|
|
545
547
|
### 3 — cardSale response shape
|
|
546
548
|
|
|
547
549
|
```ts
|
|
548
|
-
import type { CardSaleApiResponse, CardSaleResponseData } from '
|
|
550
|
+
import type { CardSaleApiResponse, CardSaleResponseData } from '@ozura/elements';
|
|
549
551
|
|
|
550
552
|
// Successful response shape from POST /api/v1/cardSale:
|
|
551
553
|
// {
|
|
@@ -591,7 +593,7 @@ app.get('/api/client-ip', (req, res) => {
|
|
|
591
593
|
Maps raw Pay API error strings to user-friendly copy. Uses the same key table as the Ozura checkout frontend — identical errors produce identical messages on both surfaces:
|
|
592
594
|
|
|
593
595
|
```js
|
|
594
|
-
import { normalizeCardSaleError } from '
|
|
596
|
+
import { normalizeCardSaleError } from '@ozura/elements';
|
|
595
597
|
|
|
596
598
|
normalizeCardSaleError('Insufficient Funds')
|
|
597
599
|
// → "Your card has insufficient funds. Please use a different payment method."
|
|
@@ -608,7 +610,7 @@ normalizeCardSaleError('Card expired')
|
|
|
608
610
|
Import the interface to type your cardSale payload and catch missing fields at compile time:
|
|
609
611
|
|
|
610
612
|
```ts
|
|
611
|
-
import type { CardSaleRequest } from '
|
|
613
|
+
import type { CardSaleRequest } from '@ozura/elements';
|
|
612
614
|
|
|
613
615
|
const payload: CardSaleRequest = {
|
|
614
616
|
processor: 'elavon',
|
|
@@ -660,14 +662,14 @@ Build outputs in `dist/`:
|
|
|
660
662
|
|
|
661
663
|
| File | Format | Use |
|
|
662
664
|
|---|---|---|
|
|
663
|
-
| `oz-elements.esm.js` | ESM | `import { OzVault } from '
|
|
665
|
+
| `oz-elements.esm.js` | ESM | `import { OzVault } from '@ozura/elements'` |
|
|
664
666
|
| `oz-elements.umd.js` | UMD | `<script>` tag / CDN |
|
|
665
667
|
| `frame/element-frame.js` | IIFE | loaded by element iframes |
|
|
666
668
|
| `frame/tokenizer-frame.js` | IIFE | loaded by tokenizer iframe |
|
|
667
|
-
| `react/index.esm.js` | ESM | `import ... from '
|
|
668
|
-
| `react/index.cjs.js` | CJS | `require('
|
|
669
|
+
| `react/index.esm.js` | ESM | `import ... from '@ozura/elements/react'` |
|
|
670
|
+
| `react/index.cjs.js` | CJS | `require('@ozura/elements/react')` |
|
|
669
671
|
|
|
670
|
-
See [
|
|
672
|
+
See [ARCHITECTURE.md](./ARCHITECTURE.md) for architecture detail, security model, and pre-production requirements.
|
|
671
673
|
|
|
672
674
|
---
|
|
673
675
|
|
|
@@ -692,23 +694,24 @@ See [DEVELOPMENT.md](./DEVELOPMENT.md) for architecture detail, security model,
|
|
|
692
694
|
- [x] `OzVault.isReady` getter
|
|
693
695
|
- [x] `element.mount()` accepts `HTMLElement` as well as a CSS selector
|
|
694
696
|
- [x] Unit test suite (Vitest + jsdom) — 168 tests, 0 failures
|
|
695
|
-
- [ ] Published to npm as
|
|
696
|
-
- [ ] CDN delivery for UMD build
|
|
697
|
+
- [ ] Published to npm as `@ozura/elements`
|
|
698
|
+
- [ ] CDN delivery for UMD build (optional for v1)
|
|
697
699
|
|
|
698
700
|
### v0.3 — React ✅
|
|
699
701
|
- [x] `<OzElements>` provider — creates and owns an `OzVault` instance
|
|
700
702
|
- [x] `<OzCardNumber />`, `<OzExpiry />`, `<OzCvv />` field components
|
|
701
703
|
- [x] `useOzElements()` hook — `createToken` + `ready` flag
|
|
702
|
-
- [x] ESM + CJS React bundle, exported at
|
|
703
|
-
- [ ] Published as a standalone `@oz/react-elements` package
|
|
704
|
+
- [x] ESM + CJS React bundle, exported at `@ozura/elements/react`
|
|
705
|
+
- [ ] Published as a standalone `@oz/react-elements` package (optional; subpath export is sufficient for v1)
|
|
704
706
|
|
|
705
707
|
### v1.0 — Production ready
|
|
706
708
|
- [x] Production iframe hosting at `elements.ozura.com`
|
|
707
|
-
- [
|
|
708
|
-
- [
|
|
709
|
-
- [ ]
|
|
710
|
-
- [ ]
|
|
711
|
-
- [ ]
|
|
709
|
+
- [x] postMessage security covered (unit + E2E tests; see `docs/AUDIT.md`)
|
|
710
|
+
- [x] Security audit (consolidated in `docs/AUDIT.md`; all findings resolved or closed)
|
|
711
|
+
- [ ] Publish `@ozura/elements@1.0.0` to npm
|
|
712
|
+
- [ ] Public documentation site (or link to ozura-documentation)
|
|
713
|
+
- [ ] ACH / bank account element (pending Pay API support) — post-v1
|
|
714
|
+
- [ ] Saved payment method support (returning customers) — post-v1
|
|
712
715
|
|
|
713
716
|
---
|
|
714
717
|
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
<html lang="en">
|
|
3
3
|
<head>
|
|
4
4
|
<meta charset="UTF-8" />
|
|
5
|
-
<meta http-equiv="Content-Security-Policy" content="default-src 'none'; script-src 'self'; connect-src 'self'; style-src 'unsafe-inline' https:; font-src https: '
|
|
5
|
+
<meta http-equiv="Content-Security-Policy" content="default-src 'none'; script-src 'self'; connect-src 'self'; style-src 'self' 'unsafe-inline' https:; font-src https: data:; base-uri 'none'; form-action 'none';" />
|
|
6
6
|
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
|
7
7
|
<title>Secure Input</title>
|
|
8
8
|
<style>
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
<html lang="en">
|
|
3
3
|
<head>
|
|
4
4
|
<meta charset="UTF-8" />
|
|
5
|
-
<meta http-equiv="Content-Security-Policy" content="default-src 'none'; script-src 'self'; connect-src https
|
|
5
|
+
<meta http-equiv="Content-Security-Policy" content="default-src 'none'; script-src 'self'; connect-src https://pci-vault-staging-drc0duhcakf4g4fr.eastus-01.azurewebsites.net; base-uri 'none'; form-action 'none';" />
|
|
6
6
|
<title>Ozura Tokenizer</title>
|
|
7
7
|
</head>
|
|
8
8
|
<body>
|
|
@@ -7,17 +7,18 @@ var _OzTokenizerFrame = (function (exports) {
|
|
|
7
7
|
* Collects raw card field values sent by element frames (same-origin),
|
|
8
8
|
* assembles the vault tokenization payload, and POSTs it directly to the
|
|
9
9
|
* vault API. The merchant page never sees raw card data.
|
|
10
|
+
*
|
|
11
|
+
* The vault URL is determined by "https://pci-vault-staging-drc0duhcakf4g4fr.eastus-01.azurewebsites.net", injected at build time.
|
|
12
|
+
* The tokenizer ignores any apiUrl sent by the SDK in OZ_TOKENIZE messages —
|
|
13
|
+
* an attacker who XSSes the merchant page cannot redirect where card data is
|
|
14
|
+
* sent because the destination is hardcoded in this Ozura-controlled bundle.
|
|
10
15
|
*/
|
|
16
|
+
const VAULT_API_URL = "https://pci-vault-staging-drc0duhcakf4g4fr.eastus-01.azurewebsites.net";
|
|
11
17
|
/**
|
|
12
|
-
*
|
|
13
|
-
*
|
|
14
|
-
*
|
|
15
|
-
*
|
|
16
|
-
* intentionally NOT done here — the vault API authenticates every request
|
|
17
|
-
* via the merchant's private API key, so there is no security benefit to
|
|
18
|
-
* restricting which HTTPS hosts the tokenizer may POST to. Baking a domain
|
|
19
|
-
* allowlist into the frame bundle would force an SDK republish on every new
|
|
20
|
-
* merchant onboarding, which is the wrong operational model.
|
|
18
|
+
* Defense-in-depth guard: only allows the build-time vault URL origin.
|
|
19
|
+
* The tokenizer already uses VAULT_API_URL directly and never reads
|
|
20
|
+
* the merchant-supplied apiUrl, so this is a secondary safety net —
|
|
21
|
+
* not the primary security boundary.
|
|
21
22
|
*
|
|
22
23
|
* Exported for unit testing only — not part of the public SDK API.
|
|
23
24
|
*/
|
|
@@ -29,12 +30,13 @@ var _OzTokenizerFrame = (function (exports) {
|
|
|
29
30
|
catch (_a) {
|
|
30
31
|
return false;
|
|
31
32
|
}
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
return
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
33
|
+
try {
|
|
34
|
+
const allowed = new URL(VAULT_API_URL);
|
|
35
|
+
return parsed.origin === allowed.origin;
|
|
36
|
+
}
|
|
37
|
+
catch (_b) {
|
|
38
|
+
return false;
|
|
39
|
+
}
|
|
38
40
|
}
|
|
39
41
|
class TokenizerFrame {
|
|
40
42
|
constructor() {
|
|
@@ -60,12 +62,11 @@ var _OzTokenizerFrame = (function (exports) {
|
|
|
60
62
|
}
|
|
61
63
|
break;
|
|
62
64
|
case 'OZ_TOKENIZE':
|
|
63
|
-
if (this.hostOrigin
|
|
65
|
+
if (!this.hostOrigin || event.origin !== this.hostOrigin)
|
|
64
66
|
return;
|
|
65
67
|
this.pending.set(msg.requestId, {
|
|
66
68
|
kind: 'card',
|
|
67
69
|
requestId: msg.requestId,
|
|
68
|
-
apiUrl: msg.apiUrl,
|
|
69
70
|
apiKey: msg.apiKey,
|
|
70
71
|
pubKey: msg.pubKey || '',
|
|
71
72
|
firstName: msg.firstName || '',
|
|
@@ -77,12 +78,11 @@ var _OzTokenizerFrame = (function (exports) {
|
|
|
77
78
|
});
|
|
78
79
|
break;
|
|
79
80
|
case 'OZ_BANK_TOKENIZE':
|
|
80
|
-
if (this.hostOrigin
|
|
81
|
+
if (!this.hostOrigin || event.origin !== this.hostOrigin)
|
|
81
82
|
return;
|
|
82
83
|
this.pendingBank.set(msg.requestId, {
|
|
83
84
|
kind: 'bank',
|
|
84
85
|
requestId: msg.requestId,
|
|
85
|
-
apiUrl: msg.apiUrl,
|
|
86
86
|
apiKey: msg.apiKey,
|
|
87
87
|
pubKey: msg.pubKey || '',
|
|
88
88
|
firstName: msg.firstName || '',
|
|
@@ -120,7 +120,7 @@ var _OzTokenizerFrame = (function (exports) {
|
|
|
120
120
|
const bankSession = this.pendingBank.get(msg.requestId);
|
|
121
121
|
if (bankSession) {
|
|
122
122
|
bankSession.values.set(msg.fieldType, msg.value);
|
|
123
|
-
if (msg.last4)
|
|
123
|
+
if (msg.fieldType === 'accountNumber' && msg.last4)
|
|
124
124
|
bankSession.bankMeta.last4 = msg.last4;
|
|
125
125
|
if (msg.fieldType === 'routingNumber')
|
|
126
126
|
bankSession.bankMeta.routingNumber = msg.value;
|
|
@@ -137,8 +137,9 @@ var _OzTokenizerFrame = (function (exports) {
|
|
|
137
137
|
* Shared vault POST helper. Handles origin guard, header construction,
|
|
138
138
|
* the fetchWithRetry call, token extraction, empty-token error, and catch.
|
|
139
139
|
*
|
|
140
|
-
* Returns the raw response data with a guaranteed non-empty
|
|
141
|
-
* or `null` if an error was already reported via
|
|
140
|
+
* Returns the raw response data augmented with a guaranteed non-empty
|
|
141
|
+
* `token` string, or `null` if an error was already reported via
|
|
142
|
+
* postMessage to `target`.
|
|
142
143
|
*/
|
|
143
144
|
async postToVault(requestId, apiUrl, apiKey, pubKey, body, target, logLabel) {
|
|
144
145
|
var _a, _b;
|
|
@@ -178,7 +179,7 @@ var _OzTokenizerFrame = (function (exports) {
|
|
|
178
179
|
}, target);
|
|
179
180
|
return null;
|
|
180
181
|
}
|
|
181
|
-
return data;
|
|
182
|
+
return Object.assign(Object.assign({}, data), { token });
|
|
182
183
|
}
|
|
183
184
|
catch (err) {
|
|
184
185
|
const message = err instanceof Error ? err.message : `${logLabel} tokenization failed`;
|
|
@@ -188,8 +189,8 @@ var _OzTokenizerFrame = (function (exports) {
|
|
|
188
189
|
}
|
|
189
190
|
}
|
|
190
191
|
async tokenize(session) {
|
|
191
|
-
var _a, _b, _c, _d
|
|
192
|
-
const { requestId,
|
|
192
|
+
var _a, _b, _c, _d;
|
|
193
|
+
const { requestId, apiKey, pubKey, firstName, lastName, values, cardMeta, hostOrigin } = session;
|
|
193
194
|
const target = hostOrigin || window.location.origin;
|
|
194
195
|
const cardNumber = values.get('cardNumber') || '';
|
|
195
196
|
const cvv = values.get('cvv') || '';
|
|
@@ -212,11 +213,11 @@ var _OzTokenizerFrame = (function (exports) {
|
|
|
212
213
|
},
|
|
213
214
|
},
|
|
214
215
|
};
|
|
215
|
-
const data = await this.postToVault(requestId,
|
|
216
|
+
const data = await this.postToVault(requestId, VAULT_API_URL, apiKey, pubKey, body, target, 'card');
|
|
216
217
|
if (!data)
|
|
217
218
|
return;
|
|
218
|
-
const token
|
|
219
|
-
const cvcSession = String((
|
|
219
|
+
const { token } = data;
|
|
220
|
+
const cvcSession = String((_d = (_c = (_b = (_a = data.cvcSession) !== null && _a !== void 0 ? _a : data.sessionId) !== null && _b !== void 0 ? _b : data.ozuraCvcSession) !== null && _c !== void 0 ? _c : data.cvc_session_id) !== null && _d !== void 0 ? _d : '');
|
|
220
221
|
if (!cvcSession) {
|
|
221
222
|
window.parent.postMessage({
|
|
222
223
|
__oz: true, vaultId: this.vaultId, type: 'OZ_TOKEN_ERROR', requestId,
|
|
@@ -229,8 +230,7 @@ var _OzTokenizerFrame = (function (exports) {
|
|
|
229
230
|
window.parent.postMessage(Object.assign({ __oz: true, vaultId: this.vaultId, type: 'OZ_TOKEN_RESULT', requestId, token, cvcSession }, (hasFullCardMeta ? { card: cardMeta } : {})), target);
|
|
230
231
|
}
|
|
231
232
|
async tokenizeBank(session) {
|
|
232
|
-
|
|
233
|
-
const { requestId, apiUrl, apiKey, pubKey, firstName, lastName, values, bankMeta, hostOrigin } = session;
|
|
233
|
+
const { requestId, apiKey, pubKey, firstName, lastName, values, bankMeta, hostOrigin } = session;
|
|
234
234
|
const target = hostOrigin || window.location.origin;
|
|
235
235
|
const body = {
|
|
236
236
|
type: 'bank',
|
|
@@ -246,12 +246,11 @@ var _OzTokenizerFrame = (function (exports) {
|
|
|
246
246
|
},
|
|
247
247
|
},
|
|
248
248
|
};
|
|
249
|
-
const data = await this.postToVault(requestId,
|
|
249
|
+
const data = await this.postToVault(requestId, VAULT_API_URL, apiKey, pubKey, body, target, 'bank');
|
|
250
250
|
if (!data)
|
|
251
251
|
return;
|
|
252
|
-
const token
|
|
253
|
-
|
|
254
|
-
window.parent.postMessage(Object.assign({ __oz: true, vaultId: this.vaultId, type: 'OZ_BANK_TOKEN_RESULT', requestId, token }, (hasBankMeta ? { bank: bankMeta } : {})), target);
|
|
252
|
+
const { token } = data;
|
|
253
|
+
window.parent.postMessage(Object.assign({ __oz: true, vaultId: this.vaultId, type: 'OZ_BANK_TOKEN_RESULT', requestId, token }, (bankMeta.last4 ? { bank: bankMeta } : {})), target);
|
|
255
254
|
}
|
|
256
255
|
static classifyHttpStatus(status) {
|
|
257
256
|
if (status === 401 || status === 403)
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tokenizer-frame.js","sources":["../../src/frame/tokenizerFrame.ts"],"sourcesContent":[null],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"tokenizer-frame.js","sources":["../../src/frame/tokenizerFrame.ts"],"sourcesContent":[null],"names":[],"mappings":"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"}
|
package/dist/oz-elements.esm.js
CHANGED
|
@@ -416,9 +416,10 @@ class OzElement {
|
|
|
416
416
|
/**
|
|
417
417
|
* errors.ts — error types and normalisation for OzElements.
|
|
418
418
|
*
|
|
419
|
-
*
|
|
420
|
-
* - normalizeVaultError
|
|
421
|
-
* -
|
|
419
|
+
* Three normalisation functions:
|
|
420
|
+
* - normalizeVaultError — maps raw vault /tokenize errors to user-facing messages (card flows)
|
|
421
|
+
* - normalizeBankVaultError — maps raw vault /tokenize errors to user-facing messages (bank/ACH flows)
|
|
422
|
+
* - normalizeCardSaleError — maps raw cardSale API errors to user-facing messages
|
|
422
423
|
*
|
|
423
424
|
* Error keys in normalizeCardSaleError are taken directly from checkout's
|
|
424
425
|
* errorMapping.ts so the same error strings produce the same user-facing copy.
|
|
@@ -437,7 +438,7 @@ function normalizeCommonVaultError(msg) {
|
|
|
437
438
|
if (msg.includes('api key') || msg.includes('unauthorized') || msg.includes('authentication') || msg.includes('forbidden')) {
|
|
438
439
|
return 'Authentication failed. Check your vault API key configuration.';
|
|
439
440
|
}
|
|
440
|
-
if (msg.includes('network') || msg.includes('failed to fetch') || msg.includes('
|
|
441
|
+
if (msg.includes('network') || msg.includes('failed to fetch') || msg.includes('networkerror')) {
|
|
441
442
|
return 'A network error occurred. Please check your connection and try again.';
|
|
442
443
|
}
|
|
443
444
|
if (msg.includes('timeout') || msg.includes('timed out')) {
|
|
@@ -454,9 +455,6 @@ function normalizeCommonVaultError(msg) {
|
|
|
454
455
|
*/
|
|
455
456
|
function normalizeVaultError(raw) {
|
|
456
457
|
const msg = raw.toLowerCase();
|
|
457
|
-
const common = normalizeCommonVaultError(msg);
|
|
458
|
-
if (common)
|
|
459
|
-
return common;
|
|
460
458
|
if (msg.includes('card number') || msg.includes('invalid card') || msg.includes('luhn')) {
|
|
461
459
|
return 'The card number is invalid. Please check and try again.';
|
|
462
460
|
}
|
|
@@ -472,6 +470,9 @@ function normalizeVaultError(raw) {
|
|
|
472
470
|
if (msg.includes('declined') || msg.includes('do not honor')) {
|
|
473
471
|
return 'Your card was declined. Please try a different card or contact your bank.';
|
|
474
472
|
}
|
|
473
|
+
const common = normalizeCommonVaultError(msg);
|
|
474
|
+
if (common)
|
|
475
|
+
return common;
|
|
475
476
|
return raw;
|
|
476
477
|
}
|
|
477
478
|
/**
|
|
@@ -481,15 +482,15 @@ function normalizeVaultError(raw) {
|
|
|
481
482
|
*/
|
|
482
483
|
function normalizeBankVaultError(raw) {
|
|
483
484
|
const msg = raw.toLowerCase();
|
|
484
|
-
const common = normalizeCommonVaultError(msg);
|
|
485
|
-
if (common)
|
|
486
|
-
return common;
|
|
487
485
|
if (msg.includes('account number') || msg.includes('account_number') || msg.includes('invalid account')) {
|
|
488
486
|
return 'The bank account number is invalid. Please check and try again.';
|
|
489
487
|
}
|
|
490
|
-
if (msg.includes('routing number') || msg.includes('routing_number') || msg.includes('invalid routing') || msg
|
|
488
|
+
if (msg.includes('routing number') || msg.includes('routing_number') || msg.includes('invalid routing') || /\baba\b/.test(msg)) {
|
|
491
489
|
return 'The routing number is invalid. Please check and try again.';
|
|
492
490
|
}
|
|
491
|
+
const common = normalizeCommonVaultError(msg);
|
|
492
|
+
if (common)
|
|
493
|
+
return common;
|
|
493
494
|
return raw;
|
|
494
495
|
}
|
|
495
496
|
// ─── cardSale error map (mirrors checkout/src/utils/errorMapping.ts exactly) ─
|
|
@@ -723,7 +724,6 @@ function validateBilling(billing) {
|
|
|
723
724
|
return { valid: errors.length === 0, errors, normalized };
|
|
724
725
|
}
|
|
725
726
|
|
|
726
|
-
const DEFAULT_API_URL = "https://pci-vault-staging-drc0duhcakf4g4fr.eastus-01.azurewebsites.net";
|
|
727
727
|
const DEFAULT_FRAME_BASE_URL = "https://lively-hill-097170c0f.4.azurestaticapps.net";
|
|
728
728
|
/**
|
|
729
729
|
* The main entry point for OzElements. Creates and manages iframe-based
|
|
@@ -759,12 +759,11 @@ class OzVault {
|
|
|
759
759
|
}
|
|
760
760
|
this.apiKey = apiKey;
|
|
761
761
|
this.pubKey = options.pubKey;
|
|
762
|
-
this.apiUrl = options.apiUrl || DEFAULT_API_URL;
|
|
763
762
|
this.frameBaseUrl = options.frameBaseUrl || DEFAULT_FRAME_BASE_URL;
|
|
764
763
|
this.frameOrigin = new URL(this.frameBaseUrl).origin;
|
|
765
764
|
this.fonts = (_a = options.fonts) !== null && _a !== void 0 ? _a : [];
|
|
766
765
|
this.resolvedAppearance = resolveAppearance(options.appearance);
|
|
767
|
-
this.vaultId = `vault-${
|
|
766
|
+
this.vaultId = `vault-${crypto.randomUUID()}`;
|
|
768
767
|
this.tokenizerName = `__oz_tok_${this.vaultId}`;
|
|
769
768
|
this.boundHandleMessage = this.handleMessage.bind(this);
|
|
770
769
|
window.addEventListener('message', this.boundHandleMessage);
|
|
@@ -792,19 +791,7 @@ class OzVault {
|
|
|
792
791
|
* returned element to attach it to the DOM.
|
|
793
792
|
*/
|
|
794
793
|
createElement(type, options = {}) {
|
|
795
|
-
|
|
796
|
-
throw new OzError('Cannot create elements on a destroyed vault. Create a new OzVault instance.');
|
|
797
|
-
}
|
|
798
|
-
const existing = this.elementsByType.get(type);
|
|
799
|
-
if (existing) {
|
|
800
|
-
this.elements.delete(existing.frameId);
|
|
801
|
-
this.completionState.delete(existing.frameId);
|
|
802
|
-
existing.destroy();
|
|
803
|
-
}
|
|
804
|
-
const el = new OzElement(type, options, this.vaultId, this.frameBaseUrl, this.fonts, this.resolvedAppearance);
|
|
805
|
-
this.elements.set(el.frameId, el);
|
|
806
|
-
this.elementsByType.set(type, el);
|
|
807
|
-
return el;
|
|
794
|
+
return this.createElementInto(this.elementsByType, type, options);
|
|
808
795
|
}
|
|
809
796
|
/** Returns the existing element of the given type, or null if none has been created. */
|
|
810
797
|
getElement(type) {
|
|
@@ -822,10 +809,18 @@ class OzVault {
|
|
|
822
809
|
* routingEl.mount('#routing-number');
|
|
823
810
|
*/
|
|
824
811
|
createBankElement(type, options = {}) {
|
|
812
|
+
return this.createElementInto(this.bankElementsByType, type, options);
|
|
813
|
+
}
|
|
814
|
+
/** Returns the existing bank element of the given type, or null if none has been created. */
|
|
815
|
+
getBankElement(type) {
|
|
816
|
+
var _a;
|
|
817
|
+
return (_a = this.bankElementsByType.get(type)) !== null && _a !== void 0 ? _a : null;
|
|
818
|
+
}
|
|
819
|
+
createElementInto(typeMap, type, options) {
|
|
825
820
|
if (this._destroyed) {
|
|
826
821
|
throw new OzError('Cannot create elements on a destroyed vault. Create a new OzVault instance.');
|
|
827
822
|
}
|
|
828
|
-
const existing =
|
|
823
|
+
const existing = typeMap.get(type);
|
|
829
824
|
if (existing) {
|
|
830
825
|
this.elements.delete(existing.frameId);
|
|
831
826
|
this.completionState.delete(existing.frameId);
|
|
@@ -833,14 +828,9 @@ class OzVault {
|
|
|
833
828
|
}
|
|
834
829
|
const el = new OzElement(type, options, this.vaultId, this.frameBaseUrl, this.fonts, this.resolvedAppearance);
|
|
835
830
|
this.elements.set(el.frameId, el);
|
|
836
|
-
|
|
831
|
+
typeMap.set(type, el);
|
|
837
832
|
return el;
|
|
838
833
|
}
|
|
839
|
-
/** Returns the existing bank element of the given type, or null if none has been created. */
|
|
840
|
-
getBankElement(type) {
|
|
841
|
-
var _a;
|
|
842
|
-
return (_a = this.bankElementsByType.get(type)) !== null && _a !== void 0 ? _a : null;
|
|
843
|
-
}
|
|
844
834
|
/**
|
|
845
835
|
* Tokenizes mounted bank account elements. Raw account and routing numbers
|
|
846
836
|
* never leave the Ozura-origin iframes — the tokenizer iframe POSTs directly
|
|
@@ -876,6 +866,12 @@ class OzVault {
|
|
|
876
866
|
if (!((_b = options.lastName) === null || _b === void 0 ? void 0 : _b.trim())) {
|
|
877
867
|
throw new OzError('lastName is required for bank account tokenization.');
|
|
878
868
|
}
|
|
869
|
+
if (options.firstName.trim().length > 50) {
|
|
870
|
+
throw new OzError('firstName must be 50 characters or fewer');
|
|
871
|
+
}
|
|
872
|
+
if (options.lastName.trim().length > 50) {
|
|
873
|
+
throw new OzError('lastName must be 50 characters or fewer');
|
|
874
|
+
}
|
|
879
875
|
const accountEl = this.bankElementsByType.get('accountNumber');
|
|
880
876
|
const routingEl = this.bankElementsByType.get('routingNumber');
|
|
881
877
|
const accountReady = !!accountEl && this.elements.has(accountEl.frameId) && accountEl.isReady;
|
|
@@ -901,7 +897,6 @@ class OzVault {
|
|
|
901
897
|
this.sendToTokenizer({
|
|
902
898
|
type: 'OZ_BANK_TOKENIZE',
|
|
903
899
|
requestId,
|
|
904
|
-
apiUrl: this.apiUrl,
|
|
905
900
|
apiKey: this.apiKey,
|
|
906
901
|
pubKey: this.pubKey,
|
|
907
902
|
firstName: options.firstName.trim(),
|
|
@@ -987,7 +982,6 @@ class OzVault {
|
|
|
987
982
|
this.sendToTokenizer({
|
|
988
983
|
type: 'OZ_TOKENIZE',
|
|
989
984
|
requestId,
|
|
990
|
-
apiUrl: this.apiUrl,
|
|
991
985
|
apiKey: this.apiKey,
|
|
992
986
|
pubKey: this.pubKey,
|
|
993
987
|
firstName,
|
|
@@ -1186,5 +1180,5 @@ class OzVault {
|
|
|
1186
1180
|
}
|
|
1187
1181
|
}
|
|
1188
1182
|
|
|
1189
|
-
export { OzElement, OzError, OzVault, normalizeCardSaleError, normalizeVaultError };
|
|
1183
|
+
export { OzElement, OzError, OzVault, normalizeBankVaultError, normalizeCardSaleError, normalizeVaultError };
|
|
1190
1184
|
//# sourceMappingURL=oz-elements.esm.js.map
|