@wajub/js 1.3.0
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 +78 -0
- package/dist/index.d.ts +431 -0
- package/dist/index.mjs +2 -0
- package/dist/pure.d.ts +431 -0
- package/dist/pure.mjs +2 -0
- package/dist/wajub-checkout.d.ts +431 -0
- package/package.json +44 -0
|
@@ -0,0 +1,431 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Wajub Checkout SDK — TypeScript definitions
|
|
3
|
+
*
|
|
4
|
+
* npm loader (recommended — loads runtime from CDN):
|
|
5
|
+
* npm install @wajub/js
|
|
6
|
+
* import { loadWajub, mount } from "@wajub/js";
|
|
7
|
+
* const rt = await loadWajub();
|
|
8
|
+
*
|
|
9
|
+
* Deferred load (no side effect on import):
|
|
10
|
+
* import { loadWajub } from "@wajub/js/pure";
|
|
11
|
+
*
|
|
12
|
+
* CDN script tag (full runtime):
|
|
13
|
+
* <script src="https://js.wajub.com"></script>
|
|
14
|
+
*
|
|
15
|
+
* CDN ESM (full runtime):
|
|
16
|
+
* import { mount } from "https://js.wajub.com/wajub.mjs";
|
|
17
|
+
*/
|
|
18
|
+
|
|
19
|
+
export interface LoadWajubOptions {
|
|
20
|
+
/** CDN origin (default https://js.wajub.com). */
|
|
21
|
+
jsOrigin?: string;
|
|
22
|
+
/** Full script URL override (default `{jsOrigin}/wajub.js`). */
|
|
23
|
+
jsUrl?: string;
|
|
24
|
+
}
|
|
25
|
+
|
|
26
|
+
/** Runtime globals after Wajub.js CDN script loads. */
|
|
27
|
+
export interface WajubRuntime {
|
|
28
|
+
wajub: WajubSDK;
|
|
29
|
+
Wajub: WajubFactory;
|
|
30
|
+
WajubError: typeof WajubError;
|
|
31
|
+
}
|
|
32
|
+
|
|
33
|
+
export interface LoadWajubFn {
|
|
34
|
+
(options?: LoadWajubOptions): Promise<WajubRuntime | null>;
|
|
35
|
+
setLoadParameters(params: LoadWajubOptions): void;
|
|
36
|
+
}
|
|
37
|
+
|
|
38
|
+
/**
|
|
39
|
+
* Load Wajub.js from the CDN. Resolves to `null` on the server (SSR-safe).
|
|
40
|
+
*/
|
|
41
|
+
export const loadWajub: LoadWajubFn;
|
|
42
|
+
|
|
43
|
+
/** @wajub/js async helpers — load CDN then call API. Return null on SSR. */
|
|
44
|
+
export function mount(
|
|
45
|
+
container: string | HTMLElement,
|
|
46
|
+
config: EmbeddedConfig,
|
|
47
|
+
): Promise<CheckoutInstance | null>;
|
|
48
|
+
export function open(config: PopupConfig): Promise<PopupInstance | null>;
|
|
49
|
+
export function checkout(config: EmbeddedConfig): Promise<void | null>;
|
|
50
|
+
export function preload(sessionId: string, options?: { iframe?: boolean }): Promise<void | null>;
|
|
51
|
+
export function fetchSession(sessionId: string): Promise<SessionPreview>;
|
|
52
|
+
export function components(
|
|
53
|
+
sessionId: string,
|
|
54
|
+
options?: Partial<ComponentConfig>,
|
|
55
|
+
): Promise<ComponentsFactory | null>;
|
|
56
|
+
export function confirmPayment(
|
|
57
|
+
options: ConfirmPaymentOptions,
|
|
58
|
+
): Promise<{ status: string; transaction?: Record<string, unknown> | null }>;
|
|
59
|
+
export function getVersion(): Promise<string | null>;
|
|
60
|
+
export function getCheckoutOrigin(): Promise<string | null>;
|
|
61
|
+
|
|
62
|
+
export type CheckoutState =
|
|
63
|
+
| "INITIATED"
|
|
64
|
+
| "COLLECTING_DETAILS"
|
|
65
|
+
| "PROCESSING"
|
|
66
|
+
| "OTP_REQUIRED"
|
|
67
|
+
| "3DS_REQUIRED"
|
|
68
|
+
| "USSD_REQUIRED"
|
|
69
|
+
| "APPROVAL_REQUIRED"
|
|
70
|
+
| "VERIFYING"
|
|
71
|
+
| "PENDING"
|
|
72
|
+
| "SUCCESS"
|
|
73
|
+
| "FAILED"
|
|
74
|
+
| "EXPIRED"
|
|
75
|
+
| "CANCELLED";
|
|
76
|
+
|
|
77
|
+
export type WajubErrorType =
|
|
78
|
+
| "api_error"
|
|
79
|
+
| "authentication_error"
|
|
80
|
+
| "invalid_request_error"
|
|
81
|
+
| "payment_error"
|
|
82
|
+
| "rate_limit_error";
|
|
83
|
+
|
|
84
|
+
export interface WajubErrorShape {
|
|
85
|
+
name: "WajubError";
|
|
86
|
+
message: string;
|
|
87
|
+
type: WajubErrorType;
|
|
88
|
+
code: string;
|
|
89
|
+
decline_code: string | null;
|
|
90
|
+
retryable: boolean;
|
|
91
|
+
param: string | null;
|
|
92
|
+
}
|
|
93
|
+
|
|
94
|
+
export declare class WajubError extends Error implements WajubErrorShape {
|
|
95
|
+
type: WajubErrorType;
|
|
96
|
+
code: string;
|
|
97
|
+
decline_code: string | null;
|
|
98
|
+
retryable: boolean;
|
|
99
|
+
param: string | null;
|
|
100
|
+
static fromPayload(payload: unknown): WajubError;
|
|
101
|
+
toJSON(): WajubErrorShape;
|
|
102
|
+
}
|
|
103
|
+
|
|
104
|
+
export type AppearanceThemePreset = "stripe" | "night" | "flat" | "none";
|
|
105
|
+
export type AppearanceColorScheme = "light" | "dark" | "auto";
|
|
106
|
+
export type AppearanceLabels = "above" | "floating";
|
|
107
|
+
|
|
108
|
+
export interface AppearanceVariables {
|
|
109
|
+
colorPrimary?: string;
|
|
110
|
+
colorBackground?: string;
|
|
111
|
+
colorText?: string;
|
|
112
|
+
colorTextSecondary?: string;
|
|
113
|
+
colorTextPlaceholder?: string;
|
|
114
|
+
colorDanger?: string;
|
|
115
|
+
colorSuccess?: string;
|
|
116
|
+
fontFamily?: string;
|
|
117
|
+
fontSizeBase?: string;
|
|
118
|
+
fontWeightNormal?: string;
|
|
119
|
+
fontWeightMedium?: string;
|
|
120
|
+
fontWeightBold?: string;
|
|
121
|
+
spacingUnit?: string;
|
|
122
|
+
borderRadius?: string;
|
|
123
|
+
spacingGridRow?: string;
|
|
124
|
+
spacingGridColumn?: string;
|
|
125
|
+
}
|
|
126
|
+
|
|
127
|
+
export type AppearanceRules = Record<string, Record<string, string>>;
|
|
128
|
+
|
|
129
|
+
export interface AppearanceConfig {
|
|
130
|
+
/** Built-in preset (layered before explicit keys). */
|
|
131
|
+
theme?: AppearanceThemePreset;
|
|
132
|
+
primaryColor?: string;
|
|
133
|
+
secondaryColor?: string;
|
|
134
|
+
backgroundColor?: string;
|
|
135
|
+
fontFamily?: string;
|
|
136
|
+
borderRadius?: string;
|
|
137
|
+
buttonTextColor?: string;
|
|
138
|
+
inputBackgroundColor?: string;
|
|
139
|
+
inputBorderColor?: string;
|
|
140
|
+
textMutedColor?: string;
|
|
141
|
+
successColor?: string;
|
|
142
|
+
errorColor?: string;
|
|
143
|
+
shadow?: string;
|
|
144
|
+
colorScheme?: AppearanceColorScheme;
|
|
145
|
+
labels?: AppearanceLabels;
|
|
146
|
+
disableAnimations?: boolean;
|
|
147
|
+
variables?: AppearanceVariables;
|
|
148
|
+
rules?: AppearanceRules;
|
|
149
|
+
}
|
|
150
|
+
|
|
151
|
+
/** @deprecated Use AppearanceConfig */
|
|
152
|
+
export interface EmbedTheme {
|
|
153
|
+
primaryColor?: string;
|
|
154
|
+
fontFamily?: string;
|
|
155
|
+
borderRadius?: string;
|
|
156
|
+
}
|
|
157
|
+
|
|
158
|
+
export type CheckoutLayout = "classic" | "compact" | "tabs" | "accordion";
|
|
159
|
+
|
|
160
|
+
export interface EmbedBreakdown {
|
|
161
|
+
subtotal: number;
|
|
162
|
+
discount: number;
|
|
163
|
+
tax: number;
|
|
164
|
+
total: number;
|
|
165
|
+
currency: string;
|
|
166
|
+
}
|
|
167
|
+
|
|
168
|
+
export interface SessionPreview {
|
|
169
|
+
session_id: string;
|
|
170
|
+
status: string;
|
|
171
|
+
environment: "sandbox" | "live";
|
|
172
|
+
amount: number;
|
|
173
|
+
currency: string;
|
|
174
|
+
merchant_name: string;
|
|
175
|
+
payment_methods: Array<{ id: string; type: string; label: string }>;
|
|
176
|
+
saved_methods?: Array<{ id: string; type: string; label: string }>;
|
|
177
|
+
features: Record<string, boolean>;
|
|
178
|
+
}
|
|
179
|
+
|
|
180
|
+
export interface EmbeddedConfig {
|
|
181
|
+
sessionId: string;
|
|
182
|
+
locale?: string;
|
|
183
|
+
embedOrigin?: string;
|
|
184
|
+
/** @deprecated Prefer appearance */
|
|
185
|
+
theme?: EmbedTheme;
|
|
186
|
+
appearance?: AppearanceConfig;
|
|
187
|
+
layout?: CheckoutLayout;
|
|
188
|
+
loadingText?: string;
|
|
189
|
+
showLoading?: boolean;
|
|
190
|
+
onReady?: (instance: CheckoutInstance) => void;
|
|
191
|
+
onSuccess?: (transaction: Record<string, unknown>) => void;
|
|
192
|
+
onError?: (error: WajubError | Record<string, unknown>) => void;
|
|
193
|
+
onLoadError?: (error: WajubError | Record<string, unknown>) => void;
|
|
194
|
+
onCancel?: () => void;
|
|
195
|
+
onExpired?: () => void;
|
|
196
|
+
onStateChange?: (payload: { state?: CheckoutState; method?: string }) => void;
|
|
197
|
+
onMethodChange?: (payload: { methodId?: string; method_id?: string }) => void;
|
|
198
|
+
onBreakdown?: (breakdown: EmbedBreakdown) => void;
|
|
199
|
+
onResize?: (height: number) => void;
|
|
200
|
+
onClose?: () => void;
|
|
201
|
+
}
|
|
202
|
+
|
|
203
|
+
export interface CheckoutInstance {
|
|
204
|
+
mount(): void;
|
|
205
|
+
unmount(): void;
|
|
206
|
+
update(
|
|
207
|
+
config: Partial<
|
|
208
|
+
Pick<EmbeddedConfig, "locale" | "theme" | "appearance" | "layout"> & { currency?: string }
|
|
209
|
+
>,
|
|
210
|
+
): void;
|
|
211
|
+
getState(): CheckoutState | string;
|
|
212
|
+
submit(): void;
|
|
213
|
+
cancel(): void;
|
|
214
|
+
retry(): void;
|
|
215
|
+
selectMethod(methodId: string): void;
|
|
216
|
+
close(): void;
|
|
217
|
+
destroy(): void;
|
|
218
|
+
}
|
|
219
|
+
|
|
220
|
+
export interface PopupConfig extends EmbeddedConfig {
|
|
221
|
+
width?: number;
|
|
222
|
+
height?: number;
|
|
223
|
+
closeOnOverlay?: boolean;
|
|
224
|
+
closeOnEscape?: boolean;
|
|
225
|
+
}
|
|
226
|
+
|
|
227
|
+
export interface PopupInstance extends CheckoutInstance {
|
|
228
|
+
isOpen?(): boolean;
|
|
229
|
+
}
|
|
230
|
+
|
|
231
|
+
export type ComponentType = "card" | "mobileMoney" | "wallet" | "payment" | "address";
|
|
232
|
+
|
|
233
|
+
export type AddressMode = "shipping" | "billing";
|
|
234
|
+
export type PhoneFieldMode = "always" | "auto" | "never";
|
|
235
|
+
export type CollectAddressMode = "shipping" | "billing";
|
|
236
|
+
|
|
237
|
+
export interface AddressValue {
|
|
238
|
+
line1: string;
|
|
239
|
+
line2?: string;
|
|
240
|
+
city: string;
|
|
241
|
+
state?: string;
|
|
242
|
+
postal_code?: string;
|
|
243
|
+
country: string;
|
|
244
|
+
}
|
|
245
|
+
|
|
246
|
+
export interface ComponentAddressValue {
|
|
247
|
+
name?: string;
|
|
248
|
+
phone?: string;
|
|
249
|
+
address?: AddressValue | null;
|
|
250
|
+
mode?: AddressMode;
|
|
251
|
+
}
|
|
252
|
+
|
|
253
|
+
export interface ComponentChangeEvent {
|
|
254
|
+
complete?: boolean;
|
|
255
|
+
empty?: boolean;
|
|
256
|
+
error?: WajubErrorShape | Record<string, unknown>;
|
|
257
|
+
value?: ComponentAddressValue | Record<string, unknown>;
|
|
258
|
+
}
|
|
259
|
+
|
|
260
|
+
export interface ComponentFieldsConfig {
|
|
261
|
+
phone?: PhoneFieldMode;
|
|
262
|
+
}
|
|
263
|
+
|
|
264
|
+
export interface ComponentConfig {
|
|
265
|
+
sessionId: string;
|
|
266
|
+
locale?: string;
|
|
267
|
+
componentOrigin?: string;
|
|
268
|
+
appearance?: AppearanceConfig;
|
|
269
|
+
layout?: CheckoutLayout;
|
|
270
|
+
/** Payment component — collect shipping/billing address inline. */
|
|
271
|
+
collectAddress?: CollectAddressMode;
|
|
272
|
+
/** Address component — shipping vs billing labels. */
|
|
273
|
+
addressMode?: AddressMode;
|
|
274
|
+
collectName?: boolean;
|
|
275
|
+
fields?: ComponentFieldsConfig;
|
|
276
|
+
onReady?: (component: ComponentInstance) => void;
|
|
277
|
+
onChange?: (event: ComponentChangeEvent) => void;
|
|
278
|
+
onFocus?: () => void;
|
|
279
|
+
onBlur?: () => void;
|
|
280
|
+
onLoadError?: (error: WajubError | Record<string, unknown>) => void;
|
|
281
|
+
onSuccess?: (transaction: Record<string, unknown>) => void;
|
|
282
|
+
onError?: (error: WajubError | Record<string, unknown>) => void;
|
|
283
|
+
onMethodChange?: (payload: { methodId?: string }) => void;
|
|
284
|
+
}
|
|
285
|
+
|
|
286
|
+
export interface ComponentInstance {
|
|
287
|
+
mount(container: string | HTMLElement): ComponentInstance;
|
|
288
|
+
unmount(): void;
|
|
289
|
+
destroy(): void;
|
|
290
|
+
on(event: string, fn: (data?: unknown) => void): ComponentInstance;
|
|
291
|
+
off(event: string, fn: (data?: unknown) => void): ComponentInstance;
|
|
292
|
+
update(config: Partial<Pick<ComponentConfig, "locale" | "appearance" | "layout">>): ComponentInstance;
|
|
293
|
+
focus(): ComponentInstance;
|
|
294
|
+
blur(): ComponentInstance;
|
|
295
|
+
submit(): ComponentInstance;
|
|
296
|
+
selectMethod(methodId: string): ComponentInstance;
|
|
297
|
+
getState(): CheckoutState | string;
|
|
298
|
+
isComplete(): boolean;
|
|
299
|
+
getError(): WajubError | null;
|
|
300
|
+
/** Address component — current field values (also on `change.value`). */
|
|
301
|
+
getValue(): ComponentAddressValue | Record<string, unknown> | null;
|
|
302
|
+
}
|
|
303
|
+
|
|
304
|
+
export interface ComponentsFactory {
|
|
305
|
+
sessionId: string;
|
|
306
|
+
create(type: ComponentType, config?: Partial<ComponentConfig>): ComponentInstance;
|
|
307
|
+
}
|
|
308
|
+
|
|
309
|
+
export interface ConfirmPaymentOptions {
|
|
310
|
+
sessionId: string;
|
|
311
|
+
components?: ComponentInstance & { _paymentComponent?: ComponentInstance };
|
|
312
|
+
callback?: string;
|
|
313
|
+
}
|
|
314
|
+
|
|
315
|
+
export interface CreatePaymentParams {
|
|
316
|
+
amount: number;
|
|
317
|
+
currency: string;
|
|
318
|
+
reference?: string;
|
|
319
|
+
description?: string;
|
|
320
|
+
customer?: {
|
|
321
|
+
email?: string;
|
|
322
|
+
name?: string;
|
|
323
|
+
phone?: string;
|
|
324
|
+
country?: string;
|
|
325
|
+
};
|
|
326
|
+
bearer?: "merchant" | "customer";
|
|
327
|
+
/** URL HTTPS where the payer is redirected after payment (redirect flow). */
|
|
328
|
+
callback?: string;
|
|
329
|
+
metadata?: Record<string, string>;
|
|
330
|
+
}
|
|
331
|
+
|
|
332
|
+
export interface CreatePaymentResult {
|
|
333
|
+
sessionId: string;
|
|
334
|
+
authorizationToken: string;
|
|
335
|
+
authorizationUrl: string | null;
|
|
336
|
+
transaction: Record<string, unknown> | null;
|
|
337
|
+
raw: Record<string, unknown>;
|
|
338
|
+
}
|
|
339
|
+
|
|
340
|
+
export interface WajubInitOptions {
|
|
341
|
+
/** Existing session token from your backend (authorization_token). */
|
|
342
|
+
sessionId?: string;
|
|
343
|
+
/** Publishable key when using object form: Wajub({ publishableKey, sessionId }). */
|
|
344
|
+
publishableKey?: string;
|
|
345
|
+
/** @deprecated Alias for publishableKey */
|
|
346
|
+
apiKey?: string;
|
|
347
|
+
/** API origin (default baked at SDK build — https://api.wajub.com). */
|
|
348
|
+
apiBase?: string;
|
|
349
|
+
/** Full POST /payments URL override. */
|
|
350
|
+
paymentsUrl?: string;
|
|
351
|
+
/** Route via checkout BFF (/api/payments) — useful for local demos / CORS. */
|
|
352
|
+
useCheckoutProxy?: boolean;
|
|
353
|
+
componentOrigin?: string;
|
|
354
|
+
}
|
|
355
|
+
|
|
356
|
+
export interface InitCheckoutOptions extends Partial<EmbeddedConfig> {
|
|
357
|
+
mode?: "inline" | "overlay" | "redirect";
|
|
358
|
+
container?: string | HTMLElement;
|
|
359
|
+
/** Use an existing session — skips createPayment(). */
|
|
360
|
+
sessionId?: string;
|
|
361
|
+
payment?: CreatePaymentParams;
|
|
362
|
+
checkout?: Partial<EmbeddedConfig>;
|
|
363
|
+
}
|
|
364
|
+
|
|
365
|
+
export interface InitCheckoutResult {
|
|
366
|
+
session: CreatePaymentResult | { sessionId: string };
|
|
367
|
+
instance: CheckoutInstance | PopupInstance | null;
|
|
368
|
+
}
|
|
369
|
+
|
|
370
|
+
/** Wajub.js client — create a session (pk) and/or use an existing sessionId. */
|
|
371
|
+
export interface WajubClient {
|
|
372
|
+
publishableKey: string | null;
|
|
373
|
+
sessionId: string | null;
|
|
374
|
+
environment: "sandbox" | "live" | null;
|
|
375
|
+
apiBase: string;
|
|
376
|
+
checkoutOrigin: string;
|
|
377
|
+
useSession(sessionId: string): WajubClient;
|
|
378
|
+
createPayment(params: CreatePaymentParams): Promise<CreatePaymentResult>;
|
|
379
|
+
initCheckout(options: InitCheckoutOptions): Promise<InitCheckoutResult>;
|
|
380
|
+
fetchSession(sessionId?: string): Promise<SessionPreview>;
|
|
381
|
+
preload(sessionId?: string, options?: { iframe?: boolean }): void;
|
|
382
|
+
checkout(config?: Partial<EmbeddedConfig>): void;
|
|
383
|
+
mount(container: string | HTMLElement, config?: Partial<EmbeddedConfig>): CheckoutInstance;
|
|
384
|
+
open(config?: Partial<PopupConfig>): PopupInstance;
|
|
385
|
+
components(sessionIdOrConfig?: string | Partial<ComponentConfig>, config?: Partial<ComponentConfig>): ComponentsFactory;
|
|
386
|
+
confirmPayment(options?: ConfirmPaymentOptions): Promise<{ status: string; transaction?: Record<string, unknown> | null }>;
|
|
387
|
+
}
|
|
388
|
+
|
|
389
|
+
export interface WajubFactory {
|
|
390
|
+
(publishableKeyOrSessionId: string, options?: WajubInitOptions): WajubClient;
|
|
391
|
+
(options: WajubInitOptions): WajubClient;
|
|
392
|
+
session(sessionId: string, options?: WajubInitOptions): WajubClient;
|
|
393
|
+
parsePublishableKey(key: string): { key: string; environment: "sandbox" | "live" };
|
|
394
|
+
createPayment(
|
|
395
|
+
publishableKey: string,
|
|
396
|
+
params: CreatePaymentParams,
|
|
397
|
+
options?: WajubInitOptions,
|
|
398
|
+
): Promise<CreatePaymentResult>;
|
|
399
|
+
}
|
|
400
|
+
|
|
401
|
+
export interface WajubSDK {
|
|
402
|
+
checkout(config: EmbeddedConfig): void;
|
|
403
|
+
mount(container: string | HTMLElement, config: EmbeddedConfig): CheckoutInstance;
|
|
404
|
+
open(config: PopupConfig): PopupInstance;
|
|
405
|
+
preload(sessionId: string, options?: { iframe?: boolean }): void;
|
|
406
|
+
fetchSession(sessionId: string): Promise<SessionPreview>;
|
|
407
|
+
components(sessionId: string, options?: Partial<ComponentConfig>): ComponentsFactory;
|
|
408
|
+
confirmPayment(options: ConfirmPaymentOptions): Promise<{ status: string }>;
|
|
409
|
+
/** @deprecated Removed in SDK 2.1 — use components or mount(). */
|
|
410
|
+
createHeadless(config: EmbeddedConfig): never;
|
|
411
|
+
/** Wajub(pk | sessionId | options) — session-bound client with createPayment + mount. */
|
|
412
|
+
create: WajubFactory;
|
|
413
|
+
version: string;
|
|
414
|
+
sdkMajor: string;
|
|
415
|
+
checkoutOrigin: string;
|
|
416
|
+
}
|
|
417
|
+
|
|
418
|
+
declare global {
|
|
419
|
+
interface Window {
|
|
420
|
+
wajub: WajubSDK;
|
|
421
|
+
Wajub: WajubFactory;
|
|
422
|
+
WajubError: typeof WajubError;
|
|
423
|
+
WajubPay: { create(opts: EmbeddedConfig & { container: string | HTMLElement }): unknown };
|
|
424
|
+
__WajubCheckoutCore?: unknown;
|
|
425
|
+
__WajubComponentsCore?: unknown;
|
|
426
|
+
__WajubAppearance?: unknown;
|
|
427
|
+
__WajubError?: unknown;
|
|
428
|
+
}
|
|
429
|
+
}
|
|
430
|
+
|
|
431
|
+
export {};
|
package/package.json
ADDED
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "@wajub/js",
|
|
3
|
+
"version": "1.3.0",
|
|
4
|
+
"description": "JavaScript SDK for Wajub Components — hosted checkout, payment fields, and TypeScript types",
|
|
5
|
+
"license": "MIT",
|
|
6
|
+
"author": "Wajub",
|
|
7
|
+
"homepage": "https://wajub.com",
|
|
8
|
+
"keywords": [
|
|
9
|
+
"wajub",
|
|
10
|
+
"checkout",
|
|
11
|
+
"payments",
|
|
12
|
+
"mobile-money",
|
|
13
|
+
"embed",
|
|
14
|
+
"components"
|
|
15
|
+
],
|
|
16
|
+
"type": "module",
|
|
17
|
+
"sideEffects": [
|
|
18
|
+
"./dist/index.mjs"
|
|
19
|
+
],
|
|
20
|
+
"types": "./dist/index.d.ts",
|
|
21
|
+
"exports": {
|
|
22
|
+
".": {
|
|
23
|
+
"types": "./dist/index.d.ts",
|
|
24
|
+
"import": "./dist/index.mjs",
|
|
25
|
+
"default": "./dist/index.mjs"
|
|
26
|
+
},
|
|
27
|
+
"./pure": {
|
|
28
|
+
"types": "./dist/pure.d.ts",
|
|
29
|
+
"import": "./dist/pure.mjs",
|
|
30
|
+
"default": "./dist/pure.mjs"
|
|
31
|
+
},
|
|
32
|
+
"./package.json": "./package.json"
|
|
33
|
+
},
|
|
34
|
+
"files": [
|
|
35
|
+
"dist",
|
|
36
|
+
"README.md"
|
|
37
|
+
],
|
|
38
|
+
"engines": {
|
|
39
|
+
"node": ">=18"
|
|
40
|
+
},
|
|
41
|
+
"publishConfig": {
|
|
42
|
+
"access": "public"
|
|
43
|
+
}
|
|
44
|
+
}
|