UNPKG

next-runtime-env

Version:

Next.js Runtime Environment Configuration - Populates your environment at runtime rather than build time.

46 lines 3.33 kB
"use strict"; var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); exports.EnvScript = void 0; const jsx_runtime_1 = require("react/jsx-runtime"); // XXX: Blocked by https://github.com/vercel/next.js/pull/58129 // import { headers } from 'next/headers'; const script_1 = __importDefault(require("next/script")); const constants_1 = require("./constants"); /** * Sets the provided environment variables in the browser. If an nonce is * available, it will be set on the script tag. * * Usage: * ```ts * <head> * <EnvScript env={{ NODE_ENV: 'test', API_URL: 'http://localhost:3000' }} /> * </head> * ``` */ const EnvScript = ({ env, nonce, disableNextScript = false, nextScriptProps = { strategy: 'beforeInteractive' }, }) => { let nonceString; // XXX: Blocked by https://github.com/vercel/next.js/pull/58129 // if (typeof nonce === 'object' && nonce !== null) { // // It's strongly recommended to set a nonce on your script tags. // nonceString = headers().get(nonce.headerKey) ?? undefined; // } if (typeof nonce === 'string') { nonceString = nonce; } const innerHTML = { __html: `window['${constants_1.PUBLIC_ENV_KEY}'] = ${JSON.stringify(env)}`, }; // You can opt to use a regular "<script>" tag instead of Next.js' Script Component. // Note: When using Sentry, sentry.client.config.ts might run after the Next.js <Script> component, even when the strategy is "beforeInteractive" // This results in the runtime environments being undefined and the Sentry client config initialized without the correct configuration. if (disableNextScript) { return (0, jsx_runtime_1.jsx)("script", { nonce: nonceString, dangerouslySetInnerHTML: innerHTML }); } // Use Next.js Script Component by default return ((0, jsx_runtime_1.jsx)(script_1.default, { ...nextScriptProps, nonce: nonceString, dangerouslySetInnerHTML: innerHTML })); }; exports.EnvScript = EnvScript; //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZW52LXNjcmlwdC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9zY3JpcHQvZW52LXNjcmlwdC50c3giXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7OztBQUFBLCtEQUErRDtBQUMvRCwwQ0FBMEM7QUFDMUMseURBQXVEO0FBS3ZELDJDQUE2QztBQVM3Qzs7Ozs7Ozs7OztHQVVHO0FBQ0ksTUFBTSxTQUFTLEdBQXVCLENBQUMsRUFDNUMsR0FBRyxFQUNILEtBQUssRUFDTCxpQkFBaUIsR0FBRyxLQUFLLEVBQ3pCLGVBQWUsR0FBRyxFQUFFLFFBQVEsRUFBRSxtQkFBbUIsRUFBRSxHQUNwRCxFQUFFLEVBQUU7SUFDSCxJQUFJLFdBQStCLENBQUM7SUFFcEMsK0RBQStEO0lBQy9ELHFEQUFxRDtJQUNyRCxxRUFBcUU7SUFDckUsK0RBQStEO0lBQy9ELElBQUk7SUFFSixJQUFJLE9BQU8sS0FBSyxLQUFLLFFBQVEsRUFBRSxDQUFDO1FBQzlCLFdBQVcsR0FBRyxLQUFLLENBQUM7SUFDdEIsQ0FBQztJQUVELE1BQU0sU0FBUyxHQUFHO1FBQ2hCLE1BQU0sRUFBRSxXQUFXLDBCQUFjLFFBQVEsSUFBSSxDQUFDLFNBQVMsQ0FBQyxHQUFHLENBQUMsRUFBRTtLQUMvRCxDQUFDO0lBRUYsb0ZBQW9GO0lBQ3BGLGlKQUFpSjtJQUNqSix1SUFBdUk7SUFDdkksSUFBSSxpQkFBaUIsRUFBRSxDQUFDO1FBQ3RCLE9BQU8sbUNBQVEsS0FBSyxFQUFFLFdBQVcsRUFBRSx1QkFBdUIsRUFBRSxTQUFTLEdBQUksQ0FBQztJQUM1RSxDQUFDO0lBRUQsMENBQTBDO0lBQzFDLE9BQU8sQ0FDTCx1QkFBQyxnQkFBTSxPQUNELGVBQWUsRUFDbkIsS0FBSyxFQUFFLFdBQVcsRUFDbEIsdUJBQXVCLEVBQUUsU0FBUyxHQUNsQyxDQUNILENBQUM7QUFDSixDQUFDLENBQUM7QUFyQ1csUUFBQSxTQUFTLGFBcUNwQiJ9