@whop/react-native 0.0.21 → 0.0.22

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.
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/lib/index.ts","../../src/lib/client-sdk.ts","../../src/lib/native-whop-core.ts","../../src/lib/native-whop-core-stub.ts","../../src/lib/native-whop-core-wrapper.ts","../../src/lib/haptics.ts"],"sourcesContent":["export * from \"./client-sdk\";\nexport * from \"./native-whop-core-wrapper\";\nexport * from \"./props\";\nimport Haptics from \"./haptics\";\n\nexport { Haptics };\n","import { WhopClientSdk } from \"@whop/api\";\nimport { Platform } from \"react-native\";\nimport { __internal_execSync } from \"./native-whop-core-wrapper\";\n\nfunction getAppOrigin() {\n\tif (Platform.OS === \"android\" || Platform.OS === \"ios\") {\n\t\treturn __internal_execSync(\"getAppApiOrigin\", {}).apiOrigin;\n\t}\n\n\tif (Platform.OS === \"web\" && typeof window !== \"undefined\") {\n\t\treturn window.location.origin;\n\t}\n\n\tthrow new Error(`Unsupported platform: ${Platform.OS}`);\n}\n\nconst appOrigin = getAppOrigin();\n\nexport const whopSdk: WhopClientSdk = WhopClientSdk({\n\tapiOrigin: appOrigin,\n\tapiPath: \"/_whop/public-graphql/\",\n});\n\nexport * from \"@whop/api\";\n","import type { TurboModule } from \"react-native\";\nimport { TurboModuleRegistry } from \"react-native\";\nimport stub from \"./native-whop-core-stub\";\n\nexport type FunctionCallResult = {\n\tisOk: boolean;\n\tdata: string | null;\n\terrorMessage: string | null;\n};\n\nexport interface Spec extends TurboModule {\n\texecSync(name: string, paramsJson: string): FunctionCallResult;\n\texecAsync(name: string, paramsJson: string): Promise<FunctionCallResult>;\n}\n\nfunction resolveNative(): Spec | null {\n\ttry {\n\t\t// biome-ignore lint/suspicious/noExplicitAny: <explanation>\n\t\tconst registry: any = TurboModuleRegistry as any;\n\t\tconst get = registry?.getEnforcing ?? registry?.get;\n\t\tif (typeof get === \"function\") {\n\t\t\treturn get.call(registry, \"NativeWhopCore\") as Spec;\n\t\t}\n\t\treturn null;\n\t} catch {\n\t\treturn null;\n\t}\n}\n\nconst native = resolveNative();\n\nexport default native ?? (stub as Spec);\n","import { Platform } from \"react-native\";\nimport type { ExecAsyncApi, ExecSyncApi } from \"./native-whop-core-wrapper\";\n\nexport type FunctionCallResult = {\n\tisOk: boolean;\n\tdata: string | null;\n\terrorMessage: string | null;\n};\n\ntype Route = { path: string[]; params: Record<string, string> };\n\nclass WhopCoreObservable<T> {\n\tprivate subscribers: Set<(value: T) => void> = new Set();\n\tprivate value: T;\n\n\tconstructor(value: T) {\n\t\tthis.value = value;\n\t}\n\n\tsetValue(value: T) {\n\t\tthis.value = value;\n\t\tfor (const callback of this.subscribers) {\n\t\t\tcallback(value);\n\t\t}\n\t}\n\n\tgetValue() {\n\t\treturn this.value;\n\t}\n\n\tsubscribe(callback: (value: T) => void) {\n\t\tthis.subscribers.add(callback);\n\t\treturn () => {\n\t\t\tthis.subscribers.delete(callback);\n\t\t};\n\t}\n}\n\nclass WhopCoreNavigation {\n\tpublic path = new WhopCoreObservable<Route[]>([]);\n\tpublic sheet = new WhopCoreObservable<Route | null>(null);\n\n\tconstructor() {\n\t\tthis.getFullStack = this.getFullStack.bind(this);\n\t\tthis.getCurrentSheet = this.getCurrentSheet.bind(this);\n\t\tthis.subscribeToPath = this.subscribeToPath.bind(this);\n\t\tthis.subscribeToSheet = this.subscribeToSheet.bind(this);\n\t}\n\n\tpush(route: Route) {\n\t\tif (this.getCurrent().path.join(\"/\") === route.path.join(\"/\")) {\n\t\t\treturn;\n\t\t}\n\n\t\tthis.path.setValue([...this.path.getValue(), route]);\n\t\tif (typeof window !== \"undefined\" && window.history) {\n\t\t\ttry {\n\t\t\t\tconst pathBits = route.path.join(\"/\");\n\t\t\t\tconst paramsBits = Object.entries(route.params)\n\t\t\t\t\t.map(([key, value]) => `${key}=${value}`)\n\t\t\t\t\t.join(\"&\");\n\t\t\t\twindow.history.pushState(\n\t\t\t\t\t{ route, index: this.path.getValue().length },\n\t\t\t\t\t\"\",\n\t\t\t\t\t`#${pathBits}?${paramsBits}`,\n\t\t\t\t);\n\t\t\t} catch {}\n\t\t}\n\t}\n\n\tpop() {\n\t\tif (typeof window !== \"undefined\" && window.history) {\n\t\t\ttry {\n\t\t\t\twindow.history.back();\n\t\t\t} catch {}\n\t\t}\n\t}\n\n\tgetFullStack() {\n\t\treturn this.path.getValue();\n\t}\n\n\tgetCurrent() {\n\t\treturn (\n\t\t\tthis.path.getValue()[this.path.getValue().length - 1] ?? {\n\t\t\t\tpath: [],\n\t\t\t\tparams: {},\n\t\t\t}\n\t\t);\n\t}\n\n\tpresentSheet(route: Route) {\n\t\tthis.sheet.setValue(route);\n\t}\n\n\tdismissSheet() {\n\t\tthis.sheet.setValue(null);\n\t}\n\n\tgetCurrentSheet() {\n\t\treturn this.sheet.getValue() ?? null;\n\t}\n\n\tsubscribeToPath(callback: (route: Route[]) => void) {\n\t\treturn this.path.subscribe(callback);\n\t}\n\n\tsubscribeToSheet(callback: (route: Route | null) => void) {\n\t\treturn this.sheet.subscribe(callback);\n\t}\n}\n\nexport type TWhopCoreNavigation = WhopCoreNavigation;\n\nconst navigation = new WhopCoreNavigation();\nif (typeof window !== \"undefined\" && Platform.OS === \"web\") {\n\t// biome-ignore lint/suspicious/noExplicitAny: <explanation>\n\t(window as any).whopCoreNavigation = navigation;\n\n\twindow.addEventListener(\"popstate\", (e) => {\n\t\tconst currentLength = navigation.path.getValue().length;\n\t\tif (!e.state) {\n\t\t\tnavigation.path.setValue(navigation.path.getValue().slice(0, -1));\n\t\t\treturn;\n\t\t}\n\t\tconst index = e.state.index;\n\t\tconst route = e.state.route;\n\t\tif (index < currentLength) {\n\t\t\tnavigation.path.setValue(navigation.path.getValue().slice(0, -1));\n\t\t} else {\n\t\t\tnavigation.path.setValue([...navigation.path.getValue(), route]);\n\t\t}\n\t});\n}\n\nfunction ok(data: unknown): FunctionCallResult {\n\treturn { isOk: true, data: JSON.stringify(data), errorMessage: null };\n}\n\nfunction err(message: string): FunctionCallResult {\n\treturn { isOk: false, data: null, errorMessage: message };\n}\n\nfunction getOrigin(): string {\n\tif (typeof window !== \"undefined\" && window.location) {\n\t\treturn window.location.origin;\n\t}\n\treturn \"\";\n}\n\nconst syncHandlers: ExecSyncApi = {\n\tgetAppApiOrigin() {\n\t\treturn { apiOrigin: getOrigin() };\n\t},\n\tcacheGet({ key }: { key?: string | null }) {\n\t\ttry {\n\t\t\tif (typeof window !== \"undefined\" && window.localStorage && key) {\n\t\t\t\treturn { data: window.localStorage.getItem(key) };\n\t\t\t}\n\t\t\treturn { data: null };\n\t\t} catch {\n\t\t\treturn { data: null };\n\t\t}\n\t},\n\tcacheSet({ key, data }: { key?: string | null; data?: string | null }) {\n\t\ttry {\n\t\t\tif (typeof window !== \"undefined\" && window.localStorage && key != null) {\n\t\t\t\tif (data == null) {\n\t\t\t\t\twindow.localStorage.removeItem(key);\n\t\t\t\t} else {\n\t\t\t\t\twindow.localStorage.setItem(key, data);\n\t\t\t\t}\n\t\t\t}\n\t\t} catch {}\n\t\treturn {};\n\t},\n\trouterPush(route: Route) {\n\t\tnavigation.push(route);\n\t\treturn {};\n\t},\n\trouterPop() {\n\t\tnavigation.pop();\n\t\treturn {};\n\t},\n\trouterGetCurrent() {\n\t\treturn navigation.getCurrent();\n\t},\n\tsetNavigationBarData() {\n\t\treturn {};\n\t},\n\trouterPresentSheet({ path, params }: Route) {\n\t\tnavigation.presentSheet({\n\t\t\tpath: Array.from(path ?? []),\n\t\t\tparams: params ?? {},\n\t\t});\n\t\treturn {};\n\t},\n\trouterDismissSheet() {\n\t\tnavigation.dismissSheet();\n\t\treturn {};\n\t},\n\trouterGetCurrentSheet() {\n\t\treturn navigation.getCurrentSheet() ?? null;\n\t},\n\tdowngradeToWebView() {\n\t\treturn {};\n\t},\n\tgetHostAppDetails() {\n\t\treturn {\n\t\t\tbuild: \"web\",\n\t\t\tversion: \"0.0.0\",\n\t\t\tplatform: \"web\",\n\t\t\tbuildType: \"appstore\",\n\t\t};\n\t},\n};\n\nlet iframeModulePromise: Promise<typeof import(\"@whop/iframe\")> | null = null;\n\nasync function loadIframeModule() {\n\tif (!iframeModulePromise) {\n\t\tiframeModulePromise = import(\"@whop/iframe\");\n\t}\n\treturn await iframeModulePromise;\n}\n\nlet iframeSdk: ReturnType<typeof import(\"@whop/iframe\").createSdk> | null =\n\tnull;\n\nasync function loadIframeSdk() {\n\tif (!iframeSdk) {\n\t\tconst module = await loadIframeModule();\n\t\tiframeSdk = module.createSdk({\n\t\t\tappId: process.env.NEXT_PUBLIC_WHOP_APP_ID,\n\t\t});\n\t}\n\treturn iframeSdk;\n}\n\n// biome-ignore lint/suspicious/noExplicitAny: <explanation>\ntype MakeAsync<T extends Record<string, any>> = {\n\t[K in keyof T]: (params: Parameters<T[K]>[0]) => Promise<ReturnType<T[K]>>;\n};\n\nconst asyncHandlers: MakeAsync<Pick<ExecAsyncApi, \"inAppPurchase\">> = {\n\tinAppPurchase: async ({ planId, id }) => {\n\t\tconst sdk = await loadIframeSdk();\n\t\tconst result = await sdk.inAppPurchase({ planId, id: id ?? undefined });\n\t\tif (result.status === \"ok\") {\n\t\t\treturn {\n\t\t\t\tsessionId: result.data.sessionId,\n\t\t\t\treceiptId: result.data.receiptId,\n\t\t\t};\n\t\t}\n\t\tthrow new Error(result.error);\n\t},\n};\n\nconst nativeWhopCoreStub = {\n\texecSync(name: string, paramsJson: string): FunctionCallResult {\n\t\ttry {\n\t\t\tconst params = paramsJson ? JSON.parse(paramsJson) : {};\n\t\t\tconst handler = syncHandlers[name as keyof typeof syncHandlers];\n\t\t\tif (!handler) return err(`Unknown sync method: ${name}`);\n\t\t\tconst result = handler(params);\n\t\t\treturn ok(result);\n\t\t} catch (e) {\n\t\t\treturn err(e instanceof Error ? e.message : \"Unknown error\");\n\t\t}\n\t},\n\tasync execAsync(\n\t\tname: string,\n\t\tparamsJson: string,\n\t): Promise<FunctionCallResult> {\n\t\ttry {\n\t\t\tconst params = paramsJson ? JSON.parse(paramsJson) : {};\n\t\t\tconst handler = (\n\t\t\t\tasyncHandlers as Record<string, (p: unknown) => Promise<unknown>>\n\t\t\t)[name];\n\t\t\tif (!handler) return err(`Unknown async method: ${name}`);\n\t\t\tconst result = await handler(params);\n\t\t\treturn ok(result);\n\t\t} catch (e) {\n\t\t\treturn err(e instanceof Error ? e.message : \"Unknown error\");\n\t\t}\n\t},\n};\n\nexport default nativeWhopCoreStub;\n","import nativeWhopCore from \"./native-whop-core\";\nimport type { PathParams } from \"./props\";\n\n// biome-ignore lint/complexity/noBannedTypes: allow here\ntype EmptyObject = {};\n\nexport interface ExecSyncApi {\n\tgetAppApiOrigin(params: EmptyObject): { apiOrigin: string };\n\tcacheGet(params: { key?: string | null }): { data?: string | null };\n\tcacheSet(params: { key?: string | null; data?: string | null }): EmptyObject;\n\trouterPush(params: PathParams): EmptyObject;\n\trouterPop(params: EmptyObject): EmptyObject;\n\trouterGetCurrent(params: EmptyObject): PathParams;\n\tsetNavigationBarData(params: {\n\t\ttitle?: string | null;\n\t\tdescription?: string | null;\n\t}): EmptyObject;\n\trouterPresentSheet(params: PathParams): EmptyObject;\n\trouterDismissSheet(params: EmptyObject): EmptyObject;\n\trouterGetCurrentSheet(params: EmptyObject): PathParams | null | undefined;\n\tdowngradeToWebView(params: EmptyObject): EmptyObject;\n\tgetHostAppDetails(params: EmptyObject): {\n\t\tbuild: string;\n\t\tversion: string;\n\t\tplatform: \"ios\" | \"android\" | \"web\";\n\t\tbuildType: \"appstore\" | \"testflight\" | \"debug\";\n\t};\n}\n\nexport interface ExecAsyncApi extends ExecSyncApi {\n\tinAppPurchase(params: {\n\t\tid?: string | null;\n\t\tplanId: string;\n\t}): {\n\t\tsessionId: string;\n\t\treceiptId: string;\n\t};\n}\n\nexport function __internal_execSync<F extends keyof ExecSyncApi>(\n\tname: F,\n\tparams: Parameters<ExecSyncApi[F]>[0],\n): ReturnType<ExecSyncApi[F]> {\n\tconst resultJson = nativeWhopCore.execSync(name, JSON.stringify(params));\n\tif (!resultJson.isOk) {\n\t\tthrow new Error(`Failed to execute ${name}: ${resultJson.errorMessage}`);\n\t}\n\n\treturn JSON.parse(resultJson.data || \"{}\") as ReturnType<ExecSyncApi[F]>;\n}\n\nexport async function __internal_execAsync<F extends keyof ExecAsyncApi>(\n\tname: F,\n\tparams: Parameters<ExecAsyncApi[F]>[0],\n): Promise<ReturnType<ExecAsyncApi[F]>> {\n\tconst resultJson = await nativeWhopCore.execAsync(\n\t\tname,\n\t\tJSON.stringify(params),\n\t);\n\n\tif (!resultJson.isOk) {\n\t\tthrow new Error(`Failed to execute ${name}: ${resultJson.errorMessage}`);\n\t}\n\n\treturn JSON.parse(resultJson.data || \"{}\") as ReturnType<ExecAsyncApi[F]>;\n}\n","/**\n * Web-safe wrapper for react-native-haptic-feedback.\n * - Lazily imports the native module only in native environments.\n * - Provides a no-op fallback on web to avoid runtime crashes.\n */\n\ntype HapticType =\n\t| \"selection\"\n\t| \"impactLight\"\n\t| \"impactMedium\"\n\t| \"impactHeavy\"\n\t| \"notificationSuccess\"\n\t| \"notificationWarning\"\n\t| \"notificationError\";\n\ntype HapticOptions = {\n\tenableVibrateFallback?: boolean;\n\tignoreAndroidSystemSettings?: boolean;\n};\n\n// Singleton holder for the native module once loaded\nlet nativeModule: {\n\ttrigger: (type: HapticType, options?: HapticOptions) => void;\n} | null = null;\nlet loadingPromise: Promise<void> | null = null;\n\nasync function ensureNativeLoaded(): Promise<void> {\n\t// If on web, skip loading entirely\n\t// eslint-disable-next-line @typescript-eslint/ban-ts-comment\n\t// @ts-ignore - process may not be typed in RN web builds\n\tconst isWeb =\n\t\ttypeof document !== \"undefined\" && typeof window !== \"undefined\";\n\tif (isWeb) return;\n\n\tif (nativeModule || loadingPromise) {\n\t\treturn loadingPromise ?? Promise.resolve();\n\t}\n\n\tloadingPromise = import(\"react-native-haptic-feedback\")\n\t\t.then((mod) => {\n\t\t\tnativeModule = { trigger: mod.default.trigger };\n\t\t})\n\t\t.catch(() => {\n\t\t\t// Keep nativeModule null; fall back to noop\n\t\t})\n\t\t.finally(() => {\n\t\t\tloadingPromise = null;\n\t\t});\n\n\treturn loadingPromise;\n}\n\nconst HAPTIC_NOOP = {\n\ttrigger: (_type: HapticType, _options?: HapticOptions) => {\n\t\t// no-op on web\n\t},\n};\n\nconst Haptics = {\n\tasync trigger(type: HapticType, options?: HapticOptions): Promise<void> {\n\t\tawait ensureNativeLoaded();\n\t\tif (nativeModule) {\n\t\t\ttry {\n\t\t\t\tnativeModule.trigger(type, options);\n\t\t\t} catch {\n\t\t\t\t// ignore\n\t\t\t}\n\t\t\treturn;\n\t\t}\n\t\tHAPTIC_NOOP.trigger(type, options);\n\t},\n};\n\nexport default Haptics;\n"],"mappings":"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","names":["import_react_native","import_react_native","module"]}
1
+ {"version":3,"sources":["../../src/lib/index.ts","../../src/lib/client-sdk.ts","../../src/lib/native-whop-core.ts","../../src/lib/native-whop-core-stub.ts","../../src/lib/native-whop-core-wrapper.ts","../../src/lib/haptics.ts"],"sourcesContent":["export * from \"./client-sdk\";\nexport * from \"./native-whop-core-wrapper\";\nexport * from \"./props\";\nimport Haptics from \"./haptics\";\n\nexport { Haptics };\n","import { WhopClientSdk } from \"@whop/api\";\nimport { Platform } from \"react-native\";\nimport { __internal_execSync } from \"./native-whop-core-wrapper\";\n\nfunction getAppOrigin() {\n\tif (Platform.OS === \"android\" || Platform.OS === \"ios\") {\n\t\treturn __internal_execSync(\"getAppApiOrigin\", {}).apiOrigin;\n\t}\n\n\tif (Platform.OS === \"web\" && typeof window !== \"undefined\") {\n\t\treturn window.location.origin;\n\t}\n\n\tthrow new Error(`Unsupported platform: ${Platform.OS}`);\n}\n\nconst appOrigin = getAppOrigin();\n\nexport const whopSdk: WhopClientSdk = WhopClientSdk({\n\tapiOrigin: appOrigin,\n\tapiPath: \"/_whop/public-graphql/\",\n});\n\nexport * from \"@whop/api\";\n","import type { TurboModule } from \"react-native\";\nimport { TurboModuleRegistry } from \"react-native\";\nimport stub from \"./native-whop-core-stub\";\n\nexport type FunctionCallResult = {\n\tisOk: boolean;\n\tdata: string | null;\n\terrorMessage: string | null;\n};\n\nexport interface Spec extends TurboModule {\n\texecSync(name: string, paramsJson: string): FunctionCallResult;\n\texecAsync(name: string, paramsJson: string): Promise<FunctionCallResult>;\n}\n\nfunction resolveNative(): Spec | null {\n\ttry {\n\t\t// biome-ignore lint/suspicious/noExplicitAny: <explanation>\n\t\tconst registry: any = TurboModuleRegistry as any;\n\t\tconst get = registry?.getEnforcing ?? registry?.get;\n\t\tif (typeof get === \"function\") {\n\t\t\treturn get.call(registry, \"NativeWhopCore\") as Spec;\n\t\t}\n\t\treturn null;\n\t} catch {\n\t\treturn null;\n\t}\n}\n\nconst native = resolveNative();\n\nexport default native ?? (stub as Spec);\n","import { Platform } from \"react-native\";\nimport type { ExecAsyncApi, ExecSyncApi } from \"./native-whop-core-wrapper\";\n\nexport type FunctionCallResult = {\n\tisOk: boolean;\n\tdata: string | null;\n\terrorMessage: string | null;\n};\n\ntype Route = { path: string[]; params: Record<string, string> };\n\nclass WhopCoreObservable<T> {\n\tprivate subscribers: Set<(value: T) => void> = new Set();\n\tprivate value: T;\n\n\tconstructor(value: T) {\n\t\tthis.value = value;\n\t}\n\n\tsetValue(value: T) {\n\t\tthis.value = value;\n\t\tfor (const callback of this.subscribers) {\n\t\t\tcallback(value);\n\t\t}\n\t}\n\n\tgetValue() {\n\t\treturn this.value;\n\t}\n\n\tsubscribe(callback: (value: T) => void) {\n\t\tthis.subscribers.add(callback);\n\t\treturn () => {\n\t\t\tthis.subscribers.delete(callback);\n\t\t};\n\t}\n}\n\nclass WhopCoreNavigation {\n\tpublic path = new WhopCoreObservable<Route[]>([]);\n\tpublic sheet = new WhopCoreObservable<Route | null>(null);\n\n\tconstructor() {\n\t\tthis.getFullStack = this.getFullStack.bind(this);\n\t\tthis.getCurrentSheet = this.getCurrentSheet.bind(this);\n\t\tthis.subscribeToPath = this.subscribeToPath.bind(this);\n\t\tthis.subscribeToSheet = this.subscribeToSheet.bind(this);\n\t}\n\n\tpush(route: Route) {\n\t\tif (this.getCurrent().path.join(\"/\") === route.path.join(\"/\")) {\n\t\t\treturn;\n\t\t}\n\n\t\tthis.path.setValue([...this.path.getValue(), route]);\n\t\tif (typeof window !== \"undefined\" && window.history) {\n\t\t\ttry {\n\t\t\t\tconst pathBits = route.path.join(\"/\");\n\t\t\t\tconst paramsBits = Object.entries(route.params)\n\t\t\t\t\t.map(([key, value]) => `${key}=${value}`)\n\t\t\t\t\t.join(\"&\");\n\t\t\t\twindow.history.pushState(\n\t\t\t\t\t{ route, index: this.path.getValue().length },\n\t\t\t\t\t\"\",\n\t\t\t\t\t`#${pathBits}?${paramsBits}`,\n\t\t\t\t);\n\t\t\t} catch {}\n\t\t}\n\t}\n\n\tpop() {\n\t\tif (typeof window !== \"undefined\" && window.history) {\n\t\t\ttry {\n\t\t\t\twindow.history.back();\n\t\t\t} catch {}\n\t\t}\n\t}\n\n\tgetFullStack() {\n\t\treturn this.path.getValue();\n\t}\n\n\tgetCurrent() {\n\t\treturn (\n\t\t\tthis.path.getValue()[this.path.getValue().length - 1] ?? {\n\t\t\t\tpath: [],\n\t\t\t\tparams: {},\n\t\t\t}\n\t\t);\n\t}\n\n\tpresentSheet(route: Route) {\n\t\tthis.sheet.setValue(route);\n\t}\n\n\tdismissSheet() {\n\t\tthis.sheet.setValue(null);\n\t}\n\n\tgetCurrentSheet() {\n\t\treturn this.sheet.getValue() ?? null;\n\t}\n\n\tsubscribeToPath(callback: (route: Route[]) => void) {\n\t\treturn this.path.subscribe(callback);\n\t}\n\n\tsubscribeToSheet(callback: (route: Route | null) => void) {\n\t\treturn this.sheet.subscribe(callback);\n\t}\n}\n\nexport type TWhopCoreNavigation = WhopCoreNavigation;\n\nconst navigation = new WhopCoreNavigation();\nif (typeof window !== \"undefined\" && Platform.OS === \"web\") {\n\t// biome-ignore lint/suspicious/noExplicitAny: <explanation>\n\t(window as any).whopCoreNavigation = navigation;\n\n\twindow.addEventListener(\"popstate\", (e) => {\n\t\tconst currentLength = navigation.path.getValue().length;\n\t\tif (!e.state) {\n\t\t\tnavigation.path.setValue(navigation.path.getValue().slice(0, -1));\n\t\t\treturn;\n\t\t}\n\t\tconst index = e.state.index;\n\t\tconst route = e.state.route;\n\t\tif (index < currentLength) {\n\t\t\tnavigation.path.setValue(navigation.path.getValue().slice(0, -1));\n\t\t} else {\n\t\t\tnavigation.path.setValue([...navigation.path.getValue(), route]);\n\t\t}\n\t});\n}\n\nfunction ok(data: unknown): FunctionCallResult {\n\treturn { isOk: true, data: JSON.stringify(data), errorMessage: null };\n}\n\nfunction err(message: string): FunctionCallResult {\n\treturn { isOk: false, data: null, errorMessage: message };\n}\n\nfunction getOrigin(): string {\n\tif (typeof window !== \"undefined\" && window.location) {\n\t\treturn window.location.origin;\n\t}\n\treturn \"\";\n}\n\nconst syncHandlers: ExecSyncApi = {\n\tgetAppApiOrigin() {\n\t\treturn { apiOrigin: getOrigin() };\n\t},\n\tcacheGet({ key }: { key?: string | null }) {\n\t\ttry {\n\t\t\tif (typeof window !== \"undefined\" && window.localStorage && key) {\n\t\t\t\treturn { data: window.localStorage.getItem(key) };\n\t\t\t}\n\t\t\treturn { data: null };\n\t\t} catch {\n\t\t\treturn { data: null };\n\t\t}\n\t},\n\tcacheSet({ key, data }: { key?: string | null; data?: string | null }) {\n\t\ttry {\n\t\t\tif (typeof window !== \"undefined\" && window.localStorage && key != null) {\n\t\t\t\tif (data == null) {\n\t\t\t\t\twindow.localStorage.removeItem(key);\n\t\t\t\t} else {\n\t\t\t\t\twindow.localStorage.setItem(key, data);\n\t\t\t\t}\n\t\t\t}\n\t\t} catch {}\n\t\treturn {};\n\t},\n\trouterPush(route: Route) {\n\t\tnavigation.push(route);\n\t\treturn {};\n\t},\n\trouterPop() {\n\t\tnavigation.pop();\n\t\treturn {};\n\t},\n\trouterGetCurrent() {\n\t\treturn navigation.getCurrent();\n\t},\n\tsetNavigationBarData() {\n\t\treturn {};\n\t},\n\trouterPresentSheet({ path, params }: Route) {\n\t\tnavigation.presentSheet({\n\t\t\tpath: Array.from(path ?? []),\n\t\t\tparams: params ?? {},\n\t\t});\n\t\treturn {};\n\t},\n\trouterDismissSheet() {\n\t\tnavigation.dismissSheet();\n\t\treturn {};\n\t},\n\trouterGetCurrentSheet() {\n\t\treturn navigation.getCurrentSheet() ?? null;\n\t},\n\tdowngradeToWebView() {\n\t\treturn {};\n\t},\n\tgetHostAppDetails() {\n\t\treturn {\n\t\t\tbuild: \"web\",\n\t\t\tversion: \"0.0.0\",\n\t\t\tplatform: \"web\",\n\t\t\tbuildType: \"appstore\",\n\t\t};\n\t},\n\tsetScreenOrientationMode() {\n\t\treturn {};\n\t},\n};\n\nlet iframeModulePromise: Promise<typeof import(\"@whop/iframe\")> | null = null;\n\nasync function loadIframeModule() {\n\tif (!iframeModulePromise) {\n\t\tiframeModulePromise = import(\"@whop/iframe\");\n\t}\n\treturn await iframeModulePromise;\n}\n\nlet iframeSdk: ReturnType<typeof import(\"@whop/iframe\").createSdk> | null =\n\tnull;\n\nasync function loadIframeSdk() {\n\tif (!iframeSdk) {\n\t\tconst module = await loadIframeModule();\n\t\tiframeSdk = module.createSdk({\n\t\t\tappId: process.env.NEXT_PUBLIC_WHOP_APP_ID,\n\t\t});\n\t}\n\treturn iframeSdk;\n}\n\n// biome-ignore lint/suspicious/noExplicitAny: <explanation>\ntype MakeAsync<T extends Record<string, any>> = {\n\t[K in keyof T]: (params: Parameters<T[K]>[0]) => Promise<ReturnType<T[K]>>;\n};\n\nconst asyncHandlers: MakeAsync<Pick<ExecAsyncApi, \"inAppPurchase\">> = {\n\tinAppPurchase: async ({ planId, id }) => {\n\t\tconst sdk = await loadIframeSdk();\n\t\tconst result = await sdk.inAppPurchase({ planId, id: id ?? undefined });\n\t\tif (result.status === \"ok\") {\n\t\t\treturn {\n\t\t\t\tsessionId: result.data.sessionId,\n\t\t\t\treceiptId: result.data.receiptId,\n\t\t\t};\n\t\t}\n\t\tthrow new Error(result.error);\n\t},\n};\n\nconst nativeWhopCoreStub = {\n\texecSync(name: string, paramsJson: string): FunctionCallResult {\n\t\ttry {\n\t\t\tconst params = paramsJson ? JSON.parse(paramsJson) : {};\n\t\t\tconst handler = syncHandlers[name as keyof typeof syncHandlers];\n\t\t\tif (!handler) return err(`Unknown sync method: ${name}`);\n\t\t\tconst result = handler(params);\n\t\t\treturn ok(result);\n\t\t} catch (e) {\n\t\t\treturn err(e instanceof Error ? e.message : \"Unknown error\");\n\t\t}\n\t},\n\tasync execAsync(\n\t\tname: string,\n\t\tparamsJson: string,\n\t): Promise<FunctionCallResult> {\n\t\ttry {\n\t\t\tconst params = paramsJson ? JSON.parse(paramsJson) : {};\n\t\t\tconst handler = (\n\t\t\t\tasyncHandlers as Record<string, (p: unknown) => Promise<unknown>>\n\t\t\t)[name];\n\t\t\tif (!handler) return err(`Unknown async method: ${name}`);\n\t\t\tconst result = await handler(params);\n\t\t\treturn ok(result);\n\t\t} catch (e) {\n\t\t\treturn err(e instanceof Error ? e.message : \"Unknown error\");\n\t\t}\n\t},\n};\n\nexport default nativeWhopCoreStub;\n","import nativeWhopCore from \"./native-whop-core\";\nimport type { PathParams } from \"./props\";\n\n// biome-ignore lint/complexity/noBannedTypes: allow here\ntype EmptyObject = {};\n\nexport interface ExecSyncApi {\n\tgetAppApiOrigin(params: EmptyObject): { apiOrigin: string };\n\tcacheGet(params: { key?: string | null }): { data?: string | null };\n\tcacheSet(params: { key?: string | null; data?: string | null }): EmptyObject;\n\trouterPush(params: PathParams): EmptyObject;\n\trouterPop(params: EmptyObject): EmptyObject;\n\trouterGetCurrent(params: EmptyObject): PathParams;\n\tsetNavigationBarData(params: {\n\t\ttitle?: string | null;\n\t\tdescription?: string | null;\n\t}): EmptyObject;\n\trouterPresentSheet(params: PathParams): EmptyObject;\n\trouterDismissSheet(params: EmptyObject): EmptyObject;\n\trouterGetCurrentSheet(params: EmptyObject): PathParams | null | undefined;\n\tdowngradeToWebView(params: EmptyObject): EmptyObject;\n\tgetHostAppDetails(params: EmptyObject): {\n\t\tbuild: string;\n\t\tversion: string;\n\t\tplatform: \"ios\" | \"android\" | \"web\";\n\t\tbuildType: \"appstore\" | \"testflight\" | \"debug\";\n\t};\n\tsetScreenOrientationMode(params: {\n\t\ttargetScreenOrientationMode: \"portrait\" | \"landscape\" | \"rotate\";\n\t}): EmptyObject;\n}\n\nexport interface ExecAsyncApi extends ExecSyncApi {\n\tinAppPurchase(params: {\n\t\tid?: string | null;\n\t\tplanId: string;\n\t}): {\n\t\tsessionId: string;\n\t\treceiptId: string;\n\t};\n}\n\nexport function __internal_execSync<F extends keyof ExecSyncApi>(\n\tname: F,\n\tparams: Parameters<ExecSyncApi[F]>[0],\n): ReturnType<ExecSyncApi[F]> {\n\tconst resultJson = nativeWhopCore.execSync(name, JSON.stringify(params));\n\tif (!resultJson.isOk) {\n\t\tthrow new Error(`Failed to execute ${name}: ${resultJson.errorMessage}`);\n\t}\n\n\treturn JSON.parse(resultJson.data || \"{}\") as ReturnType<ExecSyncApi[F]>;\n}\n\nexport async function __internal_execAsync<F extends keyof ExecAsyncApi>(\n\tname: F,\n\tparams: Parameters<ExecAsyncApi[F]>[0],\n): Promise<ReturnType<ExecAsyncApi[F]>> {\n\tconst resultJson = await nativeWhopCore.execAsync(\n\t\tname,\n\t\tJSON.stringify(params),\n\t);\n\n\tif (!resultJson.isOk) {\n\t\tthrow new Error(`Failed to execute ${name}: ${resultJson.errorMessage}`);\n\t}\n\n\treturn JSON.parse(resultJson.data || \"{}\") as ReturnType<ExecAsyncApi[F]>;\n}\n","/**\n * Web-safe wrapper for react-native-haptic-feedback.\n * - Lazily imports the native module only in native environments.\n * - Provides a no-op fallback on web to avoid runtime crashes.\n */\n\ntype HapticType =\n\t| \"selection\"\n\t| \"impactLight\"\n\t| \"impactMedium\"\n\t| \"impactHeavy\"\n\t| \"notificationSuccess\"\n\t| \"notificationWarning\"\n\t| \"notificationError\";\n\ntype HapticOptions = {\n\tenableVibrateFallback?: boolean;\n\tignoreAndroidSystemSettings?: boolean;\n};\n\n// Singleton holder for the native module once loaded\nlet nativeModule: {\n\ttrigger: (type: HapticType, options?: HapticOptions) => void;\n} | null = null;\nlet loadingPromise: Promise<void> | null = null;\n\nasync function ensureNativeLoaded(): Promise<void> {\n\t// If on web, skip loading entirely\n\t// eslint-disable-next-line @typescript-eslint/ban-ts-comment\n\t// @ts-ignore - process may not be typed in RN web builds\n\tconst isWeb =\n\t\ttypeof document !== \"undefined\" && typeof window !== \"undefined\";\n\tif (isWeb) return;\n\n\tif (nativeModule || loadingPromise) {\n\t\treturn loadingPromise ?? Promise.resolve();\n\t}\n\n\tloadingPromise = import(\"react-native-haptic-feedback\")\n\t\t.then((mod) => {\n\t\t\tnativeModule = { trigger: mod.default.trigger };\n\t\t})\n\t\t.catch(() => {\n\t\t\t// Keep nativeModule null; fall back to noop\n\t\t})\n\t\t.finally(() => {\n\t\t\tloadingPromise = null;\n\t\t});\n\n\treturn loadingPromise;\n}\n\nconst HAPTIC_NOOP = {\n\ttrigger: (_type: HapticType, _options?: HapticOptions) => {\n\t\t// no-op on web\n\t},\n};\n\nconst Haptics = {\n\tasync trigger(type: HapticType, options?: HapticOptions): Promise<void> {\n\t\tawait ensureNativeLoaded();\n\t\tif (nativeModule) {\n\t\t\ttry {\n\t\t\t\tnativeModule.trigger(type, options);\n\t\t\t} catch {\n\t\t\t\t// ignore\n\t\t\t}\n\t\t\treturn;\n\t\t}\n\t\tHAPTIC_NOOP.trigger(type, options);\n\t},\n};\n\nexport default Haptics;\n"],"mappings":"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","names":["import_react_native","import_react_native","module"]}
@@ -203,6 +203,9 @@ var syncHandlers = {
203
203
  platform: "web",
204
204
  buildType: "appstore"
205
205
  };
