awesome-next-runtime-env
Version:
Next.js Runtime Environment Configuration - Populates your environment at runtime rather than build time.
38 lines • 2.39 kB
JavaScript
;
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, strategy }) => {
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;
}
return ((0, jsx_runtime_1.jsx)(script_1.default, { strategy: strategy || 'beforeInteractive', nonce: nonceString, dangerouslySetInnerHTML: {
__html: `window['${constants_1.PUBLIC_ENV_KEY}'] = ${JSON.stringify(env)}`,
} }));
};
exports.EnvScript = EnvScript;
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZW52LXNjcmlwdC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9zY3JpcHQvZW52LXNjcmlwdC50c3giXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7OztBQUFBLCtEQUErRDtBQUMvRCwwQ0FBMEM7QUFDMUMseURBQWtEO0FBS2xELDJDQUE2QztBQVE3Qzs7Ozs7Ozs7OztHQVVHO0FBQ0ksTUFBTSxTQUFTLEdBQXVCLENBQUMsRUFBRSxHQUFHLEVBQUUsS0FBSyxFQUFFLFFBQVEsRUFBRSxFQUFFLEVBQUU7SUFDeEUsSUFBSSxXQUErQixDQUFDO0lBRXBDLCtEQUErRDtJQUMvRCxxREFBcUQ7SUFDckQscUVBQXFFO0lBQ3JFLCtEQUErRDtJQUMvRCxJQUFJO0lBRUosSUFBSSxPQUFPLEtBQUssS0FBSyxRQUFRLEVBQUUsQ0FBQztRQUM5QixXQUFXLEdBQUcsS0FBSyxDQUFDO0lBQ3RCLENBQUM7SUFFRCxPQUFPLENBQ0wsdUJBQUMsZ0JBQU0sSUFDTCxRQUFRLEVBQUUsUUFBUSxJQUFJLG1CQUFtQixFQUN6QyxLQUFLLEVBQUUsV0FBVyxFQUNsQix1QkFBdUIsRUFBRTtZQUN2QixNQUFNLEVBQUUsV0FBVywwQkFBYyxRQUFRLElBQUksQ0FBQyxTQUFTLENBQUMsR0FBRyxDQUFDLEVBQUU7U0FDL0QsR0FDRCxDQUNILENBQUM7QUFDSixDQUFDLENBQUM7QUF0QlcsUUFBQSxTQUFTLGFBc0JwQiJ9