@basis-theory/web-elements 2.11.2 → 3.0.0-beta.3
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 +343 -2
- package/dist/.vite/manifest.json +27 -0
- package/dist/api-client/src/api-client.d.ts +11 -0
- package/dist/api-client/src/api-client.d.ts.map +1 -0
- package/dist/api-client/src/http-client.d.ts +24 -0
- package/dist/api-client/src/http-client.d.ts.map +1 -0
- package/dist/api-client/src/index.d.ts +9 -0
- package/dist/api-client/src/index.d.ts.map +1 -0
- package/dist/api-client/src/services/sessions.d.ts +19 -0
- package/dist/api-client/src/services/sessions.d.ts.map +1 -0
- package/dist/api-client/src/services/token-intents.d.ts +17 -0
- package/dist/api-client/src/services/token-intents.d.ts.map +1 -0
- package/dist/api-client/src/services/tokens.d.ts +19 -0
- package/dist/api-client/src/services/tokens.d.ts.map +1 -0
- package/dist/api-client/src/types.d.ts +313 -0
- package/dist/api-client/src/types.d.ts.map +1 -0
- package/dist/basis-theory-sdk.es.js +6 -0
- package/dist/basis-theory-sdk.es.js.map +1 -0
- package/dist/basis-theory-sdk.umd.js +1 -0
- package/dist/basis-theory-sdk.umd.js.map +1 -0
- package/dist/create-card-DipDWgph.js +232 -0
- package/dist/create-card-DipDWgph.js.map +1 -0
- package/dist/index-BBfuUaLw.js +2317 -0
- package/dist/index-BBfuUaLw.js.map +1 -0
- package/dist/loader/basis-theory.min.js +1 -0
- package/dist/postmessage/src/client.d.ts +7 -0
- package/dist/postmessage/src/client.d.ts.map +1 -0
- package/dist/postmessage/src/event-map.d.ts +135 -0
- package/dist/postmessage/src/event-map.d.ts.map +1 -0
- package/dist/postmessage/src/index.d.ts +9 -0
- package/dist/postmessage/src/index.d.ts.map +1 -0
- package/dist/postmessage/src/server.d.ts +11 -0
- package/dist/postmessage/src/server.d.ts.map +1 -0
- package/dist/postmessage/src/types.d.ts +71 -0
- package/dist/postmessage/src/types.d.ts.map +1 -0
- package/dist/shared/src/api-url-resolver.d.ts +22 -0
- package/dist/shared/src/api-url-resolver.d.ts.map +1 -0
- package/dist/shared/src/debug-logger.d.ts +16 -0
- package/dist/shared/src/debug-logger.d.ts.map +1 -0
- package/dist/shared/src/deep-sanitization.d.ts +24 -0
- package/dist/shared/src/deep-sanitization.d.ts.map +1 -0
- package/dist/shared/src/errors.d.ts +93 -0
- package/dist/shared/src/errors.d.ts.map +1 -0
- package/dist/shared/src/generate-id.d.ts +13 -0
- package/dist/shared/src/generate-id.d.ts.map +1 -0
- package/dist/shared/src/index.d.ts +13 -0
- package/dist/shared/src/index.d.ts.map +1 -0
- package/dist/shared/src/logger-context.d.ts +25 -0
- package/dist/shared/src/logger-context.d.ts.map +1 -0
- package/dist/sri.json +22 -0
- package/dist/stats.html +4949 -0
- package/dist/web-elements/src/BasisTheory.d.ts +47 -0
- package/dist/web-elements/src/BasisTheory.d.ts.map +1 -0
- package/dist/web-elements/src/basis-theory.d.ts +62 -0
- package/dist/web-elements/src/basis-theory.d.ts.map +1 -0
- package/dist/web-elements/src/elements/create-card-number.d.ts +14 -0
- package/dist/web-elements/src/elements/create-card-number.d.ts.map +1 -0
- package/dist/web-elements/src/elements/create-card.d.ts +37 -0
- package/dist/web-elements/src/elements/create-card.d.ts.map +1 -0
- package/dist/web-elements/src/elements/create-cvv.d.ts +10 -0
- package/dist/web-elements/src/elements/create-cvv.d.ts.map +1 -0
- package/dist/web-elements/src/elements/create-expiry.d.ts +10 -0
- package/dist/web-elements/src/elements/create-expiry.d.ts.map +1 -0
- package/dist/web-elements/src/elements/create-text.d.ts +13 -0
- package/dist/web-elements/src/elements/create-text.d.ts.map +1 -0
- package/dist/web-elements/src/index.d.ts +27 -0
- package/dist/web-elements/src/index.d.ts.map +1 -0
- package/dist/web-elements/src/mounter/create-mounter.d.ts +11 -0
- package/dist/web-elements/src/mounter/create-mounter.d.ts.map +1 -0
- package/dist/web-elements/src/theme/default-theme.d.ts +22 -0
- package/dist/web-elements/src/theme/default-theme.d.ts.map +1 -0
- package/dist/web-elements/src/theme/inject-theme-dark.d.ts +13 -0
- package/dist/web-elements/src/theme/inject-theme-dark.d.ts.map +1 -0
- package/dist/web-elements/src/theme/inject-theme.d.ts +20 -0
- package/dist/web-elements/src/theme/inject-theme.d.ts.map +1 -0
- package/dist/web-elements/src/types/events.d.ts +137 -0
- package/dist/web-elements/src/types/events.d.ts.map +1 -0
- package/dist/web-elements/src/types/theme.d.ts +91 -0
- package/dist/web-elements/src/types/theme.d.ts.map +1 -0
- package/dist/web-elements/src/types.d.ts +537 -0
- package/dist/web-elements/src/types.d.ts.map +1 -0
- package/dist/web-elements/src/utils/create-event-dispatcher.d.ts +47 -0
- package/dist/web-elements/src/utils/create-event-dispatcher.d.ts.map +1 -0
- package/dist/web-elements/src/utils/create-iframe.d.ts +10 -0
- package/dist/web-elements/src/utils/create-iframe.d.ts.map +1 -0
- package/dist/web-elements/src/utils/resolve-element-references.d.ts +20 -0
- package/dist/web-elements/src/utils/resolve-element-references.d.ts.map +1 -0
- package/dist/web-elements/src/utils/validate-element-options.d.ts +11 -0
- package/dist/web-elements/src/utils/validate-element-options.d.ts.map +1 -0
- package/dist/web-elements/src/utils/validate-sdk-config.d.ts +15 -0
- package/dist/web-elements/src/utils/validate-sdk-config.d.ts.map +1 -0
- package/dist/web-elements/src/utils/warn-unknown-keys.d.ts +15 -0
- package/dist/web-elements/src/utils/warn-unknown-keys.d.ts.map +1 -0
- package/dist/web-elements/src/version.d.ts +25 -0
- package/dist/web-elements/src/version.d.ts.map +1 -0
- package/package.json +53 -72
- package/LICENSE +0 -202
- package/dist/LICENSE +0 -202
- package/dist/README.md +0 -3
- package/dist/bundle/index.js +0 -1
- package/dist/main/index.js +0 -1161
- package/dist/module/module.js +0 -1159
- package/dist/package.json +0 -37
- package/dist/types/index.d.ts +0 -732
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* PostMessage Server (Iframe Side)
|
|
3
|
+
* Production-ready server for handling requests from parent
|
|
4
|
+
*/
|
|
5
|
+
import type { PostMessageServer } from './types';
|
|
6
|
+
export interface PostMessageServerConfig {
|
|
7
|
+
allowedOrigins: string[];
|
|
8
|
+
debug?: boolean;
|
|
9
|
+
}
|
|
10
|
+
export declare const createPostMessageServer: (config: PostMessageServerConfig) => PostMessageServer;
|
|
11
|
+
//# sourceMappingURL=server.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../../../../postmessage/src/server.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAGH,OAAO,KAAK,EAIV,iBAAiB,EAClB,MAAM,SAAS,CAAC;AAEjB,MAAM,WAAW,uBAAuB;IACtC,cAAc,EAAE,MAAM,EAAE,CAAC;IACzB,KAAK,CAAC,EAAE,OAAO,CAAC;CACjB;AAED,eAAO,MAAM,uBAAuB,GAClC,QAAQ,uBAAuB,KAC9B,iBAqNF,CAAC"}
|
|
@@ -0,0 +1,71 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* PostMessage Module Types
|
|
3
|
+
* Production-ready type definitions for secure cross-iframe communication
|
|
4
|
+
*/
|
|
5
|
+
/**
|
|
6
|
+
* Message types using semantic prefixes
|
|
7
|
+
* EVENT_* = iframe → parent, CMD_* = parent → iframe, RESPONSE_* = follows request
|
|
8
|
+
*/
|
|
9
|
+
export type ElementEvent = 'EVENT_READY' | 'EVENT_MASK_READY' | 'EVENT_VALUE_CHANGED' | 'EVENT_FOCUS' | 'EVENT_BLUR' | 'EVENT_ERROR';
|
|
10
|
+
export type ElementCommand = 'CMD_SET_CONFIG' | 'CMD_SET_VALUE' | 'CMD_FOCUS' | 'CMD_BLUR' | 'CMD_CLEAR' | 'CMD_TOKENIZE' | 'CMD_TOKENS_ENCRYPT' | 'CMD_VALIDATE';
|
|
11
|
+
export type ElementResponse = 'RESPONSE_CONFIG_OK' | 'RESPONSE_CONFIG_ERROR' | 'RESPONSE_TOKEN_OK' | 'RESPONSE_TOKEN_ERROR' | 'RESPONSE_VALIDATION';
|
|
12
|
+
export type SystemMessage = 'SYS_PING' | 'SYS_PONG' | 'SYS_ACK';
|
|
13
|
+
export type MessageType = ElementEvent | ElementCommand | ElementResponse | SystemMessage;
|
|
14
|
+
export interface RetryConfig {
|
|
15
|
+
maxRetries: number;
|
|
16
|
+
initialDelay: number;
|
|
17
|
+
maxDelay: number;
|
|
18
|
+
backoffFactor: number;
|
|
19
|
+
}
|
|
20
|
+
export interface PostMessageConfig {
|
|
21
|
+
targetOrigin: string;
|
|
22
|
+
timeout?: number;
|
|
23
|
+
retries?: number | RetryConfig;
|
|
24
|
+
debug?: boolean;
|
|
25
|
+
}
|
|
26
|
+
export interface PostMessageRequest<T = any> {
|
|
27
|
+
type: MessageType | string;
|
|
28
|
+
nonce: string;
|
|
29
|
+
timestamp: number;
|
|
30
|
+
payload?: T;
|
|
31
|
+
}
|
|
32
|
+
export interface PostMessageResponse<T = any> {
|
|
33
|
+
type: MessageType | string;
|
|
34
|
+
nonce: string;
|
|
35
|
+
timestamp: number;
|
|
36
|
+
payload?: T;
|
|
37
|
+
error?: PostMessageError;
|
|
38
|
+
}
|
|
39
|
+
export type TimeoutReason = 'timeout' | 'blocked' | 'origin_mismatch' | 'network';
|
|
40
|
+
export interface PostMessageError {
|
|
41
|
+
code: string;
|
|
42
|
+
message: string;
|
|
43
|
+
reason?: TimeoutReason;
|
|
44
|
+
status?: number;
|
|
45
|
+
statusCode?: number;
|
|
46
|
+
validationErrors?: Record<string, string[]>;
|
|
47
|
+
body?: any;
|
|
48
|
+
retryCount?: number;
|
|
49
|
+
details?: Record<string, unknown>;
|
|
50
|
+
}
|
|
51
|
+
export interface PendingRequest<T = any> {
|
|
52
|
+
resolve: (value: T) => void;
|
|
53
|
+
reject: (error: Error) => void;
|
|
54
|
+
timeout: NodeJS.Timeout;
|
|
55
|
+
timestamp: number;
|
|
56
|
+
}
|
|
57
|
+
export type MessageHandler<TRequest = any, TResponse = any> = (payload: TRequest) => Promise<TResponse> | TResponse;
|
|
58
|
+
export interface PostMessageClient {
|
|
59
|
+
sendRequest<TResponse = any, TRequest = any>(type: string, payload?: TRequest): Promise<TResponse>;
|
|
60
|
+
ping(timeout?: number): Promise<number>;
|
|
61
|
+
subscribe(type: string, callback: (payload: any) => void): () => void;
|
|
62
|
+
destroy(): void;
|
|
63
|
+
getPendingCount(): number;
|
|
64
|
+
}
|
|
65
|
+
export interface PostMessageServer {
|
|
66
|
+
handle<TRequest = any, TResponse = any>(type: string, handler: MessageHandler<TRequest, TResponse>): void;
|
|
67
|
+
broadcast(type: string, payload?: any): void;
|
|
68
|
+
destroy(): void;
|
|
69
|
+
getHandlerCount(): number;
|
|
70
|
+
}
|
|
71
|
+
//# sourceMappingURL=types.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../../postmessage/src/types.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* API URL Resolution Utility
|
|
3
|
+
*
|
|
4
|
+
* Simple same-origin API detection for v3
|
|
5
|
+
* Shared across SDK and Elements packages
|
|
6
|
+
*/
|
|
7
|
+
/**
|
|
8
|
+
* Get default API base URL
|
|
9
|
+
*
|
|
10
|
+
* If user provides apiBaseUrl, use it.
|
|
11
|
+
* Otherwise auto-detect based on environment:
|
|
12
|
+
* - localhost or dev → https://js.flock-dev.com/api
|
|
13
|
+
* - uat → https://js.btsandbox.com/api
|
|
14
|
+
* - prod → https://js.basistheory.com/api
|
|
15
|
+
*
|
|
16
|
+
* @param userProvidedUrl - Optional user-provided API URL
|
|
17
|
+
* @param enforceOrigin - If true, throws error for unauthorized origins (default: false)
|
|
18
|
+
* SDK: false (runs on customer domains)
|
|
19
|
+
* Elements: true (must run on BasisTheory domains)
|
|
20
|
+
*/
|
|
21
|
+
export declare const getDefaultApiBaseUrl: (userProvidedUrl?: string, enforceOrigin?: boolean) => string;
|
|
22
|
+
//# sourceMappingURL=api-url-resolver.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"api-url-resolver.d.ts","sourceRoot":"","sources":["../../../../shared/src/api-url-resolver.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAIH;;;;;;;;;;;;;GAaG;AACH,eAAO,MAAM,oBAAoB,GAC/B,kBAAkB,MAAM,EACxB,uBAAqB,KACpB,MAkCF,CAAC"}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Universal Debug Logger
|
|
3
|
+
* PCI-compliant logging that never exposes sensitive data
|
|
4
|
+
*
|
|
5
|
+
* FR-005: Deep Logger Sanitization
|
|
6
|
+
* - Recursively sanitizes nested objects/arrays
|
|
7
|
+
* - Masks PANs to first 6 + last 4
|
|
8
|
+
* - Redacts CVV/PIN/passwords completely
|
|
9
|
+
* - Handles circular references
|
|
10
|
+
*/
|
|
11
|
+
export type DebugLogger = (action: string, metadata?: Record<string, unknown>) => void;
|
|
12
|
+
/**
|
|
13
|
+
* Create a debug logger for a specific package
|
|
14
|
+
*/
|
|
15
|
+
export declare const createDebugLogger: (packageName: string, enabled: boolean) => DebugLogger;
|
|
16
|
+
//# sourceMappingURL=debug-logger.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"debug-logger.d.ts","sourceRoot":"","sources":["../../../../shared/src/debug-logger.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAIH,MAAM,MAAM,WAAW,GAAG,CACxB,MAAM,EAAE,MAAM,EACd,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,KAC/B,IAAI,CAAC;AAiDV;;GAEG;AACH,eAAO,MAAM,iBAAiB,GAC5B,aAAa,MAAM,EACnB,SAAS,OAAO,KACf,WAUF,CAAC"}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* FR-005: Deep Logger Sanitization
|
|
3
|
+
* PCI-DSS Requirement 3.2 - Never Store Sensitive Authentication Data
|
|
4
|
+
*
|
|
5
|
+
* Recursively sanitizes objects to prevent PAN/CVV leakage in logs.
|
|
6
|
+
*/
|
|
7
|
+
/**
|
|
8
|
+
* Check if a field name matches PAN patterns
|
|
9
|
+
*/
|
|
10
|
+
export declare const isPANField: (key: string) => boolean;
|
|
11
|
+
/**
|
|
12
|
+
* Check if a field name matches redact patterns
|
|
13
|
+
*/
|
|
14
|
+
export declare const isRedactField: (key: string) => boolean;
|
|
15
|
+
/**
|
|
16
|
+
* Deep sanitize an unknown value
|
|
17
|
+
*
|
|
18
|
+
* @param data - Data to sanitize
|
|
19
|
+
* @param depth - Current recursion depth (max 5)
|
|
20
|
+
* @param visited - WeakSet to track visited objects (circular reference detection)
|
|
21
|
+
* @returns Sanitized data
|
|
22
|
+
*/
|
|
23
|
+
export declare const sanitizeDeep: (data: unknown, depth?: number, ancestors?: WeakSet<object>) => unknown;
|
|
24
|
+
//# sourceMappingURL=deep-sanitization.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"deep-sanitization.d.ts","sourceRoot":"","sources":["../../../../shared/src/deep-sanitization.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AA4BH;;GAEG;AACH,eAAO,MAAM,UAAU,GAAI,KAAK,MAAM,KAAG,OAExC,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,aAAa,GAAI,KAAK,MAAM,KAAG,OAE3C,CAAC;AAgFF;;;;;;;GAOG;AACH,eAAO,MAAM,YAAY,GACvB,MAAM,OAAO,EACb,cAAS,EACT,2BAAiC,KAChC,OAgEF,CAAC"}
|
|
@@ -0,0 +1,93 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* BasisTheory Structured Error Types
|
|
3
|
+
*
|
|
4
|
+
* Functional error factories for consistent error handling across SDK, Elements, and API Client.
|
|
5
|
+
*/
|
|
6
|
+
export interface BasisTheoryErrorType extends Error {
|
|
7
|
+
readonly code: string;
|
|
8
|
+
readonly details?: Record<string, any>;
|
|
9
|
+
toJSON: () => {
|
|
10
|
+
name: string;
|
|
11
|
+
code: string;
|
|
12
|
+
message: string;
|
|
13
|
+
details?: Record<string, any>;
|
|
14
|
+
};
|
|
15
|
+
}
|
|
16
|
+
/**
|
|
17
|
+
* Base BasisTheoryError factory
|
|
18
|
+
* Creates error objects with consistent structure
|
|
19
|
+
*/
|
|
20
|
+
export declare const createBasisTheoryError: (code: string, message: string, details?: Record<string, any>) => BasisTheoryErrorType;
|
|
21
|
+
/**
|
|
22
|
+
* BasisTheoryError - Generic base error
|
|
23
|
+
*/
|
|
24
|
+
export declare const BasisTheoryError: (code: string, message: string, details?: Record<string, any>) => BasisTheoryErrorType;
|
|
25
|
+
/**
|
|
26
|
+
* ValidationError - Input validation failures
|
|
27
|
+
*
|
|
28
|
+
* @example
|
|
29
|
+
* throw ValidationError('Card number is invalid', 'cardNumber', {
|
|
30
|
+
* received: '1234',
|
|
31
|
+
* expected: '13-19 digits'
|
|
32
|
+
* });
|
|
33
|
+
*/
|
|
34
|
+
export interface ValidationErrorType extends BasisTheoryErrorType {
|
|
35
|
+
readonly field?: string;
|
|
36
|
+
}
|
|
37
|
+
export declare const ValidationError: (message: string, field?: string, details?: Record<string, any>) => ValidationErrorType;
|
|
38
|
+
/**
|
|
39
|
+
* CoordinatorError - Errors from coordinator iframe operations
|
|
40
|
+
*
|
|
41
|
+
* @example
|
|
42
|
+
* throw CoordinatorError('Tokenization failed', {
|
|
43
|
+
* operation: 'tokenize',
|
|
44
|
+
* elementId: 'card-123'
|
|
45
|
+
* });
|
|
46
|
+
*/
|
|
47
|
+
export declare const CoordinatorError: (message: string, details?: Record<string, any>) => BasisTheoryErrorType;
|
|
48
|
+
/**
|
|
49
|
+
* ElementError - Errors from element iframe operations
|
|
50
|
+
*
|
|
51
|
+
* @example
|
|
52
|
+
* throw ElementError('Element not mounted', 'card-number-123', {
|
|
53
|
+
* reason: 'mount() was never called'
|
|
54
|
+
* });
|
|
55
|
+
*/
|
|
56
|
+
export interface ElementErrorType extends BasisTheoryErrorType {
|
|
57
|
+
readonly elementId?: string;
|
|
58
|
+
}
|
|
59
|
+
export declare const ElementError: (message: string, elementId?: string, details?: Record<string, any>) => ElementErrorType;
|
|
60
|
+
/**
|
|
61
|
+
* NetworkError - HTTP/Network-related errors
|
|
62
|
+
*
|
|
63
|
+
* @example
|
|
64
|
+
* throw NetworkError('API request failed', 500, {
|
|
65
|
+
* url: 'https://api.basistheory.com/tokens',
|
|
66
|
+
* method: 'POST'
|
|
67
|
+
* });
|
|
68
|
+
*/
|
|
69
|
+
export interface NetworkErrorType extends BasisTheoryErrorType {
|
|
70
|
+
readonly statusCode?: number;
|
|
71
|
+
}
|
|
72
|
+
export declare const NetworkError: (message: string, statusCode?: number, details?: Record<string, any>) => NetworkErrorType;
|
|
73
|
+
/**
|
|
74
|
+
* ConfigurationError - SDK/Element configuration errors
|
|
75
|
+
*
|
|
76
|
+
* @example
|
|
77
|
+
* throw ConfigurationError('Invalid API key', {
|
|
78
|
+
* provided: 'key_test_invalid',
|
|
79
|
+
* expected: 'key_test_* or key_live_*'
|
|
80
|
+
* });
|
|
81
|
+
*/
|
|
82
|
+
export declare const ConfigurationError: (message: string, details?: Record<string, any>) => BasisTheoryErrorType;
|
|
83
|
+
/**
|
|
84
|
+
* EncryptionError - Client-side encryption errors
|
|
85
|
+
*
|
|
86
|
+
* @example
|
|
87
|
+
* throw EncryptionError('JWE encryption failed', 'ENCRYPTION_FAILED', {
|
|
88
|
+
* algorithm: 'ECDH-ES',
|
|
89
|
+
* keyId: 'key_123'
|
|
90
|
+
* });
|
|
91
|
+
*/
|
|
92
|
+
export declare const EncryptionError: (message: string, code?: string, details?: Record<string, any>) => BasisTheoryErrorType;
|
|
93
|
+
//# sourceMappingURL=errors.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"errors.d.ts","sourceRoot":"","sources":["../../../../shared/src/errors.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,MAAM,WAAW,oBAAqB,SAAQ,KAAK;IACjD,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;IACvC,MAAM,EAAE,MAAM;QACZ,IAAI,EAAE,MAAM,CAAC;QACb,IAAI,EAAE,MAAM,CAAC;QACb,OAAO,EAAE,MAAM,CAAC;QAChB,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;KAC/B,CAAC;CACH;AAED;;;GAGG;AACH,eAAO,MAAM,sBAAsB,GACjC,MAAM,MAAM,EACZ,SAAS,MAAM,EACf,UAAU,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,KAC5B,oBAoBF,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,gBAAgB,GAC3B,MAAM,MAAM,EACZ,SAAS,MAAM,EACf,UAAU,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,KAC5B,oBAIF,CAAC;AAEF;;;;;;;;GAQG;AACH,MAAM,WAAW,mBAAoB,SAAQ,oBAAoB;IAC/D,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,CAAC;CACzB;AAED,eAAO,MAAM,eAAe,GAC1B,SAAS,MAAM,EACf,QAAQ,MAAM,EACd,UAAU,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,KAC5B,mBAWF,CAAC;AAEF;;;;;;;;GAQG;AACH,eAAO,MAAM,gBAAgB,GAC3B,SAAS,MAAM,EACf,UAAU,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,KAC5B,oBAIF,CAAC;AAEF;;;;;;;GAOG;AACH,MAAM,WAAW,gBAAiB,SAAQ,oBAAoB;IAC5D,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,CAAC;CAC7B;AAED,eAAO,MAAM,YAAY,GACvB,SAAS,MAAM,EACf,YAAY,MAAM,EAClB,UAAU,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,KAC5B,gBAWF,CAAC;AAEF;;;;;;;;GAQG;AACH,MAAM,WAAW,gBAAiB,SAAQ,oBAAoB;IAC5D,QAAQ,CAAC,UAAU,CAAC,EAAE,MAAM,CAAC;CAC9B;AAED,eAAO,MAAM,YAAY,GACvB,SAAS,MAAM,EACf,aAAa,MAAM,EACnB,UAAU,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,KAC5B,gBAWF,CAAC;AAEF;;;;;;;;GAQG;AACH,eAAO,MAAM,kBAAkB,GAC7B,SAAS,MAAM,EACf,UAAU,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,KAC5B,oBAIF,CAAC;AAEF;;;;;;;;GAQG;AACH,eAAO,MAAM,eAAe,GAC1B,SAAS,MAAM,EACf,OAAM,MAA2B,EACjC,UAAU,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,KAC5B,oBAIF,CAAC"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Generate a unique identifier for elements
|
|
3
|
+
*
|
|
4
|
+
* Uses crypto.randomUUID() if available (Node 14.17+, all modern browsers)
|
|
5
|
+
* Falls back to Math.random() for older environments (rare)
|
|
6
|
+
*
|
|
7
|
+
* Format: Standard UUID v4 (e.g., "550e8400-e29b-41d4-a716-446655440000")
|
|
8
|
+
*
|
|
9
|
+
* Note: This utility is rarely needed as the coordinator generates element IDs
|
|
10
|
+
* via CMD_REGISTER_ELEMENT using crypto.randomUUID() directly.
|
|
11
|
+
*/
|
|
12
|
+
export declare const generateId: () => string;
|
|
13
|
+
//# sourceMappingURL=generate-id.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"generate-id.d.ts","sourceRoot":"","sources":["../../../../shared/src/generate-id.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AACH,eAAO,MAAM,UAAU,QAAO,MAuB7B,CAAC"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @basis-theory-elements/shared
|
|
3
|
+
* Shared utilities for all BasisTheory Elements packages
|
|
4
|
+
*/
|
|
5
|
+
export { createDebugLogger } from './debug-logger';
|
|
6
|
+
export type { DebugLogger } from './debug-logger';
|
|
7
|
+
export { sanitizeDeep } from './deep-sanitization';
|
|
8
|
+
export { getDefaultApiBaseUrl } from './api-url-resolver';
|
|
9
|
+
export { generateId } from './generate-id';
|
|
10
|
+
export { configureLogger, getLogger, log } from './logger-context';
|
|
11
|
+
export { BasisTheoryError, ValidationError, CoordinatorError, ElementError, NetworkError, ConfigurationError, EncryptionError, } from './errors';
|
|
12
|
+
export type { BasisTheoryErrorType, ValidationErrorType, ElementErrorType, NetworkErrorType, } from './errors';
|
|
13
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../shared/src/index.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,iBAAiB,EAAE,MAAM,gBAAgB,CAAC;AACnD,YAAY,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAGlD,OAAO,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AAEnD,OAAO,EAAE,oBAAoB,EAAE,MAAM,oBAAoB,CAAC;AAE1D,OAAO,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAG3C,OAAO,EAAE,eAAe,EAAE,SAAS,EAAE,GAAG,EAAE,MAAM,kBAAkB,CAAC;AAGnE,OAAO,EACL,gBAAgB,EAChB,eAAe,EACf,gBAAgB,EAChB,YAAY,EACZ,YAAY,EACZ,kBAAkB,EAClB,eAAe,GAChB,MAAM,UAAU,CAAC;AAClB,YAAY,EACV,oBAAoB,EACpB,mBAAmB,EACnB,gBAAgB,EAChB,gBAAgB,GACjB,MAAM,UAAU,CAAC"}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Shared Logger Context
|
|
3
|
+
*
|
|
4
|
+
* Provides a global logger instance that can be controlled by the coordinator.
|
|
5
|
+
* Elements import this and use the shared logger without passing it around.
|
|
6
|
+
*/
|
|
7
|
+
import { type DebugLogger } from './debug-logger';
|
|
8
|
+
/**
|
|
9
|
+
* Configure the global logger (called by coordinator on init)
|
|
10
|
+
*
|
|
11
|
+
* @param packageName - Package name for log prefix
|
|
12
|
+
* @param enabled - Whether debug logging is enabled
|
|
13
|
+
*/
|
|
14
|
+
export declare const configureLogger: (packageName: string, enabled: boolean) => void;
|
|
15
|
+
/**
|
|
16
|
+
* Get the current logger instance
|
|
17
|
+
*
|
|
18
|
+
* Elements use this to get the shared logger
|
|
19
|
+
*/
|
|
20
|
+
export declare const getLogger: () => DebugLogger;
|
|
21
|
+
/**
|
|
22
|
+
* Convenience: Log directly without getting logger first
|
|
23
|
+
*/
|
|
24
|
+
export declare const log: (action: string, metadata?: Record<string, unknown>) => void;
|
|
25
|
+
//# sourceMappingURL=logger-context.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"logger-context.d.ts","sourceRoot":"","sources":["../../../../shared/src/logger-context.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAqB,KAAK,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAOrE;;;;;GAKG;AACH,eAAO,MAAM,eAAe,GAC1B,aAAa,MAAM,EACnB,SAAS,OAAO,KACf,IAEF,CAAC;AAEF;;;;GAIG;AACH,eAAO,MAAM,SAAS,QAAO,WAA2B,CAAC;AAEzD;;GAEG;AACH,eAAO,MAAM,GAAG,GACd,QAAQ,MAAM,EACd,WAAW,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,KACjC,IAEF,CAAC"}
|
package/dist/sri.json
ADDED
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": "1.0",
|
|
3
|
+
"versions": {
|
|
4
|
+
"3.0.0-beta.3": {
|
|
5
|
+
"umd": {
|
|
6
|
+
"hash": "sha384-ddyMdTUvEA0NROPra0/eWz+jWaUMNSsyhhlM1rCTNGdqTMkLAHqd5G/QQPZ/uJbv",
|
|
7
|
+
"url": "https://js.basistheory.com/3.0.0-beta.3/web-elements/basis-theory-sdk.umd.js",
|
|
8
|
+
"size": 37664
|
|
9
|
+
},
|
|
10
|
+
"es": {
|
|
11
|
+
"hash": "sha384-2d1ZLM+3c8nXIBEcLQEb8z5vrX7pViZdTTWS9EOZpZsv3k05qA3UtMpdPPCYtCXd",
|
|
12
|
+
"url": "https://js.basistheory.com/3.0.0-beta.3/web-elements/basis-theory-sdk.es.js",
|
|
13
|
+
"size": 108
|
|
14
|
+
},
|
|
15
|
+
"loader": {
|
|
16
|
+
"hash": "sha384-6EKARPX/SiO2afMUOkWOSIWueNo4XPmri7bZz5bVuPBRWElgRVpetNLCtblDhBkd",
|
|
17
|
+
"url": "https://js.basistheory.com/3.0.0-beta.3/web-elements/basis-theory.js",
|
|
18
|
+
"size": 4208
|
|
19
|
+
}
|
|
20
|
+
}
|
|
21
|
+
}
|
|
22
|
+
}
|