@basis-theory/react-elements 1.5.0 → 1.7.2

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 (56) hide show
  1. package/CHANGELOG.md +15 -1
  2. package/dist/LICENSE +202 -0
  3. package/dist/README.md +126 -0
  4. package/dist/main/index.js +413 -0
  5. package/dist/module/module.js +391 -0
  6. package/dist/package.json +41 -0
  7. package/dist/types/index.d.ts +617 -0
  8. package/dist/types/react-elements/src/core/BasisTheoryProvider.d.ts +11 -0
  9. package/dist/types/react-elements/src/core/index.d.ts +4 -0
  10. package/dist/types/react-elements/src/core/useBasisTheory.d.ts +9 -0
  11. package/dist/types/react-elements/src/elements/CardElement.d.ts +26 -0
  12. package/dist/types/react-elements/src/elements/CardExpirationDateElement.d.ts +26 -0
  13. package/dist/types/react-elements/src/elements/CardNumberElement.d.ts +29 -0
  14. package/dist/types/react-elements/src/elements/CardVerificationCodeElement.d.ts +27 -0
  15. package/dist/types/react-elements/src/elements/TextElement.d.ts +35 -0
  16. package/dist/types/react-elements/src/elements/index.d.ts +10 -0
  17. package/dist/types/react-elements/src/elements/useBasisTheoryValue.d.ts +10 -0
  18. package/dist/types/react-elements/src/elements/useElement.d.ts +16 -0
  19. package/dist/types/react-elements/src/elements/useListener.d.ts +3 -0
  20. package/dist/types/react-elements/src/index.d.ts +2 -0
  21. package/dist/types/react-elements/src/types.d.ts +1 -0
  22. package/dist/types/web-elements/src/BasisTheory.d.ts +8 -0
  23. package/dist/types/web-elements/src/common/logging.d.ts +8 -0
  24. package/dist/types/web-elements/src/elements/constants.d.ts +9 -0
  25. package/dist/types/web-elements/src/elements/getOrCreateScriptElement.d.ts +1 -0
  26. package/dist/types/web-elements/src/elements/index.d.ts +2 -0
  27. package/dist/types/web-elements/src/elements/loadElements.d.ts +3 -0
  28. package/dist/types/web-elements/src/index.d.ts +8 -0
  29. package/dist/types/web-elements/src/types/elements/cardTypes.d.ts +29 -0
  30. package/dist/types/web-elements/src/types/elements/elements.d.ts +74 -0
  31. package/dist/types/web-elements/src/types/elements/events.d.ts +40 -0
  32. package/dist/types/web-elements/src/types/elements/index.d.ts +7 -0
  33. package/dist/types/web-elements/src/types/elements/options.d.ts +98 -0
  34. package/dist/types/web-elements/src/types/elements/services/index.d.ts +4 -0
  35. package/dist/types/web-elements/src/types/elements/services/proxy.d.ts +27 -0
  36. package/dist/types/web-elements/src/types/elements/services/sessions.d.ts +11 -0
  37. package/dist/types/web-elements/src/types/elements/services/shared.d.ts +21 -0
  38. package/dist/types/web-elements/src/types/elements/services/token-intents.d.ts +6 -0
  39. package/dist/types/web-elements/src/types/elements/services/tokenize.d.ts +8 -0
  40. package/dist/types/web-elements/src/types/elements/services/tokens.d.ts +7 -0
  41. package/dist/types/web-elements/src/types/elements/shared.d.ts +51 -0
  42. package/dist/types/web-elements/src/types/elements/styles.d.ts +25 -0
  43. package/dist/types/web-elements/src/types/index.d.ts +1 -0
  44. package/dist/types/web-elements/src/types/models/bin-details.d.ts +38 -0
  45. package/dist/types/web-elements/src/types/models/cards.d.ts +7 -0
  46. package/dist/types/web-elements/src/types/models/index.d.ts +7 -0
  47. package/dist/types/web-elements/src/types/models/shared.d.ts +22 -0
  48. package/dist/types/web-elements/src/types/models/token-intents.d.ts +28 -0
  49. package/dist/types/web-elements/src/types/models/tokenize.d.ts +7 -0
  50. package/dist/types/web-elements/src/types/models/tokens.d.ts +53 -0
  51. package/dist/types/web-elements/src/types/models/util.d.ts +11 -0
  52. package/dist/types/web-elements/src/types/sdk/index.d.ts +1 -0
  53. package/dist/types/web-elements/src/types/sdk/services/http.d.ts +11 -0
  54. package/dist/types/web-elements/src/types/sdk/services/index.d.ts +1 -0
  55. package/dist/types/web-elements/src/version.d.ts +1 -0
  56. package/package.json +3 -3
