@basis-theory/web-elements 3.0.0-beta.4 → 3.0.0-beta.5

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.
Files changed (108) hide show
  1. package/dist/.vite/manifest.json +22 -11
  2. package/dist/basis-theory-sdk.es.js +1 -1
  3. package/dist/basis-theory-sdk.umd.js +1 -1
  4. package/dist/basis-theory-sdk.umd.js.map +1 -1
  5. package/dist/{create-card-B5zEHyRg.js → create-card-CB_YcP_4.js} +10 -6
  6. package/dist/create-card-CB_YcP_4.js.map +1 -0
  7. package/dist/create-card-display-kBupMJwe.js +280 -0
  8. package/dist/create-card-display-kBupMJwe.js.map +1 -0
  9. package/dist/{create-copy-button-DrAz8g0m.js → create-copy-button-2XtKTEo3.js} +5 -2
  10. package/dist/create-copy-button-2XtKTEo3.js.map +1 -0
  11. package/dist/{index-BOedIhUN.js → index-Dyy7tm5Z.js} +325 -108
  12. package/dist/index-Dyy7tm5Z.js.map +1 -0
  13. package/dist/index.d.ts +1119 -0
  14. package/dist/loader/basis-theory.min.js +1 -1
  15. package/dist/sri.json +9 -9
  16. package/dist/stats.html +1 -1
  17. package/package.json +12 -12
  18. package/dist/api-client/src/api-client.d.ts +0 -11
  19. package/dist/api-client/src/api-client.d.ts.map +0 -1
  20. package/dist/api-client/src/bin-lookup-transform.d.ts +0 -35
  21. package/dist/api-client/src/bin-lookup-transform.d.ts.map +0 -1
  22. package/dist/api-client/src/http-client.d.ts +0 -24
  23. package/dist/api-client/src/http-client.d.ts.map +0 -1
  24. package/dist/api-client/src/index.d.ts +0 -9
  25. package/dist/api-client/src/index.d.ts.map +0 -1
  26. package/dist/api-client/src/services/sessions.d.ts +0 -19
  27. package/dist/api-client/src/services/sessions.d.ts.map +0 -1
  28. package/dist/api-client/src/services/token-intents.d.ts +0 -17
  29. package/dist/api-client/src/services/token-intents.d.ts.map +0 -1
  30. package/dist/api-client/src/services/tokens.d.ts +0 -19
  31. package/dist/api-client/src/services/tokens.d.ts.map +0 -1
  32. package/dist/api-client/src/types.d.ts +0 -421
  33. package/dist/api-client/src/types.d.ts.map +0 -1
  34. package/dist/create-card-B5zEHyRg.js.map +0 -1
  35. package/dist/create-copy-button-DrAz8g0m.js.map +0 -1
  36. package/dist/index-BOedIhUN.js.map +0 -1
  37. package/dist/postmessage/src/client.d.ts +0 -7
  38. package/dist/postmessage/src/client.d.ts.map +0 -1
  39. package/dist/postmessage/src/event-map.d.ts +0 -139
  40. package/dist/postmessage/src/event-map.d.ts.map +0 -1
  41. package/dist/postmessage/src/index.d.ts +0 -9
  42. package/dist/postmessage/src/index.d.ts.map +0 -1
  43. package/dist/postmessage/src/server.d.ts +0 -11
  44. package/dist/postmessage/src/server.d.ts.map +0 -1
  45. package/dist/postmessage/src/types.d.ts +0 -75
  46. package/dist/postmessage/src/types.d.ts.map +0 -1
  47. package/dist/shared/src/api-url-resolver.d.ts +0 -22
  48. package/dist/shared/src/api-url-resolver.d.ts.map +0 -1
  49. package/dist/shared/src/debug-logger.d.ts +0 -16
  50. package/dist/shared/src/debug-logger.d.ts.map +0 -1
  51. package/dist/shared/src/deep-sanitization.d.ts +0 -24
  52. package/dist/shared/src/deep-sanitization.d.ts.map +0 -1
  53. package/dist/shared/src/errors.d.ts +0 -93
  54. package/dist/shared/src/errors.d.ts.map +0 -1
  55. package/dist/shared/src/generate-id.d.ts +0 -13
  56. package/dist/shared/src/generate-id.d.ts.map +0 -1
  57. package/dist/shared/src/index.d.ts +0 -14
  58. package/dist/shared/src/index.d.ts.map +0 -1
  59. package/dist/shared/src/logger-context.d.ts +0 -25
  60. package/dist/shared/src/logger-context.d.ts.map +0 -1
  61. package/dist/shared/src/proxy-validation.d.ts +0 -93
  62. package/dist/shared/src/proxy-validation.d.ts.map +0 -1
  63. package/dist/web-elements/src/BasisTheory.d.ts +0 -47
  64. package/dist/web-elements/src/BasisTheory.d.ts.map +0 -1
  65. package/dist/web-elements/src/basis-theory.d.ts +0 -85
  66. package/dist/web-elements/src/basis-theory.d.ts.map +0 -1
  67. package/dist/web-elements/src/elements/create-card-number.d.ts +0 -15
  68. package/dist/web-elements/src/elements/create-card-number.d.ts.map +0 -1
  69. package/dist/web-elements/src/elements/create-card.d.ts +0 -50
  70. package/dist/web-elements/src/elements/create-card.d.ts.map +0 -1
  71. package/dist/web-elements/src/elements/create-copy-button.d.ts +0 -19
  72. package/dist/web-elements/src/elements/create-copy-button.d.ts.map +0 -1
  73. package/dist/web-elements/src/elements/create-cvv.d.ts +0 -11
  74. package/dist/web-elements/src/elements/create-cvv.d.ts.map +0 -1
  75. package/dist/web-elements/src/elements/create-expiry.d.ts +0 -11
  76. package/dist/web-elements/src/elements/create-expiry.d.ts.map +0 -1
  77. package/dist/web-elements/src/elements/create-text.d.ts +0 -14
  78. package/dist/web-elements/src/elements/create-text.d.ts.map +0 -1
  79. package/dist/web-elements/src/index.d.ts +0 -27
  80. package/dist/web-elements/src/index.d.ts.map +0 -1
  81. package/dist/web-elements/src/mounter/create-mounter.d.ts +0 -11
  82. package/dist/web-elements/src/mounter/create-mounter.d.ts.map +0 -1
  83. package/dist/web-elements/src/theme/default-theme.d.ts +0 -22
  84. package/dist/web-elements/src/theme/default-theme.d.ts.map +0 -1
  85. package/dist/web-elements/src/theme/inject-theme-dark.d.ts +0 -13
  86. package/dist/web-elements/src/theme/inject-theme-dark.d.ts.map +0 -1
  87. package/dist/web-elements/src/theme/inject-theme.d.ts +0 -20
  88. package/dist/web-elements/src/theme/inject-theme.d.ts.map +0 -1
  89. package/dist/web-elements/src/types/events.d.ts +0 -165
  90. package/dist/web-elements/src/types/events.d.ts.map +0 -1
  91. package/dist/web-elements/src/types/theme.d.ts +0 -91
  92. package/dist/web-elements/src/types/theme.d.ts.map +0 -1
  93. package/dist/web-elements/src/types.d.ts +0 -667
  94. package/dist/web-elements/src/types.d.ts.map +0 -1
  95. package/dist/web-elements/src/utils/create-event-dispatcher.d.ts +0 -47
  96. package/dist/web-elements/src/utils/create-event-dispatcher.d.ts.map +0 -1
  97. package/dist/web-elements/src/utils/create-iframe.d.ts +0 -10
  98. package/dist/web-elements/src/utils/create-iframe.d.ts.map +0 -1
  99. package/dist/web-elements/src/utils/resolve-element-references.d.ts +0 -20
  100. package/dist/web-elements/src/utils/resolve-element-references.d.ts.map +0 -1
  101. package/dist/web-elements/src/utils/validate-element-options.d.ts +0 -11
  102. package/dist/web-elements/src/utils/validate-element-options.d.ts.map +0 -1
  103. package/dist/web-elements/src/utils/validate-sdk-config.d.ts +0 -15
  104. package/dist/web-elements/src/utils/validate-sdk-config.d.ts.map +0 -1
  105. package/dist/web-elements/src/utils/warn-unknown-keys.d.ts +0 -15
  106. package/dist/web-elements/src/utils/warn-unknown-keys.d.ts.map +0 -1
  107. package/dist/web-elements/src/version.d.ts +0 -25
  108. package/dist/web-elements/src/version.d.ts.map +0 -1
