@tmrp/env 0.1.0-alpha.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (151) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +517 -0
  3. package/dist/create-env.d.ts +31 -0
  4. package/dist/create-env.d.ts.map +1 -0
  5. package/dist/create-env.js +35 -0
  6. package/dist/create-env.js.map +1 -0
  7. package/dist/effects/create-env-effect.d.ts +4 -0
  8. package/dist/effects/create-env-effect.d.ts.map +1 -0
  9. package/dist/effects/create-env-effect.js +8 -0
  10. package/dist/effects/create-env-effect.js.map +1 -0
  11. package/dist/effects/env-parse-value-effect.d.ts +4 -0
  12. package/dist/effects/env-parse-value-effect.d.ts.map +1 -0
  13. package/dist/effects/env-parse-value-effect.js +8 -0
  14. package/dist/effects/env-parse-value-effect.js.map +1 -0
  15. package/dist/effects/env-read-value-effect.d.ts +6 -0
  16. package/dist/effects/env-read-value-effect.d.ts.map +1 -0
  17. package/dist/effects/env-read-value-effect.js +3 -0
  18. package/dist/effects/env-read-value-effect.js.map +1 -0
  19. package/dist/effects/get-runtime-global-scope-effect.d.ts +26 -0
  20. package/dist/effects/get-runtime-global-scope-effect.d.ts.map +1 -0
  21. package/dist/effects/get-runtime-global-scope-effect.js +13 -0
  22. package/dist/effects/get-runtime-global-scope-effect.js.map +1 -0
  23. package/dist/effects/read-env-effect.d.ts +5 -0
  24. package/dist/effects/read-env-effect.d.ts.map +1 -0
  25. package/dist/effects/read-env-effect.js +42 -0
  26. package/dist/effects/read-env-effect.js.map +1 -0
  27. package/dist/index.d.ts +2 -0
  28. package/dist/index.d.ts.map +1 -0
  29. package/dist/index.js +2 -0
  30. package/dist/index.js.map +1 -0
  31. package/dist/lib/read-env.d.ts +18 -0
  32. package/dist/lib/read-env.d.ts.map +1 -0
  33. package/dist/lib/read-env.js +65 -0
  34. package/dist/lib/read-env.js.map +1 -0
  35. package/dist/lib/schema.d.ts +26 -0
  36. package/dist/lib/schema.d.ts.map +1 -0
  37. package/dist/lib/schema.js +22 -0
  38. package/dist/lib/schema.js.map +1 -0
  39. package/dist/lib/types.d.ts +7 -0
  40. package/dist/lib/types.d.ts.map +1 -0
  41. package/dist/lib/types.js +2 -0
  42. package/dist/lib/types.js.map +1 -0
  43. package/dist/runtime/browser/create-browser-env.d.ts +26 -0
  44. package/dist/runtime/browser/create-browser-env.d.ts.map +1 -0
  45. package/dist/runtime/browser/create-browser-env.js +28 -0
  46. package/dist/runtime/browser/create-browser-env.js.map +1 -0
  47. package/dist/runtime/browser/lib/read-browser-env.d.ts +2 -0
  48. package/dist/runtime/browser/lib/read-browser-env.d.ts.map +1 -0
  49. package/dist/runtime/browser/lib/read-browser-env.js +15 -0
  50. package/dist/runtime/browser/lib/read-browser-env.js.map +1 -0
  51. package/dist/runtime/browser/lib/schema.d.ts +6 -0
  52. package/dist/runtime/browser/lib/schema.d.ts.map +1 -0
  53. package/dist/runtime/browser/lib/schema.js +7 -0
  54. package/dist/runtime/browser/lib/schema.js.map +1 -0
  55. package/dist/runtime/bun/create-bun-env.d.ts +24 -0
  56. package/dist/runtime/bun/create-bun-env.d.ts.map +1 -0
  57. package/dist/runtime/bun/create-bun-env.js +28 -0
  58. package/dist/runtime/bun/create-bun-env.js.map +1 -0
  59. package/dist/runtime/bun/lib/read-bun-env.d.ts +2 -0
  60. package/dist/runtime/bun/lib/read-bun-env.d.ts.map +1 -0
  61. package/dist/runtime/bun/lib/read-bun-env.js +14 -0
  62. package/dist/runtime/bun/lib/read-bun-env.js.map +1 -0
  63. package/dist/runtime/bun/lib/schema.d.ts +7 -0
  64. package/dist/runtime/bun/lib/schema.d.ts.map +1 -0
  65. package/dist/runtime/bun/lib/schema.js +9 -0
  66. package/dist/runtime/bun/lib/schema.js.map +1 -0
  67. package/dist/runtime/cloudflare/create-cloudflare-env.d.ts +32 -0
  68. package/dist/runtime/cloudflare/create-cloudflare-env.d.ts.map +1 -0
  69. package/dist/runtime/cloudflare/create-cloudflare-env.js +34 -0
  70. package/dist/runtime/cloudflare/create-cloudflare-env.js.map +1 -0
  71. package/dist/runtime/cloudflare/lib/read-cloudflare-env.d.ts +2 -0
  72. package/dist/runtime/cloudflare/lib/read-cloudflare-env.d.ts.map +1 -0
  73. package/dist/runtime/cloudflare/lib/read-cloudflare-env.js +14 -0
  74. package/dist/runtime/cloudflare/lib/read-cloudflare-env.js.map +1 -0
  75. package/dist/runtime/cloudflare/lib/schema.d.ts +5 -0
  76. package/dist/runtime/cloudflare/lib/schema.d.ts.map +1 -0
  77. package/dist/runtime/cloudflare/lib/schema.js +6 -0
  78. package/dist/runtime/cloudflare/lib/schema.js.map +1 -0
  79. package/dist/runtime/deno/create-deno-env.d.ts +23 -0
  80. package/dist/runtime/deno/create-deno-env.d.ts.map +1 -0
  81. package/dist/runtime/deno/create-deno-env.js +27 -0
  82. package/dist/runtime/deno/create-deno-env.js.map +1 -0
  83. package/dist/runtime/deno/lib/read-deno-env.d.ts +2 -0
  84. package/dist/runtime/deno/lib/read-deno-env.d.ts.map +1 -0
  85. package/dist/runtime/deno/lib/read-deno-env.js +13 -0
  86. package/dist/runtime/deno/lib/read-deno-env.js.map +1 -0
  87. package/dist/runtime/deno/lib/schema.d.ts +9 -0
  88. package/dist/runtime/deno/lib/schema.d.ts.map +1 -0
  89. package/dist/runtime/deno/lib/schema.js +14 -0
  90. package/dist/runtime/deno/lib/schema.js.map +1 -0
  91. package/dist/runtime/import-meta/create-import-meta-env.d.ts +28 -0
  92. package/dist/runtime/import-meta/create-import-meta-env.d.ts.map +1 -0
  93. package/dist/runtime/import-meta/create-import-meta-env.js +30 -0
  94. package/dist/runtime/import-meta/create-import-meta-env.js.map +1 -0
  95. package/dist/runtime/import-meta/lib/read-import-meta-env.d.ts +2 -0
  96. package/dist/runtime/import-meta/lib/read-import-meta-env.d.ts.map +1 -0
  97. package/dist/runtime/import-meta/lib/read-import-meta-env.js +14 -0
  98. package/dist/runtime/import-meta/lib/read-import-meta-env.js.map +1 -0
  99. package/dist/runtime/import-meta/lib/schema.d.ts +5 -0
  100. package/dist/runtime/import-meta/lib/schema.d.ts.map +1 -0
  101. package/dist/runtime/import-meta/lib/schema.js +6 -0
  102. package/dist/runtime/import-meta/lib/schema.js.map +1 -0
  103. package/dist/runtime/netlify/create-netlify-env.d.ts +25 -0
  104. package/dist/runtime/netlify/create-netlify-env.d.ts.map +1 -0
  105. package/dist/runtime/netlify/create-netlify-env.js +27 -0
  106. package/dist/runtime/netlify/create-netlify-env.js.map +1 -0
  107. package/dist/runtime/netlify/lib/read-netlify-env.d.ts +2 -0
  108. package/dist/runtime/netlify/lib/read-netlify-env.d.ts.map +1 -0
  109. package/dist/runtime/netlify/lib/read-netlify-env.js +14 -0
  110. package/dist/runtime/netlify/lib/read-netlify-env.js.map +1 -0
  111. package/dist/runtime/netlify/lib/schema.d.ts +9 -0
  112. package/dist/runtime/netlify/lib/schema.d.ts.map +1 -0
  113. package/dist/runtime/netlify/lib/schema.js +13 -0
  114. package/dist/runtime/netlify/lib/schema.js.map +1 -0
  115. package/dist/runtime/node/create-node-env.d.ts +27 -0
  116. package/dist/runtime/node/create-node-env.d.ts.map +1 -0
  117. package/dist/runtime/node/create-node-env.js +31 -0
  118. package/dist/runtime/node/create-node-env.js.map +1 -0
  119. package/dist/runtime/node/lib/read-node-env.d.ts +2 -0
  120. package/dist/runtime/node/lib/read-node-env.d.ts.map +1 -0
  121. package/dist/runtime/node/lib/read-node-env.js +13 -0
  122. package/dist/runtime/node/lib/read-node-env.js.map +1 -0
  123. package/dist/runtime/node/lib/schema.d.ts +7 -0
  124. package/dist/runtime/node/lib/schema.d.ts.map +1 -0
  125. package/dist/runtime/node/lib/schema.js +9 -0
  126. package/dist/runtime/node/lib/schema.js.map +1 -0
  127. package/dist/runtime/record/create-record-env.d.ts +29 -0
  128. package/dist/runtime/record/create-record-env.d.ts.map +1 -0
  129. package/dist/runtime/record/create-record-env.js +35 -0
  130. package/dist/runtime/record/create-record-env.js.map +1 -0
  131. package/dist/runtime/record/lib/read-record-env.d.ts +3 -0
  132. package/dist/runtime/record/lib/read-record-env.d.ts.map +1 -0
  133. package/dist/runtime/record/lib/read-record-env.js +8 -0
  134. package/dist/runtime/record/lib/read-record-env.js.map +1 -0
  135. package/dist/runtime/record/lib/schema.d.ts +3 -0
  136. package/dist/runtime/record/lib/schema.d.ts.map +1 -0
  137. package/dist/runtime/record/lib/schema.js +3 -0
  138. package/dist/runtime/record/lib/schema.js.map +1 -0
  139. package/dist/runtime/vercel/create-vercel-edge-env.d.ts +26 -0
  140. package/dist/runtime/vercel/create-vercel-edge-env.d.ts.map +1 -0
  141. package/dist/runtime/vercel/create-vercel-edge-env.js +28 -0
  142. package/dist/runtime/vercel/create-vercel-edge-env.js.map +1 -0
  143. package/dist/runtime/vercel/lib/read-vercel-edge-env.d.ts +2 -0
  144. package/dist/runtime/vercel/lib/read-vercel-edge-env.d.ts.map +1 -0
  145. package/dist/runtime/vercel/lib/read-vercel-edge-env.js +14 -0
  146. package/dist/runtime/vercel/lib/read-vercel-edge-env.js.map +1 -0
  147. package/dist/runtime/vercel/lib/schema.d.ts +5 -0
  148. package/dist/runtime/vercel/lib/schema.d.ts.map +1 -0
  149. package/dist/runtime/vercel/lib/schema.js +5 -0
  150. package/dist/runtime/vercel/lib/schema.js.map +1 -0
  151. package/package.json +112 -0