206
+ },
207
+ setScreenOrientationMode() {
208
+ return {};
206
209
  }
207
210
  };
208
211
  var iframeModulePromise = null;
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/lib/index.ts","../../src/lib/client-sdk.ts","../../src/lib/native-whop-core.ts","../../src/lib/native-whop-core-stub.ts","../../src/lib/native-whop-core-wrapper.ts","../../src/lib/haptics.ts"],"sourcesContent":["export * from \"./client-sdk\";\nexport * from \"./native-whop-core-wrapper\";\nexport * from \"./props\";\nimport Haptics from \"./haptics\";\n\nexport { Haptics };\n","import { WhopClientSdk } from \"@whop/api\";\nimport { Platform } from \"react-native\";\nimport { __internal_execSync } from \"./native-whop-core-wrapper\";\n\nfunction getAppOrigin() {\n\tif (Platform.OS === \"android\" || Platform.OS === \"ios\") {\n\t\treturn __internal_execSync(\"getAppApiOrigin\", {}).apiOrigin;\n\t}\n\n\tif (Platform.OS === \"web\" && typeof window !== \"undefined\") {\n\t\treturn window.location.origin;\n\t}\n\n\tthrow new Error(`Unsupported platform: ${Platform.OS}`);\n}\n\nconst appOrigin = getAppOrigin();\n\nexport const whopSdk: WhopClientSdk = WhopClientSdk({\n\tapiOrigin: appOrigin,\n\tapiPath: \"/_whop/public-graphql/\",\n});\n\nexport * from \"@whop/api\";\n","import type { TurboModule } from \"react-native\";\nimport { TurboModuleRegistry } from \"react-native\";\nimport stub from \"./native-whop-core-stub\";\n\nexport type FunctionCallResult = {\n\tisOk: boolean;\n\tdata: string | null;\n\terrorMessage: string | null;\n};\n\nexport interface Spec extends TurboModule {\n\texecSync(name: string, paramsJson: string): FunctionCallResult;\n\texecAsync(name: string, paramsJson: string): Promise<FunctionCallResult>;\n}\n\nfunction resolveNative(): Spec | null {\n\ttry {\n\t\t// biome-ignore lint/suspicious/noExplicitAny: <explanation>\n\t\tconst registry: any = TurboModuleRegistry as any;\n\t\tconst get = registry?.getEnforcing ?? registry?.get;\n\t\tif (typeof get === \"function\") {\n\t\t\treturn get.call(registry, \"NativeWhopCore\") as Spec;\n\t\t}\n\t\treturn null;\n\t} catch {\n\t\treturn null;\n\t}\n}\n\nconst native = resolveNative();\n\nexport default native ?? (stub as Spec);\n","import { Platform } from \"react-native\";\nimport type { ExecAsyncApi, ExecSyncApi } from \"./native-whop-core-wrapper\";\n\nexport type FunctionCallResult = {\n\tisOk: boolean;\n\tdata: string | null;\n\terrorMessage: string | null;\n};\n\ntype Route = { path: string[]; params: Record<string, string> };\n\nclass WhopCoreObservable<T> {\n\tprivate subscribers: Set<(value: T) => void> = new Set();\n\tprivate value: T;\n\n\tconstructor(value: T) {\n\t\tthis.value = value;\n\t}\n\n\tsetValue(value: T) {\n\t\tthis.value = value;\n\t\tfor (const callback of this.subscribers) {\n\t\t\tcallback(value);\n\t\t}\n\t}\n\n\tgetValue() {\n\t\treturn this.value;\n\t}\n\n\tsubscribe(callback: (value: T) => void) {\n\t\tthis.subscribers.add(callback);\n\t\treturn () => {\n\t\t\tthis.subscribers.delete(callback);\n\t\t};\n\t}\n}\n\nclass WhopCoreNavigation {\n\tpublic path = new WhopCoreObservable<Route[]>([]);\n\tpublic sheet = new WhopCoreObservable<Route | null>(null);\n\n\tconstructor() {\n\t\tthis.getFullStack = this.getFullStack.bind(this);\n\t\tthis.getCurrentSheet = this.getCurrentSheet.bind(this);\n\t\tthis.subscribeToPath = this.subscribeToPath.bind(this);\n\t\tthis.subscribeToSheet = this.subscribeToSheet.bind(this);\n\t}\n\n\tpush(route: Route) {\n\t\tif (this.getCurrent().path.join(\"/\") === route.path.join(\"/\")) {\n\t\t\treturn;\n\t\t}\n\n\t\tthis.path.setValue([...this.path.getValue(), route]);\n\t\tif (typeof window !== \"undefined\" && window.history) {\n\t\t\ttry {\n\t\t\t\tconst pathBits = route.path.join(\"/\");\n\t\t\t\tconst paramsBits = Object.entries(route.params)\n\t\t\t\t\t.map(([key, value]) => `${key}=${value}`)\n\t\t\t\t\t.join(\"&\");\n\t\t\t\twindow.history.pushState(\n\t\t\t\t\t{ route, index: this.path.getValue().length },\n\t\t\t\t\t\"\",\n\t\t\t\t\t`#${pathBits}?${paramsBits}`,\n\t\t\t\t);\n\t\t\t} catch {}\n\t\t}\n\t}\n\n\tpop() {\n\t\tif (typeof window !== \"undefined\" && window.history) {\n\t\t\ttry {\n\t\t\t\twindow.history.back();\n\t\t\t} catch {}\n\t\t}\n\t}\n\n\tgetFullStack() {\n\t\treturn this.path.getValue();\n\t}\n\n\tgetCurrent() {\n\t\treturn (\n\t\t\tthis.path.getValue()[this.path.getValue().length - 1] ?? {\n\t\t\t\tpath: [],\n\t\t\t\tparams: {},\n\t\t\t}\n\t\t);\n\t}\n\n\tpresentSheet(route: Route) {\n\t\tthis.sheet.setValue(route);\n\t}\n\n\tdismissSheet() {\n\t\tthis.sheet.setValue(null);\n\t}\n\n\tgetCurrentSheet() {\n\t\treturn this.sheet.getValue() ?? null;\n\t}\n\n\tsubscribeToPath(callback: (route: Route[]) => void) {\n\t\treturn this.path.subscribe(callback);\n\t}\n\n\tsubscribeToSheet(callback: (route: Route | null) => void) {\n\t\treturn this.sheet.subscribe(callback);\n\t}\n}\n\nexport type TWhopCoreNavigation = WhopCoreNavigation;\n\nconst navigation = new WhopCoreNavigation();\nif (typeof window !== \"undefined\" && Platform.OS === \"web\") {\n\t// biome-ignore lint/suspicious/noExplicitAny: <explanation>\n\t(window as any).whopCoreNavigation = navigation;\n\n\twindow.addEventListener(\"popstate\", (e) => {\n\t\tconst currentLength = navigation.path.getValue().length;\n\t\tif (!e.state) {\n\t\t\tnavigation.path.setValue(navigation.path.getValue().slice(0, -1));\n\t\t\treturn;\n\t\t}\n\t\tconst index = e.state.index;\n\t\tconst route = e.state.route;\n\t\tif (index < currentLength) {\n\t\t\tnavigation.path.setValue(navigation.path.getValue().slice(0, -1));\n\t\t} else {\n\t\t\tnavigation.path.setValue([...navigation.path.getValue(), route]);\n\t\t}\n\t});\n}\n\nfunction ok(data: unknown): FunctionCallResult {\n\treturn { isOk: true, data: JSON.stringify(data), errorMessage: null };\n}\n\nfunction err(message: string): FunctionCallResult {\n\treturn { isOk: false, data: null, errorMessage: message };\n}\n\nfunction getOrigin(): string {\n\tif (typeof window !== \"undefined\" && window.location) {\n\t\treturn window.location.origin;\n\t}\n\treturn \"\";\n}\n\nconst syncHandlers: ExecSyncApi = {\n\tgetAppApiOrigin() {\n\t\treturn { apiOrigin: getOrigin() };\n\t},\n\tcacheGet({ key }: { key?: string | null }) {\n\t\ttry {\n\t\t\tif (typeof window !== \"undefined\" && window.localStorage && key) {\n\t\t\t\treturn { data: window.localStorage.getItem(key) };\n\t\t\t}\n\t\t\treturn { data: null };\n\t\t} catch {\n\t\t\treturn { data: null };\n\t\t}\n\t},\n\tcacheSet({ key, data }: { key?: string | null; data?: string | null }) {\n\t\ttry {\n\t\t\tif (typeof window !== \"undefined\" && window.localStorage && key != null) {\n\t\t\t\tif (data == null) {\n\t\t\t\t\twindow.localStorage.removeItem(key);\n\t\t\t\t} else {\n\t\t\t\t\twindow.localStorage.setItem(key, data);\n\t\t\t\t}\n\t\t\t}\n\t\t} catch {}\n\t\treturn {};\n\t},\n\trouterPush(route: Route) {\n\t\tnavigation.push(route);\n\t\treturn {};\n\t},\n\trouterPop() {\n\t\tnavigation.pop();\n\t\treturn {};\n\t},\n\trouterGetCurrent() {\n\t\treturn navigation.getCurrent();\n\t},\n\tsetNavigationBarData() {\n\t\treturn {};\n\t},\n\trouterPresentSheet({ path, params }: Route) {\n\t\tnavigation.presentSheet({\n\t\t\tpath: Array.from(path ?? []),\n\t\t\tparams: params ?? {},\n\t\t});\n\t\treturn {};\n\t},\n\trouterDismissSheet() {\n\t\tnavigation.dismissSheet();\n\t\treturn {};\n\t},\n\trouterGetCurrentSheet() {\n\t\treturn navigation.getCurrentSheet() ?? null;\n\t},\n\tdowngradeToWebView() {\n\t\treturn {};\n\t},\n\tgetHostAppDetails() {\n\t\treturn {\n\t\t\tbuild: \"web\",\n\t\t\tversion: \"0.0.0\",\n\t\t\tplatform: \"web\",\n\t\t\tbuildType: \"appstore\",\n\t\t};\n\t},\n};\n\nlet iframeModulePromise: Promise<typeof import(\"@whop/iframe\")> | null = null;\n\nasync function loadIframeModule() {\n\tif (!iframeModulePromise) {\n\t\tiframeModulePromise = import(\"@whop/iframe\");\n\t}\n\treturn await iframeModulePromise;\n}\n\nlet iframeSdk: ReturnType<typeof import(\"@whop/iframe\").createSdk> | null =\n\tnull;\n\nasync function loadIframeSdk() {\n\tif (!iframeSdk) {\n\t\tconst module = await loadIframeModule();\n\t\tiframeSdk = module.createSdk({\n\t\t\tappId: process.env.NEXT_PUBLIC_WHOP_APP_ID,\n\t\t});\n\t}\n\treturn iframeSdk;\n}\n\n// biome-ignore lint/suspicious/noExplicitAny: <explanation>\ntype MakeAsync<T extends Record<string, any>> = {\n\t[K in keyof T]: (params: Parameters<T[K]>[0]) => Promise<ReturnType<T[K]>>;\n};\n\nconst asyncHandlers: MakeAsync<Pick<ExecAsyncApi, \"inAppPurchase\">> = {\n\tinAppPurchase: async ({ planId, id }) => {\n\t\tconst sdk = await loadIframeSdk();\n\t\tconst result = await sdk.inAppPurchase({ planId, id: id ?? undefined });\n\t\tif (result.status === \"ok\") {\n\t\t\treturn {\n\t\t\t\tsessionId: result.data.sessionId,\n\t\t\t\treceiptId: result.data.receiptId,\n\t\t\t};\n\t\t}\n\t\tthrow new Error(result.error);\n\t},\n};\n\nconst nativeWhopCoreStub = {\n\texecSync(name: string, paramsJson: string): FunctionCallResult {\n\t\ttry {\n\t\t\tconst params = paramsJson ? JSON.parse(paramsJson) : {};\n\t\t\tconst handler = syncHandlers[name as keyof typeof syncHandlers];\n\t\t\tif (!handler) return err(`Unknown sync method: ${name}`);\n\t\t\tconst result = handler(params);\n\t\t\treturn ok(result);\n\t\t} catch (e) {\n\t\t\treturn err(e instanceof Error ? e.message : \"Unknown error\");\n\t\t}\n\t},\n\tasync execAsync(\n\t\tname: string,\n\t\tparamsJson: string,\n\t): Promise<FunctionCallResult> {\n\t\ttry {\n\t\t\tconst params = paramsJson ? JSON.parse(paramsJson) : {};\n\t\t\tconst handler = (\n\t\t\t\tasyncHandlers as Record<string, (p: unknown) => Promise<unknown>>\n\t\t\t)[name];\n\t\t\tif (!handler) return err(`Unknown async method: ${name}`);\n\t\t\tconst result = await handler(params);\n\t\t\treturn ok(result);\n\t\t} catch (e) {\n\t\t\treturn err(e instanceof Error ? e.message : \"Unknown error\");\n\t\t}\n\t},\n};\n\nexport default nativeWhopCoreStub;\n","import nativeWhopCore from \"./native-whop-core\";\nimport type { PathParams } from \"./props\";\n\n// biome-ignore lint/complexity/noBannedTypes: allow here\ntype EmptyObject = {};\n\nexport interface ExecSyncApi {\n\tgetAppApiOrigin(params: EmptyObject): { apiOrigin: string };\n\tcacheGet(params: { key?: string | null }): { data?: string | null };\n\tcacheSet(params: { key?: string | null; data?: string | null }): EmptyObject;\n\trouterPush(params: PathParams): EmptyObject;\n\trouterPop(params: EmptyObject): EmptyObject;\n\trouterGetCurrent(params: EmptyObject): PathParams;\n\tsetNavigationBarData(params: {\n\t\ttitle?: string | null;\n\t\tdescription?: string | null;\n\t}): EmptyObject;\n\trouterPresentSheet(params: PathParams): EmptyObject;\n\trouterDismissSheet(params: EmptyObject): EmptyObject;\n\trouterGetCurrentSheet(params: EmptyObject): PathParams | null | undefined;\n\tdowngradeToWebView(params: EmptyObject): EmptyObject;\n\tgetHostAppDetails(params: EmptyObject): {\n\t\tbuild: string;\n\t\tversion: string;\n\t\tplatform: \"ios\" | \"android\" | \"web\";\n\t\tbuildType: \"appstore\" | \"testflight\" | \"debug\";\n\t};\n}\n\nexport interface ExecAsyncApi extends ExecSyncApi {\n\tinAppPurchase(params: {\n\t\tid?: string | null;\n\t\tplanId: string;\n\t}): {\n\t\tsessionId: string;\n\t\treceiptId: string;\n\t};\n}\n\nexport function __internal_execSync<F extends keyof ExecSyncApi>(\n\tname: F,\n\tparams: Parameters<ExecSyncApi[F]>[0],\n): ReturnType<ExecSyncApi[F]> {\n\tconst resultJson = nativeWhopCore.execSync(name, JSON.stringify(params));\n\tif (!resultJson.isOk) {\n\t\tthrow new Error(`Failed to execute ${name}: ${resultJson.errorMessage}`);\n\t}\n\n\treturn JSON.parse(resultJson.data || \"{}\") as ReturnType<ExecSyncApi[F]>;\n}\n\nexport async function __internal_execAsync<F extends keyof ExecAsyncApi>(\n\tname: F,\n\tparams: Parameters<ExecAsyncApi[F]>[0],\n): Promise<ReturnType<ExecAsyncApi[F]>> {\n\tconst resultJson = await nativeWhopCore.execAsync(\n\t\tname,\n\t\tJSON.stringify(params),\n\t);\n\n\tif (!resultJson.isOk) {\n\t\tthrow new Error(`Failed to execute ${name}: ${resultJson.errorMessage}`);\n\t}\n\n\treturn JSON.parse(resultJson.data || \"{}\") as ReturnType<ExecAsyncApi[F]>;\n}\n","/**\n * Web-safe wrapper for react-native-haptic-feedback.\n * - Lazily imports the native module only in native environments.\n * - Provides a no-op fallback on web to avoid runtime crashes.\n */\n\ntype HapticType =\n\t| \"selection\"\n\t| \"impactLight\"\n\t| \"impactMedium\"\n\t| \"impactHeavy\"\n\t| \"notificationSuccess\"\n\t| \"notificationWarning\"\n\t| \"notificationError\";\n\ntype HapticOptions = {\n\tenableVibrateFallback?: boolean;\n\tignoreAndroidSystemSettings?: boolean;\n};\n\n// Singleton holder for the native module once loaded\nlet nativeModule: {\n\ttrigger: (type: HapticType, options?: HapticOptions) => void;\n} | null = null;\nlet loadingPromise: Promise<void> | null = null;\n\nasync function ensureNativeLoaded(): Promise<void> {\n\t// If on web, skip loading entirely\n\t// eslint-disable-next-line @typescript-eslint/ban-ts-comment\n\t// @ts-ignore - process may not be typed in RN web builds\n\tconst isWeb =\n\t\ttypeof document !== \"undefined\" && typeof window !== \"undefined\";\n\tif (isWeb) return;\n\n\tif (nativeModule || loadingPromise) {\n\t\treturn loadingPromise ?? Promise.resolve();\n\t}\n\n\tloadingPromise = import(\"react-native-haptic-feedback\")\n\t\t.then((mod) => {\n\t\t\tnativeModule = { trigger: mod.default.trigger };\n\t\t})\n\t\t.catch(() => {\n\t\t\t// Keep nativeModule null; fall back to noop\n\t\t})\n\t\t.finally(() => {\n\t\t\tloadingPromise = null;\n\t\t});\n\n\treturn loadingPromise;\n}\n\nconst HAPTIC_NOOP = {\n\ttrigger: (_type: HapticType, _options?: HapticOptions) => {\n\t\t// no-op on web\n\t},\n};\n\nconst Haptics = {\n\tasync trigger(type: HapticType, options?: HapticOptions): Promise<void> {\n\t\tawait ensureNativeLoaded();\n\t\tif (nativeModule) {\n\t\t\ttry {\n\t\t\t\tnativeModule.trigger(type, options);\n\t\t\t} catch {\n\t\t\t\t// ignore\n\t\t\t}\n\t\t\treturn;\n\t\t}\n\t\tHAPTIC_NOOP.trigger(type, options);\n\t},\n};\n\nexport default Haptics;\n"],"mappings":"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","names":["Platform","Platform"]}
1
+ {"version":3,"sources":["../../src/lib/index.ts","../../src/lib/client-sdk.ts","../../src/lib/native-whop-core.ts","../../src/lib/native-whop-core-stub.ts","../../src/lib/native-whop-core-wrapper.ts","../../src/lib/haptics.ts"],"sourcesContent":["export * from \"./client-sdk\";\nexport * from \"./native-whop-core-wrapper\";\nexport * from \"./props\";\nimport Haptics from \"./haptics\";\n\nexport { Haptics };\n","import { WhopClientSdk } from \"@whop/api\";\nimport { Platform } from \"react-native\";\nimport { __internal_execSync } from \"./native-whop-core-wrapper\";\n\nfunction getAppOrigin() {\n\tif (Platform.OS === \"android\" || Platform.OS === \"ios\") {\n\t\treturn __internal_execSync(\"getAppApiOrigin\", {}).apiOrigin;\n\t}\n\n\tif (Platform.OS === \"web\" && typeof window !== \"undefined\") {\n\t\treturn window.location.origin;\n\t}\n\n\tthrow new Error(`Unsupported platform: ${Platform.OS}`);\n}\n\nconst appOrigin = getAppOrigin();\n\nexport const whopSdk: WhopClientSdk = WhopClientSdk({\n\tapiOrigin: appOrigin,\n\tapiPath: \"/_whop/public-graphql/\",\n});\n\nexport * from \"@whop/api\";\n","import type { TurboModule } from \"react-native\";\nimport { TurboModuleRegistry } from \"react-native\";\nimport stub from \"./native-whop-core-stub\";\n\nexport type FunctionCallResult = {\n\tisOk: boolean;\n\tdata: string | null;\n\terrorMessage: string | null;\n};\n\nexport interface Spec extends TurboModule {\n\texecSync(name: string, paramsJson: string): FunctionCallResult;\n\texecAsync(name: string, paramsJson: string): Promise<FunctionCallResult>;\n}\n\nfunction resolveNative(): Spec | null {\n\ttry {\n\t\t// biome-ignore lint/suspicious/noExplicitAny: <explanation>\n\t\tconst registry: any = TurboModuleRegistry as any;\n\t\tconst get = registry?.getEnforcing ?? registry?.get;\n\t\tif (typeof get === \"function\") {\n\t\t\treturn get.call(registry, \"NativeWhopCore\") as Spec;\n\t\t}\n\t\treturn null;\n\t} catch {\n\t\treturn null;\n\t}\n}\n\nconst native = resolveNative();\n\nexport default native ?? (stub as Spec);\n","import { Platform } from \"react-native\";\nimport type { ExecAsyncApi, ExecSyncApi } from \"./native-whop-core-wrapper\";\n\nexport type FunctionCallResult = {\n\tisOk: boolean;\n\tdata: string | null;\n\terrorMessage: string | null;\n};\n\ntype Route = { path: string[]; params: Record<string, string> };\n\nclass WhopCoreObservable<T> {\n\tprivate subscribers: Set<(value: T) => void> = new Set();\n\tprivate value: T;\n\n\tconstructor(value: T) {\n\t\tthis.value = value;\n\t}\n\n\tsetValue(value: T) {\n\t\tthis.value = value;\n\t\tfor (const callback of this.subscribers) {\n\t\t\tcallback(value);\n\t\t}\n\t}\n\n\tgetValue() {\n\t\treturn this.value;\n\t}\n\n\tsubscribe(callback: (value: T) => void) {\n\t\tthis.subscribers.add(callback);\n\t\treturn () => {\n\t\t\tthis.subscribers.delete(callback);\n\t\t};\n\t}\n}\n\nclass WhopCoreNavigation {\n\tpublic path = new WhopCoreObservable<Route[]>([]);\n\tpublic sheet = new WhopCoreObservable<Route | null>(null);\n\n\tconstructor() {\n\t\tthis.getFullStack = this.getFullStack.bind(this);\n\t\tthis.getCurrentSheet = this.getCurrentSheet.bind(this);\n\t\tthis.subscribeToPath = this.subscribeToPath.bind(this);\n\t\tthis.subscribeToSheet = this.subscribeToSheet.bind(this);\n\t}\n\n\tpush(route: Route) {\n\t\tif (this.getCurrent().path.join(\"/\") === route.path.join(\"/\")) {\n\t\t\treturn;\n\t\t}\n\n\t\tthis.path.setValue([...this.path.getValue(), route]);\n\t\tif (typeof window !== \"undefined\" && window.history) {\n\t\t\ttry {\n\t\t\t\tconst pathBits = route.path.join(\"/\");\n\t\t\t\tconst paramsBits = Object.entries(route.params)\n\t\t\t\t\t.map(([key, value]) => `${key}=${value}`)\n\t\t\t\t\t.join(\"&\");\n\t\t\t\twindow.history.pushState(\n\t\t\t\t\t{ route, index: this.path.getValue().length },\n\t\t\t\t\t\"\",\n\t\t\t\t\t`#${pathBits}?${paramsBits}`,\n\t\t\t\t);\n\t\t\t} catch {}\n\t\t}\n\t}\n\n\tpop() {\n\t\tif (typeof window !== \"undefined\" && window.history) {\n\t\t\ttry {\n\t\t\t\twindow.history.back();\n\t\t\t} catch {}\n\t\t}\n\t}\n\n\tgetFullStack() {\n\t\treturn this.path.getValue();\n\t}\n\n\tgetCurrent() {\n\t\treturn (\n\t\t\tthis.path.getValue()[this.path.getValue().length - 1] ?? {\n\t\t\t\tpath: [],\n\t\t\t\tparams: {},\n\t\t\t}\n\t\t);\n\t}\n\n\tpresentSheet(route: Route) {\n\t\tthis.sheet.setValue(route);\n\t}\n\n\tdismissSheet() {\n\t\tthis.sheet.setValue(null);\n\t}\n\n\tgetCurrentSheet() {\n\t\treturn this.sheet.getValue() ?? null;\n\t}\n\n\tsubscribeToPath(callback: (route: Route[]) => void) {\n\t\treturn this.path.subscribe(callback);\n\t}\n\n\tsubscribeToSheet(callback: (route: Route | null) => void) {\n\t\treturn this.sheet.subscribe(callback);\n\t}\n}\n\nexport type TWhopCoreNavigation = WhopCoreNavigation;\n\nconst navigation = new WhopCoreNavigation();\nif (typeof window !== \"undefined\" && Platform.OS === \"web\") {\n\t// biome-ignore lint/suspicious/noExplicitAny: <explanation>\n\t(window as any).whopCoreNavigation = navigation;\n\n\twindow.addEventListener(\"popstate\", (e) => {\n\t\tconst currentLength = navigation.path.getValue().length;\n\t\tif (!e.state) {\n\t\t\tnavigation.path.setValue(navigation.path.getValue().slice(0, -1));\n\t\t\treturn;\n\t\t}\n\t\tconst index = e.state.index;\n\t\tconst route = e.state.route;\n\t\tif (index < currentLength) {\n\t\t\tnavigation.path.setValue(navigation.path.getValue().slice(0, -1));\n\t\t} else {\n\t\t\tnavigation.path.setValue([...navigation.path.getValue(), route]);\n\t\t}\n\t});\n}\n\nfunction ok(data: unknown): FunctionCallResult {\n\treturn { isOk: true, data: JSON.stringify(data), errorMessage: null };\n}\n\nfunction err(message: string): FunctionCallResult {\n\treturn { isOk: false, data: null, errorMessage: message };\n}\n\nfunction getOrigin(): string {\n\tif (typeof window !== \"undefined\" && window.location) {\n\t\treturn window.location.origin;\n\t}\n\treturn \"\";\n}\n\nconst syncHandlers: ExecSyncApi = {\n\tgetAppApiOrigin() {\n\t\treturn { apiOrigin: getOrigin() };\n\t},\n\tcacheGet({ key }: { key?: string | null }) {\n\t\ttry {\n\t\t\tif (typeof window !== \"undefined\" && window.localStorage && key) {\n\t\t\t\treturn { data: window.localStorage.getItem(key) };\n\t\t\t}\n\t\t\treturn { data: null };\n\t\t} catch {\n\t\t\treturn { data: null };\n\t\t}\n\t},\n\tcacheSet({ key, data }: { key?: string | null; data?: string | null }) {\n\t\ttry {\n\t\t\tif (typeof window !== \"undefined\" && window.localStorage && key != null) {\n\t\t\t\tif (data == null) {\n\t\t\t\t\twindow.localStorage.removeItem(key);\n\t\t\t\t} else {\n\t\t\t\t\twindow.localStorage.setItem(key, data);\n\t\t\t\t}\n\t\t\t}\n\t\t} catch {}\n\t\treturn {};\n\t},\n\trouterPush(route: Route) {\n\t\tnavigation.push(route);\n\t\treturn {};\n\t},\n\trouterPop() {\n\t\tnavigation.pop();\n\t\treturn {};\n\t},\n\trouterGetCurrent() {\n\t\treturn navigation.getCurrent();\n\t},\n\tsetNavigationBarData() {\n\t\treturn {};\n\t},\n\trouterPresentSheet({ path, params }: Route) {\n\t\tnavigation.presentSheet({\n\t\t\tpath: Array.from(path ?? []),\n\t\t\tparams: params ?? {},\n\t\t});\n\t\treturn {};\n\t},\n\trouterDismissSheet() {\n\t\tnavigation.dismissSheet();\n\t\treturn {};\n\t},\n\trouterGetCurrentSheet() {\n\t\treturn navigation.getCurrentSheet() ?? null;\n\t},\n\tdowngradeToWebView() {\n\t\treturn {};\n\t},\n\tgetHostAppDetails() {\n\t\treturn {\n\t\t\tbuild: \"web\",\n\t\t\tversion: \"0.0.0\",\n\t\t\tplatform: \"web\",\n\t\t\tbuildType: \"appstore\",\n\t\t};\n\t},\n\tsetScreenOrientationMode() {\n\t\treturn {};\n\t},\n};\n\nlet iframeModulePromise: Promise<typeof import(\"@whop/iframe\")> | null = null;\n\nasync function loadIframeModule() {\n\tif (!iframeModulePromise) {\n\t\tiframeModulePromise = import(\"@whop/iframe\");\n\t}\n\treturn await iframeModulePromise;\n}\n\nlet iframeSdk: ReturnType<typeof import(\"@whop/iframe\").createSdk> | null =\n\tnull;\n\nasync function loadIframeSdk() {\n\tif (!iframeSdk) {\n\t\tconst module = await loadIframeModule();\n\t\tiframeSdk = module.createSdk({\n\t\t\tappId: process.env.NEXT_PUBLIC_WHOP_APP_ID,\n\t\t});\n\t}\n\treturn iframeSdk;\n}\n\n// biome-ignore lint/suspicious/noExplicitAny: <explanation>\ntype MakeAsync<T extends Record<string, any>> = {\n\t[K in keyof T]: (params: Parameters<T[K]>[0]) => Promise<ReturnType<T[K]>>;\n};\n\nconst asyncHandlers: MakeAsync<Pick<ExecAsyncApi, \"inAppPurchase\">> = {\n\tinAppPurchase: async ({ planId, id }) => {\n\t\tconst sdk = await loadIframeSdk();\n\t\tconst result = await sdk.inAppPurchase({ planId, id: id ?? undefined });\n\t\tif (result.status === \"ok\") {\n\t\t\treturn {\n\t\t\t\tsessionId: result.data.sessionId,\n\t\t\t\treceiptId: result.data.receiptId,\n\t\t\t};\n\t\t}\n\t\tthrow new Error(result.error);\n\t},\n};\n\nconst nativeWhopCoreStub = {\n\texecSync(name: string, paramsJson: string): FunctionCallResult {\n\t\ttry {\n\t\t\tconst params = paramsJson ? JSON.parse(paramsJson) : {};\n\t\t\tconst handler = syncHandlers[name as keyof typeof syncHandlers];\n\t\t\tif (!handler) return err(`Unknown sync method: ${name}`);\n\t\t\tconst result = handler(params);\n\t\t\treturn ok(result);\n\t\t} catch (e) {\n\t\t\treturn err(e instanceof Error ? e.message : \"Unknown error\");\n\t\t}\n\t},\n\tasync execAsync(\n\t\tname: string,\n\t\tparamsJson: string,\n\t): Promise<FunctionCallResult> {\n\t\ttry {\n\t\t\tconst params = paramsJson ? JSON.parse(paramsJson) : {};\n\t\t\tconst handler = (\n\t\t\t\tasyncHandlers as Record<string, (p: unknown) => Promise<unknown>>\n\t\t\t)[name];\n\t\t\tif (!handler) return err(`Unknown async method: ${name}`);\n\t\t\tconst result = await handler(params);\n\t\t\treturn ok(result);\n\t\t} catch (e) {\n\t\t\treturn err(e instanceof Error ? e.message : \"Unknown error\");\n\t\t}\n\t},\n};\n\nexport default nativeWhopCoreStub;\n","import nativeWhopCore from \"./native-whop-core\";\nimport type { PathParams } from \"./props\";\n\n// biome-ignore lint/complexity/noBannedTypes: allow here\ntype EmptyObject = {};\n\nexport interface ExecSyncApi {\n\tgetAppApiOrigin(params: EmptyObject): { apiOrigin: string };\n\tcacheGet(params: { key?: string | null }): { data?: string | null };\n\tcacheSet(params: { key?: string | null; data?: string | null }): EmptyObject;\n\trouterPush(params: PathParams): EmptyObject;\n\trouterPop(params: EmptyObject): EmptyObject;\n\trouterGetCurrent(params: EmptyObject): PathParams;\n\tsetNavigationBarData(params: {\n\t\ttitle?: string | null;\n\t\tdescription?: string | null;\n\t}): EmptyObject;\n\trouterPresentSheet(params: PathParams): EmptyObject;\n\trouterDismissSheet(params: EmptyObject): EmptyObject;\n\trouterGetCurrentSheet(params: EmptyObject): PathParams | null | undefined;\n\tdowngradeToWebView(params: EmptyObject): EmptyObject;\n\tgetHostAppDetails(params: EmptyObject): {\n\t\tbuild: string;\n\t\tversion: string;\n\t\tplatform: \"ios\" | \"android\" | \"web\";\n\t\tbuildType: \"appstore\" | \"testflight\" | \"debug\";\n\t};\n\tsetScreenOrientationMode(params: {\n\t\ttargetScreenOrientationMode: \"portrait\" | \"landscape\" | \"rotate\";\n\t}): EmptyObject;\n}\n\nexport interface ExecAsyncApi extends ExecSyncApi {\n\tinAppPurchase(params: {\n\t\tid?: string | null;\n\t\tplanId: string;\n\t}): {\n\t\tsessionId: string;\n\t\treceiptId: string;\n\t};\n}\n\nexport function __internal_execSync<F extends keyof ExecSyncApi>(\n\tname: F,\n\tparams: Parameters<ExecSyncApi[F]>[0],\n): ReturnType<ExecSyncApi[F]> {\n\tconst resultJson = nativeWhopCore.execSync(name, JSON.stringify(params));\n\tif (!resultJson.isOk) {\n\t\tthrow new Error(`Failed to execute ${name}: ${resultJson.errorMessage}`);\n\t}\n\n\treturn JSON.parse(resultJson.data || \"{}\") as ReturnType<ExecSyncApi[F]>;\n}\n\nexport async function __internal_execAsync<F extends keyof ExecAsyncApi>(\n\tname: F,\n\tparams: Parameters<ExecAsyncApi[F]>[0],\n): Promise<ReturnType<ExecAsyncApi[F]>> {\n\tconst resultJson = await nativeWhopCore.execAsync(\n\t\tname,\n\t\tJSON.stringify(params),\n\t);\n\n\tif (!resultJson.isOk) {\n\t\tthrow new Error(`Failed to execute ${name}: ${resultJson.errorMessage}`);\n\t}\n\n\treturn JSON.parse(resultJson.data || \"{}\") as ReturnType<ExecAsyncApi[F]>;\n}\n","/**\n * Web-safe wrapper for react-native-haptic-feedback.\n * - Lazily imports the native module only in native environments.\n * - Provides a no-op fallback on web to avoid runtime crashes.\n */\n\ntype HapticType =\n\t| \"selection\"\n\t| \"impactLight\"\n\t| \"impactMedium\"\n\t| \"impactHeavy\"\n\t| \"notificationSuccess\"\n\t| \"notificationWarning\"\n\t| \"notificationError\";\n\ntype HapticOptions = {\n\tenableVibrateFallback?: boolean;\n\tignoreAndroidSystemSettings?: boolean;\n};\n\n// Singleton holder for the native module once loaded\nlet nativeModule: {\n\ttrigger: (type: HapticType, options?: HapticOptions) => void;\n} | null = null;\nlet loadingPromise: Promise<void> | null = null;\n\nasync function ensureNativeLoaded(): Promise<void> {\n\t// If on web, skip loading entirely\n\t// eslint-disable-next-line @typescript-eslint/ban-ts-comment\n\t// @ts-ignore - process may not be typed in RN web builds\n\tconst isWeb =\n\t\ttypeof document !== \"undefined\" && typeof window !== \"undefined\";\n\tif (isWeb) return;\n\n\tif (nativeModule || loadingPromise) {\n\t\treturn loadingPromise ?? Promise.resolve();\n\t}\n\n\tloadingPromise = import(\"react-native-haptic-feedback\")\n\t\t.then((mod) => {\n\t\t\tnativeModule = { trigger: mod.default.trigger };\n\t\t})\n\t\t.catch(() => {\n\t\t\t// Keep nativeModule null; fall back to noop\n\t\t})\n\t\t.finally(() => {\n\t\t\tloadingPromise = null;\n\t\t});\n\n\treturn loadingPromise;\n}\n\nconst HAPTIC_NOOP = {\n\ttrigger: (_type: HapticType, _options?: HapticOptions) => {\n\t\t// no-op on web\n\t},\n};\n\nconst Haptics = {\n\tasync trigger(type: HapticType, options?: HapticOptions): Promise<void> {\n\t\tawait ensureNativeLoaded();\n\t\tif (nativeModule) {\n\t\t\ttry {\n\t\t\t\tnativeModule.trigger(type, options);\n\t\t\t} catch {\n\t\t\t\t// ignore\n\t\t\t}\n\t\t\treturn;\n\t\t}\n\t\tHAPTIC_NOOP.trigger(type, options);\n\t},\n};\n\nexport default Haptics;\n"],"mappings":"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","names":["Platform","Platform"]}
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@whop/react-native",
3
3
  "description": "React Native SDK for building embedded apps on Whop",
4
- "version": "0.0.21",
4
+ "version": "0.0.22",
5
5
  "repository": {
6
6
  "type": "git",
7
7
  "url": "https://github.com/whopio/whop-sdk-ts",
@@ -54,7 +54,7 @@
54
54
  "metro-react-native-babel-transformer": "0.77.0",
55
55
  "qrcode-terminal": "0.12.0",
56
56
  "rimraf": "6.0.1",
57
- "@whop/api": "0.0.50",
57
+ "@whop/api": "0.0.51",
58
58
  "@whop/iframe": "0.0.3"
59
59
  },
60
60
  "devDependencies": {