@@ -1,667 +0,0 @@
1
- /**
2
- * Type definitions for @basis-theory/web-elements
3
- */
4
- import type { TokenIntent } from '@basis-theory-elements/api-client';
5
- import type { ElementType } from './types/events';
6
- import type { ThemeMode, ThemeTokens } from './types/theme';
7
- export type { TokenIntent };
8
- /**
9
- * Transform pattern for modifying input before tokenization
10
- * [pattern, replacement] - uses String.prototype.replace(pattern, replacement)
11
- *
12
- * @example
13
- * // Remove dashes from SSN: "123-45-6789" → "123456789"
14
- * const ssnTransform: Transform = [/-/g, ''];
15
- *
16
- * @example
17
- * // Remove all non-digits from phone: "(555) 123-4567" → "5551234567"
18
- * const phoneTransform: Transform = [/\D/g, ''];
19
- */
20
- export type Transform = [RegExp, string];
21
- export interface SDKOptions {
22
- /**
23
- * Base URL where element iframes are hosted
24
- * FRD-2026-003: Now defaults to production CDN (build-time injected, environment-specific)
25
- * @default 'https://js.basistheory.com/{version}/elements' (production)
26
- * @example 'http://localhost:4243' (for local development)
27
- */
28
- elementsBaseUrl?: string;
29
- /**
30
- * @deprecated Use `elementsBaseUrl` instead
31
- * Origin of the iframe host (where element.html is served)
32
- */
33
- iframeOrigin?: string;
34
- /**
35
- * API base URL for tokenization and API operations
36
- * Auto-detects based on page origin by default:
37
- * - localhost/flock-dev.com → https://js.flock-dev.com/api (dev)
38
- * - btsandbox.com → https://js.btsandbox.com/api (uat)
39
- * - basistheory.com → https://js.basistheory.com/api (prod)
40
- * - other origins → https://js.basistheory.com/api (prod default)
41
- *
42
- * Override for:
43
- * - Testing against custom API environments
44
- * - Corporate proxies routing API calls
45
- * - Regional API endpoints
46
- *
47
- * @default Auto-detected based on window.location.origin
48
- * @example 'https://api-proxy.company.com/basistheory'
49
- */
50
- apiBaseUrl?: string;
51
- /**
52
- * Enable debug logging
53
- * @default false
54
- */
55
- debug?: boolean;
56
- /**
57
- * Enable performance monitoring (bundle size, load times, compression metrics)
58
- * When enabled, automatically measures and logs performance after elements load
59
- * @default false
60
- */
61
- measurePerformance?: boolean;
62
- /**
63
- * PostMessage timeout (milliseconds)
64
- * Increase this for slow network connections (3G, etc.)
65
- * @default 30000
66
- */
67
- timeoutMs?: number;
68
- /**
69
- * PostMessage retry configuration
70
- */
71
- retryConfig?: {
72
- maxRetries: number;
73
- delayMs: number;
74
- backoffFactor: number;
75
- };
76
- /**
77
- * Theme mode: 'light', 'dark', or 'auto' (follows prefers-color-scheme)
78
- * @default 'auto'
79
- */
80
- themeMode?: ThemeMode;
81
- /**
82
- * Theme configuration (design tokens)
83
- * CSS variables will be injected into element iframes
84
- *
85
- * Supports light/dark themes via themeMode or separate theme/darkTheme objects
86
- *
87
- * @example
88
- * ```typescript
89
- * theme: {
90
- * colors: {
91
- * primary: '#007bff',
92
- * error: '#EA4B97',
93
- * text: '#1a1a1a',
94
- * },
95
- * typography: {
96
- * fontFamily: 'Inter, sans-serif',
97
- * fontSize: { base: '16px' },
98
- * fontWeight: { normal: '400' },
99
- * },
100
- * spacing: { sm: '8px', md: '12px', lg: '16px' },
101
- * borders: {
102
- * radius: { base: '4px' },
103
- * width: { base: '2px' },
104
- * },
105
- * }
106
- * ```
107
- */
108
- theme?: ThemeTokens;
109
- /**
110
- * Optional dark theme configuration
111
- * Used when themeMode is 'dark' or 'auto' in dark mode
112
- *
113
- * If not provided, will use theme with adjusted colors for dark mode
114
- */
115
- darkTheme?: ThemeTokens;
116
- }
117
- export interface SDKConfig {
118
- iframeOrigin: string;
119
- elementsBaseUrl: string;
120
- apiBaseUrl?: string;
121
- debug: boolean;
122
- measurePerformance: boolean;
123
- timeoutMs: number;
124
- themeMode: ThemeMode;
125
- theme: ThemeTokens;
126
- darkTheme?: ThemeTokens;
127
- retryConfig: {
128
- maxRetries: number;
129
- delayMs: number;
130
- backoffFactor: number;
131
- };
132
- }
133
- export type { ElementType } from './types/events';
134
- export type EventType = 'change' | 'ready' | 'networkChanged' | 'focus' | 'blur' | 'error' | 'copy';
135
- export interface ElementOptions {
136
- /**
137
- * Placeholder text displayed when input is empty.
138
- * For card elements, an object with per-field placeholders.
139
- */
140
- placeholder?: string | {
141
- cardNumber?: string;
142
- expiryDate?: string;
143
- cvc?: string;
144
- };
145
- /**
146
- * ARIA label for accessibility
147
- * @default Based on element type (e.g., 'Card Number')
148
- */
149
- ariaLabel?: string;
150
- /**
151
- * Disable the input
152
- * @default false
153
- */
154
- disabled?: boolean;
155
- /**
156
- * Make the input read-only
157
- * @default false
158
- */
159
- readOnly?: boolean;
160
- /**
161
- * RegExp pattern for validation
162
- * Only applicable to text elements
163
- * @example /^[a-zA-Z\s]{2,50}$/ for names
164
- * @example /^\d{3}-\d{2}-\d{4}$/ for SSN
165
- */
166
- validation?: RegExp;
167
- /**
168
- * Whether the field is required
169
- * Only applicable to text elements
170
- * @default false
171
- */
172
- required?: boolean;
173
- /**
174
- * Maximum input length
175
- * Only applicable to text elements
176
- * @example 50 for name fields
177
- */
178
- maxLength?: number;
179
- /**
180
- * Enable password mode (type="password")
181
- * Only applicable to text elements
182
- * @default false
183
- */
184
- password?: boolean;
185
- /**
186
- * Mobile keyboard hint
187
- * Only applicable to text elements
188
- * @example 'numeric', 'tel', 'email'
189
- */
190
- inputMode?: string;
191
- /**
192
- * Input masking pattern (lazy-loaded ~5KB module)
193
- * Only applicable to text elements
194
- *
195
- * @example
196
- * // SSN: XXX-XX-XXXX
197
- * mask: [/\d/, /\d/, /\d/, '-', /\d/, /\d/, '-', /\d/, /\d/, /\d/, /\d/]
198
- *
199
- * // Phone: (XXX) XXX-XXXX
200
- * mask: ['(', /\d/, /\d/, /\d/, ')', ' ', /\d/, /\d/, /\d/, '-', /\d/, /\d/, /\d/, /\d/]
201
- */
202
- mask?: (RegExp | string)[];
203
- /**
204
- * Transform pattern before tokenization
205
- * Only applicable to text elements
206
- *
207
- * @example
208
- * // Remove dashes from SSN before tokenization
209
- * transform: [/-/g, '']
210
- */
211
- transform?: Transform;
212
- /**
213
- * Renders a show/hide toggle button inside the CVV field.
214
- * Clicking toggles between `type="password"` and `type="text"`.
215
- * CVV element only. Set at creation time only — runtime updates via
216
- * `element.update()` are not supported.
217
- * @default false
218
- */
219
- showToggle?: boolean;
220
- /**
221
- * Card brand (auto-set by SDK when card number element detects brand)
222
- * Used internally for CVV element coordination
223
- * @internal
224
- */
225
- cardBrand?: string;
226
- /**
227
- * CVV lengths array (auto-set by SDK when card number element detects brand)
228
- * Used internally for CVV element maxlength coordination
229
- * Example: [4] for Amex, [3] for Visa/Mastercard
230
- * @internal
231
- */
232
- cvvLengths?: number[];
233
- /**
234
- * Layout mode for unified card element
235
- * Only applicable to card elements
236
- * @default 'auto'
237
- */
238
- layout?: 'row' | 'column' | 'auto';
239
- /**
240
- * Stack threshold in pixels (only applies when layout: 'auto')
241
- * Only applicable to card elements
242
- * @default 400
243
- */
244
- stackAt?: number;
245
- /**
246
- * Icon position for card brand icon
247
- * Only applicable to card elements
248
- * @default 'right'
249
- */
250
- iconPosition?: 'left' | 'right' | 'none';
251
- /**
252
- * Restrict accepted card brands
253
- * Only applicable to card elements
254
- */
255
- cardBrands?: string[];
256
- /**
257
- * Enable BIN enrichment (6-digit) for the card number field (standalone or unified card).
258
- * When true, co-badge networks are detected and `selectedNetwork` is available when applicable.
259
- * If omitted but `coBadge` is set, BIN enrichment is enabled automatically unless explicitly
260
- * disabled here (`false` or `{ enabled: false }`).
261
- */
262
- binLookup?: boolean | {
263
- enabled?: boolean;
264
- debounceMs?: number;
265
- };
266
- /**
267
- * Co-badge: network priority and optional in-iframe network selector (manual mode).
268
- * Implies BIN enrichment when set; you do not need to pass `binLookup` unless you want to
269
- * tune `debounceMs` or opt out with `binLookup: false`.
270
- */
271
- coBadge?: {
272
- preferredNetworks?: string[];
273
- mode?: 'auto' | 'manual';
274
- };
275
- }
276
- export interface Element {
277
- /**
278
- * Unique identifier for the element
279
- */
280
- readonly id: string;
281
- /**
282
- * Element type ('cardNumber', 'cvv', 'expiry')
283
- */
284
- readonly type: ElementType;
285
- /**
286
- * Whether the element is currently mounted to the DOM
287
- */
288
- readonly mounted: boolean;
289
- /**
290
- * Mount the element to a DOM container
291
- * @param selector - CSS selector or HTMLElement
292
- */
293
- mount(selector: string | HTMLElement): Promise<void>;
294
- /**
295
- * Unmount the element from the DOM
296
- */
297
- unmount(): void;
298
- /**
299
- * Update element configuration (placeholder, style, theme mode, etc.)
300
- */
301
- update(options: Partial<ElementOptions> & {
302
- themeMode?: 'light' | 'dark' | 'auto';
303
- }): Promise<void>;
304
- /**
305
- * Focus the input
306
- */
307
- focus(): void;
308
- /**
309
- * Blur the input
310
- */
311
- blur(): void;
312
- /**
313
- * Clear the input value
314
- */
315
- clear(): void;
316
- /**
317
- * Listen for element events
318
- * @returns Unsubscribe function
319
- */
320
- on(eventType: EventType, listener: EventListener): () => void;
321
- /**
322
- * Override selected payment network for co-badge cards (card number element only)
323
- */
324
- setNetwork?(network: string): Promise<void>;
325
- }
326
- export type EventListener = (event: CustomEvent) => void;
327
- /**
328
- * Re-export unified event types from ./types/events
329
- * All events now include BaseEventDetail (elementType, elementId, timestamp)
330
- */
331
- export type { BaseEventDetail, BlurEventDetail, CardElementChangeEventDetail, CardNumberChangeEventDetail, ChangeEventDetail, CopyEventDetail, ElementEventDetailMap, ElementEventListener, ElementEventType, ErrorCode, ErrorEventDetail, FocusEventDetail, NetworkChangedEventDetail, ReadyEventDetail, ValidationError, } from './types/events';
332
- /** Primitive or an Element reference — resolved to a value during tokenization */
333
- export type ElementLeaf = string | number | boolean | null | undefined | Element;
334
- /** Freeform object that may contain Element references at any depth */
335
- export interface ElementInputObject {
336
- [key: string]: ElementLeaf | ElementInputObject | ElementInputArray;
337
- }
338
- /** Array that may contain Element references at any depth */
339
- export type ElementInputArray = Array<ElementLeaf | ElementInputObject | ElementInputArray>;
340
- export interface TokenCreateRequest {
341
- type: string;
342
- data: ElementInputObject;
343
- metadata?: Record<string, string>;
344
- containers?: string[];
345
- mask?: Record<string, unknown>;
346
- aliases?: string[];
347
- search_indexes?: string[];
348
- fingerprint_expression?: string;
349
- expires_at?: string;
350
- }
351
- /** Token `type` is immutable after creation */
352
- export type TokenUpdateRequest = Omit<Partial<TokenCreateRequest>, 'type'>;
353
- export interface TokenIntentRequest {
354
- type: string;
355
- data: ElementInputObject;
356
- }
357
- export type TokenizeInput = {
358
- cardNumber: Element;
359
- } | {
360
- number: Element;
361
- cvv: Element;
362
- expiry: Element;
363
- };
364
- /**
365
- * Session response (snake_case to match BasisTheory API)
366
- */
367
- export interface Session {
368
- /** Unique session nonce */
369
- nonce: string;
370
- /** Session expiration timestamp (ISO 8601 format) */
371
- expires_at?: string;
372
- }
373
- export interface TokenizeResult {
374
- id: string;
375
- type: 'card' | 'token';
376
- mask?: string;
377
- brand?: string;
378
- expiry?: {
379
- month: number;
380
- year: number;
381
- };
382
- metadata?: Record<string, unknown>;
383
- }
384
- /**
385
- * Token data for encryption
386
- */
387
- export interface EncryptToken {
388
- type: string;
389
- data: ElementInputObject;
390
- }
391
- /**
392
- * Encrypted token result
393
- */
394
- export interface EncryptedToken {
395
- encrypted: string;
396
- type: string;
397
- }
398
- /**
399
- * Options for {@link BasisTheorySDK.proxy} — HTTP verb is chosen by the method name.
400
- */
401
- export interface ProxyRequestOptions {
402
- /** Destination URL (ephemeral proxy). Mutually exclusive with `proxyKey`. */
403
- url?: string;
404
- /** Pre-configured proxy key. Mutually exclusive with `url`. */
405
- proxyKey?: string;
406
- /** Headers forwarded to the destination request */
407
- headers?: Record<string, string>;
408
- /** Request body; may contain Element references */
409
- body?: ElementInputObject | unknown;
410
- /** When true, the API may return response metadata alongside data */
411
- includeResponseHeaders?: boolean;
412
- }
413
- /**
414
- * Proxy result when `includeResponseHeaders` is true (matches common API envelope).
415
- */
416
- export interface ProxyResponse {
417
- data: unknown;
418
- headers: Record<string, string>;
419
- }
420
- /**
421
- * Sub-element reference for tokenization (used in CardElement)
422
- */
423
- export interface SubElementRef {
424
- id: string;
425
- type: string;
426
- mounted: boolean;
427
- mount: () => never;
428
- unmount: () => void;
429
- update: () => Promise<void>;
430
- focus: () => void;
431
- blur: () => void;
432
- clear: () => void;
433
- on: () => () => void;
434
- }
435
- /**
436
- * Card element with sub-field refs
437
- */
438
- export interface CardElement extends Element {
439
- fields: {
440
- number: SubElementRef;
441
- expiryDate: SubElementRef;
442
- cvc: SubElementRef;
443
- };
444
- }
445
- export type { CardElementOptions } from './elements/create-card';
446
- /**
447
- * Options specific to the CopyButton element
448
- *
449
- * SECURITY NOTE: This element is opt-in only via allowClipboard: true.
450
- * Clipboard access for raw card data may not be PCI compliant and must
451
- * never be enabled inadvertently.
452
- */
453
- export interface CopyButtonOptions {
454
- /**
455
- * REQUIRED: Explicitly opt-in to clipboard access
456
- * Must be set to true - throws ConfigurationError if missing
457
- *
458
- * @security This flag exists because clipboard access for raw card data
459
- * may not be PCI compliant and must never be enabled inadvertently.
460
- */
461
- allowClipboard: true;
462
- /**
463
- * Static string value to copy when clicked
464
- * Overridden by setValueRef() if called
465
- */
466
- value?: string;
467
- /**
468
- * Label text displayed on the button
469
- * @default 'Copy'
470
- */
471
- text?: string;
472
- /**
473
- * Disable the button
474
- * @default false
475
- */
476
- disabled?: boolean;
477
- }
478
- /**
479
- * CopyButton element with setValueRef method
480
- */
481
- export interface CopyButtonElement extends Element {
482
- /**
483
- * Link this copy button to another element's value
484
- * When clicked, copies the linked element's current value
485
- *
486
- * @param element - The element to link to (e.g., cardNumber, text)
487
- *
488
- * @example
489
- * ```typescript
490
- * const cardNumber = bt.createElement('cardNumber');
491
- * const copyBtn = bt.createElement('copyButton', { allowClipboard: true });
492
- *
493
- * copyBtn.setValueRef(cardNumber);
494
- *
495
- * // Now clicking copyBtn will copy the card number value
496
- * ```
497
- */
498
- setValueRef(element: Element): Promise<void>;
499
- }
500
- export interface BasisTheorySDK {
501
- /**
502
- * Create a new element instance
503
- * Returns Element instance immediately (synchronous)
504
- */
505
- createElement(type: 'card', options?: ElementOptions): CardElement;
506
- createElement(type: 'copyButton', options: CopyButtonOptions): CopyButtonElement;
507
- createElement(type: Exclude<ElementType, 'card' | 'copyButton'>, options?: ElementOptions): Element;
508
- createElement(type: ElementType, options?: ElementOptions | CopyButtonOptions): Element | CardElement | CopyButtonElement;
509
- /**
510
- * Tokenize data (creates a token)
511
- */
512
- tokenize(data: ElementInputObject): Promise<TokenizeResult>;
513
- /**
514
- * Token CRUD operations
515
- * Supports Element references - automatically resolves to secure values
516
- *
517
- * @example
518
- * ```typescript
519
- * // Create token with Elements (element references resolved automatically)
520
- * const token = await bt.tokens.create({
521
- * type: 'card',
522
- * data: {
523
- * number: cardNumberElement,
524
- * expiration_month: expiryElement,
525
- * cvc: cvvElement
526
- * }
527
- * });
528
- *
529
- * // Retrieve token
530
- * const retrieved = await bt.tokens.retrieve(token.id);
531
- *
532
- * // Update token metadata
533
- * await bt.tokens.update(token.id, {
534
- * metadata: { source: 'updated' }
535
- * });
536
- *
537
- * // Encrypt token with client-side JWE
538
- * const encrypted = await bt.tokens.encrypt(
539
- * { type: 'card', data: { number: cardNumberElement } },
540
- * publicKeyPEM,
541
- * 'key-id-123'
542
- * );
543
- * ```
544
- */
545
- tokens: {
546
- create(data: TokenCreateRequest): Promise<TokenizeResult>;
547
- retrieve(id: string, options?: {
548
- apiKey?: string;
549
- }): Promise<TokenizeResult>;
550
- update(id: string, data: TokenUpdateRequest): Promise<TokenizeResult>;
551
- encrypt(tokenData: EncryptToken | Record<string, EncryptToken>, publicKeyPEM: string, keyId: string): Promise<EncryptedToken | Record<string, EncryptedToken>>;
552
- };
553
- /**
554
- * Token Intent operations (short-lived sensitive data validation)
555
- * Supports Element references - automatically resolves to secure values
556
- *
557
- * @example
558
- * ```typescript
559
- * // Create token intent with Elements
560
- * const intent = await bt.tokenIntents.create({
561
- * type: 'card',
562
- * data: {
563
- * number: cardNumberElement,
564
- * expiration_month: 12,
565
- * expiration_year: 2025,
566
- * cvc: cvvElement
567
- * }
568
- * });
569
- *
570
- * // Retrieve token intent
571
- * const retrieved = await bt.tokenIntents.get(intent.id);
572
- * ```
573
- */
574
- tokenIntents: {
575
- create(data: TokenIntentRequest, options?: {
576
- apiKey?: string;
577
- }): Promise<TokenIntent>;
578
- get(id: string, options?: {
579
- apiKey?: string;
580
- }): Promise<TokenIntent>;
581
- };
582
- /**
583
- * Session management for temporary elevated access
584
- *
585
- * Creates a session that provides temporary elevated access to tokenized data.
586
- * Sessions MUST be authorized by a Private Application on your backend.
587
- *
588
- * @example
589
- * ```typescript
590
- * // Create a session (frontend)
591
- * const session = await bt.sessions.create();
592
- * console.log('Session nonce:', session.nonce);
593
- *
594
- * // Session must be authorized on backend before use
595
- * // Once authorized, use the session API key with tokens.retrieve()
596
- * const token = await bt.tokens.retrieve(tokenId, {
597
- * apiKey: sessionApiKey // From authorized session
598
- * });
599
- * ```
600
- */
601
- sessions: {
602
- create(): Promise<Session>;
603
- };
604
- /**
605
- * Proxy HTTP requests through Basis Theory (Element references in `body` are resolved in the coordinator).
606
- */
607
- proxy: {
608
- get(options: ProxyRequestOptions & {
609
- includeResponseHeaders: true;
610
- }): Promise<ProxyResponse>;
611
- get(options?: ProxyRequestOptions): Promise<unknown>;
612
- post(options: ProxyRequestOptions & {
613
- includeResponseHeaders: true;
614
- }): Promise<ProxyResponse>;
615
- post(options?: ProxyRequestOptions): Promise<unknown>;
616
- put(options: ProxyRequestOptions & {
617
- includeResponseHeaders: true;
618
- }): Promise<ProxyResponse>;
619
- put(options?: ProxyRequestOptions): Promise<unknown>;
620
- patch(options: ProxyRequestOptions & {
621
- includeResponseHeaders: true;
622
- }): Promise<ProxyResponse>;
623
- patch(options?: ProxyRequestOptions): Promise<unknown>;
624
- delete(options: ProxyRequestOptions & {
625
- includeResponseHeaders: true;
626
- }): Promise<ProxyResponse>;
627
- delete(options?: ProxyRequestOptions): Promise<unknown>;
628
- };
629
- /**
630
- * Update the theme mode for all mounted elements
631
- *
632
- * @param mode - Theme mode to apply ('light', 'dark', or 'auto')
633
- * @returns Promise that resolves when all elements have been updated
634
- *
635
- * @example
636
- * ```typescript
637
- * await bt.updateThemeMode('dark');
638
- * ```
639
- */
640
- updateThemeMode(mode: ThemeMode): Promise<void>;
641
- }
642
- /**
643
- * PERFORMANCE OPTIMIZATION (Step 3):
644
- * Element factories now receive LAZY coordinator initializer
645
- * mount() calls this function to trigger initialization when needed
646
- */
647
- export interface ElementFactory {
648
- (apiKey: string, config: SDKConfig, options: ElementOptions | CopyButtonOptions | undefined, elementId: string, ensureCoordinatorReady: () => Promise<void>): Element;
649
- }
650
- export interface MountConfig {
651
- timeoutMs: number;
652
- }
653
- export interface ElementMounter {
654
- mount(container: HTMLElement, iframe: HTMLIFrameElement, config: MountConfig): Promise<void>;
655
- unmount(iframe: HTMLIFrameElement): void;
656
- }
657
- export interface IframeConfig {
658
- src: string;
659
- sandbox: string;
660
- title: string;
661
- /**
662
- * Feature policy/permissions for the iframe (e.g., 'clipboard-write', 'payment *')
663
- * @default 'payment *'
664
- */
665
- allow?: string;
666
- }
667
- //# sourceMappingURL=types.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/types.ts"],"names":[],"mappings":"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"}