@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,14 @@
1
+ import { readRecordEnv } from "../../record/lib/read-record-env.js";
2
+ import { CloudflareRuntimeGlobalsSchema } from "./schema.js";
3
+ export const readCloudflareEnv = (env) => {
4
+ const cloudflareGlobalScope = CloudflareRuntimeGlobalsSchema.safeParse(globalThis);
5
+ if (!cloudflareGlobalScope.success) {
6
+ return undefined;
7
+ }
8
+ const cloudflareRuntimeGlobals = cloudflareGlobalScope.data;
9
+ if (!cloudflareRuntimeGlobals.__CLOUDFLARE_ENV__) {
10
+ return undefined;
11
+ }
12
+ return readRecordEnv(env, cloudflareRuntimeGlobals.__CLOUDFLARE_ENV__);
13
+ };
14
+ //# sourceMappingURL=read-cloudflare-env.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"read-cloudflare-env.js","sourceRoot":"","sources":["../../../../src/runtime/cloudflare/lib/read-cloudflare-env.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,qCAAqC,CAAC;AACpE,OAAO,EAAE,8BAA8B,EAAE,MAAM,aAAa,CAAC;AAE7D,MAAM,CAAC,MAAM,iBAAiB,GAAG,CAAC,GAAW,EAAE,EAAE;IAC/C,MAAM,qBAAqB,GACzB,8BAA8B,CAAC,SAAS,CAAC,UAAU,CAAC,CAAC;IAEvD,IAAI,CAAC,qBAAqB,CAAC,OAAO,EAAE,CAAC;QACnC,OAAO,SAAS,CAAC;IACnB,CAAC;IAED,MAAM,wBAAwB,GAAG,qBAAqB,CAAC,IAAI,CAAC;IAE5D,IAAI,CAAC,wBAAwB,CAAC,kBAAkB,EAAE,CAAC;QACjD,OAAO,SAAS,CAAC;IACnB,CAAC;IAED,OAAO,aAAa,CAAC,GAAG,EAAE,wBAAwB,CAAC,kBAAkB,CAAC,CAAC;AACzE,CAAC,CAAC"}
@@ -0,0 +1,5 @@
1
+ import z from "zod";
2
+ export declare const CloudflareRuntimeGlobalsSchema: z.ZodObject<{
3
+ __CLOUDFLARE_ENV__: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
4
+ }, z.z.core.$strip>;
5
+ //# sourceMappingURL=schema.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"schema.d.ts","sourceRoot":"","sources":["../../../../src/runtime/cloudflare/lib/schema.ts"],"names":[],"mappings":"AAAA,OAAO,CAAC,MAAM,KAAK,CAAC;AAIpB,eAAO,MAAM,8BAA8B;;mBAEzC,CAAC"}
@@ -0,0 +1,6 @@
1
+ import z from "zod";
2
+ import { EnvRecordSchema } from "../../record/lib/schema.js";
3
+ export const CloudflareRuntimeGlobalsSchema = z.object({
4
+ __CLOUDFLARE_ENV__: EnvRecordSchema.optional(),
5
+ });
6
+ //# sourceMappingURL=schema.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"schema.js","sourceRoot":"","sources":["../../../../src/runtime/cloudflare/lib/schema.ts"],"names":[],"mappings":"AAAA,OAAO,CAAC,MAAM,KAAK,CAAC;AAEpB,OAAO,EAAE,eAAe,EAAE,MAAM,4BAA4B,CAAC;AAE7D,MAAM,CAAC,MAAM,8BAA8B,GAAG,CAAC,CAAC,MAAM,CAAC;IACrD,kBAAkB,EAAE,eAAe,CAAC,QAAQ,EAAE;CAC/C,CAAC,CAAC"}
@@ -0,0 +1,23 @@
1
+ import type { EnvKeys } from "../../lib/types.js";
2
+ /**
3
+ * Creates a typed environment object from Deno's `Deno.env.get`.
4
+ *
5
+ * Use this entry point when your application is expected to run in Deno. Deno
6
+ * requires env access permission, such as `--allow-env`.
7
+ *
8
+ * @example
9
+ * ```ts
10
+ * import { createDenoEnv } from "@tmrp/env/deno";
11
+ * import z from "zod";
12
+ *
13
+ * const env = createDenoEnv({
14
+ * API_TOKEN: z.string().min(1),
15
+ * });
16
+ * ```
17
+ *
18
+ * @param envKeys Environment variable names mapped to Zod schemas.
19
+ * @returns A strongly typed object inferred from `envKeys`.
20
+ * @throws When a configured variable is missing or fails validation.
21
+ */
22
+ export declare function createDenoEnv<const TEnvKeys extends EnvKeys>(envKeys: TEnvKeys): import("../../lib/types.js").Env<TEnvKeys>;
23
+ //# sourceMappingURL=create-deno-env.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"create-deno-env.d.ts","sourceRoot":"","sources":["../../../src/runtime/deno/create-deno-env.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,oBAAoB,CAAC;AAMlD;;;;;;;;;;;;;;;;;;;GAmBG;AACH,wBAAgB,aAAa,CAAC,KAAK,CAAC,QAAQ,SAAS,OAAO,EAC1D,OAAO,EAAE,QAAQ,8CAGlB"}
@@ -0,0 +1,27 @@
1
+ import { createEnvEffect } from "../../effects/create-env-effect.js";
2
+ import { readEnvEffect } from "../../effects/read-env-effect.js";
3
+ import { DenoRuntimeGlobalsSchema } from "./lib/schema.js";
4
+ /**
5
+ * Creates a typed environment object from Deno's `Deno.env.get`.
6
+ *
7
+ * Use this entry point when your application is expected to run in Deno. Deno
8
+ * requires env access permission, such as `--allow-env`.
9
+ *
10
+ * @example
11
+ * ```ts
12
+ * import { createDenoEnv } from "@tmrp/env/deno";
13
+ * import z from "zod";
14
+ *
15
+ * const env = createDenoEnv({
16
+ * API_TOKEN: z.string().min(1),
17
+ * });
18
+ * ```
19
+ *
20
+ * @param envKeys Environment variable names mapped to Zod schemas.
21
+ * @returns A strongly typed object inferred from `envKeys`.
22
+ * @throws When a configured variable is missing or fails validation.
23
+ */
24
+ export function createDenoEnv(envKeys) {
25
+ return createEnvEffect(envKeys, DenoRuntimeGlobalsSchema, readEnvEffect);
26
+ }
27
+ //# sourceMappingURL=create-deno-env.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"create-deno-env.js","sourceRoot":"","sources":["../../../src/runtime/deno/create-deno-env.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,eAAe,EAAE,MAAM,oCAAoC,CAAC;AACrE,OAAO,EAAE,aAAa,EAAE,MAAM,kCAAkC,CAAC;AACjE,OAAO,EAAE,wBAAwB,EAAE,MAAM,iBAAiB,CAAC;AAE3D;;;;;;;;;;;;;;;;;;;GAmBG;AACH,MAAM,UAAU,aAAa,CAC3B,OAAiB;IAEjB,OAAO,eAAe,CAAC,OAAO,EAAE,wBAAwB,EAAE,aAAa,CAAC,CAAC;AAC3E,CAAC"}
@@ -0,0 +1,2 @@
1
+ export declare const readDenoEnv: (env: string) => string | undefined;
2
+ //# sourceMappingURL=read-deno-env.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"read-deno-env.d.ts","sourceRoot":"","sources":["../../../../src/runtime/deno/lib/read-deno-env.ts"],"names":[],"mappings":"AAEA,eAAO,MAAM,WAAW,GAAI,KAAK,MAAM,uBActC,CAAC"}
@@ -0,0 +1,13 @@
1
+ import { DenoRuntimeGlobalsSchema } from "./schema.js";
2
+ export const readDenoEnv = (env) => {
3
+ const denoGlobalScope = DenoRuntimeGlobalsSchema.safeParse(globalThis);
4
+ if (!denoGlobalScope.success) {
5
+ return undefined;
6
+ }
7
+ const denoRuntimeGlobals = denoGlobalScope.data;
8
+ if (!denoRuntimeGlobals?.Deno) {
9
+ return undefined;
10
+ }
11
+ return denoRuntimeGlobals.Deno.env?.get?.(env)?.trim() ?? undefined;
12
+ };
13
+ //# sourceMappingURL=read-deno-env.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"read-deno-env.js","sourceRoot":"","sources":["../../../../src/runtime/deno/lib/read-deno-env.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,wBAAwB,EAAE,MAAM,aAAa,CAAC;AAEvD,MAAM,CAAC,MAAM,WAAW,GAAG,CAAC,GAAW,EAAE,EAAE;IACzC,MAAM,eAAe,GAAG,wBAAwB,CAAC,SAAS,CAAC,UAAU,CAAC,CAAC;IAEvE,IAAI,CAAC,eAAe,CAAC,OAAO,EAAE,CAAC;QAC7B,OAAO,SAAS,CAAC;IACnB,CAAC;IAED,MAAM,kBAAkB,GAAG,eAAe,CAAC,IAAI,CAAC;IAEhD,IAAI,CAAC,kBAAkB,EAAE,IAAI,EAAE,CAAC;QAC9B,OAAO,SAAS,CAAC;IACnB,CAAC;IAED,OAAO,kBAAkB,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,EAAE,CAAC,GAAG,CAAC,EAAE,IAAI,EAAE,IAAI,SAAS,CAAC;AACtE,CAAC,CAAC"}
@@ -0,0 +1,9 @@
1
+ import z from "zod";
2
+ export declare const DenoRuntimeGlobalsSchema: z.ZodObject<{
3
+ Deno: z.ZodOptional<z.ZodObject<{
4
+ env: z.ZodObject<{
5
+ get: z.ZodFunction<z.ZodTuple<readonly [z.ZodString], null>, z.ZodOptional<z.ZodString>>;
6
+ }, z.z.core.$strip>;
7
+ }, z.z.core.$strip>>;
8
+ }, z.z.core.$strip>;
9
+ //# sourceMappingURL=schema.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"schema.d.ts","sourceRoot":"","sources":["../../../../src/runtime/deno/lib/schema.ts"],"names":[],"mappings":"AAAA,OAAO,CAAC,MAAM,KAAK,CAAC;AAEpB,eAAO,MAAM,wBAAwB;;;;;;mBAWnC,CAAC"}
@@ -0,0 +1,14 @@
1
+ import z from "zod";
2
+ export const DenoRuntimeGlobalsSchema = z.object({
3
+ Deno: z
4
+ .object({
5
+ env: z.object({
6
+ get: z.function({
7
+ input: [z.string()],
8
+ output: z.string().optional(),
9
+ }),
10
+ }),
11
+ })
12
+ .optional(),
13
+ });
14
+ //# sourceMappingURL=schema.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"schema.js","sourceRoot":"","sources":["../../../../src/runtime/deno/lib/schema.ts"],"names":[],"mappings":"AAAA,OAAO,CAAC,MAAM,KAAK,CAAC;AAEpB,MAAM,CAAC,MAAM,wBAAwB,GAAG,CAAC,CAAC,MAAM,CAAC;IAC/C,IAAI,EAAE,CAAC;SACJ,MAAM,CAAC;QACN,GAAG,EAAE,CAAC,CAAC,MAAM,CAAC;YACZ,GAAG,EAAE,CAAC,CAAC,QAAQ,CAAC;gBACd,KAAK,EAAE,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC;gBACnB,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;aAC9B,CAAC;SACH,CAAC;KACH,CAAC;SACD,QAAQ,EAAE;CACd,CAAC,CAAC"}
@@ -0,0 +1,28 @@
1
+ import type { EnvKeys, EnvRecord } from "../../lib/types.js";
2
+ /**
3
+ * Creates a typed environment object from an `import.meta.env`-style object.
4
+ *
5
+ * Use this for Vite, Astro, SvelteKit, Nuxt, or any other toolchain that
6
+ * exposes build-time environment values through `import.meta.env`.
7
+ *
8
+ * @example
9
+ * ```ts
10
+ * import { createImportMetaEnv } from "@tmrp/env/import-meta";
11
+ * import z from "zod";
12
+ *
13
+ * const env = createImportMetaEnv(
14
+ * {
15
+ * DEV: z.boolean(),
16
+ * VITE_API_URL: z.url(),
17
+ * },
18
+ * import.meta.env
19
+ * );
20
+ * ```
21
+ *
22
+ * @param envKeys Environment variable names mapped to Zod schemas.
23
+ * @param importMetaEnv The `import.meta.env` object, or a compatible object.
24
+ * @returns A strongly typed object inferred from `envKeys`.
25
+ * @throws When a configured value is missing or fails validation.
26
+ */
27
+ export declare function createImportMetaEnv<const TEnvKeys extends EnvKeys>(envKeys: TEnvKeys, importMetaEnv: EnvRecord): import("../../lib/types.js").Env<TEnvKeys>;
28
+ //# sourceMappingURL=create-import-meta-env.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"create-import-meta-env.d.ts","sourceRoot":"","sources":["../../../src/runtime/import-meta/create-import-meta-env.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAC;AAI7D;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AACH,wBAAgB,mBAAmB,CAAC,KAAK,CAAC,QAAQ,SAAS,OAAO,EAChE,OAAO,EAAE,QAAQ,EACjB,aAAa,EAAE,SAAS,8CAGzB"}
@@ -0,0 +1,30 @@
1
+ import { createRecordEnv } from "../record/create-record-env.js";
2
+ /**
3
+ * Creates a typed environment object from an `import.meta.env`-style object.
4
+ *
5
+ * Use this for Vite, Astro, SvelteKit, Nuxt, or any other toolchain that
6
+ * exposes build-time environment values through `import.meta.env`.
7
+ *
8
+ * @example
9
+ * ```ts
10
+ * import { createImportMetaEnv } from "@tmrp/env/import-meta";
11
+ * import z from "zod";
12
+ *
13
+ * const env = createImportMetaEnv(
14
+ * {
15
+ * DEV: z.boolean(),
16
+ * VITE_API_URL: z.url(),
17
+ * },
18
+ * import.meta.env
19
+ * );
20
+ * ```
21
+ *
22
+ * @param envKeys Environment variable names mapped to Zod schemas.
23
+ * @param importMetaEnv The `import.meta.env` object, or a compatible object.
24
+ * @returns A strongly typed object inferred from `envKeys`.
25
+ * @throws When a configured value is missing or fails validation.
26
+ */
27
+ export function createImportMetaEnv(envKeys, importMetaEnv) {
28
+ return createRecordEnv(envKeys, importMetaEnv);
29
+ }
30
+ //# sourceMappingURL=create-import-meta-env.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"create-import-meta-env.js","sourceRoot":"","sources":["../../../src/runtime/import-meta/create-import-meta-env.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,eAAe,EAAE,MAAM,gCAAgC,CAAC;AAEjE;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AACH,MAAM,UAAU,mBAAmB,CACjC,OAAiB,EACjB,aAAwB;IAExB,OAAO,eAAe,CAAC,OAAO,EAAE,aAAa,CAAC,CAAC;AACjD,CAAC"}
@@ -0,0 +1,2 @@
1
+ export declare const readImportMetaEnv: (env: string) => {} | undefined;
2
+ //# sourceMappingURL=read-import-meta-env.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"read-import-meta-env.d.ts","sourceRoot":"","sources":["../../../../src/runtime/import-meta/lib/read-import-meta-env.ts"],"names":[],"mappings":"AAGA,eAAO,MAAM,iBAAiB,GAAI,KAAK,MAAM,mBAe5C,CAAC"}
@@ -0,0 +1,14 @@
1
+ import { readRecordEnv } from "../../record/lib/read-record-env.js";
2
+ import { ImportMetaRuntimeGlobalsSchema } from "./schema.js";
3
+ export const readImportMetaEnv = (env) => {
4
+ const importMetaGlobalScope = ImportMetaRuntimeGlobalsSchema.safeParse(globalThis);
5
+ if (!importMetaGlobalScope.success) {
6
+ return undefined;
7
+ }
8
+ const importMetaRuntimeGlobals = importMetaGlobalScope.data;
9
+ if (!importMetaRuntimeGlobals.__IMPORT_META_ENV__) {
10
+ return undefined;
11
+ }
12
+ return readRecordEnv(env, importMetaRuntimeGlobals.__IMPORT_META_ENV__);
13
+ };
14
+ //# sourceMappingURL=read-import-meta-env.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"read-import-meta-env.js","sourceRoot":"","sources":["../../../../src/runtime/import-meta/lib/read-import-meta-env.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,qCAAqC,CAAC;AACpE,OAAO,EAAE,8BAA8B,EAAE,MAAM,aAAa,CAAC;AAE7D,MAAM,CAAC,MAAM,iBAAiB,GAAG,CAAC,GAAW,EAAE,EAAE;IAC/C,MAAM,qBAAqB,GACzB,8BAA8B,CAAC,SAAS,CAAC,UAAU,CAAC,CAAC;IAEvD,IAAI,CAAC,qBAAqB,CAAC,OAAO,EAAE,CAAC;QACnC,OAAO,SAAS,CAAC;IACnB,CAAC;IAED,MAAM,wBAAwB,GAAG,qBAAqB,CAAC,IAAI,CAAC;IAE5D,IAAI,CAAC,wBAAwB,CAAC,mBAAmB,EAAE,CAAC;QAClD,OAAO,SAAS,CAAC;IACnB,CAAC;IAED,OAAO,aAAa,CAAC,GAAG,EAAE,wBAAwB,CAAC,mBAAmB,CAAC,CAAC;AAC1E,CAAC,CAAC"}
@@ -0,0 +1,5 @@
1
+ import z from "zod";
2
+ export declare const ImportMetaRuntimeGlobalsSchema: z.ZodObject<{
3
+ __IMPORT_META_ENV__: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
4
+ }, z.z.core.$strip>;
5
+ //# sourceMappingURL=schema.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"schema.d.ts","sourceRoot":"","sources":["../../../../src/runtime/import-meta/lib/schema.ts"],"names":[],"mappings":"AAAA,OAAO,CAAC,MAAM,KAAK,CAAC;AAIpB,eAAO,MAAM,8BAA8B;;mBAEzC,CAAC"}
@@ -0,0 +1,6 @@
1
+ import z from "zod";
2
+ import { EnvRecordSchema } from "../../record/lib/schema.js";
3
+ export const ImportMetaRuntimeGlobalsSchema = z.object({
4
+ __IMPORT_META_ENV__: EnvRecordSchema.optional(),
5
+ });
6
+ //# sourceMappingURL=schema.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"schema.js","sourceRoot":"","sources":["../../../../src/runtime/import-meta/lib/schema.ts"],"names":[],"mappings":"AAAA,OAAO,CAAC,MAAM,KAAK,CAAC;AAEpB,OAAO,EAAE,eAAe,EAAE,MAAM,4BAA4B,CAAC;AAE7D,MAAM,CAAC,MAAM,8BAA8B,GAAG,CAAC,CAAC,MAAM,CAAC;IACrD,mBAAmB,EAAE,eAAe,CAAC,QAAQ,EAAE;CAChD,CAAC,CAAC"}
@@ -0,0 +1,25 @@
1
+ import type { EnvKeys, EnvRecord } from "../../lib/types.js";
2
+ /**
3
+ * Creates a typed environment object from a Netlify env-like object.
4
+ *
5
+ * Use this for Netlify Functions or Edge Functions when you want to validate an
6
+ * explicit env object, such as `process.env` or a platform-provided context.
7
+ *
8
+ * @example
9
+ * ```ts
10
+ * import { createNetlifyEnv } from "@tmrp/env/netlify";
11
+ * import z from "zod";
12
+ *
13
+ * const env = createNetlifyEnv(
14
+ * { API_URL: z.url() },
15
+ * process.env
16
+ * );
17
+ * ```
18
+ *
19
+ * @param envKeys Environment variable names mapped to Zod schemas.
20
+ * @param env Netlify env object to read values from.
21
+ * @returns A strongly typed object inferred from `envKeys`.
22
+ * @throws When a configured value is missing or fails validation.
23
+ */
24
+ export declare function createNetlifyEnv<const TEnvKeys extends EnvKeys>(envKeys: TEnvKeys, env: EnvRecord): import("../../lib/types.js").Env<TEnvKeys>;
25
+ //# sourceMappingURL=create-netlify-env.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"create-netlify-env.d.ts","sourceRoot":"","sources":["../../../src/runtime/netlify/create-netlify-env.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAC;AAI7D;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,wBAAgB,gBAAgB,CAAC,KAAK,CAAC,QAAQ,SAAS,OAAO,EAC7D,OAAO,EAAE,QAAQ,EACjB,GAAG,EAAE,SAAS,8CAGf"}
@@ -0,0 +1,27 @@
1
+ import { createRecordEnv } from "../record/create-record-env.js";
2
+ /**
3
+ * Creates a typed environment object from a Netlify env-like object.
4
+ *
5
+ * Use this for Netlify Functions or Edge Functions when you want to validate an
6
+ * explicit env object, such as `process.env` or a platform-provided context.
7
+ *
8
+ * @example
9
+ * ```ts
10
+ * import { createNetlifyEnv } from "@tmrp/env/netlify";
11
+ * import z from "zod";
12
+ *
13
+ * const env = createNetlifyEnv(
14
+ * { API_URL: z.url() },
15
+ * process.env
16
+ * );
17
+ * ```
18
+ *
19
+ * @param envKeys Environment variable names mapped to Zod schemas.
20
+ * @param env Netlify env object to read values from.
21
+ * @returns A strongly typed object inferred from `envKeys`.
22
+ * @throws When a configured value is missing or fails validation.
23
+ */
24
+ export function createNetlifyEnv(envKeys, env) {
25
+ return createRecordEnv(envKeys, env);
26
+ }
27
+ //# sourceMappingURL=create-netlify-env.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"create-netlify-env.js","sourceRoot":"","sources":["../../../src/runtime/netlify/create-netlify-env.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,eAAe,EAAE,MAAM,gCAAgC,CAAC;AAEjE;;;;;;;;;;;;;;;;;;;;;GAqBG;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 readNetlifyEnv: (env: string) => string | undefined;
2
+ //# sourceMappingURL=read-netlify-env.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"read-netlify-env.d.ts","sourceRoot":"","sources":["../../../../src/runtime/netlify/lib/read-netlify-env.ts"],"names":[],"mappings":"AAGA,eAAO,MAAM,cAAc,GAAI,KAAK,MAAM,uBAczC,CAAC"}
@@ -0,0 +1,14 @@
1
+ import { readNodeEnv } from "../../node/lib/read-node-env.js";
2
+ import { NetlifyRuntimeGlobalsSchema } from "./schema.js";
3
+ export const readNetlifyEnv = (env) => {
4
+ const netlifyGlobalScope = NetlifyRuntimeGlobalsSchema.safeParse(globalThis);
5
+ if (!netlifyGlobalScope.success) {
6
+ return undefined;
7
+ }
8
+ const netlifyRuntimeGlobals = netlifyGlobalScope.data;
9
+ if (!netlifyRuntimeGlobals.process?.env.NETLIFY) {
10
+ return undefined;
11
+ }
12
+ return readNodeEnv(env);
13
+ };
14
+ //# sourceMappingURL=read-netlify-env.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"read-netlify-env.js","sourceRoot":"","sources":["../../../../src/runtime/netlify/lib/read-netlify-env.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,iCAAiC,CAAC;AAC9D,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;IAEtD,IAAI,CAAC,qBAAqB,CAAC,OAAO,EAAE,GAAG,CAAC,OAAO,EAAE,CAAC;QAChD,OAAO,SAAS,CAAC;IACnB,CAAC;IAED,OAAO,WAAW,CAAC,GAAG,CAAC,CAAC;AAC1B,CAAC,CAAC"}
@@ -0,0 +1,9 @@
1
+ import z from "zod";
2
+ export declare const NetlifyRuntimeGlobalsSchema: z.ZodObject<{
3
+ process: z.ZodOptional<z.ZodObject<{
4
+ env: z.ZodObject<{
5
+ NETLIFY: z.ZodOptional<z.ZodString>;
6
+ }, z.z.core.$loose>;
7
+ }, z.z.core.$strip>>;
8
+ }, z.z.core.$strip>;
9
+ //# sourceMappingURL=schema.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"schema.d.ts","sourceRoot":"","sources":["../../../../src/runtime/netlify/lib/schema.ts"],"names":[],"mappings":"AAAA,OAAO,CAAC,MAAM,KAAK,CAAC;AAEpB,eAAO,MAAM,2BAA2B;;;;;;mBAUtC,CAAC"}
@@ -0,0 +1,13 @@
1
+ import z from "zod";
2
+ export const NetlifyRuntimeGlobalsSchema = z.object({
3
+ process: z
4
+ .object({
5
+ env: z
6
+ .object({
7
+ NETLIFY: z.string().optional(),
8
+ })
9
+ .passthrough(),
10
+ })
11
+ .optional(),
12
+ });
13
+ //# sourceMappingURL=schema.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"schema.js","sourceRoot":"","sources":["../../../../src/runtime/netlify/lib/schema.ts"],"names":[],"mappings":"AAAA,OAAO,CAAC,MAAM,KAAK,CAAC;AAEpB,MAAM,CAAC,MAAM,2BAA2B,GAAG,CAAC,CAAC,MAAM,CAAC;IAClD,OAAO,EAAE,CAAC;SACP,MAAM,CAAC;QACN,GAAG,EAAE,CAAC;aACH,MAAM,CAAC;YACN,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;SAC/B,CAAC;aACD,WAAW,EAAE;KACjB,CAAC;SACD,QAAQ,EAAE;CACd,CAAC,CAAC"}
@@ -0,0 +1,27 @@
1
+ import type { EnvKeys } from "../../lib/types.js";
2
+ /**
3
+ * Creates a typed environment object from Node.js `process.env`.
4
+ *
5
+ * Use this entry point when your application is expected to run in Node. If you
6
+ * load environment variables from a `.env` file, import your dotenv loader before
7
+ * calling this function.
8
+ *
9
+ * @example
10
+ * ```ts
11
+ * import "dotenv/config";
12
+ *
13
+ * import { createNodeEnv } from "@tmrp/env/node";
14
+ * import z from "zod";
15
+ *
16
+ * const env = createNodeEnv({
17
+ * DATABASE_URL: z.url(),
18
+ * PORT: z.coerce.number().int().positive(),
19
+ * });
20
+ * ```
21
+ *
22
+ * @param envKeys Environment variable names mapped to Zod schemas.
23
+ * @returns A strongly typed object inferred from `envKeys`.
24
+ * @throws When a configured variable is missing or fails validation.
25
+ */
26
+ export declare function createNodeEnv<const TEnvKeys extends EnvKeys>(envKeys: TEnvKeys): import("../../lib/types.js").Env<TEnvKeys>;
27
+ //# sourceMappingURL=create-node-env.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"create-node-env.d.ts","sourceRoot":"","sources":["../../../src/runtime/node/create-node-env.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,oBAAoB,CAAC;AAMlD;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AACH,wBAAgB,aAAa,CAAC,KAAK,CAAC,QAAQ,SAAS,OAAO,EAC1D,OAAO,EAAE,QAAQ,8CAGlB"}
@@ -0,0 +1,31 @@
1
+ import { createEnvEffect } from "../../effects/create-env-effect.js";
2
+ import { readEnvEffect } from "../../effects/read-env-effect.js";
3
+ import { NodeRuntimeGlobalsSchema } from "./lib/schema.js";
4
+ /**
5
+ * Creates a typed environment object from Node.js `process.env`.
6
+ *
7
+ * Use this entry point when your application is expected to run in Node. If you
8
+ * load environment variables from a `.env` file, import your dotenv loader before
9
+ * calling this function.
10
+ *
11
+ * @example
12
+ * ```ts
13
+ * import "dotenv/config";
14
+ *
15
+ * import { createNodeEnv } from "@tmrp/env/node";
16
+ * import z from "zod";
17
+ *
18
+ * const env = createNodeEnv({
19
+ * DATABASE_URL: z.url(),
20
+ * PORT: z.coerce.number().int().positive(),
21
+ * });
22
+ * ```
23
+ *
24
+ * @param envKeys Environment variable names mapped to Zod schemas.
25
+ * @returns A strongly typed object inferred from `envKeys`.
26
+ * @throws When a configured variable is missing or fails validation.
27
+ */
28
+ export function createNodeEnv(envKeys) {
29
+ return createEnvEffect(envKeys, NodeRuntimeGlobalsSchema, readEnvEffect);
30
+ }
31
+ //# sourceMappingURL=create-node-env.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"create-node-env.js","sourceRoot":"","sources":["../../../src/runtime/node/create-node-env.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,eAAe,EAAE,MAAM,oCAAoC,CAAC;AACrE,OAAO,EAAE,aAAa,EAAE,MAAM,kCAAkC,CAAC;AACjE,OAAO,EAAE,wBAAwB,EAAE,MAAM,iBAAiB,CAAC;AAE3D;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AACH,MAAM,UAAU,aAAa,CAC3B,OAAiB;IAEjB,OAAO,eAAe,CAAC,OAAO,EAAE,wBAAwB,EAAE,aAAa,CAAC,CAAC;AAC3E,CAAC"}
@@ -0,0 +1,2 @@
1
+ export declare const readNodeEnv: (env: string) => string | undefined;
2
+ //# sourceMappingURL=read-node-env.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"read-node-env.d.ts","sourceRoot":"","sources":["../../../../src/runtime/node/lib/read-node-env.ts"],"names":[],"mappings":"AAEA,eAAO,MAAM,WAAW,GAAI,KAAK,MAAM,uBActC,CAAC"}
@@ -0,0 +1,13 @@
1
+ import { NodeRuntimeGlobalsSchema } from "./schema.js";
2
+ export const readNodeEnv = (env) => {
3
+ const nodeGlobalScope = NodeRuntimeGlobalsSchema.safeParse(globalThis);
4
+ if (!nodeGlobalScope.success) {
5
+ return undefined;
6
+ }
7
+ const nodeRuntimeGlobals = nodeGlobalScope.data;
8
+ if (!nodeRuntimeGlobals.process) {
9
+ return undefined;
10
+ }
11
+ return nodeRuntimeGlobals.process.env?.[env]?.trim() ?? undefined;
12
+ };
13
+ //# sourceMappingURL=read-node-env.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"read-node-env.js","sourceRoot":"","sources":["../../../../src/runtime/node/lib/read-node-env.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,wBAAwB,EAAE,MAAM,aAAa,CAAC;AAEvD,MAAM,CAAC,MAAM,WAAW,GAAG,CAAC,GAAW,EAAE,EAAE;IACzC,MAAM,eAAe,GAAG,wBAAwB,CAAC,SAAS,CAAC,UAAU,CAAC,CAAC;IAEvE,IAAI,CAAC,eAAe,CAAC,OAAO,EAAE,CAAC;QAC7B,OAAO,SAAS,CAAC;IACnB,CAAC;IAED,MAAM,kBAAkB,GAAG,eAAe,CAAC,IAAI,CAAC;IAEhD,IAAI,CAAC,kBAAkB,CAAC,OAAO,EAAE,CAAC;QAChC,OAAO,SAAS,CAAC;IACnB,CAAC;IAED,OAAO,kBAAkB,CAAC,OAAO,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,EAAE,IAAI,EAAE,IAAI,SAAS,CAAC;AACpE,CAAC,CAAC"}
@@ -0,0 +1,7 @@
1
+ import z from "zod";
2
+ export declare const NodeRuntimeGlobalsSchema: z.ZodObject<{
3
+ process: z.ZodOptional<z.ZodObject<{
4
+ env: z.ZodCustom<NodeJS.ProcessEnv, NodeJS.ProcessEnv>;
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/node/lib/schema.ts"],"names":[],"mappings":"AAAA,OAAO,CAAC,MAAM,KAAK,CAAC;AAEpB,eAAO,MAAM,wBAAwB;;;;mBAQnC,CAAC"}
@@ -0,0 +1,9 @@
1
+ import z from "zod";
2
+ export const NodeRuntimeGlobalsSchema = z.object({
3
+ process: z
4
+ .object({
5
+ env: z.custom((value) => value !== null && typeof value === "object"),
6
+ })
7
+ .optional(),
8
+ });
9
+ //# sourceMappingURL=schema.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"schema.js","sourceRoot":"","sources":["../../../../src/runtime/node/lib/schema.ts"],"names":[],"mappings":"AAAA,OAAO,CAAC,MAAM,KAAK,CAAC;AAEpB,MAAM,CAAC,MAAM,wBAAwB,GAAG,CAAC,CAAC,MAAM,CAAC;IAC/C,OAAO,EAAE,CAAC;SACP,MAAM,CAAC;QACN,GAAG,EAAE,CAAC,CAAC,MAAM,CACX,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,KAAK,IAAI,IAAI,OAAO,KAAK,KAAK,QAAQ,CACvD;KACF,CAAC;SACD,QAAQ,EAAE;CACd,CAAC,CAAC"}
@@ -0,0 +1,29 @@
1
+ import type { Env, EnvKeys, EnvRecord } from "../../lib/types.js";
2
+ /**
3
+ * Creates a typed environment object from any explicit object.
4
+ *
5
+ * Use this when environment values are passed to your code rather than exposed
6
+ * through a runtime global. String values are trimmed before validation;
7
+ * non-string values are passed directly to Zod.
8
+ *
9
+ * @example
10
+ * ```ts
11
+ * import { createRecordEnv } from "@tmrp/env/record";
12
+ * import z from "zod";
13
+ *
14
+ * const env = createRecordEnv(
15
+ * {
16
+ * API_URL: z.url(),
17
+ * FEATURE_ENABLED: z.coerce.boolean(),
18
+ * },
19
+ * runtimeEnv
20
+ * );
21
+ * ```
22
+ *
23
+ * @param envKeys Environment variable names mapped to Zod schemas.
24
+ * @param record Object to read values from.
25
+ * @returns A strongly typed object inferred from `envKeys`.
26
+ * @throws When a configured value is missing or fails validation.
27
+ */
28
+ export declare function createRecordEnv<const TEnvKeys extends EnvKeys>(envKeys: TEnvKeys, record: EnvRecord): Env<TEnvKeys>;
29
+ //# sourceMappingURL=create-record-env.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"create-record-env.d.ts","sourceRoot":"","sources":["../../../src/runtime/record/create-record-env.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,GAAG,EAAE,OAAO,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAC;AAMlE;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AACH,wBAAgB,eAAe,CAAC,KAAK,CAAC,QAAQ,SAAS,OAAO,EAC5D,OAAO,EAAE,QAAQ,EACjB,MAAM,EAAE,SAAS,GAWH,GAAG,CAAC,QAAQ,CAAC,CAC5B"}
@@ -0,0 +1,35 @@
1
+ import { Effect } from "effect";
2
+ import { envParseValueEffect } from "../../effects/env-parse-value-effect.js";
3
+ import { envReadValueEffect } from "../../effects/env-read-value-effect.js";
4
+ import { readRecordEnv } from "./lib/read-record-env.js";
5
+ /**
6
+ * Creates a typed environment object from any explicit object.
7
+ *
8
+ * Use this when environment values are passed to your code rather than exposed
9
+ * through a runtime global. String values are trimmed before validation;
10
+ * non-string values are passed directly to Zod.
11
+ *
12
+ * @example
13
+ * ```ts
14
+ * import { createRecordEnv } from "@tmrp/env/record";
15
+ * import z from "zod";
16
+ *
17
+ * const env = createRecordEnv(
18
+ * {
19
+ * API_URL: z.url(),
20
+ * FEATURE_ENABLED: z.coerce.boolean(),
21
+ * },
22
+ * runtimeEnv
23
+ * );
24
+ * ```
25
+ *
26
+ * @param envKeys Environment variable names mapped to Zod schemas.
27
+ * @param record Object to read values from.
28
+ * @returns A strongly typed object inferred from `envKeys`.
29
+ * @throws When a configured value is missing or fails validation.
30
+ */
31
+ export function createRecordEnv(envKeys, record) {
32
+ const env = Effect.runSync(Effect.forEach(Object.entries(envKeys), ([key, schema]) => envReadValueEffect(key, (env) => readRecordEnv(env, record)).pipe(Effect.flatMap((value) => envParseValueEffect(key, schema, value)), Effect.map((value) => [key, value]))).pipe(Effect.map((entries) => Object.fromEntries(entries))));
33
+ return env;
34
+ }
35
+ //# sourceMappingURL=create-record-env.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"create-record-env.js","sourceRoot":"","sources":["../../../src/runtime/record/create-record-env.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAIhC,OAAO,EAAE,mBAAmB,EAAE,MAAM,yCAAyC,CAAC;AAC9E,OAAO,EAAE,kBAAkB,EAAE,MAAM,wCAAwC,CAAC;AAC5E,OAAO,EAAE,aAAa,EAAE,MAAM,0BAA0B,CAAC;AAEzD;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AACH,MAAM,UAAU,eAAe,CAC7B,OAAiB,EACjB,MAAiB;IAEjB,MAAM,GAAG,GAAG,MAAM,CAAC,OAAO,CACxB,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,GAAG,EAAE,MAAM,CAAC,EAAE,EAAE,CACxD,kBAAkB,CAAC,GAAG,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,aAAa,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC,CAAC,IAAI,CAC/D,MAAM,CAAC,OAAO,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,mBAAmB,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,CAAC,CAAC,EAClE,MAAM,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,GAAG,EAAE,KAAK,CAAU,CAAC,CAC7C,CACF,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,MAAM,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC,CAAC,CAC7D,CAAC;IAEF,OAAO,GAAoB,CAAC;AAC9B,CAAC"}
@@ -0,0 +1,3 @@
1
+ import type { EnvRecord } from "../../../lib/types.js";
2
+ export declare const readRecordEnv: (env: string, record: EnvRecord) => {} | undefined;
3
+ //# sourceMappingURL=read-record-env.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"read-record-env.d.ts","sourceRoot":"","sources":["../../../../src/runtime/record/lib/read-record-env.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,uBAAuB,CAAC;AAEvD,eAAO,MAAM,aAAa,GAAI,KAAK,MAAM,EAAE,QAAQ,SAAS,mBAQ3D,CAAC"}
@@ -0,0 +1,8 @@
1
+ export const readRecordEnv = (env, record) => {
2
+ const value = record[env];
3
+ if (typeof value === "string") {
4
+ return value.trim();
5
+ }
6
+ return value ?? undefined;
7
+ };
8
+ //# sourceMappingURL=read-record-env.js.map