bypilot-business-signup-sdk 0.1.0-beta.1

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.
@@ -0,0 +1,493 @@
1
+ /**
2
+ * OAuth token yapısı
3
+ */
4
+ interface OAuthToken {
5
+ accessToken: string;
6
+ refreshToken?: string;
7
+ expiresAt?: number;
8
+ tokenType: string;
9
+ scope?: string;
10
+ }
11
+ /**
12
+ * Token storage stratejisi
13
+ */
14
+ type StorageStrategy = 'localStorage' | 'sessionStorage' | 'memory';
15
+ /**
16
+ * OAuth client konfigürasyonu
17
+ */
18
+ interface OAuthConfig {
19
+ clientId: string;
20
+ redirectUri: string;
21
+ scope?: string;
22
+ state?: string;
23
+ storage?: StorageStrategy;
24
+ }
25
+ /**
26
+ * Popup konfigürasyonu
27
+ */
28
+ interface PopupConfig {
29
+ width?: number;
30
+ height?: number;
31
+ left?: number;
32
+ top?: number;
33
+ }
34
+ /**
35
+ * OAuth callback response
36
+ */
37
+ interface OAuthCallbackResponse {
38
+ code?: string;
39
+ state?: string;
40
+ error?: string;
41
+ errorDescription?: string;
42
+ }
43
+ /**
44
+ * Provider base konfigürasyonu
45
+ */
46
+ interface ProviderConfig extends OAuthConfig {
47
+ [key: string]: unknown;
48
+ }
49
+ /**
50
+ * SDK event tipleri
51
+ */
52
+ type SDKEventType = 'auth:start' | 'auth:success' | 'auth:error' | 'auth:cancel' | 'token:refresh' | 'token:expire';
53
+ /**
54
+ * SDK event listener
55
+ */
56
+ type SDKEventListener<T = unknown> = (data: T) => void;
57
+ /**
58
+ * Auth result
59
+ */
60
+ interface AuthResult {
61
+ success: boolean;
62
+ token?: OAuthToken;
63
+ error?: string;
64
+ errorDescription?: string;
65
+ raw?: Record<string, unknown>;
66
+ }
67
+
68
+ /**
69
+ * Token yönetimi için storage wrapper
70
+ */
71
+ declare class TokenManager {
72
+ private strategy;
73
+ private memoryStorage;
74
+ private storageKey;
75
+ constructor(providerName: string, strategy?: StorageStrategy);
76
+ /**
77
+ * Token'ı storage'a kaydet
78
+ */
79
+ save(token: OAuthToken): void;
80
+ /**
81
+ * Token'ı storage'dan getir
82
+ */
83
+ get(): OAuthToken | null;
84
+ /**
85
+ * Token'ı sil
86
+ */
87
+ clear(): void;
88
+ /**
89
+ * Token'ın geçerli olup olmadığını kontrol et
90
+ */
91
+ isValid(): boolean;
92
+ /**
93
+ * Token'ın süresinin dolmasına kalan süre (ms)
94
+ */
95
+ getTimeUntilExpiry(): number | null;
96
+ }
97
+
98
+ /**
99
+ * SDK için basit event emitter
100
+ */
101
+ declare class EventEmitter {
102
+ private listeners;
103
+ /**
104
+ * Event listener ekle
105
+ */
106
+ on<T = unknown>(event: SDKEventType, listener: SDKEventListener<T>): () => void;
107
+ /**
108
+ * Event listener kaldır
109
+ */
110
+ off<T = unknown>(event: SDKEventType, listener: SDKEventListener<T>): void;
111
+ /**
112
+ * Event tetikle
113
+ */
114
+ emit<T = unknown>(event: SDKEventType, data?: T): void;
115
+ /**
116
+ * Tek seferlik event listener
117
+ */
118
+ once<T = unknown>(event: SDKEventType, listener: SDKEventListener<T>): () => void;
119
+ /**
120
+ * Tüm listener'ları temizle
121
+ */
122
+ removeAllListeners(event?: SDKEventType): void;
123
+ }
124
+
125
+ /**
126
+ * OAuth popup yönetimi
127
+ */
128
+ declare class PopupManager {
129
+ private popup;
130
+ private checkInterval;
131
+ /**
132
+ * Popup aç ve URL'e yönlendir
133
+ */
134
+ open(url: string, config?: PopupConfig): Window | null;
135
+ /**
136
+ * Popup'ın kapanmasını bekle
137
+ */
138
+ waitForClose(): Promise<void>;
139
+ /**
140
+ * Popup'tan callback al (postMessage ile)
141
+ */
142
+ waitForCallback<T>(origin: string, timeout?: number): Promise<T>;
143
+ /**
144
+ * Popup'ı kapat ve temizle
145
+ */
146
+ close(): void;
147
+ private cleanup;
148
+ /**
149
+ * Popup aktif mi?
150
+ */
151
+ isOpen(): boolean;
152
+ }
153
+
154
+ /**
155
+ * Tüm OAuth provider'ları için base class
156
+ */
157
+ declare abstract class BaseProvider extends EventEmitter {
158
+ protected config: ProviderConfig;
159
+ protected tokenManager: TokenManager;
160
+ protected popupManager: PopupManager;
161
+ /**
162
+ * Provider adı (alt sınıflar override etmeli)
163
+ */
164
+ abstract readonly name: string;
165
+ /**
166
+ * OAuth authorization URL'i
167
+ */
168
+ protected abstract readonly authorizationEndpoint: string;
169
+ constructor(config: ProviderConfig);
170
+ /**
171
+ * Authorization URL'i oluştur
172
+ */
173
+ protected abstract buildAuthorizationUrl(state: string): string;
174
+ /**
175
+ * Callback'i işle ve token al
176
+ */
177
+ protected abstract handleCallback(callbackData: Record<string, unknown>): Promise<AuthResult>;
178
+ /**
179
+ * Random state oluştur
180
+ */
181
+ protected generateState(): string;
182
+ /**
183
+ * Popup ile login başlat
184
+ */
185
+ loginWithPopup(popupConfig?: PopupConfig): Promise<AuthResult>;
186
+ /**
187
+ * Redirect ile login başlat
188
+ */
189
+ loginWithRedirect(): void;
190
+ /**
191
+ * Redirect callback'ini işle (sayfa yüklendiğinde çağrılmalı)
192
+ */
193
+ handleRedirectCallback(): Promise<AuthResult | null>;
194
+ /**
195
+ * Mevcut token'ı getir
196
+ */
197
+ getToken(): OAuthToken | null;
198
+ /**
199
+ * Access token'ı getir
200
+ */
201
+ getAccessToken(): string | null;
202
+ /**
203
+ * Token geçerli mi?
204
+ */
205
+ isAuthenticated(): boolean;
206
+ /**
207
+ * Logout - token'ı temizle
208
+ */
209
+ logout(): void;
210
+ /**
211
+ * Storage stratejisini değiştir
212
+ */
213
+ setStorageStrategy(strategy: StorageStrategy): void;
214
+ }
215
+
216
+ /**
217
+ * WhatsApp Embedded Signup konfigürasyonu
218
+ */
219
+ interface WhatsAppConfig extends ProviderConfig {
220
+ /**
221
+ * Facebook App ID
222
+ */
223
+ clientId: string;
224
+ /**
225
+ * Facebook App Secret (opsiyonel - backend token exchange için)
226
+ * DİKKAT: Frontend'de kullanılmamalı!
227
+ */
228
+ clientSecret?: string;
229
+ /**
230
+ * Config ID - Meta Business Suite'den alınan Embedded Signup config
231
+ */
232
+ configId: string;
233
+ /**
234
+ * Solution ID (opsiyonel)
235
+ */
236
+ solutionId?: string;
237
+ /**
238
+ * Facebook SDK version
239
+ * @default 'v24.0'
240
+ */
241
+ sdkVersion?: string;
242
+ /**
243
+ * Graph API version
244
+ * @default 'v24.0'
245
+ */
246
+ graphApiVersion?: string;
247
+ /**
248
+ * Redirect URI (callback URL)
249
+ */
250
+ redirectUri: string;
251
+ /**
252
+ * İstenen izinler
253
+ */
254
+ scope?: string;
255
+ /**
256
+ * Ek özellikler
257
+ */
258
+ extras?: WhatsAppExtras;
259
+ }
260
+ /**
261
+ * WhatsApp Embedded Signup ek özellikleri
262
+ */
263
+ interface WhatsAppExtras {
264
+ /**
265
+ * Önceden doldurulmuş telefon numarası
266
+ */
267
+ preverifiedPhone?: string;
268
+ /**
269
+ * Önceden seçilmiş WABA ID
270
+ */
271
+ wabaId?: string;
272
+ /**
273
+ * Önceden seçilmiş Business ID
274
+ */
275
+ businessId?: string;
276
+ /**
277
+ * Feature tipi
278
+ */
279
+ featureType?: 'whatsapp_embedded_signup' | 'whatsapp_coexistence_signup';
280
+ /**
281
+ * Session info version
282
+ */
283
+ sessionInfoVersion?: number;
284
+ }
285
+ /**
286
+ * WhatsApp auth response
287
+ */
288
+ interface WhatsAppAuthResponse {
289
+ /**
290
+ * Access token (token-based flow)
291
+ */
292
+ accessToken?: string;
293
+ /**
294
+ * Authorization code (code-based flow)
295
+ */
296
+ code?: string;
297
+ /**
298
+ * User ID
299
+ */
300
+ userID?: string;
301
+ /**
302
+ * Token tipi
303
+ */
304
+ signedRequest?: string;
305
+ /**
306
+ * Graphdomain
307
+ */
308
+ graphDomain?: string;
309
+ /**
310
+ * Data access expiration time
311
+ */
312
+ data_access_expiration_time?: number;
313
+ /**
314
+ * Expiration time (seconds)
315
+ */
316
+ expiresIn?: number;
317
+ }
318
+ /**
319
+ * Embedded Signup session info
320
+ */
321
+ interface WhatsAppSessionInfo {
322
+ /**
323
+ * Access token
324
+ */
325
+ accessToken: string;
326
+ /**
327
+ * Phone number ID
328
+ */
329
+ phoneNumberId?: string;
330
+ /**
331
+ * WABA ID (WhatsApp Business Account ID)
332
+ */
333
+ wabaId?: string;
334
+ /**
335
+ * Business ID
336
+ */
337
+ businessId?: string;
338
+ /**
339
+ * Phone number
340
+ */
341
+ phoneNumber?: string;
342
+ /**
343
+ * Phone number verified
344
+ */
345
+ phoneNumberVerified?: boolean;
346
+ }
347
+ /**
348
+ * Facebook SDK login options
349
+ */
350
+ interface FBLoginOptions {
351
+ config_id: string;
352
+ response_type: string;
353
+ override_default_response_type: boolean;
354
+ extras: Record<string, unknown>;
355
+ }
356
+ /**
357
+ * Facebook SDK global type declaration
358
+ */
359
+ declare global {
360
+ interface Window {
361
+ FB?: {
362
+ init: (params: {
363
+ appId: string;
364
+ cookie?: boolean;
365
+ xfbml?: boolean;
366
+ version: string;
367
+ }) => void;
368
+ login: (callback: (response: FBLoginResponse) => void, options: FBLoginOptions) => void;
369
+ logout: (callback?: () => void) => void;
370
+ getLoginStatus: (callback: (response: FBLoginResponse) => void) => void;
371
+ api: (path: string, method: string | ((response: unknown) => void), params?: Record<string, unknown> | ((response: unknown) => void), callback?: (response: unknown) => void) => void;
372
+ };
373
+ fbAsyncInit?: () => void;
374
+ }
375
+ }
376
+ /**
377
+ * Facebook login response
378
+ */
379
+ interface FBLoginResponse {
380
+ status: 'connected' | 'not_authorized' | 'unknown';
381
+ authResponse?: WhatsAppAuthResponse;
382
+ }
383
+
384
+ /**
385
+ * WhatsApp Embedded Signup Provider
386
+ *
387
+ * Meta'nın WhatsApp Business Platform için Embedded Signup akışını yönetir.
388
+ * Facebook SDK kullanarak OAuth 2.0 akışı gerçekleştirir.
389
+ *
390
+ * @example
391
+ * ```typescript
392
+ * const whatsapp = new WhatsAppProvider({
393
+ * clientId: 'YOUR_FB_APP_ID',
394
+ * configId: 'YOUR_CONFIG_ID',
395
+ * redirectUri: 'https://yoursite.com/callback'
396
+ * });
397
+ *
398
+ * // Event listener
399
+ * whatsapp.on('auth:success', (result) => {
400
+ * console.log('Authenticated!', result);
401
+ * });
402
+ *
403
+ * // Login başlat
404
+ * await whatsapp.loginWithPopup();
405
+ * ```
406
+ */
407
+ declare class WhatsAppProvider extends BaseProvider {
408
+ readonly name = "whatsapp";
409
+ protected readonly authorizationEndpoint = "https://www.facebook.com/v24.0/dialog/oauth";
410
+ private fbSDKLoaded;
411
+ private fbSDKLoadPromise;
412
+ private whatsappConfig;
413
+ constructor(config: WhatsAppConfig);
414
+ /**
415
+ * Facebook SDK'yı yükle
416
+ */
417
+ private loadFacebookSDK;
418
+ /**
419
+ * Facebook SDK'yı başlat
420
+ */
421
+ private initFacebookSDK;
422
+ /**
423
+ * Authorization URL oluştur (redirect flow için)
424
+ */
425
+ protected buildAuthorizationUrl(state: string): string;
426
+ /**
427
+ * Callback'i işle
428
+ */
429
+ protected handleCallback(callbackData: Record<string, unknown>): Promise<AuthResult>;
430
+ /**
431
+ * WhatsApp Embedded Signup popup ile başlat
432
+ *
433
+ * Facebook SDK kullanarak native popup deneyimi sağlar.
434
+ * Session info message event'i ile WABA ID, Phone Number ID ve access token alır.
435
+ */
436
+ loginWithPopup(_popupConfig?: PopupConfig): Promise<AuthResult>;
437
+ /**
438
+ * Session info için message event bekle
439
+ */
440
+ private waitForSessionInfo;
441
+ /**
442
+ * Son alınan session info
443
+ */
444
+ private lastSessionInfo;
445
+ /**
446
+ * Son session info'yu al
447
+ */
448
+ getLastSessionInfo(): WhatsAppSessionInfo | null;
449
+ /**
450
+ * Embedded Signup akışını başlat
451
+ */
452
+ private launchEmbeddedSignup;
453
+ /**
454
+ * Auth response'dan token oluştur
455
+ */
456
+ private buildToken;
457
+ /**
458
+ * Session info al (Embedded Signup sonrası)
459
+ *
460
+ * Facebook SDK message event'i ile session bilgilerini alır
461
+ */
462
+ getSessionInfoListener(callback: (info: WhatsAppSessionInfo) => void): () => void;
463
+ /**
464
+ * Login durumunu kontrol et
465
+ */
466
+ checkLoginStatus(): Promise<FBLoginResponse | null>;
467
+ /**
468
+ * Facebook'tan logout
469
+ */
470
+ logout(): void;
471
+ /**
472
+ * Graph API çağrısı yap (Facebook SDK kullanarak)
473
+ *
474
+ * @param path - API endpoint (örn: 'me' veya 'v24.0/me')
475
+ * @param method - HTTP method
476
+ * @param params - Query/body parametreleri
477
+ */
478
+ graphAPI<T = unknown>(path: string, method?: 'GET' | 'POST' | 'DELETE', params?: Record<string, unknown>): Promise<T>;
479
+ /**
480
+ * WhatsApp Cloud API'ye doğrudan HTTP çağrısı yap
481
+ *
482
+ * @param endpoint - API endpoint (örn: '123456/messages')
483
+ * @param method - HTTP method
484
+ * @param body - Request body
485
+ */
486
+ whatsappAPI<T = unknown>(endpoint: string, method?: 'GET' | 'POST' | 'DELETE', body?: Record<string, unknown>): Promise<T>;
487
+ /**
488
+ * Graph API version'unu al
489
+ */
490
+ getGraphApiVersion(): string;
491
+ }
492
+
493
+ export { type AuthResult as A, BaseProvider as B, EventEmitter as E, type FBLoginOptions as F, type OAuthCallbackResponse as O, type PopupConfig as P, type SDKEventListener as S, TokenManager as T, type WhatsAppAuthResponse as W, type FBLoginResponse as a, type OAuthConfig as b, type OAuthToken as c, PopupManager as d, type ProviderConfig as e, type SDKEventType as f, type StorageStrategy as g, type WhatsAppConfig as h, type WhatsAppExtras as i, WhatsAppProvider as j, type WhatsAppSessionInfo as k };
package/dist/index.cjs ADDED
@@ -0,0 +1,30 @@
1
+ 'use strict';
2
+
3
+ var chunkARDHIAFU_cjs = require('./chunk-ARDHIAFU.cjs');
4
+
5
+ // src/index.ts
6
+ var VERSION = "1.0.0";
7
+
8
+ Object.defineProperty(exports, "BaseProvider", {
9
+ enumerable: true,
10
+ get: function () { return chunkARDHIAFU_cjs.BaseProvider; }
11
+ });
12
+ Object.defineProperty(exports, "EventEmitter", {
13
+ enumerable: true,
14
+ get: function () { return chunkARDHIAFU_cjs.EventEmitter; }
15
+ });
16
+ Object.defineProperty(exports, "PopupManager", {
17
+ enumerable: true,
18
+ get: function () { return chunkARDHIAFU_cjs.PopupManager; }
19
+ });
20
+ Object.defineProperty(exports, "TokenManager", {
21
+ enumerable: true,
22
+ get: function () { return chunkARDHIAFU_cjs.TokenManager; }
23
+ });
24
+ Object.defineProperty(exports, "WhatsAppProvider", {
25
+ enumerable: true,
26
+ get: function () { return chunkARDHIAFU_cjs.WhatsAppProvider; }
27
+ });
28
+ exports.VERSION = VERSION;
29
+ //# sourceMappingURL=index.cjs.map
30
+ //# sourceMappingURL=index.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/index.ts"],"names":[],"mappings":";;;;;AAeO,IAAM,OAAA,GAAU","file":"index.cjs","sourcesContent":["/**\n * ByPilot SDK\n *\n * Business hesaplar için OAuth ve Embedded Signup yönetimi\n *\n * @packageDocumentation\n */\n\n// Core exports\nexport * from './core';\n\n// Provider exports\nexport * from './providers';\n\n// Version\nexport const VERSION = '1.0.0';\n"]}
@@ -0,0 +1,13 @@
1
+ export { A as AuthResult, B as BaseProvider, E as EventEmitter, F as FBLoginOptions, a as FBLoginResponse, O as OAuthCallbackResponse, b as OAuthConfig, c as OAuthToken, P as PopupConfig, d as PopupManager, e as ProviderConfig, S as SDKEventListener, f as SDKEventType, g as StorageStrategy, T as TokenManager, W as WhatsAppAuthResponse, h as WhatsAppConfig, i as WhatsAppExtras, j as WhatsAppProvider, k as WhatsAppSessionInfo } from './index-DzVvaEqu.cjs';
2
+
3
+ /**
4
+ * ByPilot SDK
5
+ *
6
+ * Business hesaplar için OAuth ve Embedded Signup yönetimi
7
+ *
8
+ * @packageDocumentation
9
+ */
10
+
11
+ declare const VERSION = "1.0.0";
12
+
13
+ export { VERSION };
@@ -0,0 +1,13 @@
1
+ export { A as AuthResult, B as BaseProvider, E as EventEmitter, F as FBLoginOptions, a as FBLoginResponse, O as OAuthCallbackResponse, b as OAuthConfig, c as OAuthToken, P as PopupConfig, d as PopupManager, e as ProviderConfig, S as SDKEventListener, f as SDKEventType, g as StorageStrategy, T as TokenManager, W as WhatsAppAuthResponse, h as WhatsAppConfig, i as WhatsAppExtras, j as WhatsAppProvider, k as WhatsAppSessionInfo } from './index-DzVvaEqu.js';
2
+
3
+ /**
4
+ * ByPilot SDK
5
+ *
6
+ * Business hesaplar için OAuth ve Embedded Signup yönetimi
7
+ *
8
+ * @packageDocumentation
9
+ */
10
+
11
+ declare const VERSION = "1.0.0";
12
+
13
+ export { VERSION };
package/dist/index.js ADDED
@@ -0,0 +1,8 @@
1
+ export { BaseProvider, EventEmitter, PopupManager, TokenManager, WhatsAppProvider } from './chunk-B3CUULGV.js';
2
+
3
+ // src/index.ts
4
+ var VERSION = "1.0.0";
5
+
6
+ export { VERSION };
7
+ //# sourceMappingURL=index.js.map
8
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/index.ts"],"names":[],"mappings":";;;AAeO,IAAM,OAAA,GAAU","file":"index.js","sourcesContent":["/**\n * ByPilot SDK\n *\n * Business hesaplar için OAuth ve Embedded Signup yönetimi\n *\n * @packageDocumentation\n */\n\n// Core exports\nexport * from './core';\n\n// Provider exports\nexport * from './providers';\n\n// Version\nexport const VERSION = '1.0.0';\n"]}
@@ -0,0 +1,12 @@
1
+ 'use strict';
2
+
3
+ var chunkARDHIAFU_cjs = require('./chunk-ARDHIAFU.cjs');
4
+
5
+
6
+
7
+ Object.defineProperty(exports, "WhatsAppProvider", {
8
+ enumerable: true,
9
+ get: function () { return chunkARDHIAFU_cjs.WhatsAppProvider; }
10
+ });
11
+ //# sourceMappingURL=whatsapp.cjs.map
12
+ //# sourceMappingURL=whatsapp.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":[],"names":[],"mappings":"","file":"whatsapp.cjs"}
@@ -0,0 +1 @@
1
+ export { F as FBLoginOptions, a as FBLoginResponse, W as WhatsAppAuthResponse, h as WhatsAppConfig, i as WhatsAppExtras, j as WhatsAppProvider, k as WhatsAppSessionInfo } from './index-DzVvaEqu.cjs';
@@ -0,0 +1 @@
1
+ export { F as FBLoginOptions, a as FBLoginResponse, W as WhatsAppAuthResponse, h as WhatsAppConfig, i as WhatsAppExtras, j as WhatsAppProvider, k as WhatsAppSessionInfo } from './index-DzVvaEqu.js';
@@ -0,0 +1,3 @@
1
+ export { WhatsAppProvider } from './chunk-B3CUULGV.js';
2
+ //# sourceMappingURL=whatsapp.js.map
3
+ //# sourceMappingURL=whatsapp.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":[],"names":[],"mappings":"","file":"whatsapp.js"}
package/package.json ADDED
@@ -0,0 +1,66 @@
1
+ {
2
+ "name": "bypilot-business-signup-sdk",
3
+ "version": "0.1.0-beta.1",
4
+ "description": "Business hesaplar için OAuth ve Embedded Signup SDK'sı (WhatsApp, Instagram, Facebook vb.)",
5
+ "author": "",
6
+ "license": "MIT",
7
+ "type": "module",
8
+ "main": "./dist/index.cjs",
9
+ "module": "./dist/index.js",
10
+ "types": "./dist/index.d.ts",
11
+ "exports": {
12
+ ".": {
13
+ "import": {
14
+ "types": "./dist/index.d.ts",
15
+ "default": "./dist/index.js"
16
+ },
17
+ "require": {
18
+ "types": "./dist/index.d.cts",
19
+ "default": "./dist/index.cjs"
20
+ }
21
+ },
22
+ "./whatsapp": {
23
+ "import": {
24
+ "types": "./dist/providers/whatsapp/index.d.ts",
25
+ "default": "./dist/whatsapp.js"
26
+ },
27
+ "require": {
28
+ "types": "./dist/providers/whatsapp/index.d.cts",
29
+ "default": "./dist/whatsapp.cjs"
30
+ }
31
+ }
32
+ },
33
+ "files": [
34
+ "dist",
35
+ "README.md"
36
+ ],
37
+ "sideEffects": false,
38
+ "scripts": {
39
+ "build": "tsup",
40
+ "dev": "tsup --watch",
41
+ "typecheck": "tsc --noEmit",
42
+ "clean": "rimraf dist",
43
+ "prepublishOnly": "npm run build"
44
+ },
45
+ "devDependencies": {
46
+ "tsup": "^8.0.0",
47
+ "typescript": "^5.3.0",
48
+ "rimraf": "^5.0.0"
49
+ },
50
+ "keywords": [
51
+ "whatsapp",
52
+ "oauth",
53
+ "embedded-signup",
54
+ "facebook",
55
+ "meta",
56
+ "business-api",
57
+ "sdk"
58
+ ],
59
+ "repository": {
60
+ "type": "git",
61
+ "url": ""
62
+ },
63
+ "engines": {
64
+ "node": ">=18.0.0"
65
+ }
66
+ }