@@ -0,0 +1,617 @@
1
+ import { Properties } from "csstype";
2
+ import React, { PropsWithChildren, MutableRefObject } from "react";
3
+ import { CardElement as _CardElement2, CardElementEvents as _CardElementEvents1, CardElementPlaceholder as _CardElementPlaceholder1, CardElementValue as _CardElementValue1, CopyIconStyles as _CopyIconStyles1, CreateCardElementOptions as _CreateCardElementOptions1, CreditCardType as _CreditCardType1, ElementEventListener as _ElementEventListener1, ElementStyle as _ElementStyle1, InputMode as _InputMode1, TextElement as _TextElement2, CreateTextElementOptions as _CreateTextElementOptions1, TextElementEvents as _TextElementEvents1, CardNumberElement as _CardNumberElement2, CreateCardNumberElementOptions as _CreateCardNumberElementOptions1, CardNumberElementEvents as _CardNumberElementEvents1, SanitizedElementOptions as _SanitizedElementOptions1, CardExpirationDateElement as _CardExpirationDateElement2, CreateCardExpirationDateElementOptions as _CreateCardExpirationDateElementOptions1, CardExpirationDateElementEvents as _CardExpirationDateElementEvents1, CardExpirationDateValue as _CardExpirationDateValue1, CardVerificationCodeElement as _CardVerificationCodeElement2, CreateCardVerificationCodeElementOptions as _CreateCardVerificationCodeElementOptions1, CardVerificationCodeElementEvents as _CardVerificationCodeElementEvents1, Brand as _Brand1 } from "@basis-theory/basis-theory-js/types/elements";
4
+ type CardBrandId = 'american-express' | 'diners-club' | 'discover' | 'elo' | 'hiper' | 'hipercard' | 'jcb' | 'maestro' | 'mastercard' | 'mir' | 'unionpay' | 'visa';
5
+ type CardBrandNiceType = 'American Express' | 'Diners Club' | 'Discover' | 'Elo' | 'Hiper' | 'Hipercard' | 'JCB' | 'Maestro' | 'Mastercard' | 'Mir' | 'UnionPay' | 'Visa';
6
+ type SecurityCodeLabel = 'CVV' | 'CVC' | 'CID' | 'CVN' | 'CVE' | 'CVP2';
7
+ type CreditCardType = {
8
+ code: {
9
+ size: number;
10
+ name: SecurityCodeLabel | string;
11
+ };
12
+ gaps: number[];
13
+ lengths: number[];
14
+ niceType: CardBrandNiceType | string;
15
+ patterns: (number | [number, number])[];
16
+ type: CardBrandId | string;
17
+ };
18
+ interface RequestConfig {
19
+ headers?: Record<string, string>;
20
+ }
21
+ interface HttpClient {
22
+ post(url: string, payload: unknown, config?: RequestConfig): Promise<unknown>;
23
+ put(url: string, payload: unknown, config?: RequestConfig): Promise<unknown>;
24
+ patch(url: string, payload: unknown, config?: RequestConfig): Promise<unknown>;
25
+ get(url: string, config?: RequestConfig): Promise<unknown>;
26
+ delete(url: string, config?: RequestConfig): Promise<unknown>;
27
+ }
28
+ declare const CARD_BRANDS: readonly ["visa", "mastercard", "american-express", "discover", "diners-club", "jcb", "unionpay", "maestro", "elo", "hiper", "hipercard", "mir", "unknown"];
29
+ declare const AUTOCOMPLETE_VALUES: readonly ["additional-name", "address-level1", "address-level2", "address-level3", "address-level4", "address-line1", "address-line2", "address-line3", "bday-day", "bday-month", "bday-year", "bday", "billing", "cc-additional-name", "cc-csc", "cc-exp-month", "cc-exp-year", "cc-exp", "cc-family-name", "cc-given-name", "cc-name", "cc-number", "cc-type", "country-name", "country", "current-password", "email", "family-name", "fax", "given-name", "home", "honorific-prefix", "honorific-suffix", "language", "mobile", "name", "new-password", "nickname", "off", "on", "one-time-code", "organization-title", "organization", "page", "postal-code", "sex", "shipping", "street-address", "tel-area-code", "tel-country-code", "tel-extension", "tel-local-prefix", "tel-local-suffix", "tel-local", "tel-national", "tel", "transaction-amount", "transaction-currency", "url", "username", "work"];
30
+ type FieldErrorType = 'incomplete' | 'invalid';
31
+ interface Targeted {
32
+ targetId: string;
33
+ }
34
+ type ListenableKey = 'Escape' | 'Enter';
35
+ interface FieldError {
36
+ targetId: string;
37
+ type: FieldErrorType;
38
+ }
39
+ interface ElementMetadata {
40
+ complete: boolean;
41
+ valid: boolean;
42
+ maskSatisfied?: boolean;
43
+ empty: boolean;
44
+ errors?: FieldError[] | Omit<FieldError, 'targetId'>[];
45
+ }
46
+ interface CardMetadata {
47
+ cardBrand: Brand;
48
+ cardLast4?: string;
49
+ cardBin?: string;
50
+ }
51
+ /**
52
+ * Card brands type
53
+ */
54
+ type Brand = typeof CARD_BRANDS[number];
55
+ /**
56
+ * Values for the element input autocomplete attribute
57
+ */
58
+ type AutoCompleteValue = typeof AUTOCOMPLETE_VALUES[number];
59
+ /**
60
+ * Type used for detokenization responses stored on Data Elements
61
+ */
62
+ type DataElementReference = {
63
+ correlationId: string;
64
+ elementId: string;
65
+ path: string;
66
+ };
67
+ type EventType = 'ready' | 'change' | 'focus' | 'blur' | 'keydown';
68
+ interface BaseEvent<T extends EventType> {
69
+ type: T;
70
+ }
71
+ type ReadyEvent = BaseEvent<'ready'>;
72
+ type ChangeEvent = BaseEvent<'change'> & {
73
+ empty: boolean;
74
+ complete: boolean;
75
+ valid?: boolean;
76
+ maskSatisfied?: boolean;
77
+ errors?: FieldError[];
78
+ };
79
+ type CardChangeEvent = ChangeEvent & {
80
+ cardBrand: Brand;
81
+ cardLast4?: string;
82
+ cardBin?: string;
83
+ };
84
+ type InputFocusEvent = BaseEvent<'focus'> & Targeted;
85
+ type InputBlurEvent = BaseEvent<'blur'> & Targeted;
86
+ type InputKeydownEvent = BaseEvent<'keydown'> & Targeted & {
87
+ key: ListenableKey;
88
+ } & Pick<KeyboardEvent, 'altKey' | 'ctrlKey' | 'shiftKey' | 'metaKey'>;
89
+ type BaseElementEvents = ReadyEvent | InputFocusEvent | InputBlurEvent | InputKeydownEvent;
90
+ type TextElementEvents = BaseElementEvents | ChangeEvent;
91
+ type CardElementEvents = BaseElementEvents | CardChangeEvent;
92
+ type CardNumberElementEvents = BaseElementEvents | CardChangeEvent;
93
+ type CardExpirationDateElementEvents = BaseElementEvents | ChangeEvent;
94
+ type CardVerificationCodeElementEvents = BaseElementEvents | ChangeEvent;
95
+ /**
96
+ * Utility type that helps find a Union type based on a `type` property
97
+ */
98
+ type FindByType<Union, Type> = Union extends {
99
+ type: Type;
100
+ } ? Union : never;
101
+ type ElementEventListener<Events, Type> = (event: FindByType<Events, Type>) => void;
102
+ interface Subscription {
103
+ unsubscribe(): void;
104
+ }
105
+ declare const SAFE_CSS_PROPERTIES: readonly ["backgroundColor", "color", "fontFamily", "fontSize", "fontSmooth", "fontStyle", "fontVariant", "fontWeight", "lineHeight", "letterSpacing", "textAlign", "padding", "textDecoration", "textShadow", "textTransform"];
106
+ type SafeCSSProperty = typeof SAFE_CSS_PROPERTIES[number];
107
+ type SafeStyle = Pick<Properties, SafeCSSProperty>;
108
+ declare const CARD_ELEMENT_STYLE_VARIANT_SELECTORS: readonly [":hover", ":focus", ":read-only", "::placeholder", "::selection", ":disabled"];
109
+ type CardElementStyleVariantSelector = typeof CARD_ELEMENT_STYLE_VARIANT_SELECTORS[number];
110
+ type CardElementStyleVariantStyle = SafeStyle & Partial<Record<CardElementStyleVariantSelector, SafeStyle>>;
111
+ declare const CARD_ELEMENT_STYLE_VARIANTS: readonly ["base", "complete", "invalid", "empty"];
112
+ declare const CARD_ELEMENT_STYLE_FONTS_ATTR: "fonts";
113
+ type CardElementStyleVariant = typeof CARD_ELEMENT_STYLE_VARIANTS[number];
114
+ type CardElementStyleFontAttr = typeof CARD_ELEMENT_STYLE_FONTS_ATTR;
115
+ type FontSource = string;
116
+ type FontSources = FontSource[];
117
+ type Fonts = Record<CardElementStyleFontAttr, FontSources>;
118
+ type CardElementStyle = Partial<Record<CardElementStyleVariant, CardElementStyleVariantStyle> & Fonts>;
119
+ type ElementStyle = CardElementStyle;
120
+ type CopyIconStyles = {
121
+ size?: string;
122
+ color?: string;
123
+ successColor?: string;
124
+ };
125
+ declare const ELEMENTS_TYPES: readonly ["card", "cardExpirationDate", "cardNumber", "cardVerificationCode", "data", "text"];
126
+ type ElementType = typeof ELEMENTS_TYPES[number];
127
+ interface ElementInternalOptions {
128
+ apiKey: string | undefined;
129
+ baseUrl: string;
130
+ type: ElementType;
131
+ useNgApi: boolean | undefined;
132
+ useSameOriginApi: boolean | undefined;
133
+ }
134
+ enum InputMode {
135
+ DECIMAL = "decimal",
136
+ EMAIL = "email",
137
+ NONE = "none",
138
+ NUMERIC = "numeric",
139
+ SEARCH = "search",
140
+ TEL = "tel",
141
+ TEXT = "text",
142
+ URL = "url"
143
+ }
144
+ interface SanitizedElementOptions {
145
+ ariaDescription?: string;
146
+ ariaLabel?: string;
147
+ autoComplete?: AutoCompleteValue;
148
+ cardBrand?: string;
149
+ cardTypes?: CreditCardType[];
150
+ copyIconStyles?: CopyIconStyles;
151
+ disabled?: boolean;
152
+ enableCopy?: boolean;
153
+ iconPosition?: string;
154
+ inputMode?: `${InputMode}`;
155
+ mask?: (RegExp | string)[];
156
+ maxLength?: HTMLInputElement['maxLength'];
157
+ password?: boolean;
158
+ placeholder?: string;
159
+ readOnly?: boolean;
160
+ skipLuhnValidation?: boolean;
161
+ style?: ElementStyle;
162
+ targetId?: string;
163
+ transform?: [RegExp, string] | null;
164
+ validateOnChange?: boolean;
165
+ validation?: RegExp;
166
+ value?: CardElementValue<'static'> | CardExpirationDateValue<'static'> | string;
167
+ }
168
+ type ElementOptions = ElementInternalOptions & SanitizedElementOptions;
169
+ type Transform = RegExp | [RegExp, string?] | null;
170
+ interface TransformOption {
171
+ transform?: Transform;
172
+ }
173
+ interface AutoCompleteOption {
174
+ autoComplete?: AutoCompleteValue;
175
+ }
176
+ type CustomizableElementOptions = Pick<ElementOptions, 'cardTypes' | 'copyIconStyles' | 'disabled' | 'enableCopy' | 'inputMode' | 'readOnly' | 'skipLuhnValidation' | 'style' | 'validateOnChange'> & AutoCompleteOption;
177
+ type ElementValueType = 'static' | 'reference';
178
+ interface CardElementValue<T extends ElementValueType> {
179
+ cvc?: T extends 'reference' ? DataElementReference : string;
180
+ expiration_month?: T extends 'reference' ? DataElementReference : number;
181
+ expiration_year?: T extends 'reference' ? DataElementReference : number;
182
+ number?: T extends 'reference' ? DataElementReference : string;
183
+ }
184
+ interface CardElementPlaceholder {
185
+ cardNumber?: string;
186
+ cardExpirationDate?: string;
187
+ cardSecurityCode?: string;
188
+ }
189
+ interface CardExpirationDateValue<T extends ElementValueType> {
190
+ month: T extends 'reference' ? DataElementReference : number;
191
+ year: T extends 'reference' ? DataElementReference : number;
192
+ }
193
+ type CreateCardElementOptions = CustomizableElementOptions & Pick<ElementOptions, 'cardTypes' | 'skipLuhnValidation'> & {
194
+ placeholder?: CardElementPlaceholder;
195
+ value?: CardElementValue<'static'>;
196
+ };
197
+ type UpdateCardElementOptions = Omit<CreateCardElementOptions, 'validateOnChange' | 'enableCopy'>;
198
+ type CreateTextElementOptions = CustomizableElementOptions & Pick<ElementOptions, 'placeholder' | 'mask' | 'maxLength' | 'password' | 'validation'> & TransformOption & Required<Pick<ElementOptions, 'targetId'>> & {
199
+ 'aria-label'?: string;
200
+ value?: string;
201
+ };
202
+ type UpdateTextElementOptions = Omit<CreateTextElementOptions, 'targetId' | 'mask' | 'validateOnChange'>;
203
+ type CreateCardNumberElementOptions = CustomizableElementOptions & Pick<ElementOptions, 'placeholder' | 'iconPosition' | 'cardTypes' | 'skipLuhnValidation'> & Required<Pick<ElementOptions, 'targetId'>> & {
204
+ 'aria-label'?: string;
205
+ value?: string;
206
+ };
207
+ type UpdateCardNumberElementOptions = Omit<CreateCardNumberElementOptions, 'targetId' | 'validateOnChange' | 'enableCopy'>;
208
+ type CreateCardExpirationDateElementOptions = CustomizableElementOptions & Pick<ElementOptions, 'placeholder'> & Required<Pick<ElementOptions, 'targetId'>> & {
209
+ 'aria-label'?: string;
210
+ value?: CardExpirationDateValue<'static'> | string;
211
+ };
212
+ type UpdateCardExpirationDateElementOptions = Omit<CreateCardExpirationDateElementOptions, 'targetId' | 'validateOnChange' | 'enableCopy'>;
213
+ type CreateCardVerificationCodeElementOptions = CustomizableElementOptions & Pick<ElementOptions, 'placeholder' | 'cardBrand'> & Required<Pick<ElementOptions, 'targetId'>> & {
214
+ 'aria-label'?: string;
215
+ value?: string;
216
+ };
217
+ type UpdateCardVerificationCodeElementOptions = Omit<CreateCardVerificationCodeElementOptions, 'targetId' | 'validateOnChange' | 'enableCopy'>;
218
+ interface BinDetails {
219
+ cardBrand?: string;
220
+ type?: string;
221
+ prepaid?: boolean;
222
+ cardSegmentType?: string;
223
+ reloadable?: boolean;
224
+ panOrToken?: string;
225
+ accountUpdater?: boolean;
226
+ alm?: boolean;
227
+ domesticOnly?: boolean;
228
+ gamblingBlocked?: boolean;
229
+ level2?: boolean;
230
+ level3?: boolean;
231
+ issuerCurrency?: string;
232
+ comboCard?: string;
233
+ binLength?: number;
234
+ authentication?: unknown;
235
+ cost?: unknown;
236
+ bank?: BinDetailsBank;
237
+ country?: BinDetailsCountry;
238
+ product?: BinDetailsProduct;
239
+ }
240
+ interface BinDetailsBank {
241
+ name?: string;
242
+ phone?: string;
243
+ url?: string;
244
+ cleanName?: string;
245
+ }
246
+ interface BinDetailsCountry {
247
+ alpha2?: string;
248
+ name?: string;
249
+ numeric?: string;
250
+ }
251
+ interface BinDetailsProduct {
252
+ code?: string;
253
+ name?: string;
254
+ }
255
+ type Primitive = string | number | boolean | null;
256
+ type TokenType = 'token' | 'card' | 'bank' | 'card_number' | 'us_bank_routing_number' | 'us_bank_account_number' | 'social_security_number';
257
+ interface Auditable {
258
+ createdBy?: string;
259
+ createdAt?: string;
260
+ modifiedBy?: string;
261
+ modifiedAt?: string;
262
+ }
263
+ type DataObject<DataType = Primitive> = {
264
+ [member: string]: TokenData<DataType>;
265
+ };
266
+ type DataArray<DataType> = Array<TokenData<DataType>>;
267
+ type TokenData<DataType = Primitive> = Primitive | DataObject<DataType> | DataArray<DataType> | DataType;
268
+ interface TokenBase<DataType = Primitive> extends Auditable {
269
+ data: TokenData<DataType>;
270
+ type: TokenType;
271
+ }
272
+ declare const DATA_CLASSIFICATIONS: readonly ["general", "bank", "pci", "pii"];
273
+ type DataClassification = typeof DATA_CLASSIFICATIONS[number];
274
+ declare const DATA_IMPACT_LEVELS: readonly ["low", "moderate", "high"];
275
+ type DataImpactLevel = typeof DATA_IMPACT_LEVELS[number];
276
+ declare const DATA_RESTRICTION_POLICIES: readonly ["mask", "redact"];
277
+ type DataRestrictionPolicy = typeof DATA_RESTRICTION_POLICIES[number];
278
+ type MaskObject = {
279
+ [member: string]: TokenMask;
280
+ };
281
+ type MaskArray = Array<TokenMask>;
282
+ type TokenMask = string | null | MaskObject | MaskArray;
283
+ interface TokenEncryptionKey {
284
+ key: string;
285
+ alg: string;
286
+ }
287
+ interface TokenEncryption {
288
+ cek: TokenEncryptionKey;
289
+ kek: TokenEncryptionKey;
290
+ }
291
+ interface TokenPrivacy {
292
+ classification?: DataClassification;
293
+ impactLevel?: DataImpactLevel;
294
+ restrictionPolicy?: DataRestrictionPolicy;
295
+ }
296
+ interface TokenEnrichments {
297
+ binDetails?: BinDetails;
298
+ }
299
+ type Token<DataType = Primitive> = TokenBase<DataType> & {
300
+ id: string;
301
+ privacy?: TokenPrivacy;
302
+ containers?: string[];
303
+ encryption?: TokenEncryption;
304
+ searchIndexes?: string[];
305
+ fingerprintExpression?: string;
306
+ mask?: TokenMask;
307
+ expiresAt?: string;
308
+ enrichments?: TokenEnrichments;
309
+ tenantId: string;
310
+ fingerprint?: string;
311
+ metadata?: Record<string, string>;
312
+ };
313
+ type CreateToken<DataType = Primitive> = Pick<Token<DataType>, 'type' | 'data' | 'privacy' | 'containers' | 'metadata' | 'encryption' | 'searchIndexes' | 'fingerprintExpression' | 'mask' | 'expiresAt'> & {
314
+ deduplicateToken?: boolean;
315
+ id?: string;
316
+ };
317
+ type UpdateToken<DataType = Primitive> = Partial<Pick<Token<DataType>, 'data' | 'containers' | 'metadata' | 'encryption' | 'searchIndexes' | 'fingerprintExpression' | 'mask' | 'expiresAt'> & {
318
+ privacy: Omit<TokenPrivacy, 'classification'>;
319
+ deduplicateToken: boolean;
320
+ }>;
321
+ type TokenizeObject<DataType = Primitive> = {
322
+ [key: string]: Primitive | TokenizeObject<DataType> | TokenizeArray<DataType> | DataType;
323
+ };
324
+ type TokenizeArray<DataType = Primitive> = Array<Primitive | TokenizeObject<DataType> | TokenizeArray<DataType> | DataType>;
325
+ type TokenizeData<DataType = Primitive> = TokenizeArray<DataType> | TokenizeObject<DataType>;
326
+ interface TokenIntentCardDetails {
327
+ type: 'card';
328
+ card: {
329
+ bin: string;
330
+ last4: string;
331
+ brand: string;
332
+ funding: string;
333
+ expirationMonth: number;
334
+ expirationYear: number;
335
+ };
336
+ }
337
+ type TokenTypesForTokenIntents = Exclude<TokenType, 'token' | 'card'>;
338
+ type TokenTypeMap = {
339
+ [K in TokenTypesForTokenIntents]: {
340
+ type: K;
341
+ } & Record<K, Record<string, unknown>>;
342
+ };
343
+ type TokenIntent<DataType = DataObject> = (TokenBase<DataType> & Omit<Auditable, 'modifiedAt' | 'modifiedBy'> & {
344
+ id: string;
345
+ tenantId: string;
346
+ expiresAt: string;
347
+ fingerprint?: string;
348
+ }) & (TokenTypeMap[TokenTypesForTokenIntents] | TokenIntentCardDetails | {
349
+ type: 'token';
350
+ });
351
+ type CreateTokenIntent<DataType = DataObject> = Pick<TokenIntent<DataType>, 'type' | 'data'>;
352
+ interface RequestOptions {
353
+ apiKey?: string;
354
+ correlationId?: string;
355
+ idempotencyKey?: string;
356
+ }
357
+ type Create<T, C> = {
358
+ create(model: C, options?: RequestOptions): Promise<T>;
359
+ };
360
+ type Retrieve<T> = {
361
+ retrieve(id: string, options?: RequestOptions): Promise<T>;
362
+ };
363
+ type Update<T, U> = {
364
+ update(id: string, model: U, options?: RequestOptions): Promise<T>;
365
+ };
366
+ type _TokenizeData1 = TokenizeData<ElementValue>;
367
+ interface Tokenize {
368
+ tokenize(tokens: _TokenizeData1, options?: RequestOptions): Promise<TokenizeData>;
369
+ }
370
+ type _CreateToken1 = CreateToken<ElementValue>;
371
+ type _UpdateToken1 = UpdateToken<ElementValue>;
372
+ type Tokens = Create<Token, _CreateToken1> & Retrieve<Token<unknown>> & Update<Token, _UpdateToken1>;
373
+ type BasisTheoryProxyHeaders = {
374
+ [key: string]: string;
375
+ 'BT-PROXY-URL': string;
376
+ 'BT-PROXY-KEY': string;
377
+ };
378
+ type ProxyHeaders = Partial<BasisTheoryProxyHeaders>;
379
+ type BasisTheoryQueryParams = {
380
+ [key: string]: string;
381
+ 'bt-proxy-key': string;
382
+ };
383
+ type ProxyQuery = Partial<BasisTheoryQueryParams>;
384
+ interface ProxyRequestOptions extends RequestOptions {
385
+ includeResponseHeaders?: boolean;
386
+ path?: string;
387
+ query?: ProxyQuery;
388
+ headers?: ProxyHeaders;
389
+ body?: unknown;
390
+ }
391
+ interface Proxy {
392
+ get(options?: ProxyRequestOptions): Promise<unknown>;
393
+ post(options?: ProxyRequestOptions): Promise<unknown>;
394
+ patch(options?: ProxyRequestOptions): Promise<unknown>;
395
+ put(options?: ProxyRequestOptions): Promise<unknown>;
396
+ delete(options?: ProxyRequestOptions): Promise<unknown>;
397
+ }
398
+ type _CreateTokenIntent1 = CreateTokenIntent<ElementValue>;
399
+ type TokenIntents = Create<TokenIntent, _CreateTokenIntent1>;
400
+ type CreateSessionResponse = {
401
+ sessionKey: string;
402
+ nonce: string;
403
+ expiresAt: string;
404
+ _debug?: Record<string, unknown>;
405
+ };
406
+ interface Sessions {
407
+ create(options?: RequestOptions): Promise<CreateSessionResponse>;
408
+ }
409
+ interface BaseElement<UpdateOptions, ElementEvents> {
410
+ readonly mounted: boolean;
411
+ readonly metadata: ElementMetadata;
412
+ mount(selector: string): Promise<void>;
413
+ mount(element: Element): Promise<void>;
414
+ update(options: UpdateOptions): Promise<void>;
415
+ clear(): void;
416
+ focus(): void;
417
+ blur(): void;
418
+ unmount(): void;
419
+ on<T extends EventType>(eventType: T, listener: ElementEventListener<ElementEvents, T>): Subscription;
420
+ }
421
+ type _CardElement1 = BaseElement<UpdateCardElementOptions, CardElementEvents> & {
422
+ readonly cardMetadata?: CardMetadata;
423
+ setValue(value: CardElementValue<'reference'>): void;
424
+ validate(): void;
425
+ };
426
+ type _TextElement1 = BaseElement<UpdateTextElementOptions, TextElementEvents> & {
427
+ setValueRef(value: _TextElement1): void;
428
+ setValue(value: DataElementReference): void;
429
+ };
430
+ type _CardNumberElement1 = BaseElement<UpdateCardNumberElementOptions, CardNumberElementEvents> & {
431
+ readonly cardMetadata?: CardMetadata;
432
+ setValueRef(value: _CardNumberElement1): void;
433
+ setValue(value: DataElementReference): void;
434
+ };
435
+ type _CardExpirationDateElement1 = BaseElement<UpdateCardExpirationDateElementOptions, CardExpirationDateElementEvents> & {
436
+ setValueRef(value: _CardExpirationDateElement1): void;
437
+ setValue(value: CardExpirationDateValue<'reference'>): void;
438
+ month(): ElementWrapper<_CardExpirationDateElement1>;
439
+ year(): ElementWrapper<_CardExpirationDateElement1>;
440
+ format(dateFormat: string): ElementWrapper<_CardExpirationDateElement1>;
441
+ };
442
+ type _CardVerificationCodeElement1 = BaseElement<UpdateCardVerificationCodeElementOptions, CardVerificationCodeElementEvents> & {
443
+ setValueRef(value: _CardVerificationCodeElement1): void;
444
+ setValue(value: DataElementReference): void;
445
+ };
446
+ type ElementWrapper<T extends BaseElement<any, any> = BaseElement<any, any>> = {
447
+ element: T;
448
+ method?: string;
449
+ formattingOptions?: {
450
+ format: string;
451
+ };
452
+ };
453
+ type ElementValue = _TextElement1 | _CardElement1 | _CardNumberElement1 | _CardExpirationDateElement1 | _CardVerificationCodeElement1 | ElementWrapper;
454
+ interface BasisTheoryElements {
455
+ tokens: Tokens;
456
+ proxy: Proxy;
457
+ sessions: Sessions;
458
+ tokenIntents: TokenIntents;
459
+ tokenize: Tokenize;
460
+ client: HttpClient;
461
+ createElement(type: 'card', options?: CreateCardElementOptions): _CardElement1;
462
+ createElement(type: 'text', options: CreateTextElementOptions): _TextElement1;
463
+ createElement(type: 'cardNumber', options: CreateCardNumberElementOptions): _CardNumberElement1;
464
+ createElement(type: 'cardExpirationDate', options: CreateCardExpirationDateElementOptions): _CardExpirationDateElement1;
465
+ createElement(type: 'cardVerificationCode', options: CreateCardVerificationCodeElementOptions): _CardVerificationCodeElement1;
466
+ }
467
+ declare global {
468
+ interface Window {
469
+ BasisTheoryElements?: BasisTheoryElementsInternal;
470
+ }
471
+ }
472
+ interface BasisTheoryInitOptions {
473
+ _devMode?: boolean;
474
+ disableTelemetry?: boolean;
475
+ useSameOriginApi?: boolean;
476
+ }
477
+ declare global {
478
+ interface Window {
479
+ basistheory?: typeof basistheory;
480
+ }
481
+ }
482
+ interface BasisTheoryProviderProps {
483
+ bt?: BasisTheoryElements;
484
+ }
485
+ export const BasisTheoryProvider: ({ bt, children, }: PropsWithChildren<BasisTheoryProviderProps>) => JSX.Element;
486
+ export const useBasisTheory: (apiKey?: string | undefined, options?: BasisTheoryInitOptions | undefined) => {
487
+ bt: BasisTheoryElements | undefined;
488
+ error: Error | undefined;
489
+ } | {
490
+ bt: BasisTheoryElements | undefined;
491
+ error?: undefined;
492
+ };
493
+ export { BasisTheoryApiError, BasisTheoryValidationError, } from '@basis-theory/basis-theory-js/common';
494
+ export { AMERICAN_EXPRESS, DEFAULT_CARD_TYPES, DINERS_CLUB, DISCOVER, ELO, HIPER, HIPERCARD, JCB, MAESTRO, MASTERCARD, MIR, UNION_PAY, VISA, } from '@basis-theory/basis-theory-js/types/elements';
495
+ export interface CardElementProps {
496
+ autoComplete?: _CreateCardElementOptions1['autoComplete'];
497
+ bt?: BasisTheoryElements;
498
+ cardTypes?: _CreditCardType1[];
499
+ copyIconStyles?: _CopyIconStyles1;
500
+ disabled?: boolean;
501
+ enableCopy?: boolean;
502
+ id: string;
503
+ inputMode?: `${_InputMode1}`;
504
+ onBlur?: _ElementEventListener1<_CardElementEvents1, 'blur'>;
505
+ onChange?: _ElementEventListener1<_CardElementEvents1, 'change'>;
506
+ onFocus?: _ElementEventListener1<_CardElementEvents1, 'focus'>;
507
+ onKeyDown?: _ElementEventListener1<_CardElementEvents1, 'keydown'>;
508
+ onReady?: _ElementEventListener1<_CardElementEvents1, 'ready'>;
509
+ placeholder?: _CardElementPlaceholder1;
510
+ readOnly?: boolean;
511
+ skipLuhnValidation?: boolean;
512
+ style?: _ElementStyle1;
513
+ validateOnChange?: boolean;
514
+ value?: _CardElementValue1<'static'>;
515
+ }
516
+ export const CardElement: React.ForwardRefExoticComponent<CardElementProps & React.RefAttributes<_CardElement2>>;
517
+ interface BaseTextElementProps {
518
+ 'aria-label'?: string;
519
+ autoComplete?: _CreateTextElementOptions1['autoComplete'];
520
+ bt?: BasisTheoryElements;
521
+ disabled?: boolean;
522
+ id: string;
523
+ inputMode?: `${_InputMode1}`;
524
+ maxLength?: HTMLInputElement['maxLength'];
525
+ onBlur?: _ElementEventListener1<_TextElementEvents1, 'blur'>;
526
+ onChange?: _ElementEventListener1<_TextElementEvents1, 'change'>;
527
+ onFocus?: _ElementEventListener1<_TextElementEvents1, 'focus'>;
528
+ onKeyDown?: _ElementEventListener1<_TextElementEvents1, 'keydown'>;
529
+ onReady?: _ElementEventListener1<_TextElementEvents1, 'ready'>;
530
+ placeholder?: string;
531
+ readOnly?: boolean;
532
+ style?: _ElementStyle1;
533
+ transform?: RegExp | [RegExp, string?];
534
+ validation?: RegExp;
535
+ value?: string;
536
+ valueRef?: MutableRefObject<_TextElement2 | null>;
537
+ }
538
+ interface MaskedTextElementProps extends BaseTextElementProps {
539
+ mask?: (RegExp | string)[];
540
+ password?: false;
541
+ }
542
+ interface PasswordTextElementProps extends BaseTextElementProps {
543
+ mask?: never;
544
+ password: true;
545
+ }
546
+ export type TextElementProps = MaskedTextElementProps | PasswordTextElementProps;
547
+ export const TextElement: React.ForwardRefExoticComponent<TextElementProps & React.RefAttributes<_TextElement2>>;
548
+ export interface CardNumberElementProps {
549
+ 'aria-label'?: string;
550
+ autoComplete?: _CreateCardNumberElementOptions1['autoComplete'];
551
+ bt?: BasisTheoryElements;
552
+ cardTypes?: _CreditCardType1[];
553
+ copyIconStyles?: _CopyIconStyles1;
554
+ disabled?: boolean;
555
+ enableCopy?: boolean;
556
+ iconPosition?: _SanitizedElementOptions1['iconPosition'];
557
+ id: string;
558
+ inputMode?: `${_InputMode1}`;
559
+ onBlur?: _ElementEventListener1<_CardNumberElementEvents1, 'blur'>;
560
+ onChange?: _ElementEventListener1<_CardNumberElementEvents1, 'change'>;
561
+ onFocus?: _ElementEventListener1<_CardNumberElementEvents1, 'focus'>;
562
+ onKeyDown?: _ElementEventListener1<_CardNumberElementEvents1, 'keydown'>;
563
+ onReady?: _ElementEventListener1<_CardNumberElementEvents1, 'ready'>;
564
+ placeholder?: string;
565
+ readOnly?: boolean;
566
+ skipLuhnValidation?: boolean;
567
+ style?: _ElementStyle1;
568
+ validateOnChange?: boolean;
569
+ value?: string;
570
+ valueRef?: MutableRefObject<_CardNumberElement2 | null>;
571
+ }
572
+ export const CardNumberElement: React.ForwardRefExoticComponent<CardNumberElementProps & React.RefAttributes<_CardNumberElement2>>;
573
+ export interface CardExpirationDateElementProps {
574
+ 'aria-label'?: string;
575
+ autoComplete?: _CreateCardExpirationDateElementOptions1['autoComplete'];
576
+ bt?: BasisTheoryElements;
577
+ copyIconStyles?: _CopyIconStyles1;
578
+ disabled?: boolean;
579
+ enableCopy?: boolean;
580
+ id: string;
581
+ inputMode?: `${_InputMode1}`;
582
+ onBlur?: _ElementEventListener1<_CardExpirationDateElementEvents1, 'blur'>;
583
+ onChange?: _ElementEventListener1<_CardExpirationDateElementEvents1, 'change'>;
584
+ onFocus?: _ElementEventListener1<_CardExpirationDateElementEvents1, 'focus'>;
585
+ onKeyDown?: _ElementEventListener1<_CardExpirationDateElementEvents1, 'keydown'>;
586
+ onReady?: _ElementEventListener1<_CardExpirationDateElementEvents1, 'ready'>;
587
+ placeholder?: string;
588
+ readOnly?: boolean;
589
+ style?: _ElementStyle1;
590
+ validateOnChange?: boolean;
591
+ value?: _CardExpirationDateValue1<'static'> | string;
592
+ valueRef?: MutableRefObject<_CardExpirationDateElement2 | null>;
593
+ }
594
+ export const CardExpirationDateElement: React.ForwardRefExoticComponent<CardExpirationDateElementProps & React.RefAttributes<_CardExpirationDateElement2>>;
595
+ export interface CardVerificationCodeElementProps {
596
+ 'aria-label'?: string;
597
+ autoComplete?: _CreateCardVerificationCodeElementOptions1['autoComplete'];
598
+ bt?: BasisTheoryElements;
599
+ cardBrand?: _Brand1 | string;
600
+ copyIconStyles?: _CopyIconStyles1;
601
+ disabled?: boolean;
602
+ enableCopy?: boolean;
603
+ id: string;
604
+ inputMode?: `${_InputMode1}`;
605
+ onBlur?: _ElementEventListener1<_CardVerificationCodeElementEvents1, 'blur'>;
606
+ onChange?: _ElementEventListener1<_CardVerificationCodeElementEvents1, 'change'>;
607
+ onFocus?: _ElementEventListener1<_CardVerificationCodeElementEvents1, 'focus'>;
608
+ onKeyDown?: _ElementEventListener1<_CardVerificationCodeElementEvents1, 'keydown'>;
609
+ onReady?: _ElementEventListener1<_CardVerificationCodeElementEvents1, 'ready'>;
610
+ placeholder?: string;
611
+ readOnly?: boolean;
612
+ style?: _ElementStyle1;
613
+ validateOnChange?: boolean;
614
+ value?: string;
615
+ valueRef?: MutableRefObject<_CardVerificationCodeElement2 | null>;
616
+ }
617
+ export const CardVerificationCodeElement: React.ForwardRefExoticComponent<CardVerificationCodeElementProps & React.RefAttributes<_CardVerificationCodeElement2>>;
@@ -0,0 +1,11 @@
1
+ import type { BasisTheoryElements } from '@basis-theory/web-elements';
2
+ import { PropsWithChildren } from 'react';
3
+ interface BasisTheoryProviderValue {
4
+ bt?: BasisTheoryElements;
5
+ }
6
+ interface BasisTheoryProviderProps {
7
+ bt?: BasisTheoryElements;
8
+ }
9
+ declare const BasisTheoryProvider: ({ bt, children, }: PropsWithChildren<BasisTheoryProviderProps>) => JSX.Element;
10
+ declare const useBasisTheoryFromContext: () => BasisTheoryProviderValue;
11
+ export { BasisTheoryProvider, useBasisTheoryFromContext };
@@ -0,0 +1,4 @@
1
+ export { useBasisTheory } from './useBasisTheory';
2
+ export { BasisTheoryProvider } from './BasisTheoryProvider';
3
+ export { BasisTheoryApiError, BasisTheoryValidationError, } from '@basis-theory/basis-theory-js/common';
4
+ export { AMERICAN_EXPRESS, DEFAULT_CARD_TYPES, DINERS_CLUB, DISCOVER, ELO, HIPER, HIPERCARD, JCB, MAESTRO, MASTERCARD, MIR, UNION_PAY, VISA, } from '@basis-theory/basis-theory-js/types/elements';
@@ -0,0 +1,9 @@
1
+ import type { BasisTheoryElements, BasisTheoryInitOptions } from '@basis-theory/web-elements';
2
+ declare const useBasisTheory: (apiKey?: string, options?: BasisTheoryInitOptions) => {
3
+ bt: BasisTheoryElements | undefined;
4
+ error: Error | undefined;
5
+ } | {
6
+ bt: BasisTheoryElements | undefined;
7
+ error?: undefined;
8
+ };
9
+ export { useBasisTheory };
@@ -0,0 +1,26 @@
1
+ import React from 'react';
2
+ import { CardElement as ICardElement, CardElementEvents, CardElementPlaceholder, CardElementValue, CopyIconStyles, CreateCardElementOptions, CreditCardType, ElementEventListener, ElementStyle, InputMode } from '@basis-theory/basis-theory-js/types/elements';
3
+ import type { BasisTheoryElements } from '@basis-theory/web-elements';
4
+ interface CardElementProps {
5
+ autoComplete?: CreateCardElementOptions['autoComplete'];
6
+ bt?: BasisTheoryElements;
7
+ cardTypes?: CreditCardType[];
8
+ copyIconStyles?: CopyIconStyles;
9
+ disabled?: boolean;
10
+ enableCopy?: boolean;
11
+ id: string;
12
+ inputMode?: `${InputMode}`;
13
+ onBlur?: ElementEventListener<CardElementEvents, 'blur'>;
14
+ onChange?: ElementEventListener<CardElementEvents, 'change'>;
15
+ onFocus?: ElementEventListener<CardElementEvents, 'focus'>;
16
+ onKeyDown?: ElementEventListener<CardElementEvents, 'keydown'>;
17
+ onReady?: ElementEventListener<CardElementEvents, 'ready'>;
18
+ placeholder?: CardElementPlaceholder;
19
+ readOnly?: boolean;
20
+ skipLuhnValidation?: boolean;
21
+ style?: ElementStyle;
22
+ validateOnChange?: boolean;
23
+ value?: CardElementValue<'static'>;
24
+ }
25
+ export declare const CardElement: React.ForwardRefExoticComponent<CardElementProps & React.RefAttributes<ICardElement>>;
26
+ export type { CardElementProps };