@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.
- package/LICENSE +21 -0
- package/README.md +517 -0
- package/dist/create-env.d.ts +31 -0
- package/dist/create-env.d.ts.map +1 -0
- package/dist/create-env.js +35 -0
- package/dist/create-env.js.map +1 -0
- package/dist/effects/create-env-effect.d.ts +4 -0
- package/dist/effects/create-env-effect.d.ts.map +1 -0
- package/dist/effects/create-env-effect.js +8 -0
- package/dist/effects/create-env-effect.js.map +1 -0
- package/dist/effects/env-parse-value-effect.d.ts +4 -0
- package/dist/effects/env-parse-value-effect.d.ts.map +1 -0
- package/dist/effects/env-parse-value-effect.js +8 -0
- package/dist/effects/env-parse-value-effect.js.map +1 -0
- package/dist/effects/env-read-value-effect.d.ts +6 -0
- package/dist/effects/env-read-value-effect.d.ts.map +1 -0
- package/dist/effects/env-read-value-effect.js +3 -0
- package/dist/effects/env-read-value-effect.js.map +1 -0
- package/dist/effects/get-runtime-global-scope-effect.d.ts +26 -0
- package/dist/effects/get-runtime-global-scope-effect.d.ts.map +1 -0
- package/dist/effects/get-runtime-global-scope-effect.js +13 -0
- package/dist/effects/get-runtime-global-scope-effect.js.map +1 -0
- package/dist/effects/read-env-effect.d.ts +5 -0
- package/dist/effects/read-env-effect.d.ts.map +1 -0
- package/dist/effects/read-env-effect.js +42 -0
- package/dist/effects/read-env-effect.js.map +1 -0
- package/dist/index.d.ts +2 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +2 -0
- package/dist/index.js.map +1 -0
- package/dist/lib/read-env.d.ts +18 -0
- package/dist/lib/read-env.d.ts.map +1 -0
- package/dist/lib/read-env.js +65 -0
- package/dist/lib/read-env.js.map +1 -0
- package/dist/lib/schema.d.ts +26 -0
- package/dist/lib/schema.d.ts.map +1 -0
- package/dist/lib/schema.js +22 -0
- package/dist/lib/schema.js.map +1 -0
- package/dist/lib/types.d.ts +7 -0
- package/dist/lib/types.d.ts.map +1 -0
- package/dist/lib/types.js +2 -0
- package/dist/lib/types.js.map +1 -0
- package/dist/runtime/browser/create-browser-env.d.ts +26 -0
- package/dist/runtime/browser/create-browser-env.d.ts.map +1 -0
- package/dist/runtime/browser/create-browser-env.js +28 -0
- package/dist/runtime/browser/create-browser-env.js.map +1 -0
- package/dist/runtime/browser/lib/read-browser-env.d.ts +2 -0
- package/dist/runtime/browser/lib/read-browser-env.d.ts.map +1 -0
- package/dist/runtime/browser/lib/read-browser-env.js +15 -0
- package/dist/runtime/browser/lib/read-browser-env.js.map +1 -0
- package/dist/runtime/browser/lib/schema.d.ts +6 -0
- package/dist/runtime/browser/lib/schema.d.ts.map +1 -0
- package/dist/runtime/browser/lib/schema.js +7 -0
- package/dist/runtime/browser/lib/schema.js.map +1 -0
- package/dist/runtime/bun/create-bun-env.d.ts +24 -0
- package/dist/runtime/bun/create-bun-env.d.ts.map +1 -0
- package/dist/runtime/bun/create-bun-env.js +28 -0
- package/dist/runtime/bun/create-bun-env.js.map +1 -0
- package/dist/runtime/bun/lib/read-bun-env.d.ts +2 -0
- package/dist/runtime/bun/lib/read-bun-env.d.ts.map +1 -0
- package/dist/runtime/bun/lib/read-bun-env.js +14 -0
- package/dist/runtime/bun/lib/read-bun-env.js.map +1 -0
- package/dist/runtime/bun/lib/schema.d.ts +7 -0
- package/dist/runtime/bun/lib/schema.d.ts.map +1 -0
- package/dist/runtime/bun/lib/schema.js +9 -0
- package/dist/runtime/bun/lib/schema.js.map +1 -0
- package/dist/runtime/cloudflare/create-cloudflare-env.d.ts +32 -0
- package/dist/runtime/cloudflare/create-cloudflare-env.d.ts.map +1 -0
- package/dist/runtime/cloudflare/create-cloudflare-env.js +34 -0
- package/dist/runtime/cloudflare/create-cloudflare-env.js.map +1 -0
- package/dist/runtime/cloudflare/lib/read-cloudflare-env.d.ts +2 -0
- package/dist/runtime/cloudflare/lib/read-cloudflare-env.d.ts.map +1 -0
- package/dist/runtime/cloudflare/lib/read-cloudflare-env.js +14 -0
- package/dist/runtime/cloudflare/lib/read-cloudflare-env.js.map +1 -0
- package/dist/runtime/cloudflare/lib/schema.d.ts +5 -0
- package/dist/runtime/cloudflare/lib/schema.d.ts.map +1 -0
- package/dist/runtime/cloudflare/lib/schema.js +6 -0
- package/dist/runtime/cloudflare/lib/schema.js.map +1 -0
- package/dist/runtime/deno/create-deno-env.d.ts +23 -0
- package/dist/runtime/deno/create-deno-env.d.ts.map +1 -0
- package/dist/runtime/deno/create-deno-env.js +27 -0
- package/dist/runtime/deno/create-deno-env.js.map +1 -0
- package/dist/runtime/deno/lib/read-deno-env.d.ts +2 -0
- package/dist/runtime/deno/lib/read-deno-env.d.ts.map +1 -0
- package/dist/runtime/deno/lib/read-deno-env.js +13 -0
- package/dist/runtime/deno/lib/read-deno-env.js.map +1 -0
- package/dist/runtime/deno/lib/schema.d.ts +9 -0
- package/dist/runtime/deno/lib/schema.d.ts.map +1 -0
- package/dist/runtime/deno/lib/schema.js +14 -0
- package/dist/runtime/deno/lib/schema.js.map +1 -0
- package/dist/runtime/import-meta/create-import-meta-env.d.ts +28 -0
- package/dist/runtime/import-meta/create-import-meta-env.d.ts.map +1 -0
- package/dist/runtime/import-meta/create-import-meta-env.js +30 -0
- package/dist/runtime/import-meta/create-import-meta-env.js.map +1 -0
- package/dist/runtime/import-meta/lib/read-import-meta-env.d.ts +2 -0
- package/dist/runtime/import-meta/lib/read-import-meta-env.d.ts.map +1 -0
- package/dist/runtime/import-meta/lib/read-import-meta-env.js +14 -0
- package/dist/runtime/import-meta/lib/read-import-meta-env.js.map +1 -0
- package/dist/runtime/import-meta/lib/schema.d.ts +5 -0
- package/dist/runtime/import-meta/lib/schema.d.ts.map +1 -0
- package/dist/runtime/import-meta/lib/schema.js +6 -0
- package/dist/runtime/import-meta/lib/schema.js.map +1 -0
- package/dist/runtime/netlify/create-netlify-env.d.ts +25 -0
- package/dist/runtime/netlify/create-netlify-env.d.ts.map +1 -0
- package/dist/runtime/netlify/create-netlify-env.js +27 -0
- package/dist/runtime/netlify/create-netlify-env.js.map +1 -0
- package/dist/runtime/netlify/lib/read-netlify-env.d.ts +2 -0
- package/dist/runtime/netlify/lib/read-netlify-env.d.ts.map +1 -0
- package/dist/runtime/netlify/lib/read-netlify-env.js +14 -0
- package/dist/runtime/netlify/lib/read-netlify-env.js.map +1 -0
- package/dist/runtime/netlify/lib/schema.d.ts +9 -0
- package/dist/runtime/netlify/lib/schema.d.ts.map +1 -0
- package/dist/runtime/netlify/lib/schema.js +13 -0
- package/dist/runtime/netlify/lib/schema.js.map +1 -0
- package/dist/runtime/node/create-node-env.d.ts +27 -0
- package/dist/runtime/node/create-node-env.d.ts.map +1 -0
- package/dist/runtime/node/create-node-env.js +31 -0
- package/dist/runtime/node/create-node-env.js.map +1 -0
- package/dist/runtime/node/lib/read-node-env.d.ts +2 -0
- package/dist/runtime/node/lib/read-node-env.d.ts.map +1 -0
- package/dist/runtime/node/lib/read-node-env.js +13 -0
- package/dist/runtime/node/lib/read-node-env.js.map +1 -0
- package/dist/runtime/node/lib/schema.d.ts +7 -0
- package/dist/runtime/node/lib/schema.d.ts.map +1 -0
- package/dist/runtime/node/lib/schema.js +9 -0
- package/dist/runtime/node/lib/schema.js.map +1 -0
- package/dist/runtime/record/create-record-env.d.ts +29 -0
- package/dist/runtime/record/create-record-env.d.ts.map +1 -0
- package/dist/runtime/record/create-record-env.js +35 -0
- package/dist/runtime/record/create-record-env.js.map +1 -0
- package/dist/runtime/record/lib/read-record-env.d.ts +3 -0
- package/dist/runtime/record/lib/read-record-env.d.ts.map +1 -0
- package/dist/runtime/record/lib/read-record-env.js +8 -0
- package/dist/runtime/record/lib/read-record-env.js.map +1 -0
- package/dist/runtime/record/lib/schema.d.ts +3 -0
- package/dist/runtime/record/lib/schema.d.ts.map +1 -0
- package/dist/runtime/record/lib/schema.js +3 -0
- package/dist/runtime/record/lib/schema.js.map +1 -0
- package/dist/runtime/vercel/create-vercel-edge-env.d.ts +26 -0
- package/dist/runtime/vercel/create-vercel-edge-env.d.ts.map +1 -0
- package/dist/runtime/vercel/create-vercel-edge-env.js +28 -0
- package/dist/runtime/vercel/create-vercel-edge-env.js.map +1 -0
- package/dist/runtime/vercel/lib/read-vercel-edge-env.d.ts +2 -0
- package/dist/runtime/vercel/lib/read-vercel-edge-env.d.ts.map +1 -0
- package/dist/runtime/vercel/lib/read-vercel-edge-env.js +14 -0
- package/dist/runtime/vercel/lib/read-vercel-edge-env.js.map +1 -0
- package/dist/runtime/vercel/lib/schema.d.ts +5 -0
- package/dist/runtime/vercel/lib/schema.d.ts.map +1 -0
- package/dist/runtime/vercel/lib/schema.js +5 -0
- package/dist/runtime/vercel/lib/schema.js.map +1 -0
- 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 @@
|
|
|
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"}
|
package/dist/index.d.ts
ADDED
|
@@ -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 @@
|
|
|
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 @@
|
|
|
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 @@
|
|
|
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 @@
|
|
|
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 @@
|
|
|
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 @@
|
|
|
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 @@
|
|
|
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 @@
|
|
|
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"}
|