{"_id":"next-dynenv","_rev":"7-703b59fee41529e53ede1fd8dbfd7a2d","name":"next-dynenv","dist-tags":{"latest":"4.0.6"},"versions":{"4.0.0":{"name":"next-dynenv","version":"4.0.0","keywords":["nextjs","next.js","runtime","environment","env","dynamic","runtime-env","next-dynenv","docker","kubernetes","twelve-factor"],"author":{"url":"Forked from Expatfile.tax LLC","name":"Stefanie Jane","email":"info@hyperbliss.tech"},"license":"MIT","_id":"next-dynenv@4.0.0","maintainers":[{"name":"hyperb1iss","email":"stef@hyperbliss.tech"}],"homepage":"https://github.com/hyperb1iss/next-dynenv#readme","bugs":{"url":"https://github.com/hyperb1iss/next-dynenv/issues"},"dist":{"shasum":"fce1ae0055408104db5f88a27b83bc04b95f7642","tarball":"https://registry.npmjs.org/next-dynenv/-/next-dynenv-4.0.0.tgz","fileCount":4140,"integrity":"sha512-yylHyjOfv+zPWC9Ty9esp4s3O7Im6ljKyMjO6pQ7HAoh+62/pxsdMfuMN/hTjQWjRiHJs702ASrKIOWtQTEE4g==","signatures":[{"sig":"MEUCIQD9+gd6a+lleZQv9xorF98m9I8UhI5yNxLbxuid2g1cNQIgfON5fpgh1AI9prmGQK1xAx4l3sHucdgaePVHeCoUX8c=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":73006675},"main":"build/index.js","type":"module","_from":"file:next-dynenv-4.0.0.tgz","types":"build/index.d.ts","engines":{"node":">=20.9.0"},"exports":{".":{"types":"./build/index.d.ts","import":"./build/index.js"}},"scripts":{"lint":"biome check . && prettier --check \"**/*.{md,mdx,yml,yaml}\"","test":"vitest run","build":"tsc -p .","audit-ci":"audit-ci","lint:all":"biome check --write --unsafe . && prettier --write \"**/*.{md,mdx,yml,yaml}\"","lint:fix":"biome check --write . && prettier --write \"**/*.{md,mdx,yml,yaml}\"","typecheck":"tsc --noEmit","test:watch":"vitest","build:watch":"pnpm build --watch","test:coverage":"vitest run --coverage","semantic-release":"semantic-release","test:integration":"node test-app/integration-test.mjs"},"_npmUser":{"name":"hyperb1iss","email":"stef@hyperbliss.tech"},"_resolved":"/private/var/folders/m4/ylxlzrys34b48kcpgdyrs36m0000gn/T/016facf73b180b2e6e8c7cb4869a14bd/next-dynenv-4.0.0.tgz","_integrity":"sha512-yylHyjOfv+zPWC9Ty9esp4s3O7Im6ljKyMjO6pQ7HAoh+62/pxsdMfuMN/hTjQWjRiHJs702ASrKIOWtQTEE4g==","repository":{"url":"git+https://github.com/hyperb1iss/next-dynenv.git","type":"git"},"_npmVersion":"10.9.2","description":"Dynamic runtime environment variables for Next.js - populate your environment at runtime, not build time.","directories":{},"_nodeVersion":"22.16.0","dependencies":{"next":"^16.0.7","react":"^19"},"_hasShrinkwrap":false,"devDependencies":{"jsdom":"^26.1.0","vitest":"^3.2.4","audit-ci":"^7.1.0","prettier":"^3.5.3","react-dom":"19.2.0","typescript":"^5.9.3","@types/node":"^24.7.2","@types/react":"^19.2.2","@biomejs/biome":"^2.2.6","@types/react-dom":"^19.2.2","semantic-release":"^24.2.3","@vitest/coverage-v8":"^3.2.4","@testing-library/react":"^16.3.0","@testing-library/jest-dom":"^6.6.3"},"peerDependencies":{"next":"^15 || ^16","react":"^19"},"_npmOperationalInternal":{"tmp":"tmp/next-dynenv_4.0.0_1765353588088_0.2976543002451637","host":"s3://npm-registry-packages-npm-production"}},"4.0.1":{"name":"next-dynenv","version":"4.0.1","keywords":["nextjs","next.js","runtime","environment","env","dynamic","runtime-env","next-dynenv","docker","kubernetes","twelve-factor"],"author":{"url":"Forked from Expatfile.tax LLC","name":"Stefanie Jane","email":"info@hyperbliss.tech"},"license":"MIT","_id":"next-dynenv@4.0.1","maintainers":[{"name":"hyperb1iss","email":"stef@hyperbliss.tech"}],"homepage":"https://github.com/hyperb1iss/next-dynenv#readme","bugs":{"url":"https://github.com/hyperb1iss/next-dynenv/issues"},"dist":{"shasum":"76c09c706e9f76aca5a36105bb27f58a0a0c3ce9","tarball":"https://registry.npmjs.org/next-dynenv/-/next-dynenv-4.0.1.tgz","fileCount":60,"integrity":"sha512-bx/1tefcsX3otnIABdvammUzbIgZmZsjdzVVjPnQHPZMEStjsEt+hfEPfAVElPWPS+4FJc7ELRkU03vXKgBdkQ==","signatures":[{"sig":"MEUCIGt1WTumSo9BFeP/VKnx49n1MoFBluyhgbyCh7nWDj6tAiEAqH4vY9Lv4ZAAjTqnC/IIwEC/DoqMHCSIAME95bobYYA=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/next-dynenv@4.0.1","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":152805},"main":"build/index.js","type":"module","types":"build/index.d.ts","engines":{"node":">=20.9.0"},"exports":{".":{"types":"./build/index.d.ts","import":"./build/index.js"}},"gitHead":"f36e54cae2e4e3a889c23b0dfe6b30c20cf263fc","scripts":{"lint":"biome check . && prettier --check \"**/*.{md,mdx,yml,yaml}\"","test":"vitest run","build":"tsc -p .","audit-ci":"audit-ci","lint:all":"biome check --write --unsafe . && prettier --write \"**/*.{md,mdx,yml,yaml}\"","lint:fix":"biome check --write . && prettier --write \"**/*.{md,mdx,yml,yaml}\"","typecheck":"tsc --noEmit","test:watch":"vitest","build:watch":"pnpm build --watch","test:coverage":"vitest run --coverage","semantic-release":"semantic-release","test:integration":"node test-app/integration-test.mjs"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:09f6512f-724a-47e0-9151-32df40a7a669"}},"repository":{"url":"git+https://github.com/hyperb1iss/next-dynenv.git","type":"git"},"_npmVersion":"11.7.0","description":"Dynamic runtime environment variables for Next.js - populate your environment at runtime, not build time.","directories":{},"_nodeVersion":"22.21.1","dependencies":{"next":"^16.0.7","react":"^19"},"_hasShrinkwrap":false,"devDependencies":{"jsdom":"^26.1.0","vitest":"^3.2.4","audit-ci":"^7.1.0","prettier":"^3.5.3","react-dom":"19.2.0","typescript":"^5.9.3","@types/node":"^24.7.2","@types/react":"^19.2.2","@biomejs/biome":"^2.2.6","@types/react-dom":"^19.2.2","semantic-release":"^24.2.3","@vitest/coverage-v8":"^3.2.4","@testing-library/react":"^16.3.0","@testing-library/jest-dom":"^6.6.3"},"peerDependencies":{"next":"^15 || ^16","react":"^19"},"_npmOperationalInternal":{"tmp":"tmp/next-dynenv_4.0.1_1765356112579_0.2974446121097125","host":"s3://npm-registry-packages-npm-production"}},"4.0.2":{"name":"next-dynenv","version":"4.0.2","keywords":["nextjs","next.js","runtime","environment","env","dynamic","runtime-env","next-dynenv","docker","kubernetes","twelve-factor"],"author":{"url":"Forked from Expatfile.tax LLC","name":"Stefanie Jane","email":"info@hyperbliss.tech"},"license":"MIT","_id":"next-dynenv@4.0.2","maintainers":[{"name":"hyperb1iss","email":"stef@hyperbliss.tech"}],"homepage":"https://github.com/hyperb1iss/next-dynenv#readme","bugs":{"url":"https://github.com/hyperb1iss/next-dynenv/issues"},"dist":{"shasum":"161377090b9f76f2e8bd24f223f86f2c10317bd6","tarball":"https://registry.npmjs.org/next-dynenv/-/next-dynenv-4.0.2.tgz","fileCount":60,"integrity":"sha512-LjOcqnsgVY/r323TGyoUGVSrDN5V9dYfNTAQ/rjRvHxs9sroe5j1r3B0Wx1AUM/NbagF/OC+MBM1ET0ODo6Tog==","signatures":[{"sig":"MEUCIQClBMib3R/QtthkprCD5siWPntTXBTfEOd6M/HAZhSoCAIgA6VlLgdIg61SRc698useA7JhiR6/j43BTPrrYfus45Q=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/next-dynenv@4.0.2","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":157228},"main":"build/index.js","pnpm":{"overrides":{"glob":">=10.5.0","brace-expansion":">=2.0.2"}},"type":"module","types":"build/index.d.ts","engines":{"node":">=20.9.0"},"exports":{".":{"types":"./build/index.d.ts","import":"./build/index.js"}},"gitHead":"d4d3b308cc778e005c0989c9bd7ad7189cf558b0","scripts":{"lint":"biome check . && prettier --check \"**/*.{md,mdx,yml,yaml}\"","test":"vitest run","build":"tsc -p .","audit-ci":"audit-ci","lint:all":"biome check --write --unsafe . && prettier --write \"**/*.{md,mdx,yml,yaml}\"","lint:fix":"biome check --write . && prettier --write \"**/*.{md,mdx,yml,yaml}\"","typecheck":"tsc --noEmit","test:watch":"vitest","build:watch":"pnpm build --watch","test:coverage":"vitest run --coverage","semantic-release":"semantic-release","test:integration":"node test-app/integration-test.mjs"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:09f6512f-724a-47e0-9151-32df40a7a669"}},"repository":{"url":"git+https://github.com/hyperb1iss/next-dynenv.git","type":"git"},"_npmVersion":"11.7.0","description":"Dynamic runtime environment variables for Next.js - populate your environment at runtime, not build time.","directories":{},"_nodeVersion":"22.21.1","dependencies":{"react":"catalog:"},"_hasShrinkwrap":false,"packageManager":"pnpm@10.26.0+sha512.3b3f6c725ebe712506c0ab1ad4133cf86b1f4b687effce62a9b38b4d72e3954242e643190fc51fa1642949c735f403debd44f5cb0edd657abe63a8b6a7e1e402","devDependencies":{"next":"catalog:","jsdom":"catalog:","vitest":"catalog:","audit-ci":"catalog:","prettier":"catalog:","react-dom":"catalog:","typescript":"catalog:","@types/node":"catalog:","@types/react":"catalog:","@biomejs/biome":"catalog:","@types/react-dom":"catalog:","semantic-release":"catalog:","@vitest/coverage-v8":"catalog:","@testing-library/react":"catalog:","@testing-library/jest-dom":"catalog:"},"peerDependencies":{"next":"^15 || ^16","react":"^19"},"_npmOperationalInternal":{"tmp":"tmp/next-dynenv_4.0.2_1765943602721_0.5517022845033461","host":"s3://npm-registry-packages-npm-production"}},"4.0.3":{"name":"next-dynenv","version":"4.0.3","keywords":["nextjs","next.js","runtime","environment","env","dynamic","runtime-env","next-dynenv","docker","kubernetes","twelve-factor"],"author":{"url":"Forked from Expatfile.tax LLC","name":"Stefanie Jane","email":"info@hyperbliss.tech"},"license":"MIT","_id":"next-dynenv@4.0.3","maintainers":[{"name":"hyperb1iss","email":"stef@hyperbliss.tech"}],"homepage":"https://github.com/hyperb1iss/next-dynenv#readme","bugs":{"url":"https://github.com/hyperb1iss/next-dynenv/issues"},"dist":{"shasum":"c693f12298915c48d4a28de693315e2250bfdf88","tarball":"https://registry.npmjs.org/next-dynenv/-/next-dynenv-4.0.3.tgz","fileCount":60,"integrity":"sha512-asBa8PT+fakQhVW1lUfzr5NF92w2SPZGqsZymRO5Txa5rrt8EUSXJn8Lbm2bTiLF3kdbDzrSmf4TeBZVryf7Yg==","signatures":[{"sig":"MEQCIFgtUL+ILW4msLj7EFR2tOg6RB57ucbsusOMm5knYcj+AiAf7mksSP6HewJQBrFXJRVA93cid9ASRTJFTosU5UxJ+w==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/next-dynenv@4.0.3","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":157370},"main":"build/index.js","pnpm":{"overrides":{"glob":">=10.5.0","brace-expansion":">=2.0.2"}},"type":"module","types":"build/index.d.ts","engines":{"node":">=20.9.0"},"exports":{".":{"types":"./build/index.d.ts","import":"./build/index.js"}},"gitHead":"fcdafa8fa99450c3f426e5aeb0078e6ffd06dc0a","scripts":{"lint":"biome check . && prettier --check \"**/*.{md,mdx,yml,yaml}\"","test":"vitest run","build":"tsc -p .","audit-ci":"audit-ci","lint:all":"biome check --write --unsafe . && prettier --write \"**/*.{md,mdx,yml,yaml}\"","lint:fix":"biome check --write . && prettier --write \"**/*.{md,mdx,yml,yaml}\"","typecheck":"tsc --noEmit","test:watch":"vitest","build:watch":"pnpm build --watch","test:coverage":"vitest run --coverage","semantic-release":"semantic-release","test:integration":"node test-app/integration-test.mjs"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:09f6512f-724a-47e0-9151-32df40a7a669"}},"repository":{"url":"git+https://github.com/hyperb1iss/next-dynenv.git","type":"git"},"_npmVersion":"11.7.0","description":"Dynamic runtime environment variables for Next.js - populate your environment at runtime, not build time.","directories":{},"_nodeVersion":"22.21.1","dependencies":{"react":"catalog:"},"_hasShrinkwrap":false,"packageManager":"pnpm@10.26.0+sha512.3b3f6c725ebe712506c0ab1ad4133cf86b1f4b687effce62a9b38b4d72e3954242e643190fc51fa1642949c735f403debd44f5cb0edd657abe63a8b6a7e1e402","devDependencies":{"next":"catalog:","jsdom":"catalog:","vitest":"catalog:","audit-ci":"catalog:","prettier":"catalog:","react-dom":"catalog:","typescript":"catalog:","@types/node":"catalog:","@types/react":"catalog:","@biomejs/biome":"catalog:","@types/react-dom":"catalog:","semantic-release":"catalog:","@vitest/coverage-v8":"catalog:","@testing-library/react":"catalog:","@testing-library/jest-dom":"catalog:"},"peerDependencies":{"next":"^15 || ^16","react":"^19"},"_npmOperationalInternal":{"tmp":"tmp/next-dynenv_4.0.3_1766518696244_0.6086177697290944","host":"s3://npm-registry-packages-npm-production"}},"4.0.4":{"name":"next-dynenv","version":"4.0.4","keywords":["nextjs","next.js","runtime","environment","env","dynamic","runtime-env","next-dynenv","docker","kubernetes","twelve-factor"],"author":{"url":"Forked from Expatfile.tax LLC","name":"Stefanie Jane","email":"info@hyperbliss.tech"},"license":"MIT","_id":"next-dynenv@4.0.4","maintainers":[{"name":"hyperb1iss","email":"stef@hyperbliss.tech"}],"homepage":"https://github.com/hyperb1iss/next-dynenv#readme","bugs":{"url":"https://github.com/hyperb1iss/next-dynenv/issues"},"dist":{"shasum":"943662a2c0e4045d285374a8cadd8b8e1db4edda","tarball":"https://registry.npmjs.org/next-dynenv/-/next-dynenv-4.0.4.tgz","fileCount":60,"integrity":"sha512-HiJA59OBiLjbjXrMk+8dWFWi03iAmdHAxf6gLFpQMKXoA6zheQauABaO5hUJ2mXTdxlh3IBZIXsJadm7QiX8iQ==","signatures":[{"sig":"MEUCIQDsxtM5b7WkXcI01u8KwOiawp0ZwRVZI8ok4Miy+KM2HwIgImgUU7afhYl5B59kKMRIrTdYtirxoX1hpUFmoVAl23A=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/next-dynenv@4.0.4","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":157411},"main":"build/index.js","pnpm":{"overrides":{"glob":">=10.5.0","brace-expansion":">=2.0.2"}},"type":"module","types":"build/index.d.ts","engines":{"node":">=20.9.0"},"exports":{".":{"types":"./build/index.d.ts","import":"./build/index.js"}},"gitHead":"56a60cfe3d324ac11d550cf9b8c5044331fceac7","scripts":{"lint":"biome check . && prettier --check \"**/*.{md,mdx,yml,yaml}\"","test":"vitest run","build":"tsc -p .","audit-ci":"audit-ci","lint:all":"biome check --write --unsafe . && prettier --write \"**/*.{md,mdx,yml,yaml}\"","lint:fix":"biome check --write . && prettier --write \"**/*.{md,mdx,yml,yaml}\"","typecheck":"tsc --noEmit","test:watch":"vitest","build:watch":"pnpm build --watch","test:coverage":"vitest run --coverage","semantic-release":"semantic-release","test:integration":"node test-app/integration-test.mjs"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:09f6512f-724a-47e0-9151-32df40a7a669"}},"repository":{"url":"git+https://github.com/hyperb1iss/next-dynenv.git","type":"git"},"_npmVersion":"11.7.0","description":"Dynamic runtime environment variables for Next.js - populate your environment at runtime, not build time.","directories":{},"_nodeVersion":"22.21.1","dependencies":{"react":"catalog:"},"_hasShrinkwrap":false,"packageManager":"pnpm@10.26.0+sha512.3b3f6c725ebe712506c0ab1ad4133cf86b1f4b687effce62a9b38b4d72e3954242e643190fc51fa1642949c735f403debd44f5cb0edd657abe63a8b6a7e1e402","devDependencies":{"next":"catalog:","jsdom":"catalog:","vitest":"catalog:","audit-ci":"catalog:","prettier":"catalog:","react-dom":"catalog:","typescript":"catalog:","@types/node":"catalog:","@types/react":"catalog:","@biomejs/biome":"catalog:","@types/react-dom":"catalog:","semantic-release":"catalog:","@vitest/coverage-v8":"catalog:","@testing-library/react":"catalog:","@testing-library/jest-dom":"catalog:"},"peerDependencies":{"next":"^15 || ^16","react":"^19"},"_npmOperationalInternal":{"tmp":"tmp/next-dynenv_4.0.4_1766519088385_0.5196277726839258","host":"s3://npm-registry-packages-npm-production"}},"4.0.5":{"name":"next-dynenv","version":"4.0.5","keywords":["nextjs","next.js","runtime","environment","env","dynamic","runtime-env","next-dynenv","docker","kubernetes","twelve-factor"],"author":{"url":"Forked from Expatfile.tax LLC","name":"Stefanie Jane","email":"info@hyperbliss.tech"},"license":"MIT","_id":"next-dynenv@4.0.5","maintainers":[{"name":"hyperb1iss","email":"stef@hyperbliss.tech"}],"homepage":"https://github.com/hyperb1iss/next-dynenv#readme","bugs":{"url":"https://github.com/hyperb1iss/next-dynenv/issues"},"dist":{"shasum":"bdf009a583ae77d6e2d42adcbb09d270b09024b2","tarball":"https://registry.npmjs.org/next-dynenv/-/next-dynenv-4.0.5.tgz","fileCount":60,"integrity":"sha512-ErfHyEGi6halb5YScbctJnMkgcf8JW1lncHetWSpMk/FzTEmZ4N2PMmO9q/RxbwvSy8bvWp0JG7kSZhPazPw7A==","signatures":[{"sig":"MEUCIQD0oSlYGLQ6PltJ+lBVn7jvuCNDHwc1XezUvPJtH/E0cAIgacTHYtXUmB0uSHCsKe3rLvH5D2iQf5pLwfccQH8fkWs=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/next-dynenv@4.0.5","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":157441},"main":"build/index.js","pnpm":{"overrides":{"glob":">=10.5.0","brace-expansion":">=2.0.2"}},"type":"module","types":"build/index.d.ts","engines":{"node":">=20.9.0"},"exports":{".":{"types":"./build/index.d.ts","import":"./build/index.js"}},"gitHead":"35ad3e75a9269cfef12b9b7420167ae81f7ce991","scripts":{"lint":"biome check . && prettier --check \"**/*.{md,mdx,yml,yaml}\"","test":"vitest run","build":"tsc -p .","audit-ci":"audit-ci","lint:all":"biome check --write --unsafe . && prettier --write \"**/*.{md,mdx,yml,yaml}\"","lint:fix":"biome check --write . && prettier --write \"**/*.{md,mdx,yml,yaml}\"","typecheck":"tsc --noEmit","test:watch":"vitest","build:watch":"pnpm build --watch","test:coverage":"vitest run --coverage","semantic-release":"semantic-release","test:integration":"node test-app/integration-test.mjs"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:09f6512f-724a-47e0-9151-32df40a7a669"}},"repository":{"url":"git+https://github.com/hyperb1iss/next-dynenv.git","type":"git"},"_npmVersion":"11.7.0","description":"Dynamic runtime environment variables for Next.js - populate your environment at runtime, not build time.","directories":{},"_nodeVersion":"22.21.1","dependencies":{"react":"catalog:"},"_hasShrinkwrap":false,"packageManager":"pnpm@10.26.0+sha512.3b3f6c725ebe712506c0ab1ad4133cf86b1f4b687effce62a9b38b4d72e3954242e643190fc51fa1642949c735f403debd44f5cb0edd657abe63a8b6a7e1e402","devDependencies":{"next":"catalog:","jsdom":"catalog:","vitest":"catalog:","audit-ci":"catalog:","prettier":"catalog:","react-dom":"catalog:","typescript":"catalog:","@types/node":"catalog:","@types/react":"catalog:","@biomejs/biome":"catalog:","@types/react-dom":"catalog:","semantic-release":"catalog:","@vitest/coverage-v8":"catalog:","@testing-library/react":"catalog:","@testing-library/jest-dom":"catalog:"},"peerDependencies":{"next":"^15 || ^16","react":"^19"},"_npmOperationalInternal":{"tmp":"tmp/next-dynenv_4.0.5_1766519552058_0.8141069528977432","host":"s3://npm-registry-packages-npm-production"}},"4.0.6":{"name":"next-dynenv","version":"4.0.6","description":"Dynamic runtime environment variables for Next.js - populate your environment at runtime, not build time.","type":"module","main":"build/index.js","types":"build/index.d.ts","exports":{".":{"types":"./build/index.d.ts","import":"./build/index.js"}},"engines":{"node":">=20.9.0"},"scripts":{"lint":"biome check . && prettier --check \"**/*.{md,mdx,yml,yaml}\"","lint:fix":"biome check --write . && prettier --write \"**/*.{md,mdx,yml,yaml}\"","lint:all":"biome check --write --unsafe . && prettier --write \"**/*.{md,mdx,yml,yaml}\"","typecheck":"tsc --noEmit","test":"vitest run","test:coverage":"vitest run --coverage","test:watch":"vitest","test:integration":"node test-app/integration-test.mjs","build":"tsc -p .","build:watch":"pnpm build --watch","prepack":"cp package.json package.json.bak && node scripts/resolve-catalog.mjs","postpack":"mv package.json.bak package.json","audit-ci":"audit-ci","semantic-release":"semantic-release"},"keywords":["nextjs","next.js","runtime","environment","env","dynamic","runtime-env","next-dynenv","docker","kubernetes","twelve-factor"],"author":{"name":"Stefanie Jane","email":"info@hyperbliss.tech","url":"Forked from Expatfile.tax LLC"},"license":"MIT","repository":{"type":"git","url":"git+https://github.com/hyperb1iss/next-dynenv.git"},"bugs":{"url":"https://github.com/hyperb1iss/next-dynenv/issues"},"homepage":"https://github.com/hyperb1iss/next-dynenv#readme","devDependencies":{"@biomejs/biome":"catalog:","@testing-library/jest-dom":"catalog:","@testing-library/react":"catalog:","@types/node":"catalog:","@types/react":"catalog:","@types/react-dom":"catalog:","@vitest/coverage-v8":"catalog:","audit-ci":"catalog:","jsdom":"catalog:","next":"catalog:","prettier":"catalog:","react":"catalog:","react-dom":"catalog:","semantic-release":"catalog:","typescript":"catalog:","vitest":"catalog:"},"peerDependencies":{"next":"^15 || ^16","react":"^19"},"packageManager":"pnpm@10.26.0+sha512.3b3f6c725ebe712506c0ab1ad4133cf86b1f4b687effce62a9b38b4d72e3954242e643190fc51fa1642949c735f403debd44f5cb0edd657abe63a8b6a7e1e402","pnpm":{"overrides":{"glob":">=10.5.0","brace-expansion":">=2.0.2"}},"gitHead":"a463bc01f10ab2aa373c73be2088a0272213baba","_id":"next-dynenv@4.0.6","_nodeVersion":"24.14.1","_npmVersion":"11.11.0","dist":{"integrity":"sha512-/+1KRO1hc8QKpmHeyx+d9A/CCDWvOxdXM8DKEDFGXHhztk7MZFFas+5JDQfxQVHEACotNfMvIpL4RLbbFSyUkg==","shasum":"2f647c31a1c60af6615019d31600ee913a316b41","tarball":"https://registry.npmjs.org/next-dynenv/-/next-dynenv-4.0.6.tgz","fileCount":59,"unpackedSize":156798,"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/next-dynenv@4.0.6","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEQCIADZKglydKAoyTFaccPKFJSYcV/IDEppa3x0k9baAR3oAiBHD+g5M290qdn2h5M4Vb66NszmLhTp9dPQoXT/uo5VmA=="}]},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:346866ed-6411-46ba-bf6a-adeb7523780b"}},"directories":{},"maintainers":[{"name":"hyperb1iss","email":"stef@hyperbliss.tech"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/next-dynenv_4.0.6_1775548164975_0.22728986395952222"},"_hasShrinkwrap":false}},"time":{"created":"2025-12-10T07:59:48.019Z","modified":"2026-04-07T07:49:25.412Z","4.0.0":"2025-12-10T07:59:48.782Z","4.0.1":"2025-12-10T08:41:52.718Z","4.0.2":"2025-12-17T03:53:22.883Z","4.0.3":"2025-12-23T19:38:16.401Z","4.0.4":"2025-12-23T19:44:48.547Z","4.0.5":"2025-12-23T19:52:32.208Z","4.0.6":"2026-04-07T07:49:25.126Z"},"bugs":{"url":"https://github.com/hyperb1iss/next-dynenv/issues"},"author":{"name":"Stefanie Jane","email":"info@hyperbliss.tech","url":"Forked from Expatfile.tax LLC"},"license":"MIT","homepage":"https://github.com/hyperb1iss/next-dynenv#readme","keywords":["nextjs","next.js","runtime","environment","env","dynamic","runtime-env","next-dynenv","docker","kubernetes","twelve-factor"],"repository":{"type":"git","url":"git+https://github.com/hyperb1iss/next-dynenv.git"},"description":"Dynamic runtime environment variables for Next.js - populate your environment at runtime, not build time.","maintainers":[{"name":"hyperb1iss","email":"stef@hyperbliss.tech"}],"readme":"# 🌐 next-dynenv\n\n<div align=\"center\">\n\n[![Next.js](https://img.shields.io/badge/Next.js%2015%20%7C%2016-e135ff.svg?style=for-the-badge&logo=next.js&logoColor=white)](https://nextjs.org/)\n[![React](https://img.shields.io/badge/React%2019-80ffea.svg?style=for-the-badge&logo=react&logoColor=white)](https://react.dev/)\n[![TypeScript](https://img.shields.io/badge/TypeScript-ff79c6?style=for-the-badge&logo=typescript&logoColor=white)](https://www.typescriptlang.org/)\n[![License](https://img.shields.io/badge/License-MIT-f1fa8c?style=for-the-badge&logo=opensourceinitiative&logoColor=white)](https://opensource.org/licenses/MIT)\n\n[![npm version](https://img.shields.io/npm/v/next-dynenv?style=for-the-badge&logo=npm&logoColor=white&color=50fa7b)](https://www.npmjs.com/package/next-dynenv)\n[![CI](https://img.shields.io/github/actions/workflow/status/hyperb1iss/next-dynenv/ci.yml?branch=development&style=for-the-badge&logo=github&logoColor=white&label=CI)](https://github.com/hyperb1iss/next-dynenv/actions)\n[![Downloads](https://img.shields.io/npm/dm/next-dynenv?style=for-the-badge&logo=npm&logoColor=white&color=ffb86c)](https://www.npmjs.com/package/next-dynenv)\n\n**Effortlessly populate your environment at runtime, not just at build time.**\n\n[⚡ Installation](#-installation) • [🚀 Getting Started](#-getting-started) • [🛠 Advanced Usage](#-advanced-usage) •\n[🚀 Deployment](#-deployment-guide)\n\n</div>\n\n**Dynamic runtime environment variables for Next.js.** This package is a Next.js 15/16 & React 19 compatible fork of\n[next-runtime-env](https://github.com/expatfile/next-runtime-env) by Expatfile.tax LLC.\n\n## ✨ Highlights\n\n- **Isomorphic Design:** Works seamlessly on both server and browser, and even in middleware\n- **Next.js 15/16 & React 19 Ready:** Fully compatible with the latest Next.js features including async server\n  components\n- **`.env` Friendly:** Use `.env` files during development, just like standard Next.js\n- **Type-Safe Parsers:** Convert environment strings to booleans, numbers, arrays, JSON, URLs, and enums\n- **Secure by Default:** XSS protection via JSON escaping, immutable runtime values with `Object.freeze`\n- **Zero Config:** Works out of the box with sensible defaults\n\n## 🤔 Why `next-dynenv`?\n\nIn the modern software development landscape, the\n[Build once, deploy many](https://www.mikemcgarr.com/blog/build-once-deploy-many.html) philosophy is key. This\nprinciple, essential for easy deployment and testability, is a\n[cornerstone of continuous delivery](https://cloud.redhat.com/blog/build-once-deploy-anywhere) and is embraced by the\n[twelve-factor methodology](https://12factor.net). However, front-end development, particularly with Next.js, often\nlacks support for this - requiring separate builds for different environments. `next-dynenv` bridges this gap.\n\n## 📦 How It Works\n\n`next-dynenv` dynamically injects environment variables into your Next.js application at runtime. This approach adheres\nto the \"build once, deploy many\" principle, allowing the same build to be used across various environments without\nrebuilds.\n\n## 🔖 Version Guide\n\n- **next-dynenv@4.x:** Next.js 15/16 & React 19 with modern async server components\n\nOriginal project versions (unmaintained):\n\n- **next-runtime-env@3.x:** Next.js 14 with advanced caching\n- **next-runtime-env@2.x:** Next.js 13 App Router\n- **next-runtime-env@1.x:** Next.js 12/13 Pages Router\n\n## 📦 Installation\n\n```bash\nnpm install next-dynenv\n# or\npnpm add next-dynenv\n# or\nyarn add next-dynenv\n```\n\n## 🚀 Getting Started\n\n### Step 1: Add the Script Component\n\nIn your root layout (`app/layout.tsx`), add the `PublicEnvScript` component:\n\n```tsx\n// app/layout.tsx\nimport { PublicEnvScript } from 'next-dynenv'\nimport type { ReactNode } from 'react'\n\nexport default function RootLayout({ children }: { children: ReactNode }) {\n    return (\n        <html lang=\"en\">\n            <head>\n                <PublicEnvScript />\n            </head>\n            <body>{children}</body>\n        </html>\n    )\n}\n```\n\nThe `PublicEnvScript` component automatically exposes all environment variables prefixed with `NEXT_PUBLIC_` to the\nbrowser. For custom variable exposure, refer to the [Exposing Custom Environment Variables](docs/EXPOSING_CUSTOM_ENV.md)\nguide.\n\n### Step 2: Use Environment Variables\n\n#### In Client Components\n\n```tsx\n// app/components/ClientComponent.tsx\n'use client'\n\nimport { env } from 'next-dynenv'\n\nexport default function ClientComponent() {\n    const apiUrl = env('NEXT_PUBLIC_API_URL')\n    const debug = env('NEXT_PUBLIC_DEBUG_MODE')\n\n    return (\n        <div>\n            <p>API URL: {apiUrl}</p>\n            <p>Debug Mode: {debug}</p>\n        </div>\n    )\n}\n```\n\n#### In Server Components (Next.js 15+)\n\n```tsx\n// app/components/ServerComponent.tsx\nimport { env } from 'next-dynenv'\n\nexport default async function ServerComponent() {\n    // Server components in Next.js 15 can be async\n    const apiUrl = env('NEXT_PUBLIC_API_URL')\n    const secretKey = env('SECRET_API_KEY') // Server-side only variables also work\n\n    return (\n        <div>\n            <p>API URL: {apiUrl}</p>\n            {/* Never expose secret keys to the client */}\n        </div>\n    )\n}\n```\n\n> **Note:** In Next.js 15, server components can be async by default. The `env()` function works seamlessly in both sync\n> and async server components.\n\n#### In Middleware\n\n```tsx\n// middleware.ts\nimport { env } from 'next-dynenv'\nimport { NextResponse } from 'next/server'\nimport type { NextRequest } from 'next/server'\n\nexport function middleware(request: NextRequest) {\n    // env() works in middleware too!\n    const apiUrl = env('NEXT_PUBLIC_API_URL')\n    const featureFlag = env('NEXT_PUBLIC_ENABLE_FEATURE')\n\n    // Your middleware logic here\n    if (featureFlag === 'true') {\n        // Feature-specific logic\n    }\n\n    return NextResponse.next()\n}\n\nexport const config = {\n    matcher: '/api/:path*',\n}\n```\n\n> **Note:** The `env()` function works in all Next.js contexts - server components, client components, API routes, and\n> middleware. It's safe to use everywhere and provides a consistent API across your application.\n\n### Default Values\n\nThe `env()` function accepts an optional default value:\n\n```tsx\nimport { env } from 'next-dynenv'\n\n// Returns 'https://api.default.com' if NEXT_PUBLIC_API_URL is undefined\nconst apiUrl = env('NEXT_PUBLIC_API_URL', 'https://api.default.com')\n\n// Default values work in all contexts (client, server, middleware)\nconst timeout = env('NEXT_PUBLIC_TIMEOUT', '5000')\n```\n\n### Required Environment Variables\n\nUse `requireEnv()` when a variable must be defined:\n\n```tsx\nimport { requireEnv } from 'next-dynenv'\n\n// Throws descriptive error if NEXT_PUBLIC_API_URL is undefined\nconst apiUrl = requireEnv('NEXT_PUBLIC_API_URL')\n// Error: \"Required environment variable 'NEXT_PUBLIC_API_URL' is not defined.\"\n```\n\n### Server-Only Variables\n\nUse `serverOnly()` for non-public environment variables in code that runs on both client and server. Unlike `env()`,\nthis function **never throws** in the browser—it gracefully returns the fallback value:\n\n```tsx\nimport { serverOnly } from 'next-dynenv'\n\n// Returns the actual value on server, fallback on client\nconst dbUrl = serverOnly('DATABASE_URL', 'postgresql://localhost:5432/dev')\nconst apiSecret = serverOnly('API_SECRET_KEY') // undefined on client\n```\n\nThis is particularly useful for shared configuration modules with lazy evaluation:\n\n```tsx\nimport { env, serverOnly } from 'next-dynenv'\nimport { z } from 'zod'\n\nconst configSchema = z.object({\n    supabaseUrl: z.string().url(),\n    supabaseAnonKey: z.string(),\n    // Server-only: returns undefined on client, real value on server\n    supabaseServiceKey: z.string().optional(),\n})\n\n// Safe to import anywhere—evaluates lazily\nexport const config = lazy(() =>\n    configSchema.parse({\n        supabaseUrl: env('NEXT_PUBLIC_SUPABASE_URL'),\n        supabaseAnonKey: env('NEXT_PUBLIC_SUPABASE_ANON_KEY'),\n        supabaseServiceKey: serverOnly('SUPABASE_SERVICE_KEY'),\n    }),\n)\n```\n\n### Type-Safe Parsers\n\nUse `envParsers` to convert environment strings to typed values:\n\n```tsx\nimport { envParsers } from 'next-dynenv'\n\n// Boolean - recognizes 'true', '1', 'yes', 'on' (case-insensitive)\nconst debug = envParsers.boolean('NEXT_PUBLIC_DEBUG') // false by default\nconst enabled = envParsers.boolean('NEXT_PUBLIC_FEATURE', true) // custom default\n\n// Number - integers and floats\nconst port = envParsers.number('NEXT_PUBLIC_PORT', 3000)\nconst ratio = envParsers.number('NEXT_PUBLIC_RATIO', 1.0)\n\n// Array - comma-separated values (trims whitespace, filters empty)\nconst features = envParsers.array('NEXT_PUBLIC_FEATURES')\n// 'auth, payments, analytics' → ['auth', 'payments', 'analytics']\n\n// JSON - parse complex objects\ninterface Config {\n    api: string\n    timeout: number\n}\nconst config = envParsers.json<Config>('NEXT_PUBLIC_CONFIG')\n\n// URL - validates and returns URL string\nconst apiUrl = envParsers.url('NEXT_PUBLIC_API_URL')\nconst cdn = envParsers.url('NEXT_PUBLIC_CDN', 'https://cdn.default.com')\n\n// Enum - restrict to allowed values with type safety\ntype Environment = 'development' | 'staging' | 'production'\nconst appEnv = envParsers.enum<Environment>(\n    'NEXT_PUBLIC_ENV',\n    ['development', 'staging', 'production'],\n    'development', // default value\n)\n\ntype LogLevel = 'debug' | 'info' | 'warn' | 'error'\nconst logLevel = envParsers.enum<LogLevel>('NEXT_PUBLIC_LOG_LEVEL', ['debug', 'info', 'warn', 'error'])\n```\n\nAll parsers work isomorphically (server and client) and provide clear error messages for invalid values.\n\n## 🛠 Advanced Usage\n\n### Exposing Non-Prefixed Variables\n\nNeed to expose environment variables without the `NEXT_PUBLIC_` prefix? Check out the\n[Making Environment Variables Public](docs/MAKING_ENV_PUBLIC.md) guide.\n\n### Custom Variable Exposure\n\nFor fine-grained control over which variables are exposed to the browser, see the\n[Exposing Custom Environment Variables](docs/EXPOSING_CUSTOM_ENV.md) guide.\n\n## 🚀 Deployment Guide\n\n### Docker Deployment\n\nWhen deploying with Docker, pass environment variables at runtime:\n\n```dockerfile\n# Dockerfile\nFROM node:20-alpine AS base\n\n# Install dependencies\nFROM base AS deps\nWORKDIR /app\nCOPY package*.json ./\nRUN npm ci\n\n# Build application\nFROM base AS builder\nWORKDIR /app\nCOPY --from=deps /app/node_modules ./node_modules\nCOPY . .\nRUN npm run build\n\n# Production image\nFROM base AS runner\nWORKDIR /app\n\nENV NODE_ENV=production\n\nCOPY --from=builder /app/public ./public\nCOPY --from=builder /app/.next/standalone ./\nCOPY --from=builder /app/.next/static ./.next/static\n\nEXPOSE 3000\n\nENV PORT=3000\n\nCMD [\"node\", \"server.js\"]\n```\n\nRun with environment variables:\n\n```bash\ndocker run -p 3000:3000 \\\n  -e NEXT_PUBLIC_API_URL=https://api.example.com \\\n  -e NEXT_PUBLIC_APP_VERSION=1.0.0 \\\n  your-app:latest\n```\n\n### Vercel Deployment\n\n1. Add environment variables in your Vercel project settings\n2. Set different values for Preview, Development, and Production environments\n3. Deploy your application - `next-dynenv` will automatically use the runtime values\n\n```bash\nvercel env add NEXT_PUBLIC_API_URL production\nvercel env add NEXT_PUBLIC_API_URL preview\n```\n\n### Netlify Deployment\n\nAdd environment variables in your Netlify site settings:\n\n1. Go to Site settings → Environment variables\n2. Add your `NEXT_PUBLIC_*` variables\n3. Deploy contexts can have different values (Production, Deploy Previews, Branch deploys)\n\n### AWS Amplify\n\nConfigure environment variables in the Amplify Console:\n\n1. Navigate to App settings → Environment variables\n2. Add variables for each branch as needed\n3. Amplify will inject these at runtime during deployment\n\n### Generic Static Hosting\n\nFor static exports with runtime environment support:\n\n1. Build your application: `npm run build`\n2. Set environment variables on your hosting platform\n3. The variables will be available at runtime through `next-dynenv`\n\n## 🔒 Security Considerations\n\n### Built-in Security Features\n\nThis library includes multiple layers of security by default:\n\n- **XSS Protection:** All environment values are JSON-escaped before injection, preventing script injection attacks\n- **Immutable Runtime Values:** Environment values are wrapped with `Object.freeze()`, preventing modification after\n  initialization\n- **Strict Prefix Enforcement:** Only `NEXT_PUBLIC_*` variables are exposed to the browser; accessing private variables\n  throws an error\n\n### Never Expose Secrets to the Browser\n\n**Critical:** Only variables prefixed with `NEXT_PUBLIC_` are exposed to the browser. Never expose sensitive data:\n\n```tsx\n// ❌ WRONG - Don't try to access secrets in client components\n'use client'\nconst apiKey = env('SECRET_API_KEY') // Throws error in browser!\n\n// ✅ CORRECT - Use secrets only server-side\nexport async function getData() {\n    const apiKey = env('SECRET_API_KEY') // Works in server components/API routes\n    // ... fetch data securely\n}\n```\n\n### Environment Variable Validation\n\nUse `requireEnv()` for required variables, or validate multiple at once:\n\n```tsx\n// Using requireEnv() - throws if undefined\nimport { requireEnv } from 'next-dynenv'\n\nconst apiUrl = requireEnv('NEXT_PUBLIC_API_URL')\n\n// Validating multiple variables\nimport { env } from 'next-dynenv'\n\nexport function validateEnv() {\n    const required = ['NEXT_PUBLIC_API_URL', 'NEXT_PUBLIC_APP_ID']\n\n    for (const key of required) {\n        if (!env(key)) {\n            throw new Error(`Missing required environment variable: ${key}`)\n        }\n    }\n}\n```\n\n### Content Security Policy\n\nIf using CSP, ensure inline scripts are allowed for the `PublicEnvScript`:\n\n```tsx\n// next.config.js\nconst ContentSecurityPolicy = `\n  script-src 'self' 'unsafe-inline';\n`\n\nmodule.exports = {\n    async headers() {\n        return [\n            {\n                source: '/:path*',\n                headers: [\n                    {\n                        key: 'Content-Security-Policy',\n                        value: ContentSecurityPolicy.replace(/\\s{2,}/g, ' ').trim(),\n                    },\n                ],\n            },\n        ]\n    },\n}\n```\n\n## 🐛 Troubleshooting\n\n### Variables Undefined in Browser\n\n**Problem:** Environment variables return `undefined` in client components.\n\n**Solutions:**\n\n1. Ensure variables have the `NEXT_PUBLIC_` prefix\n2. Verify `PublicEnvScript` is in your root layout's `<head>`\n3. Check that variables are set in your environment (`.env.local`, hosting platform, etc.)\n4. Restart your development server after adding new environment variables\n\n### Variables Not Updating in Production\n\n**Problem:** Changed environment variables don't reflect in deployed application.\n\n**Solutions:**\n\n1. For Docker: Restart containers with new environment variables\n2. For Vercel/Netlify: Trigger a new deployment or redeploy\n3. Clear CDN cache if using one\n4. Verify variables are set in the correct deployment environment\n\n### TypeScript Type Errors\n\n**Problem:** TypeScript complains about `env()` return type.\n\n**Solution:** The `env()` function returns `string | undefined`. Handle this explicitly:\n\n```tsx\nconst apiUrl = env('NEXT_PUBLIC_API_URL') ?? 'https://default-api.com'\n\n// Or with type assertion if you're certain it exists\nconst apiUrl = env('NEXT_PUBLIC_API_URL')!\n```\n\n### Build-Time vs Runtime Variables\n\n**Problem:** Confusion about when variables are available.\n\n**Explanation:**\n\n- **Build-time:** Variables are baked into the bundle during `next build`\n- **Runtime:** Variables are injected when the application starts\n- `next-dynenv` provides runtime access, allowing the same build to work in multiple environments\n\n### Server vs Client Environment Access\n\n**Problem:** Different behavior between server and client.\n\n**Key Differences:**\n\n- **Server-side contexts** (server components, API routes, middleware):\n    - Can access ALL environment variables via `env()` or `process.env`\n    - Both private and public (`NEXT_PUBLIC_*`) variables are available\n\n- **Client-side contexts** (client components, browser):\n    - Can only access `NEXT_PUBLIC_*` variables via `env()`\n    - Private variables are not available for security reasons\n    - Attempting to access private variables throws an error\n\n**Recommendation:** Use `env()` everywhere for consistency. It works in all contexts and provides better error messages\nwhen misused\n\n## 📚 Additional Resources\n\n- [Exposing Custom Environment Variables](docs/EXPOSING_CUSTOM_ENV.md)\n- [Making Environment Variables Public](docs/MAKING_ENV_PUBLIC.md)\n\n## 👷 Maintenance\n\nThis fork is maintained by [Stefanie Jane (@hyperb1iss)](https://github.com/hyperb1iss).\n\n## 🙏 Acknowledgments\n\n- **Original Project:** [next-runtime-env](https://github.com/expatfile/next-runtime-env) by\n  [Expatfile.tax](https://expatfile.tax) - All credit for the original implementation and core concepts\n- **Inspiration:** [react-env](https://github.com/andrewmclagan/react-env) project\n- **Context Provider:** Thanks to @andonirdgz for the innovative context provider idea\n\n---\n\n<div align=\"center\">\n\nIf you find this useful, [buy me a Monster Ultra Violet ⚡](https://ko-fi.com/hyperb1iss)\n\n</div>\n","readmeFilename":"README.md"}