UNPKG

@devcycle/nextjs-sdk

Version:

The Next.js SDK for DevCycle!

44 lines 1.68 kB
import { serializeUserSearchParams } from '../common/serializeUser'; import { cache } from 'react'; import { ConfigBody } from '@devcycle/types'; import { plainToInstance } from 'class-transformer'; 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, }; }); const getSDKAPIUrl = (sdkKey, obfuscated, user) => { const searchParams = new URLSearchParams(); serializeUserSearchParams(user, searchParams); searchParams.set('sdkKey', sdkKey); if (obfuscated) { searchParams.set('obfuscated', '1'); } searchParams.set('sdkPlatform', 'nextjs'); searchParams.set('sse', '1'); return `https://sdk-api.devcycle.com/v1/sdkConfig?${searchParams.toString()}`; }; export const sdkConfigAPI = cache(async (sdkKey, obfuscated, user) => { const response = await fetch(getSDKAPIUrl(sdkKey, obfuscated, user), { next: { revalidate: 60, tags: [sdkKey, user.user_id], }, }); return (await response.json()); }); //# sourceMappingURL=requests.js.map