UNPKG

@devcycle/nextjs-sdk

Version:

The Next.js SDK for DevCycle!

49 lines 1.95 kB
import { serializeUserSearchParams } from '../common/serializeUser'; import { cache } from 'react'; import { ConfigBody } from '@devcycle/types'; import { plainToInstance } from 'class-transformer'; import { hasOptInEnabled as hasOptInEnabledCommon } from '../common/requests'; const getFetchUrl = (sdkKey, obfuscated) => `https://config-cdn.devcycle.com/config/v2/server/bootstrap/${obfuscated ? 'obfuscated/' : ''}${sdkKey}.json`; export const fetchCDNConfig = cache(async (sdkKey, clientSDKKey, obfuscated) => { const response = await fetch(getFetchUrl(sdkKey, obfuscated), // only store for 60 seconds { next: { revalidate: 60, tags: [sdkKey, clientSDKKey], }, }); if (!response.ok) { const responseText = await response.text(); throw new Error('Could not fetch config: ' + responseText); } return { config: plainToInstance(ConfigBody, await response.json()), headers: response.headers, }; }); export const hasOptInEnabled = cache(hasOptInEnabledCommon); const getSDKAPIUrl = (sdkKey, obfuscated, enableEdgeDB, user) => { const searchParams = new URLSearchParams(); serializeUserSearchParams(user, searchParams); searchParams.set('sdkKey', sdkKey); if (obfuscated) { searchParams.set('obfuscated', '1'); } if (enableEdgeDB) { searchParams.set('enableEdgeDB', 'true'); } searchParams.set('sdkPlatform', 'nextjs'); searchParams.set('sse', '1'); return `https://sdk-api.devcycle.com/v1/sdkConfig?${searchParams.toString()}`; }; export const sdkConfigAPI = cache(async (sdkKey, user, obfuscated, enableEdgeDB) => { const response = await fetch(getSDKAPIUrl(sdkKey, obfuscated, enableEdgeDB, user), { next: { revalidate: 60, tags: [sdkKey, user.user_id], }, }); return (await response.json()); }); //# sourceMappingURL=requests.js.map