@@ -0,0 +1,26 @@
1
+ import { Effect } from "effect";
2
+ import { type RuntimeGlobalsSchemaType } from "../lib/schema.js";
3
+ export declare const getRuntimeGlobalScopeEffect: (runtimeSchema: RuntimeGlobalsSchemaType) => Effect.Effect<Partial<{
4
+ __APP_CONFIG__?: Record<string, unknown> | undefined;
5
+ __CLOUDFLARE_ENV__?: Record<string, unknown> | undefined;
6
+ __ENV__?: Record<string, unknown> | undefined;
7
+ __IMPORT_META_ENV__?: Record<string, unknown> | undefined;
8
+ Bun?: {
9
+ env: Record<string, string | undefined>;
10
+ } | undefined;
11
+ Deno?: {
12
+ env: {
13
+ get: import("zod/v4/core").$InferOuterFunctionType<import("zod").ZodTuple<readonly [import("zod").ZodString], null>, import("zod").ZodOptional<import("zod").ZodString>>;
14
+ };
15
+ } | undefined;
16
+ EdgeRuntime?: string | undefined;
17
+ process?: {
18
+ env: {
19
+ [x: string]: unknown;
20
+ NETLIFY?: string | undefined;
21
+ };
22
+ } | {
23
+ env: NodeJS.ProcessEnv;
24
+ } | undefined;
25
+ }> | undefined, undefined, never>;
26
+ //# sourceMappingURL=get-runtime-global-scope-effect.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"get-runtime-global-scope-effect.d.ts","sourceRoot":"","sources":["../../src/effects/get-runtime-global-scope-effect.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAEhC,OAAO,EAAE,KAAK,wBAAwB,EAAE,MAAM,kBAAkB,CAAC;AAEjE,eAAO,MAAM,2BAA2B,GACtC,eAAe,wBAAwB;;;;;;;;;;;;;;;;;;;;;;iCAarC,CAAC"}
@@ -0,0 +1,13 @@
1
+ import { Effect } from "effect";
2
+ import {} from "../lib/schema.js";
3
+ export const getRuntimeGlobalScopeEffect = (runtimeSchema) => Effect.try({
4
+ try: () => {
5
+ const runtime = runtimeSchema.safeParse(globalThis);
6
+ if (!runtime.success) {
7
+ return undefined;
8
+ }
9
+ return runtime.data;
10
+ },
11
+ catch: () => undefined,
12
+ });
13
+ //# sourceMappingURL=get-runtime-global-scope-effect.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"get-runtime-global-scope-effect.js","sourceRoot":"","sources":["../../src/effects/get-runtime-global-scope-effect.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAEhC,OAAO,EAAiC,MAAM,kBAAkB,CAAC;AAEjE,MAAM,CAAC,MAAM,2BAA2B,GAAG,CACzC,aAAuC,EACvC,EAAE,CACF,MAAM,CAAC,GAAG,CAAC;IACT,GAAG,EAAE,GAAG,EAAE;QACR,MAAM,OAAO,GAAG,aAAa,CAAC,SAAS,CAAC,UAAU,CAAC,CAAC;QAEpD,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE,CAAC;YACrB,OAAO,SAAS,CAAC;QACnB,CAAC;QAED,OAAO,OAAO,CAAC,IAAI,CAAC;IACtB,CAAC;IACD,KAAK,EAAE,GAAG,EAAE,CAAC,SAAS;CACvB,CAAC,CAAC"}
@@ -0,0 +1,5 @@
1
+ import type { RuntimeGlobalsSchemaType } from "../lib/schema.js";
2
+ type Env = string;
3
+ export declare const readEnvEffect: (env: Env, runtimeSchema: RuntimeGlobalsSchemaType) => {} | undefined;
4
+ export {};
5
+ //# sourceMappingURL=read-env-effect.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"read-env-effect.d.ts","sourceRoot":"","sources":["../../src/effects/read-env-effect.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,kBAAkB,CAAC;AAYjE,KAAK,GAAG,GAAG,MAAM,CAAC;AAElB,eAAO,MAAM,aAAa,GACxB,KAAK,GAAG,EACR,eAAe,wBAAwB,mBAyCxC,CAAC"}
@@ -0,0 +1,42 @@
1
+ import { Effect } from "effect";
2
+ import { readBrowserEnv } from "../runtime/browser/lib/read-browser-env.js";
3
+ import { readBunEnv } from "../runtime/bun/lib/read-bun-env.js";
4
+ import { readCloudflareEnv } from "../runtime/cloudflare/lib/read-cloudflare-env.js";
5
+ import { readDenoEnv } from "../runtime/deno/lib/read-deno-env.js";
6
+ import { readImportMetaEnv } from "../runtime/import-meta/lib/read-import-meta-env.js";
7
+ import { readNetlifyEnv } from "../runtime/netlify/lib/read-netlify-env.js";
8
+ import { readNodeEnv } from "../runtime/node/lib/read-node-env.js";
9
+ import { readVercelEdgeEnv } from "../runtime/vercel/lib/read-vercel-edge-env.js";
10
+ import { getRuntimeGlobalScopeEffect } from "./get-runtime-global-scope-effect.js";
11
+ export const readEnvEffect = (env, runtimeSchema) => {
12
+ const readEnvEffect = Effect.gen(function* () {
13
+ const globalScope = yield* getRuntimeGlobalScopeEffect(runtimeSchema);
14
+ if (globalScope?.Bun) {
15
+ return readBunEnv(env);
16
+ }
17
+ if (globalScope?.EdgeRuntime) {
18
+ return readVercelEdgeEnv(env);
19
+ }
20
+ if (globalScope?.process?.env.NETLIFY) {
21
+ return readNetlifyEnv(env);
22
+ }
23
+ if (globalScope?.process) {
24
+ return readNodeEnv(env);
25
+ }
26
+ if (globalScope?.Deno) {
27
+ return readDenoEnv(env);
28
+ }
29
+ if (globalScope?.__CLOUDFLARE_ENV__) {
30
+ return readCloudflareEnv(env);
31
+ }
32
+ if (globalScope?.__IMPORT_META_ENV__) {
33
+ return readImportMetaEnv(env);
34
+ }
35
+ if (globalScope?.__APP_CONFIG__ || globalScope?.__ENV__) {
36
+ return readBrowserEnv(env);
37
+ }
38
+ return undefined;
39
+ });
40
+ return Effect.runSync(readEnvEffect);
41
+ };
42
+ //# sourceMappingURL=read-env-effect.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"read-env-effect.js","sourceRoot":"","sources":["../../src/effects/read-env-effect.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAIhC,OAAO,EAAE,cAAc,EAAE,MAAM,4CAA4C,CAAC;AAC5E,OAAO,EAAE,UAAU,EAAE,MAAM,oCAAoC,CAAC;AAChE,OAAO,EAAE,iBAAiB,EAAE,MAAM,kDAAkD,CAAC;AACrF,OAAO,EAAE,WAAW,EAAE,MAAM,sCAAsC,CAAC;AACnE,OAAO,EAAE,iBAAiB,EAAE,MAAM,oDAAoD,CAAC;AACvF,OAAO,EAAE,cAAc,EAAE,MAAM,4CAA4C,CAAC;AAC5E,OAAO,EAAE,WAAW,EAAE,MAAM,sCAAsC,CAAC;AACnE,OAAO,EAAE,iBAAiB,EAAE,MAAM,+CAA+C,CAAC;AAClF,OAAO,EAAE,2BAA2B,EAAE,MAAM,sCAAsC,CAAC;AAInF,MAAM,CAAC,MAAM,aAAa,GAAG,CAC3B,GAAQ,EACR,aAAuC,EACvC,EAAE;IACF,MAAM,aAAa,GAAG,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC;QACxC,MAAM,WAAW,GAAG,KAAK,CAAC,CAAC,2BAA2B,CAAC,aAAa,CAAC,CAAC;QAEtE,IAAI,WAAW,EAAE,GAAG,EAAE,CAAC;YACrB,OAAO,UAAU,CAAC,GAAG,CAAC,CAAC;QACzB,CAAC;QAED,IAAI,WAAW,EAAE,WAAW,EAAE,CAAC;YAC7B,OAAO,iBAAiB,CAAC,GAAG,CAAC,CAAC;QAChC,CAAC;QAED,IAAI,WAAW,EAAE,OAAO,EAAE,GAAG,CAAC,OAAO,EAAE,CAAC;YACtC,OAAO,cAAc,CAAC,GAAG,CAAC,CAAC;QAC7B,CAAC;QAED,IAAI,WAAW,EAAE,OAAO,EAAE,CAAC;YACzB,OAAO,WAAW,CAAC,GAAG,CAAC,CAAC;QAC1B,CAAC;QAED,IAAI,WAAW,EAAE,IAAI,EAAE,CAAC;YACtB,OAAO,WAAW,CAAC,GAAG,CAAC,CAAC;QAC1B,CAAC;QAED,IAAI,WAAW,EAAE,kBAAkB,EAAE,CAAC;YACpC,OAAO,iBAAiB,CAAC,GAAG,CAAC,CAAC;QAChC,CAAC;QAED,IAAI,WAAW,EAAE,mBAAmB,EAAE,CAAC;YACrC,OAAO,iBAAiB,CAAC,GAAG,CAAC,CAAC;QAChC,CAAC;QAED,IAAI,WAAW,EAAE,cAAc,IAAI,WAAW,EAAE,OAAO,EAAE,CAAC;YACxD,OAAO,cAAc,CAAC,GAAG,CAAC,CAAC;QAC7B,CAAC;QAED,OAAO,SAAS,CAAC;IACnB,CAAC,CAAC,CAAC;IAEH,OAAO,MAAM,CAAC,OAAO,CAAC,aAAa,CAAC,CAAC;AACvC,CAAC,CAAC"}
@@ -0,0 +1,2 @@
1
+ export { createEnv } from "./create-env.js";
2
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC"}
package/dist/index.js ADDED
@@ -0,0 +1,2 @@
1
+ export { createEnv } from "./create-env.js";
2
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC"}
@@ -0,0 +1,18 @@
1
+ /**
2
+ * Reads an environment variable from the current runtime.
3
+ *
4
+ * The function checks known runtime globals and explicit global env records.
5
+ * When a string value is found, surrounding whitespace is trimmed before it is
6
+ * returned.
7
+ *
8
+ * @example
9
+ * const apiBaseUrl = readEnv("API_BASE_URL");
10
+ *
11
+ * fetch(`${apiBaseUrl}/health`);
12
+ *
13
+ * @param env The name of the environment variable to read.
14
+ * @returns The trimmed environment variable value, or `undefined` when the
15
+ * variable is not defined in the current runtime.
16
+ */
17
+ export declare const readEnv: (env: string) => {} | undefined;
18
+ //# sourceMappingURL=read-env.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"read-env.d.ts","sourceRoot":"","sources":["../../src/lib/read-env.ts"],"names":[],"mappings":"AAYA;;;;;;;;;;;;;;;GAeG;AAEH,eAAO,MAAM,OAAO,GAAI,KAAK,MAAM,mBAiDlC,CAAC"}
@@ -0,0 +1,65 @@
1
+ import { Effect } from "effect";
2
+ import { readBrowserEnv } from "../runtime/browser/lib/read-browser-env.js";
3
+ import { readBunEnv } from "../runtime/bun/lib/read-bun-env.js";
4
+ import { readCloudflareEnv } from "../runtime/cloudflare/lib/read-cloudflare-env.js";
5
+ import { readDenoEnv } from "../runtime/deno/lib/read-deno-env.js";
6
+ import { readImportMetaEnv } from "../runtime/import-meta/lib/read-import-meta-env.js";
7
+ import { readNetlifyEnv } from "../runtime/netlify/lib/read-netlify-env.js";
8
+ import { readNodeEnv } from "../runtime/node/lib/read-node-env.js";
9
+ import { readVercelEdgeEnv } from "../runtime/vercel/lib/read-vercel-edge-env.js";
10
+ import { RuntimeGlobalsSchema } from "./schema.js";
11
+ /**
12
+ * Reads an environment variable from the current runtime.
13
+ *
14
+ * The function checks known runtime globals and explicit global env records.
15
+ * When a string value is found, surrounding whitespace is trimmed before it is
16
+ * returned.
17
+ *
18
+ * @example
19
+ * const apiBaseUrl = readEnv("API_BASE_URL");
20
+ *
21
+ * fetch(`${apiBaseUrl}/health`);
22
+ *
23
+ * @param env The name of the environment variable to read.
24
+ * @returns The trimmed environment variable value, or `undefined` when the
25
+ * variable is not defined in the current runtime.
26
+ */
27
+ export const readEnv = (env) => {
28
+ const readEnvEffect = Effect.gen(function* () {
29
+ const globalScope = yield* Effect.try({
30
+ try: () => RuntimeGlobalsSchema.safeParse(globalThis),
31
+ catch: () => undefined,
32
+ });
33
+ if (!globalScope.success) {
34
+ return undefined;
35
+ }
36
+ const runtimeGlobals = globalScope.data;
37
+ if (runtimeGlobals.Bun) {
38
+ return readBunEnv(env);
39
+ }
40
+ if (runtimeGlobals.EdgeRuntime) {
41
+ return readVercelEdgeEnv(env);
42
+ }
43
+ if (runtimeGlobals.process?.env.NETLIFY) {
44
+ return readNetlifyEnv(env);
45
+ }
46
+ if (runtimeGlobals.process) {
47
+ return readNodeEnv(env);
48
+ }
49
+ if (runtimeGlobals.Deno) {
50
+ return readDenoEnv(env);
51
+ }
52
+ if (runtimeGlobals.__CLOUDFLARE_ENV__) {
53
+ return readCloudflareEnv(env);
54
+ }
55
+ if (runtimeGlobals.__IMPORT_META_ENV__) {
56
+ return readImportMetaEnv(env);
57
+ }
58
+ if (runtimeGlobals.__APP_CONFIG__ || runtimeGlobals.__ENV__) {
59
+ return readBrowserEnv(env);
60
+ }
61
+ return undefined;
62
+ });
63
+ return Effect.runSync(readEnvEffect);
64
+ };
65
+ //# sourceMappingURL=read-env.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"read-env.js","sourceRoot":"","sources":["../../src/lib/read-env.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAEhC,OAAO,EAAE,cAAc,EAAE,MAAM,4CAA4C,CAAC;AAC5E,OAAO,EAAE,UAAU,EAAE,MAAM,oCAAoC,CAAC;AAChE,OAAO,EAAE,iBAAiB,EAAE,MAAM,kDAAkD,CAAC;AACrF,OAAO,EAAE,WAAW,EAAE,MAAM,sCAAsC,CAAC;AACnE,OAAO,EAAE,iBAAiB,EAAE,MAAM,oDAAoD,CAAC;AACvF,OAAO,EAAE,cAAc,EAAE,MAAM,4CAA4C,CAAC;AAC5E,OAAO,EAAE,WAAW,EAAE,MAAM,sCAAsC,CAAC;AACnE,OAAO,EAAE,iBAAiB,EAAE,MAAM,+CAA+C,CAAC;AAClF,OAAO,EAAE,oBAAoB,EAAE,MAAM,aAAa,CAAC;AAEnD;;;;;;;;;;;;;;;GAeG;AAEH,MAAM,CAAC,MAAM,OAAO,GAAG,CAAC,GAAW,EAAE,EAAE;IACrC,MAAM,aAAa,GAAG,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC;QACxC,MAAM,WAAW,GAAG,KAAK,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC;YACpC,GAAG,EAAE,GAAG,EAAE,CAAC,oBAAoB,CAAC,SAAS,CAAC,UAAU,CAAC;YACrD,KAAK,EAAE,GAAG,EAAE,CAAC,SAAS;SACvB,CAAC,CAAC;QAEH,IAAI,CAAC,WAAW,CAAC,OAAO,EAAE,CAAC;YACzB,OAAO,SAAS,CAAC;QACnB,CAAC;QAED,MAAM,cAAc,GAAG,WAAW,CAAC,IAAI,CAAC;QAExC,IAAI,cAAc,CAAC,GAAG,EAAE,CAAC;YACvB,OAAO,UAAU,CAAC,GAAG,CAAC,CAAC;QACzB,CAAC;QAED,IAAI,cAAc,CAAC,WAAW,EAAE,CAAC;YAC/B,OAAO,iBAAiB,CAAC,GAAG,CAAC,CAAC;QAChC,CAAC;QAED,IAAI,cAAc,CAAC,OAAO,EAAE,GAAG,CAAC,OAAO,EAAE,CAAC;YACxC,OAAO,cAAc,CAAC,GAAG,CAAC,CAAC;QAC7B,CAAC;QAED,IAAI,cAAc,CAAC,OAAO,EAAE,CAAC;YAC3B,OAAO,WAAW,CAAC,GAAG,CAAC,CAAC;QAC1B,CAAC;QAED,IAAI,cAAc,CAAC,IAAI,EAAE,CAAC;YACxB,OAAO,WAAW,CAAC,GAAG,CAAC,CAAC;QAC1B,CAAC;QAED,IAAI,cAAc,CAAC,kBAAkB,EAAE,CAAC;YACtC,OAAO,iBAAiB,CAAC,GAAG,CAAC,CAAC;QAChC,CAAC;QAED,IAAI,cAAc,CAAC,mBAAmB,EAAE,CAAC;YACvC,OAAO,iBAAiB,CAAC,GAAG,CAAC,CAAC;QAChC,CAAC;QAED,IAAI,cAAc,CAAC,cAAc,IAAI,cAAc,CAAC,OAAO,EAAE,CAAC;YAC5D,OAAO,cAAc,CAAC,GAAG,CAAC,CAAC;QAC7B,CAAC;QAED,OAAO,SAAS,CAAC;IACnB,CAAC,CAAC,CAAC;IAEH,OAAO,MAAM,CAAC,OAAO,CAAC,aAAa,CAAC,CAAC;AACvC,CAAC,CAAC"}
@@ -0,0 +1,26 @@
1
+ import z, { type ZodType } from "zod";
2
+ export declare const RuntimeGlobalsSchema: z.ZodObject<{
3
+ __APP_CONFIG__: z.ZodOptional<z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>>;
4
+ __CLOUDFLARE_ENV__: z.ZodOptional<z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>>;
5
+ __ENV__: z.ZodOptional<z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>>;
6
+ __IMPORT_META_ENV__: z.ZodOptional<z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>>;
7
+ Bun: z.ZodOptional<z.ZodOptional<z.ZodObject<{
8
+ env: z.ZodRecord<z.ZodString, z.ZodOptional<z.ZodString>>;
9
+ }, z.z.core.$strip>>>;
10
+ Deno: z.ZodOptional<z.ZodOptional<z.ZodObject<{
11
+ env: z.ZodObject<{
12
+ get: z.ZodFunction<z.ZodTuple<readonly [z.ZodString], null>, z.ZodOptional<z.ZodString>>;
13
+ }, z.z.core.$strip>;
14
+ }, z.z.core.$strip>>>;
15
+ EdgeRuntime: z.ZodOptional<z.ZodOptional<z.ZodString>>;
16
+ process: z.ZodOptional<z.ZodUnion<[z.ZodOptional<z.ZodObject<{
17
+ env: z.ZodCustom<NodeJS.ProcessEnv, NodeJS.ProcessEnv>;
18
+ }, z.z.core.$strip>>, z.ZodOptional<z.ZodObject<{
19
+ env: z.ZodObject<{
20
+ NETLIFY: z.ZodOptional<z.ZodString>;
21
+ }, z.z.core.$loose>;
22
+ }, z.z.core.$strip>>]>>;
23
+ }, z.z.core.$strip>;
24
+ export type RuntimeGlobals = z.infer<typeof RuntimeGlobalsSchema>;
25
+ export type RuntimeGlobalsSchemaType = ZodType<Partial<RuntimeGlobals>>;
26
+ //# sourceMappingURL=schema.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"schema.d.ts","sourceRoot":"","sources":["../../src/lib/schema.ts"],"names":[],"mappings":"AAAA,OAAO,CAAC,EAAE,EAAE,KAAK,OAAO,EAAE,MAAM,KAAK,CAAC;AAWtC,eAAO,MAAM,oBAAoB;;;;;;;;;;;;;;;;;;;;;mBAa/B,CAAC;AAEH,MAAM,MAAM,cAAc,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,oBAAoB,CAAC,CAAC;AAElE,MAAM,MAAM,wBAAwB,GAAG,OAAO,CAAC,OAAO,CAAC,cAAc,CAAC,CAAC,CAAC"}
@@ -0,0 +1,22 @@
1
+ import z, {} from "zod";
2
+ import { BrowserRuntimeGlobalsSchema } from "../runtime/browser/lib/schema.js";
3
+ import { BunRuntimeGlobalsSchema } from "../runtime/bun/lib/schema.js";
4
+ import { CloudflareRuntimeGlobalsSchema } from "../runtime/cloudflare/lib/schema.js";
5
+ import { DenoRuntimeGlobalsSchema } from "../runtime/deno/lib/schema.js";
6
+ import { ImportMetaRuntimeGlobalsSchema } from "../runtime/import-meta/lib/schema.js";
7
+ import { NetlifyRuntimeGlobalsSchema } from "../runtime/netlify/lib/schema.js";
8
+ import { NodeRuntimeGlobalsSchema } from "../runtime/node/lib/schema.js";
9
+ import { VercelEdgeRuntimeGlobalsSchema } from "../runtime/vercel/lib/schema.js";
10
+ export const RuntimeGlobalsSchema = z.object({
11
+ __APP_CONFIG__: BrowserRuntimeGlobalsSchema.shape.__APP_CONFIG__?.optional(),
12
+ __CLOUDFLARE_ENV__: CloudflareRuntimeGlobalsSchema.shape.__CLOUDFLARE_ENV__?.optional(),
13
+ __ENV__: BrowserRuntimeGlobalsSchema.shape.__ENV__?.optional(),
14
+ __IMPORT_META_ENV__: ImportMetaRuntimeGlobalsSchema.shape.__IMPORT_META_ENV__?.optional(),
15
+ Bun: BunRuntimeGlobalsSchema.shape.Bun?.optional(),
16
+ Deno: DenoRuntimeGlobalsSchema.shape.Deno?.optional(),
17
+ EdgeRuntime: VercelEdgeRuntimeGlobalsSchema.shape.EdgeRuntime?.optional(),
18
+ process: NodeRuntimeGlobalsSchema.shape.process
19
+ ?.or(NetlifyRuntimeGlobalsSchema.shape.process)
20
+ .optional(),
21
+ });
22
+ //# sourceMappingURL=schema.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"schema.js","sourceRoot":"","sources":["../../src/lib/schema.ts"],"names":[],"mappings":"AAAA,OAAO,CAAC,EAAE,EAAgB,MAAM,KAAK,CAAC;AAEtC,OAAO,EAAE,2BAA2B,EAAE,MAAM,kCAAkC,CAAC;AAC/E,OAAO,EAAE,uBAAuB,EAAE,MAAM,8BAA8B,CAAC;AACvE,OAAO,EAAE,8BAA8B,EAAE,MAAM,qCAAqC,CAAC;AACrF,OAAO,EAAE,wBAAwB,EAAE,MAAM,+BAA+B,CAAC;AACzE,OAAO,EAAE,8BAA8B,EAAE,MAAM,sCAAsC,CAAC;AACtF,OAAO,EAAE,2BAA2B,EAAE,MAAM,kCAAkC,CAAC;AAC/E,OAAO,EAAE,wBAAwB,EAAE,MAAM,+BAA+B,CAAC;AACzE,OAAO,EAAE,8BAA8B,EAAE,MAAM,iCAAiC,CAAC;AAEjF,MAAM,CAAC,MAAM,oBAAoB,GAAG,CAAC,CAAC,MAAM,CAAC;IAC3C,cAAc,EAAE,2BAA2B,CAAC,KAAK,CAAC,cAAc,EAAE,QAAQ,EAAE;IAC5E,kBAAkB,EAChB,8BAA8B,CAAC,KAAK,CAAC,kBAAkB,EAAE,QAAQ,EAAE;IACrE,OAAO,EAAE,2BAA2B,CAAC,KAAK,CAAC,OAAO,EAAE,QAAQ,EAAE;IAC9D,mBAAmB,EACjB,8BAA8B,CAAC,KAAK,CAAC,mBAAmB,EAAE,QAAQ,EAAE;IACtE,GAAG,EAAE,uBAAuB,CAAC,KAAK,CAAC,GAAG,EAAE,QAAQ,EAAE;IAClD,IAAI,EAAE,wBAAwB,CAAC,KAAK,CAAC,IAAI,EAAE,QAAQ,EAAE;IACrD,WAAW,EAAE,8BAA8B,CAAC,KAAK,CAAC,WAAW,EAAE,QAAQ,EAAE;IACzE,OAAO,EAAE,wBAAwB,CAAC,KAAK,CAAC,OAAO;QAC7C,EAAE,EAAE,CAAC,2BAA2B,CAAC,KAAK,CAAC,OAAO,CAAC;SAC9C,QAAQ,EAAE;CACd,CAAC,CAAC"}
@@ -0,0 +1,7 @@
1
+ import type { z, ZodType } from "zod";
2
+ export type Env<TEnvKeys extends EnvKeys> = {
3
+ [K in keyof TEnvKeys]: z.infer<TEnvKeys[K]>;
4
+ };
5
+ export type EnvKeys = Record<string, ZodType>;
6
+ export type EnvRecord = object;
7
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/lib/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,CAAC,EAAE,OAAO,EAAE,MAAM,KAAK,CAAC;AAEtC,MAAM,MAAM,GAAG,CAAC,QAAQ,SAAS,OAAO,IAAI;KACzC,CAAC,IAAI,MAAM,QAAQ,GAAG,CAAC,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;CAC5C,CAAC;AAEF,MAAM,MAAM,OAAO,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;AAE9C,MAAM,MAAM,SAAS,GAAG,MAAM,CAAC"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/lib/types.ts"],"names":[],"mappings":""}
@@ -0,0 +1,26 @@
1
+ import type { EnvKeys, EnvRecord } from "../../lib/types.js";
2
+ /**
3
+ * Creates a typed environment object from an explicit browser config object.
4
+ *
5
+ * Use this for client-side configuration that has already been made available
6
+ * to browser code, such as `globalThis.__APP_CONFIG__`. Only pass values that
7
+ * are safe to expose publicly.
8
+ *
9
+ * @example
10
+ * ```ts
11
+ * import { createBrowserEnv } from "@tmrp/env/browser";
12
+ * import z from "zod";
13
+ *
14
+ * const env = createBrowserEnv(
15
+ * { PUBLIC_API_URL: z.url() },
16
+ * globalThis.__APP_CONFIG__ as Record<string, unknown>
17
+ * );
18
+ * ```
19
+ *
20
+ * @param envKeys Environment variable names mapped to Zod schemas.
21
+ * @param env Browser config object to read values from.
22
+ * @returns A strongly typed object inferred from `envKeys`.
23
+ * @throws When a configured value is missing or fails validation.
24
+ */
25
+ export declare function createBrowserEnv<const TEnvKeys extends EnvKeys>(envKeys: TEnvKeys, env: EnvRecord): import("../../lib/types.js").Env<TEnvKeys>;
26
+ //# sourceMappingURL=create-browser-env.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"create-browser-env.d.ts","sourceRoot":"","sources":["../../../src/runtime/browser/create-browser-env.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAC;AAI7D;;;;;;;;;;;;;;;;;;;;;;GAsBG;AACH,wBAAgB,gBAAgB,CAAC,KAAK,CAAC,QAAQ,SAAS,OAAO,EAC7D,OAAO,EAAE,QAAQ,EACjB,GAAG,EAAE,SAAS,8CAGf"}
@@ -0,0 +1,28 @@
1
+ import { createRecordEnv } from "../record/create-record-env.js";
2
+ /**
3
+ * Creates a typed environment object from an explicit browser config object.
4
+ *
5
+ * Use this for client-side configuration that has already been made available
6
+ * to browser code, such as `globalThis.__APP_CONFIG__`. Only pass values that
7
+ * are safe to expose publicly.
8
+ *
9
+ * @example
10
+ * ```ts
11
+ * import { createBrowserEnv } from "@tmrp/env/browser";
12
+ * import z from "zod";
13
+ *
14
+ * const env = createBrowserEnv(
15
+ * { PUBLIC_API_URL: z.url() },
16
+ * globalThis.__APP_CONFIG__ as Record<string, unknown>
17
+ * );
18
+ * ```
19
+ *
20
+ * @param envKeys Environment variable names mapped to Zod schemas.
21
+ * @param env Browser config object to read values from.
22
+ * @returns A strongly typed object inferred from `envKeys`.
23
+ * @throws When a configured value is missing or fails validation.
24
+ */
25
+ export function createBrowserEnv(envKeys, env) {
26
+ return createRecordEnv(envKeys, env);
27
+ }
28
+ //# sourceMappingURL=create-browser-env.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"create-browser-env.js","sourceRoot":"","sources":["../../../src/runtime/browser/create-browser-env.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,eAAe,EAAE,MAAM,gCAAgC,CAAC;AAEjE;;;;;;;;;;;;;;;;;;;;;;GAsBG;AACH,MAAM,UAAU,gBAAgB,CAC9B,OAAiB,EACjB,GAAc;IAEd,OAAO,eAAe,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC;AACvC,CAAC"}
@@ -0,0 +1,2 @@
1
+ export declare const readBrowserEnv: (env: string) => {} | undefined;
2
+ //# sourceMappingURL=read-browser-env.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"read-browser-env.d.ts","sourceRoot":"","sources":["../../../../src/runtime/browser/lib/read-browser-env.ts"],"names":[],"mappings":"AAGA,eAAO,MAAM,cAAc,GAAI,KAAK,MAAM,mBAgBzC,CAAC"}
@@ -0,0 +1,15 @@
1
+ import { readRecordEnv } from "../../record/lib/read-record-env.js";
2
+ import { BrowserRuntimeGlobalsSchema } from "./schema.js";
3
+ export const readBrowserEnv = (env) => {
4
+ const browserGlobalScope = BrowserRuntimeGlobalsSchema.safeParse(globalThis);
5
+ if (!browserGlobalScope.success) {
6
+ return undefined;
7
+ }
8
+ const browserRuntimeGlobals = browserGlobalScope.data;
9
+ const browserEnv = browserRuntimeGlobals.__APP_CONFIG__ ?? browserRuntimeGlobals.__ENV__;
10
+ if (!browserEnv) {
11
+ return undefined;
12
+ }
13
+ return readRecordEnv(env, browserEnv);
14
+ };
15
+ //# sourceMappingURL=read-browser-env.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"read-browser-env.js","sourceRoot":"","sources":["../../../../src/runtime/browser/lib/read-browser-env.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,qCAAqC,CAAC;AACpE,OAAO,EAAE,2BAA2B,EAAE,MAAM,aAAa,CAAC;AAE1D,MAAM,CAAC,MAAM,cAAc,GAAG,CAAC,GAAW,EAAE,EAAE;IAC5C,MAAM,kBAAkB,GAAG,2BAA2B,CAAC,SAAS,CAAC,UAAU,CAAC,CAAC;IAE7E,IAAI,CAAC,kBAAkB,CAAC,OAAO,EAAE,CAAC;QAChC,OAAO,SAAS,CAAC;IACnB,CAAC;IAED,MAAM,qBAAqB,GAAG,kBAAkB,CAAC,IAAI,CAAC;IACtD,MAAM,UAAU,GACd,qBAAqB,CAAC,cAAc,IAAI,qBAAqB,CAAC,OAAO,CAAC;IAExE,IAAI,CAAC,UAAU,EAAE,CAAC;QAChB,OAAO,SAAS,CAAC;IACnB,CAAC;IAED,OAAO,aAAa,CAAC,GAAG,EAAE,UAAU,CAAC,CAAC;AACxC,CAAC,CAAC"}
@@ -0,0 +1,6 @@
1
+ import z from "zod";
2
+ export declare const BrowserRuntimeGlobalsSchema: z.ZodObject<{
3
+ __APP_CONFIG__: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
4
+ __ENV__: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
5
+ }, z.z.core.$strip>;
6
+ //# sourceMappingURL=schema.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"schema.d.ts","sourceRoot":"","sources":["../../../../src/runtime/browser/lib/schema.ts"],"names":[],"mappings":"AAAA,OAAO,CAAC,MAAM,KAAK,CAAC;AAIpB,eAAO,MAAM,2BAA2B;;;mBAGtC,CAAC"}
@@ -0,0 +1,7 @@
1
+ import z from "zod";
2
+ import { EnvRecordSchema } from "../../record/lib/schema.js";
3
+ export const BrowserRuntimeGlobalsSchema = z.object({
4
+ __APP_CONFIG__: EnvRecordSchema.optional(),
5
+ __ENV__: EnvRecordSchema.optional(),
6
+ });
7
+ //# sourceMappingURL=schema.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"schema.js","sourceRoot":"","sources":["../../../../src/runtime/browser/lib/schema.ts"],"names":[],"mappings":"AAAA,OAAO,CAAC,MAAM,KAAK,CAAC;AAEpB,OAAO,EAAE,eAAe,EAAE,MAAM,4BAA4B,CAAC;AAE7D,MAAM,CAAC,MAAM,2BAA2B,GAAG,CAAC,CAAC,MAAM,CAAC;IAClD,cAAc,EAAE,eAAe,CAAC,QAAQ,EAAE;IAC1C,OAAO,EAAE,eAAe,CAAC,QAAQ,EAAE;CACpC,CAAC,CAAC"}
@@ -0,0 +1,24 @@
1
+ import type { EnvKeys } from "../../lib/types.js";
2
+ /**
3
+ * Creates a typed environment object from Bun's `Bun.env`.
4
+ *
5
+ * Use this entry point when your application is expected to run in Bun and you
6
+ * want runtime selection to be explicit.
7
+ *
8
+ * @example
9
+ * ```ts
10
+ * import { createBunEnv } from "@tmrp/env/bun";
11
+ * import z from "zod";
12
+ *
13
+ * const env = createBunEnv({
14
+ * DATABASE_URL: z.url(),
15
+ * PORT: z.coerce.number().int().positive(),
16
+ * });
17
+ * ```
18
+ *
19
+ * @param envKeys Environment variable names mapped to Zod schemas.
20
+ * @returns A strongly typed object inferred from `envKeys`.
21
+ * @throws When a configured variable is missing or fails validation.
22
+ */
23
+ export declare function createBunEnv<const TEnvKeys extends EnvKeys>(envKeys: TEnvKeys): import("../../lib/types.js").Env<TEnvKeys>;
24
+ //# sourceMappingURL=create-bun-env.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"create-bun-env.d.ts","sourceRoot":"","sources":["../../../src/runtime/bun/create-bun-env.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,oBAAoB,CAAC;AAMlD;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,wBAAgB,YAAY,CAAC,KAAK,CAAC,QAAQ,SAAS,OAAO,EACzD,OAAO,EAAE,QAAQ,8CAKlB"}
@@ -0,0 +1,28 @@
1
+ import { createEnvEffect } from "../../effects/create-env-effect.js";
2
+ import { readBunEnv } from "./lib/read-bun-env.js";
3
+ import { BunRuntimeGlobalsSchema } from "./lib/schema.js";
4
+ /**
5
+ * Creates a typed environment object from Bun's `Bun.env`.
6
+ *
7
+ * Use this entry point when your application is expected to run in Bun and you
8
+ * want runtime selection to be explicit.
9
+ *
10
+ * @example
11
+ * ```ts
12
+ * import { createBunEnv } from "@tmrp/env/bun";
13
+ * import z from "zod";
14
+ *
15
+ * const env = createBunEnv({
16
+ * DATABASE_URL: z.url(),
17
+ * PORT: z.coerce.number().int().positive(),
18
+ * });
19
+ * ```
20
+ *
21
+ * @param envKeys Environment variable names mapped to Zod schemas.
22
+ * @returns A strongly typed object inferred from `envKeys`.
23
+ * @throws When a configured variable is missing or fails validation.
24
+ */
25
+ export function createBunEnv(envKeys) {
26
+ return createEnvEffect(envKeys, BunRuntimeGlobalsSchema, (env) => readBunEnv(env));
27
+ }
28
+ //# sourceMappingURL=create-bun-env.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"create-bun-env.js","sourceRoot":"","sources":["../../../src/runtime/bun/create-bun-env.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,eAAe,EAAE,MAAM,oCAAoC,CAAC;AACrE,OAAO,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAC;AACnD,OAAO,EAAE,uBAAuB,EAAE,MAAM,iBAAiB,CAAC;AAE1D;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,MAAM,UAAU,YAAY,CAC1B,OAAiB;IAEjB,OAAO,eAAe,CAAC,OAAO,EAAE,uBAAuB,EAAE,CAAC,GAAG,EAAE,EAAE,CAC/D,UAAU,CAAC,GAAG,CAAC,CAChB,CAAC;AACJ,CAAC"}
@@ -0,0 +1,2 @@
1
+ export declare const readBunEnv: (env: string) => {} | undefined;
2
+ //# sourceMappingURL=read-bun-env.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"read-bun-env.d.ts","sourceRoot":"","sources":["../../../../src/runtime/bun/lib/read-bun-env.ts"],"names":[],"mappings":"AAGA,eAAO,MAAM,UAAU,GAAI,KAAK,MAAM,mBAcrC,CAAC"}
@@ -0,0 +1,14 @@
1
+ import { readRecordEnv } from "../../record/lib/read-record-env.js";
2
+ import { BunRuntimeGlobalsSchema } from "./schema.js";
3
+ export const readBunEnv = (env) => {
4
+ const bunGlobalScope = BunRuntimeGlobalsSchema.safeParse(globalThis);
5
+ if (!bunGlobalScope.success) {
6
+ return undefined;
7
+ }
8
+ const bunRuntimeGlobals = bunGlobalScope.data;
9
+ if (!bunRuntimeGlobals.Bun) {
10
+ return undefined;
11
+ }
12
+ return readRecordEnv(env, bunRuntimeGlobals.Bun.env);
13
+ };
14
+ //# sourceMappingURL=read-bun-env.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"read-bun-env.js","sourceRoot":"","sources":["../../../../src/runtime/bun/lib/read-bun-env.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,qCAAqC,CAAC;AACpE,OAAO,EAAE,uBAAuB,EAAE,MAAM,aAAa,CAAC;AAEtD,MAAM,CAAC,MAAM,UAAU,GAAG,CAAC,GAAW,EAAE,EAAE;IACxC,MAAM,cAAc,GAAG,uBAAuB,CAAC,SAAS,CAAC,UAAU,CAAC,CAAC;IAErE,IAAI,CAAC,cAAc,CAAC,OAAO,EAAE,CAAC;QAC5B,OAAO,SAAS,CAAC;IACnB,CAAC;IAED,MAAM,iBAAiB,GAAG,cAAc,CAAC,IAAI,CAAC;IAE9C,IAAI,CAAC,iBAAiB,CAAC,GAAG,EAAE,CAAC;QAC3B,OAAO,SAAS,CAAC;IACnB,CAAC;IAED,OAAO,aAAa,CAAC,GAAG,EAAE,iBAAiB,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;AACvD,CAAC,CAAC"}
@@ -0,0 +1,7 @@
1
+ import z from "zod";
2
+ export declare const BunRuntimeGlobalsSchema: z.ZodObject<{
3
+ Bun: z.ZodOptional<z.ZodObject<{
4
+ env: z.ZodRecord<z.ZodString, z.ZodOptional<z.ZodString>>;
5
+ }, z.z.core.$strip>>;
6
+ }, z.z.core.$strip>;
7
+ //# sourceMappingURL=schema.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"schema.d.ts","sourceRoot":"","sources":["../../../../src/runtime/bun/lib/schema.ts"],"names":[],"mappings":"AAAA,OAAO,CAAC,MAAM,KAAK,CAAC;AAEpB,eAAO,MAAM,uBAAuB;;;;mBAMlC,CAAC"}
@@ -0,0 +1,9 @@
1
+ import z from "zod";
2
+ export const BunRuntimeGlobalsSchema = z.object({
3
+ Bun: z
4
+ .object({
5
+ env: z.record(z.string(), z.string().optional()),
6
+ })
7
+ .optional(),
8
+ });
9
+ //# sourceMappingURL=schema.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"schema.js","sourceRoot":"","sources":["../../../../src/runtime/bun/lib/schema.ts"],"names":[],"mappings":"AAAA,OAAO,CAAC,MAAM,KAAK,CAAC;AAEpB,MAAM,CAAC,MAAM,uBAAuB,GAAG,CAAC,CAAC,MAAM,CAAC;IAC9C,GAAG,EAAE,CAAC;SACH,MAAM,CAAC;QACN,GAAG,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC;KACjD,CAAC;SACD,QAAQ,EAAE;CACd,CAAC,CAAC"}
@@ -0,0 +1,32 @@
1
+ import type { EnvKeys, EnvRecord } from "../../lib/types.js";
2
+ /**
3
+ * Creates a typed environment object from Cloudflare Worker bindings.
4
+ *
5
+ * Cloudflare passes bindings to handlers instead of exposing them as normal
6
+ * process environment variables. Pass the handler's bindings object as the
7
+ * second argument.
8
+ *
9
+ * @example
10
+ * ```ts
11
+ * import { createCloudflareEnv } from "@tmrp/env/cloudflare";
12
+ * import z from "zod";
13
+ *
14
+ * export default {
15
+ * fetch(request: Request, bindings: Record<string, unknown>) {
16
+ * const env = createCloudflareEnv(
17
+ * { API_TOKEN: z.string().min(1) },
18
+ * bindings
19
+ * );
20
+ *
21
+ * return new Response(env.API_TOKEN);
22
+ * },
23
+ * };
24
+ * ```
25
+ *
26
+ * @param envKeys Binding names mapped to Zod schemas.
27
+ * @param bindings Cloudflare Worker bindings object.
28
+ * @returns A strongly typed object inferred from `envKeys`.
29
+ * @throws When a configured binding is missing or fails validation.
30
+ */
31
+ export declare function createCloudflareEnv<const TEnvKeys extends EnvKeys>(envKeys: TEnvKeys, bindings: EnvRecord): import("../../lib/types.js").Env<TEnvKeys>;
32
+ //# sourceMappingURL=create-cloudflare-env.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"create-cloudflare-env.d.ts","sourceRoot":"","sources":["../../../src/runtime/cloudflare/create-cloudflare-env.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAC;AAI7D;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4BG;AACH,wBAAgB,mBAAmB,CAAC,KAAK,CAAC,QAAQ,SAAS,OAAO,EAChE,OAAO,EAAE,QAAQ,EACjB,QAAQ,EAAE,SAAS,8CAGpB"}
@@ -0,0 +1,34 @@
1
+ import { createRecordEnv } from "../record/create-record-env.js";
2
+ /**
3
+ * Creates a typed environment object from Cloudflare Worker bindings.
4
+ *
5
+ * Cloudflare passes bindings to handlers instead of exposing them as normal
6
+ * process environment variables. Pass the handler's bindings object as the
7
+ * second argument.
8
+ *
9
+ * @example
10
+ * ```ts
11
+ * import { createCloudflareEnv } from "@tmrp/env/cloudflare";
12
+ * import z from "zod";
13
+ *
14
+ * export default {
15
+ * fetch(request: Request, bindings: Record<string, unknown>) {
16
+ * const env = createCloudflareEnv(
17
+ * { API_TOKEN: z.string().min(1) },
18
+ * bindings
19
+ * );
20
+ *
21
+ * return new Response(env.API_TOKEN);
22
+ * },
23
+ * };
24
+ * ```
25
+ *
26
+ * @param envKeys Binding names mapped to Zod schemas.
27
+ * @param bindings Cloudflare Worker bindings object.
28
+ * @returns A strongly typed object inferred from `envKeys`.
29
+ * @throws When a configured binding is missing or fails validation.
30
+ */
31
+ export function createCloudflareEnv(envKeys, bindings) {
32
+ return createRecordEnv(envKeys, bindings);
33
+ }
34
+ //# sourceMappingURL=create-cloudflare-env.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"create-cloudflare-env.js","sourceRoot":"","sources":["../../../src/runtime/cloudflare/create-cloudflare-env.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,eAAe,EAAE,MAAM,gCAAgC,CAAC;AAEjE;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4BG;AACH,MAAM,UAAU,mBAAmB,CACjC,OAAiB,EACjB,QAAmB;IAEnB,OAAO,eAAe,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC;AAC5C,CAAC"}
@@ -0,0 +1,2 @@
1
+ export declare const readCloudflareEnv: (env: string) => {} | undefined;
2
+ //# sourceMappingURL=read-cloudflare-env.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"read-cloudflare-env.d.ts","sourceRoot":"","sources":["../../../../src/runtime/cloudflare/lib/read-cloudflare-env.ts"],"names":[],"mappings":"AAGA,eAAO,MAAM,iBAAiB,GAAI,KAAK,MAAM,mBAe5C,CAAC"}