@vite-env/core 0.5.2 → 0.5.4
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/README.md +1 -1
- package/dist/config.cjs +1 -1
- package/dist/config.cjs.map +1 -1
- package/dist/config.d.cts +1 -1
- package/dist/config.d.mts +1 -1
- package/dist/config.mjs.map +1 -1
- package/dist/{dts-7Msbe5Qo.cjs → dts-BX0Cnqo-.cjs} +33 -8
- package/dist/dts-BX0Cnqo-.cjs.map +1 -0
- package/dist/dts.cjs +1 -1
- package/dist/dts.d.cts +1 -1
- package/dist/dts.d.mts +1 -1
- package/dist/dts.mjs +30 -5
- package/dist/dts.mjs.map +1 -1
- package/dist/format.cjs.map +1 -1
- package/dist/format.d.cts +1 -1
- package/dist/format.d.mts +1 -1
- package/dist/format.mjs.map +1 -1
- package/dist/index.d.cts +1 -1
- package/dist/index.d.mts +1 -1
- package/dist/leak.d.cts +1 -1
- package/dist/leak.d.mts +1 -1
- package/dist/plugin.cjs +4 -4
- package/dist/plugin.cjs.map +1 -1
- package/dist/plugin.mjs.map +1 -1
- package/dist/presets/index.cjs +71 -62
- package/dist/presets/index.cjs.map +1 -1
- package/dist/presets/index.d.cts +3 -0
- package/dist/presets/index.d.mts +3 -0
- package/dist/presets/index.mjs +70 -61
- package/dist/presets/index.mjs.map +1 -1
- package/dist/schema.cjs +6 -1
- package/dist/schema.cjs.map +1 -1
- package/dist/schema.d.cts +2 -2
- package/dist/schema.d.mts +2 -2
- package/dist/schema.mjs +5 -0
- package/dist/schema.mjs.map +1 -1
- package/dist/standard.d.cts +1 -1
- package/dist/standard.d.mts +1 -1
- package/dist/{types-CpYkRwLM.d.cts → types-B61nsO8q.d.cts} +13 -1
- package/dist/{types--Km3TAdJ.d.mts → types-KniR_Oqf.d.mts} +13 -1
- package/package.json +18 -17
- package/LICENSE +0 -21
- package/dist/dts-7Msbe5Qo.cjs.map +0 -1
package/dist/presets/index.cjs
CHANGED
|
@@ -1,72 +1,81 @@
|
|
|
1
1
|
Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
|
|
2
|
-
require("../dts-
|
|
2
|
+
require("../dts-BX0Cnqo-.cjs");
|
|
3
3
|
let zod = require("zod");
|
|
4
4
|
//#region src/presets/netlify.ts
|
|
5
|
-
const netlify = {
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
5
|
+
const netlify = {
|
|
6
|
+
server: {
|
|
7
|
+
NETLIFY: zod.z.enum(["true"]),
|
|
8
|
+
BUILD_ID: zod.z.string().min(1),
|
|
9
|
+
CONTEXT: zod.z.enum([
|
|
10
|
+
"production",
|
|
11
|
+
"deploy-preview",
|
|
12
|
+
"branch-deploy",
|
|
13
|
+
"dev"
|
|
14
|
+
]),
|
|
15
|
+
DEPLOY_ID: zod.z.string().min(1),
|
|
16
|
+
DEPLOY_URL: zod.z.url(),
|
|
17
|
+
DEPLOY_PRIME_URL: zod.z.url(),
|
|
18
|
+
URL: zod.z.url(),
|
|
19
|
+
BRANCH: zod.z.string().min(1),
|
|
20
|
+
COMMIT_REF: zod.z.string().min(1),
|
|
21
|
+
PULL_REQUEST: zod.z.enum(["true"]).optional(),
|
|
22
|
+
REVIEW_ID: zod.z.string().optional(),
|
|
23
|
+
REPOSITORY_URL: zod.z.url().optional(),
|
|
24
|
+
INCOMING_HOOK_TITLE: zod.z.string().optional(),
|
|
25
|
+
INCOMING_HOOK_URL: zod.z.url().optional()
|
|
26
|
+
},
|
|
27
|
+
detect: (env) => env.NETLIFY === "true"
|
|
28
|
+
};
|
|
26
29
|
//#endregion
|
|
27
30
|
//#region src/presets/railway.ts
|
|
28
|
-
const railway = {
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
31
|
+
const railway = {
|
|
32
|
+
server: {
|
|
33
|
+
RAILWAY_ENVIRONMENT_ID: zod.z.string().min(1),
|
|
34
|
+
RAILWAY_ENVIRONMENT_NAME: zod.z.string().min(1),
|
|
35
|
+
RAILWAY_SERVICE_ID: zod.z.string().min(1),
|
|
36
|
+
RAILWAY_SERVICE_NAME: zod.z.string().min(1),
|
|
37
|
+
RAILWAY_PROJECT_ID: zod.z.string().min(1),
|
|
38
|
+
RAILWAY_PROJECT_NAME: zod.z.string().min(1),
|
|
39
|
+
RAILWAY_DEPLOYMENT_ID: zod.z.string().min(1),
|
|
40
|
+
RAILWAY_REPLICA_ID: zod.z.string().optional(),
|
|
41
|
+
RAILWAY_GIT_COMMIT_SHA: zod.z.string().optional(),
|
|
42
|
+
RAILWAY_GIT_BRANCH: zod.z.string().optional(),
|
|
43
|
+
RAILWAY_GIT_REPO_NAME: zod.z.string().optional(),
|
|
44
|
+
RAILWAY_GIT_REPO_OWNER: zod.z.string().optional(),
|
|
45
|
+
RAILWAY_PUBLIC_DOMAIN: zod.z.string().min(1).optional(),
|
|
46
|
+
RAILWAY_PRIVATE_DOMAIN: zod.z.string().min(1).optional(),
|
|
47
|
+
RAILWAY_TCP_PROXY_DOMAIN: zod.z.string().min(1).optional(),
|
|
48
|
+
RAILWAY_TCP_PROXY_PORT: zod.z.coerce.number().int().min(1).max(65535).optional()
|
|
49
|
+
},
|
|
50
|
+
detect: (env) => !!env.RAILWAY_ENVIRONMENT_ID
|
|
51
|
+
};
|
|
46
52
|
//#endregion
|
|
47
53
|
//#region src/presets/vercel.ts
|
|
48
|
-
const vercel = {
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
54
|
+
const vercel = {
|
|
55
|
+
server: {
|
|
56
|
+
VERCEL: zod.z.enum(["1"]),
|
|
57
|
+
VERCEL_ENV: zod.z.enum([
|
|
58
|
+
"production",
|
|
59
|
+
"preview",
|
|
60
|
+
"development"
|
|
61
|
+
]),
|
|
62
|
+
VERCEL_URL: zod.z.string().min(1),
|
|
63
|
+
VERCEL_BRANCH_URL: zod.z.string().min(1).optional(),
|
|
64
|
+
VERCEL_PROJECT_PRODUCTION_URL: zod.z.string().min(1),
|
|
65
|
+
VERCEL_DEPLOYMENT_ID: zod.z.string().min(1),
|
|
66
|
+
VERCEL_REGION: zod.z.string().optional(),
|
|
67
|
+
VERCEL_GIT_PROVIDER: zod.z.string().optional(),
|
|
68
|
+
VERCEL_GIT_REPO_SLUG: zod.z.string().optional(),
|
|
69
|
+
VERCEL_GIT_REPO_OWNER: zod.z.string().optional(),
|
|
70
|
+
VERCEL_GIT_COMMIT_REF: zod.z.string().optional(),
|
|
71
|
+
VERCEL_GIT_COMMIT_SHA: zod.z.string().optional(),
|
|
72
|
+
VERCEL_GIT_COMMIT_MESSAGE: zod.z.string().optional(),
|
|
73
|
+
VERCEL_GIT_COMMIT_AUTHOR_LOGIN: zod.z.string().optional(),
|
|
74
|
+
VERCEL_GIT_PULL_REQUEST_ID: zod.z.string().optional(),
|
|
75
|
+
VERCEL_SKEW_PROTECTION_ENABLED: zod.z.enum(["1"]).optional()
|
|
76
|
+
},
|
|
77
|
+
detect: (env) => env.VERCEL === "1"
|
|
78
|
+
};
|
|
70
79
|
//#endregion
|
|
71
80
|
exports.netlify = netlify;
|
|
72
81
|
exports.railway = railway;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.cjs","names":["z","z","z"],"sources":["../../src/presets/netlify.ts","../../src/presets/railway.ts","../../src/presets/vercel.ts"],"sourcesContent":["import type { EnvPreset } from '../types'\nimport { z } from 'zod'\n\nexport const netlify = {\n server: {\n // Set to 'true' by Netlify to indicate a Netlify build (note: Vercel uses '1', not 'true')\n NETLIFY: z.enum(['true']),\n BUILD_ID: z.string().min(1),\n CONTEXT: z.enum(['production', 'deploy-preview', 'branch-deploy', 'dev']),\n DEPLOY_ID: z.string().min(1),\n // Full https:// URLs — z.url() is correct here unlike VERCEL_URL\n DEPLOY_URL: z.url(),\n DEPLOY_PRIME_URL: z.url(),\n URL: z.url(),\n BRANCH: z.string().min(1),\n COMMIT_REF: z.string().min(1),\n // Netlify sets this to 'true' on PR deploys; absent (not 'false') on non-PR builds\n PULL_REQUEST: z.enum(['true']).optional(),\n REVIEW_ID: z.string().optional(),\n REPOSITORY_URL: z.url().optional(),\n INCOMING_HOOK_TITLE: z.string().optional(),\n INCOMING_HOOK_URL: z.url().optional(),\n },\n} satisfies EnvPreset\n","import type { EnvPreset } from '../types'\nimport { z } from 'zod'\n\nexport const railway = {\n server: {\n RAILWAY_ENVIRONMENT_ID: z.string().min(1),\n RAILWAY_ENVIRONMENT_NAME: z.string().min(1),\n RAILWAY_SERVICE_ID: z.string().min(1),\n RAILWAY_SERVICE_NAME: z.string().min(1),\n RAILWAY_PROJECT_ID: z.string().min(1),\n RAILWAY_PROJECT_NAME: z.string().min(1),\n RAILWAY_DEPLOYMENT_ID: z.string().min(1),\n RAILWAY_REPLICA_ID: z.string().optional(),\n RAILWAY_GIT_COMMIT_SHA: z.string().optional(),\n RAILWAY_GIT_BRANCH: z.string().optional(),\n RAILWAY_GIT_REPO_NAME: z.string().optional(),\n RAILWAY_GIT_REPO_OWNER: z.string().optional(),\n RAILWAY_PUBLIC_DOMAIN: z.string().min(1).optional(),\n RAILWAY_PRIVATE_DOMAIN: z.string().min(1).optional(),\n RAILWAY_TCP_PROXY_DOMAIN: z.string().min(1).optional(),\n RAILWAY_TCP_PROXY_PORT: z.coerce.number().int().min(1).max(65535).optional(),\n // PORT excluded: generic name set by many tools independently; handle it in your own server config\n },\n} satisfies EnvPreset\n","import type { EnvPreset } from '../types'\nimport { z } from 'zod'\n\nexport const vercel = {\n server: {\n // Set to '1' by Vercel to indicate a Vercel environment\n VERCEL: z.enum(['1']),\n VERCEL_ENV: z.enum(['production', 'preview', 'development']),\n // Bare hostname (e.g. myapp-abc123.vercel.app) — no scheme, z.url() would reject it\n VERCEL_URL: z.string().min(1),\n VERCEL_BRANCH_URL: z.string().min(1).optional(),\n VERCEL_PROJECT_PRODUCTION_URL: z.string().min(1),\n VERCEL_DEPLOYMENT_ID: z.string().min(1),\n VERCEL_REGION: z.string().optional(),\n // z.string() not enum — Vercel may add providers (Azure DevOps, self-hosted GitLab) without notice\n VERCEL_GIT_PROVIDER: z.string().optional(),\n VERCEL_GIT_REPO_SLUG: z.string().optional(),\n VERCEL_GIT_REPO_OWNER: z.string().optional(),\n VERCEL_GIT_COMMIT_REF: z.string().optional(),\n VERCEL_GIT_COMMIT_SHA: z.string().optional(),\n VERCEL_GIT_COMMIT_MESSAGE: z.string().optional(),\n VERCEL_GIT_COMMIT_AUTHOR_LOGIN: z.string().optional(),\n VERCEL_GIT_PULL_REQUEST_ID: z.string().optional(),\n VERCEL_SKEW_PROTECTION_ENABLED: z.enum(['1']).optional(),\n },\n} satisfies EnvPreset\n"],"mappings":";;;;AAGA,MAAa,UAAU,
|
|
1
|
+
{"version":3,"file":"index.cjs","names":["z","z","z"],"sources":["../../src/presets/netlify.ts","../../src/presets/railway.ts","../../src/presets/vercel.ts"],"sourcesContent":["import type { EnvPreset } from '../types'\nimport { z } from 'zod'\n\nexport const netlify = {\n server: {\n // Set to 'true' by Netlify to indicate a Netlify build (note: Vercel uses '1', not 'true')\n NETLIFY: z.enum(['true']),\n BUILD_ID: z.string().min(1),\n CONTEXT: z.enum(['production', 'deploy-preview', 'branch-deploy', 'dev']),\n DEPLOY_ID: z.string().min(1),\n // Full https:// URLs — z.url() is correct here unlike VERCEL_URL\n DEPLOY_URL: z.url(),\n DEPLOY_PRIME_URL: z.url(),\n URL: z.url(),\n BRANCH: z.string().min(1),\n COMMIT_REF: z.string().min(1),\n // Netlify sets this to 'true' on PR deploys; absent (not 'false') on non-PR builds\n PULL_REQUEST: z.enum(['true']).optional(),\n REVIEW_ID: z.string().optional(),\n REPOSITORY_URL: z.url().optional(),\n INCOMING_HOOK_TITLE: z.string().optional(),\n INCOMING_HOOK_URL: z.url().optional(),\n },\n // Netlify sets NETLIFY=true during builds and under `netlify dev`\n detect: env => env.NETLIFY === 'true',\n} satisfies EnvPreset\n","import type { EnvPreset } from '../types'\nimport { z } from 'zod'\n\nexport const railway = {\n server: {\n RAILWAY_ENVIRONMENT_ID: z.string().min(1),\n RAILWAY_ENVIRONMENT_NAME: z.string().min(1),\n RAILWAY_SERVICE_ID: z.string().min(1),\n RAILWAY_SERVICE_NAME: z.string().min(1),\n RAILWAY_PROJECT_ID: z.string().min(1),\n RAILWAY_PROJECT_NAME: z.string().min(1),\n RAILWAY_DEPLOYMENT_ID: z.string().min(1),\n RAILWAY_REPLICA_ID: z.string().optional(),\n RAILWAY_GIT_COMMIT_SHA: z.string().optional(),\n RAILWAY_GIT_BRANCH: z.string().optional(),\n RAILWAY_GIT_REPO_NAME: z.string().optional(),\n RAILWAY_GIT_REPO_OWNER: z.string().optional(),\n RAILWAY_PUBLIC_DOMAIN: z.string().min(1).optional(),\n RAILWAY_PRIVATE_DOMAIN: z.string().min(1).optional(),\n RAILWAY_TCP_PROXY_DOMAIN: z.string().min(1).optional(),\n RAILWAY_TCP_PROXY_PORT: z.coerce.number().int().min(1).max(65535).optional(),\n // PORT excluded: generic name set by many tools independently; handle it in your own server config\n },\n // Railway always injects the environment id at runtime\n detect: env => !!env.RAILWAY_ENVIRONMENT_ID,\n} satisfies EnvPreset\n","import type { EnvPreset } from '../types'\nimport { z } from 'zod'\n\nexport const vercel = {\n server: {\n // Set to '1' by Vercel to indicate a Vercel environment\n VERCEL: z.enum(['1']),\n VERCEL_ENV: z.enum(['production', 'preview', 'development']),\n // Bare hostname (e.g. myapp-abc123.vercel.app) — no scheme, z.url() would reject it\n VERCEL_URL: z.string().min(1),\n VERCEL_BRANCH_URL: z.string().min(1).optional(),\n VERCEL_PROJECT_PRODUCTION_URL: z.string().min(1),\n VERCEL_DEPLOYMENT_ID: z.string().min(1),\n VERCEL_REGION: z.string().optional(),\n // z.string() not enum — Vercel may add providers (Azure DevOps, self-hosted GitLab) without notice\n VERCEL_GIT_PROVIDER: z.string().optional(),\n VERCEL_GIT_REPO_SLUG: z.string().optional(),\n VERCEL_GIT_REPO_OWNER: z.string().optional(),\n VERCEL_GIT_COMMIT_REF: z.string().optional(),\n VERCEL_GIT_COMMIT_SHA: z.string().optional(),\n VERCEL_GIT_COMMIT_MESSAGE: z.string().optional(),\n VERCEL_GIT_COMMIT_AUTHOR_LOGIN: z.string().optional(),\n VERCEL_GIT_PULL_REQUEST_ID: z.string().optional(),\n VERCEL_SKEW_PROTECTION_ENABLED: z.enum(['1']).optional(),\n },\n // Vercel sets VERCEL=1 on builds and under `vercel dev`\n detect: env => env.VERCEL === '1',\n} satisfies EnvPreset\n"],"mappings":";;;;AAGA,MAAa,UAAU;CACrB,QAAQ;EAEN,SAASA,IAAAA,EAAE,KAAK,CAAC,OAAO,CAAC;EACzB,UAAUA,IAAAA,EAAE,QAAQ,CAAC,IAAI,EAAE;EAC3B,SAASA,IAAAA,EAAE,KAAK;GAAC;GAAc;GAAkB;GAAiB;GAAM,CAAC;EACzE,WAAWA,IAAAA,EAAE,QAAQ,CAAC,IAAI,EAAE;EAE5B,YAAYA,IAAAA,EAAE,KAAK;EACnB,kBAAkBA,IAAAA,EAAE,KAAK;EACzB,KAAKA,IAAAA,EAAE,KAAK;EACZ,QAAQA,IAAAA,EAAE,QAAQ,CAAC,IAAI,EAAE;EACzB,YAAYA,IAAAA,EAAE,QAAQ,CAAC,IAAI,EAAE;EAE7B,cAAcA,IAAAA,EAAE,KAAK,CAAC,OAAO,CAAC,CAAC,UAAU;EACzC,WAAWA,IAAAA,EAAE,QAAQ,CAAC,UAAU;EAChC,gBAAgBA,IAAAA,EAAE,KAAK,CAAC,UAAU;EAClC,qBAAqBA,IAAAA,EAAE,QAAQ,CAAC,UAAU;EAC1C,mBAAmBA,IAAAA,EAAE,KAAK,CAAC,UAAU;EACtC;CAED,SAAQ,QAAO,IAAI,YAAY;CAChC;;;ACtBD,MAAa,UAAU;CACrB,QAAQ;EACN,wBAAwBC,IAAAA,EAAE,QAAQ,CAAC,IAAI,EAAE;EACzC,0BAA0BA,IAAAA,EAAE,QAAQ,CAAC,IAAI,EAAE;EAC3C,oBAAoBA,IAAAA,EAAE,QAAQ,CAAC,IAAI,EAAE;EACrC,sBAAsBA,IAAAA,EAAE,QAAQ,CAAC,IAAI,EAAE;EACvC,oBAAoBA,IAAAA,EAAE,QAAQ,CAAC,IAAI,EAAE;EACrC,sBAAsBA,IAAAA,EAAE,QAAQ,CAAC,IAAI,EAAE;EACvC,uBAAuBA,IAAAA,EAAE,QAAQ,CAAC,IAAI,EAAE;EACxC,oBAAoBA,IAAAA,EAAE,QAAQ,CAAC,UAAU;EACzC,wBAAwBA,IAAAA,EAAE,QAAQ,CAAC,UAAU;EAC7C,oBAAoBA,IAAAA,EAAE,QAAQ,CAAC,UAAU;EACzC,uBAAuBA,IAAAA,EAAE,QAAQ,CAAC,UAAU;EAC5C,wBAAwBA,IAAAA,EAAE,QAAQ,CAAC,UAAU;EAC7C,uBAAuBA,IAAAA,EAAE,QAAQ,CAAC,IAAI,EAAE,CAAC,UAAU;EACnD,wBAAwBA,IAAAA,EAAE,QAAQ,CAAC,IAAI,EAAE,CAAC,UAAU;EACpD,0BAA0BA,IAAAA,EAAE,QAAQ,CAAC,IAAI,EAAE,CAAC,UAAU;EACtD,wBAAwBA,IAAAA,EAAE,OAAO,QAAQ,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC,IAAI,MAAM,CAAC,UAAU;EAE7E;CAED,SAAQ,QAAO,CAAC,CAAC,IAAI;CACtB;;;ACtBD,MAAa,SAAS;CACpB,QAAQ;EAEN,QAAQC,IAAAA,EAAE,KAAK,CAAC,IAAI,CAAC;EACrB,YAAYA,IAAAA,EAAE,KAAK;GAAC;GAAc;GAAW;GAAc,CAAC;EAE5D,YAAYA,IAAAA,EAAE,QAAQ,CAAC,IAAI,EAAE;EAC7B,mBAAmBA,IAAAA,EAAE,QAAQ,CAAC,IAAI,EAAE,CAAC,UAAU;EAC/C,+BAA+BA,IAAAA,EAAE,QAAQ,CAAC,IAAI,EAAE;EAChD,sBAAsBA,IAAAA,EAAE,QAAQ,CAAC,IAAI,EAAE;EACvC,eAAeA,IAAAA,EAAE,QAAQ,CAAC,UAAU;EAEpC,qBAAqBA,IAAAA,EAAE,QAAQ,CAAC,UAAU;EAC1C,sBAAsBA,IAAAA,EAAE,QAAQ,CAAC,UAAU;EAC3C,uBAAuBA,IAAAA,EAAE,QAAQ,CAAC,UAAU;EAC5C,uBAAuBA,IAAAA,EAAE,QAAQ,CAAC,UAAU;EAC5C,uBAAuBA,IAAAA,EAAE,QAAQ,CAAC,UAAU;EAC5C,2BAA2BA,IAAAA,EAAE,QAAQ,CAAC,UAAU;EAChD,gCAAgCA,IAAAA,EAAE,QAAQ,CAAC,UAAU;EACrD,4BAA4BA,IAAAA,EAAE,QAAQ,CAAC,UAAU;EACjD,gCAAgCA,IAAAA,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC,UAAU;EACzD;CAED,SAAQ,QAAO,IAAI,WAAW;CAC/B"}
|
package/dist/presets/index.d.cts
CHANGED
|
@@ -27,6 +27,7 @@ declare const netlify: {
|
|
|
27
27
|
INCOMING_HOOK_TITLE: z.ZodOptional<z.ZodString>;
|
|
28
28
|
INCOMING_HOOK_URL: z.ZodOptional<z.ZodURL>;
|
|
29
29
|
};
|
|
30
|
+
detect: (env: Record<string, string | undefined>) => boolean;
|
|
30
31
|
};
|
|
31
32
|
//#endregion
|
|
32
33
|
//#region src/presets/railway.d.ts
|
|
@@ -49,6 +50,7 @@ declare const railway: {
|
|
|
49
50
|
RAILWAY_TCP_PROXY_DOMAIN: z.ZodOptional<z.ZodString>;
|
|
50
51
|
RAILWAY_TCP_PROXY_PORT: z.ZodOptional<z.ZodCoercedNumber<unknown>>;
|
|
51
52
|
};
|
|
53
|
+
detect: (env: Record<string, string | undefined>) => boolean;
|
|
52
54
|
};
|
|
53
55
|
//#endregion
|
|
54
56
|
//#region src/presets/vercel.d.ts
|
|
@@ -79,6 +81,7 @@ declare const vercel: {
|
|
|
79
81
|
1: "1";
|
|
80
82
|
}>>;
|
|
81
83
|
};
|
|
84
|
+
detect: (env: Record<string, string | undefined>) => boolean;
|
|
82
85
|
};
|
|
83
86
|
//#endregion
|
|
84
87
|
export { netlify, railway, vercel };
|
package/dist/presets/index.d.mts
CHANGED
|
@@ -27,6 +27,7 @@ declare const netlify: {
|
|
|
27
27
|
INCOMING_HOOK_TITLE: z.ZodOptional<z.ZodString>;
|
|
28
28
|
INCOMING_HOOK_URL: z.ZodOptional<z.ZodURL>;
|
|
29
29
|
};
|
|
30
|
+
detect: (env: Record<string, string | undefined>) => boolean;
|
|
30
31
|
};
|
|
31
32
|
//#endregion
|
|
32
33
|
//#region src/presets/railway.d.ts
|
|
@@ -49,6 +50,7 @@ declare const railway: {
|
|
|
49
50
|
RAILWAY_TCP_PROXY_DOMAIN: z.ZodOptional<z.ZodString>;
|
|
50
51
|
RAILWAY_TCP_PROXY_PORT: z.ZodOptional<z.ZodCoercedNumber<unknown>>;
|
|
51
52
|
};
|
|
53
|
+
detect: (env: Record<string, string | undefined>) => boolean;
|
|
52
54
|
};
|
|
53
55
|
//#endregion
|
|
54
56
|
//#region src/presets/vercel.d.ts
|
|
@@ -79,6 +81,7 @@ declare const vercel: {
|
|
|
79
81
|
1: "1";
|
|
80
82
|
}>>;
|
|
81
83
|
};
|
|
84
|
+
detect: (env: Record<string, string | undefined>) => boolean;
|
|
82
85
|
};
|
|
83
86
|
//#endregion
|
|
84
87
|
export { netlify, railway, vercel };
|
package/dist/presets/index.mjs
CHANGED
|
@@ -1,70 +1,79 @@
|
|
|
1
1
|
import { z } from "zod";
|
|
2
2
|
//#region src/presets/netlify.ts
|
|
3
|
-
const netlify = {
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
3
|
+
const netlify = {
|
|
4
|
+
server: {
|
|
5
|
+
NETLIFY: z.enum(["true"]),
|
|
6
|
+
BUILD_ID: z.string().min(1),
|
|
7
|
+
CONTEXT: z.enum([
|
|
8
|
+
"production",
|
|
9
|
+
"deploy-preview",
|
|
10
|
+
"branch-deploy",
|
|
11
|
+
"dev"
|
|
12
|
+
]),
|
|
13
|
+
DEPLOY_ID: z.string().min(1),
|
|
14
|
+
DEPLOY_URL: z.url(),
|
|
15
|
+
DEPLOY_PRIME_URL: z.url(),
|
|
16
|
+
URL: z.url(),
|
|
17
|
+
BRANCH: z.string().min(1),
|
|
18
|
+
COMMIT_REF: z.string().min(1),
|
|
19
|
+
PULL_REQUEST: z.enum(["true"]).optional(),
|
|
20
|
+
REVIEW_ID: z.string().optional(),
|
|
21
|
+
REPOSITORY_URL: z.url().optional(),
|
|
22
|
+
INCOMING_HOOK_TITLE: z.string().optional(),
|
|
23
|
+
INCOMING_HOOK_URL: z.url().optional()
|
|
24
|
+
},
|
|
25
|
+
detect: (env) => env.NETLIFY === "true"
|
|
26
|
+
};
|
|
24
27
|
//#endregion
|
|
25
28
|
//#region src/presets/railway.ts
|
|
26
|
-
const railway = {
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
29
|
+
const railway = {
|
|
30
|
+
server: {
|
|
31
|
+
RAILWAY_ENVIRONMENT_ID: z.string().min(1),
|
|
32
|
+
RAILWAY_ENVIRONMENT_NAME: z.string().min(1),
|
|
33
|
+
RAILWAY_SERVICE_ID: z.string().min(1),
|
|
34
|
+
RAILWAY_SERVICE_NAME: z.string().min(1),
|
|
35
|
+
RAILWAY_PROJECT_ID: z.string().min(1),
|
|
36
|
+
RAILWAY_PROJECT_NAME: z.string().min(1),
|
|
37
|
+
RAILWAY_DEPLOYMENT_ID: z.string().min(1),
|
|
38
|
+
RAILWAY_REPLICA_ID: z.string().optional(),
|
|
39
|
+
RAILWAY_GIT_COMMIT_SHA: z.string().optional(),
|
|
40
|
+
RAILWAY_GIT_BRANCH: z.string().optional(),
|
|
41
|
+
RAILWAY_GIT_REPO_NAME: z.string().optional(),
|
|
42
|
+
RAILWAY_GIT_REPO_OWNER: z.string().optional(),
|
|
43
|
+
RAILWAY_PUBLIC_DOMAIN: z.string().min(1).optional(),
|
|
44
|
+
RAILWAY_PRIVATE_DOMAIN: z.string().min(1).optional(),
|
|
45
|
+
RAILWAY_TCP_PROXY_DOMAIN: z.string().min(1).optional(),
|
|
46
|
+
RAILWAY_TCP_PROXY_PORT: z.coerce.number().int().min(1).max(65535).optional()
|
|
47
|
+
},
|
|
48
|
+
detect: (env) => !!env.RAILWAY_ENVIRONMENT_ID
|
|
49
|
+
};
|
|
44
50
|
//#endregion
|
|
45
51
|
//#region src/presets/vercel.ts
|
|
46
|
-
const vercel = {
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
52
|
+
const vercel = {
|
|
53
|
+
server: {
|
|
54
|
+
VERCEL: z.enum(["1"]),
|
|
55
|
+
VERCEL_ENV: z.enum([
|
|
56
|
+
"production",
|
|
57
|
+
"preview",
|
|
58
|
+
"development"
|
|
59
|
+
]),
|
|
60
|
+
VERCEL_URL: z.string().min(1),
|
|
61
|
+
VERCEL_BRANCH_URL: z.string().min(1).optional(),
|
|
62
|
+
VERCEL_PROJECT_PRODUCTION_URL: z.string().min(1),
|
|
63
|
+
VERCEL_DEPLOYMENT_ID: z.string().min(1),
|
|
64
|
+
VERCEL_REGION: z.string().optional(),
|
|
65
|
+
VERCEL_GIT_PROVIDER: z.string().optional(),
|
|
66
|
+
VERCEL_GIT_REPO_SLUG: z.string().optional(),
|
|
67
|
+
VERCEL_GIT_REPO_OWNER: z.string().optional(),
|
|
68
|
+
VERCEL_GIT_COMMIT_REF: z.string().optional(),
|
|
69
|
+
VERCEL_GIT_COMMIT_SHA: z.string().optional(),
|
|
70
|
+
VERCEL_GIT_COMMIT_MESSAGE: z.string().optional(),
|
|
71
|
+
VERCEL_GIT_COMMIT_AUTHOR_LOGIN: z.string().optional(),
|
|
72
|
+
VERCEL_GIT_PULL_REQUEST_ID: z.string().optional(),
|
|
73
|
+
VERCEL_SKEW_PROTECTION_ENABLED: z.enum(["1"]).optional()
|
|
74
|
+
},
|
|
75
|
+
detect: (env) => env.VERCEL === "1"
|
|
76
|
+
};
|
|
68
77
|
//#endregion
|
|
69
78
|
export { netlify, railway, vercel };
|
|
70
79
|
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.mjs","names":[],"sources":["../../src/presets/netlify.ts","../../src/presets/railway.ts","../../src/presets/vercel.ts"],"sourcesContent":["import type { EnvPreset } from '../types'\nimport { z } from 'zod'\n\nexport const netlify = {\n server: {\n // Set to 'true' by Netlify to indicate a Netlify build (note: Vercel uses '1', not 'true')\n NETLIFY: z.enum(['true']),\n BUILD_ID: z.string().min(1),\n CONTEXT: z.enum(['production', 'deploy-preview', 'branch-deploy', 'dev']),\n DEPLOY_ID: z.string().min(1),\n // Full https:// URLs — z.url() is correct here unlike VERCEL_URL\n DEPLOY_URL: z.url(),\n DEPLOY_PRIME_URL: z.url(),\n URL: z.url(),\n BRANCH: z.string().min(1),\n COMMIT_REF: z.string().min(1),\n // Netlify sets this to 'true' on PR deploys; absent (not 'false') on non-PR builds\n PULL_REQUEST: z.enum(['true']).optional(),\n REVIEW_ID: z.string().optional(),\n REPOSITORY_URL: z.url().optional(),\n INCOMING_HOOK_TITLE: z.string().optional(),\n INCOMING_HOOK_URL: z.url().optional(),\n },\n} satisfies EnvPreset\n","import type { EnvPreset } from '../types'\nimport { z } from 'zod'\n\nexport const railway = {\n server: {\n RAILWAY_ENVIRONMENT_ID: z.string().min(1),\n RAILWAY_ENVIRONMENT_NAME: z.string().min(1),\n RAILWAY_SERVICE_ID: z.string().min(1),\n RAILWAY_SERVICE_NAME: z.string().min(1),\n RAILWAY_PROJECT_ID: z.string().min(1),\n RAILWAY_PROJECT_NAME: z.string().min(1),\n RAILWAY_DEPLOYMENT_ID: z.string().min(1),\n RAILWAY_REPLICA_ID: z.string().optional(),\n RAILWAY_GIT_COMMIT_SHA: z.string().optional(),\n RAILWAY_GIT_BRANCH: z.string().optional(),\n RAILWAY_GIT_REPO_NAME: z.string().optional(),\n RAILWAY_GIT_REPO_OWNER: z.string().optional(),\n RAILWAY_PUBLIC_DOMAIN: z.string().min(1).optional(),\n RAILWAY_PRIVATE_DOMAIN: z.string().min(1).optional(),\n RAILWAY_TCP_PROXY_DOMAIN: z.string().min(1).optional(),\n RAILWAY_TCP_PROXY_PORT: z.coerce.number().int().min(1).max(65535).optional(),\n // PORT excluded: generic name set by many tools independently; handle it in your own server config\n },\n} satisfies EnvPreset\n","import type { EnvPreset } from '../types'\nimport { z } from 'zod'\n\nexport const vercel = {\n server: {\n // Set to '1' by Vercel to indicate a Vercel environment\n VERCEL: z.enum(['1']),\n VERCEL_ENV: z.enum(['production', 'preview', 'development']),\n // Bare hostname (e.g. myapp-abc123.vercel.app) — no scheme, z.url() would reject it\n VERCEL_URL: z.string().min(1),\n VERCEL_BRANCH_URL: z.string().min(1).optional(),\n VERCEL_PROJECT_PRODUCTION_URL: z.string().min(1),\n VERCEL_DEPLOYMENT_ID: z.string().min(1),\n VERCEL_REGION: z.string().optional(),\n // z.string() not enum — Vercel may add providers (Azure DevOps, self-hosted GitLab) without notice\n VERCEL_GIT_PROVIDER: z.string().optional(),\n VERCEL_GIT_REPO_SLUG: z.string().optional(),\n VERCEL_GIT_REPO_OWNER: z.string().optional(),\n VERCEL_GIT_COMMIT_REF: z.string().optional(),\n VERCEL_GIT_COMMIT_SHA: z.string().optional(),\n VERCEL_GIT_COMMIT_MESSAGE: z.string().optional(),\n VERCEL_GIT_COMMIT_AUTHOR_LOGIN: z.string().optional(),\n VERCEL_GIT_PULL_REQUEST_ID: z.string().optional(),\n VERCEL_SKEW_PROTECTION_ENABLED: z.enum(['1']).optional(),\n },\n} satisfies EnvPreset\n"],"mappings":";;AAGA,MAAa,UAAU,
|
|
1
|
+
{"version":3,"file":"index.mjs","names":[],"sources":["../../src/presets/netlify.ts","../../src/presets/railway.ts","../../src/presets/vercel.ts"],"sourcesContent":["import type { EnvPreset } from '../types'\nimport { z } from 'zod'\n\nexport const netlify = {\n server: {\n // Set to 'true' by Netlify to indicate a Netlify build (note: Vercel uses '1', not 'true')\n NETLIFY: z.enum(['true']),\n BUILD_ID: z.string().min(1),\n CONTEXT: z.enum(['production', 'deploy-preview', 'branch-deploy', 'dev']),\n DEPLOY_ID: z.string().min(1),\n // Full https:// URLs — z.url() is correct here unlike VERCEL_URL\n DEPLOY_URL: z.url(),\n DEPLOY_PRIME_URL: z.url(),\n URL: z.url(),\n BRANCH: z.string().min(1),\n COMMIT_REF: z.string().min(1),\n // Netlify sets this to 'true' on PR deploys; absent (not 'false') on non-PR builds\n PULL_REQUEST: z.enum(['true']).optional(),\n REVIEW_ID: z.string().optional(),\n REPOSITORY_URL: z.url().optional(),\n INCOMING_HOOK_TITLE: z.string().optional(),\n INCOMING_HOOK_URL: z.url().optional(),\n },\n // Netlify sets NETLIFY=true during builds and under `netlify dev`\n detect: env => env.NETLIFY === 'true',\n} satisfies EnvPreset\n","import type { EnvPreset } from '../types'\nimport { z } from 'zod'\n\nexport const railway = {\n server: {\n RAILWAY_ENVIRONMENT_ID: z.string().min(1),\n RAILWAY_ENVIRONMENT_NAME: z.string().min(1),\n RAILWAY_SERVICE_ID: z.string().min(1),\n RAILWAY_SERVICE_NAME: z.string().min(1),\n RAILWAY_PROJECT_ID: z.string().min(1),\n RAILWAY_PROJECT_NAME: z.string().min(1),\n RAILWAY_DEPLOYMENT_ID: z.string().min(1),\n RAILWAY_REPLICA_ID: z.string().optional(),\n RAILWAY_GIT_COMMIT_SHA: z.string().optional(),\n RAILWAY_GIT_BRANCH: z.string().optional(),\n RAILWAY_GIT_REPO_NAME: z.string().optional(),\n RAILWAY_GIT_REPO_OWNER: z.string().optional(),\n RAILWAY_PUBLIC_DOMAIN: z.string().min(1).optional(),\n RAILWAY_PRIVATE_DOMAIN: z.string().min(1).optional(),\n RAILWAY_TCP_PROXY_DOMAIN: z.string().min(1).optional(),\n RAILWAY_TCP_PROXY_PORT: z.coerce.number().int().min(1).max(65535).optional(),\n // PORT excluded: generic name set by many tools independently; handle it in your own server config\n },\n // Railway always injects the environment id at runtime\n detect: env => !!env.RAILWAY_ENVIRONMENT_ID,\n} satisfies EnvPreset\n","import type { EnvPreset } from '../types'\nimport { z } from 'zod'\n\nexport const vercel = {\n server: {\n // Set to '1' by Vercel to indicate a Vercel environment\n VERCEL: z.enum(['1']),\n VERCEL_ENV: z.enum(['production', 'preview', 'development']),\n // Bare hostname (e.g. myapp-abc123.vercel.app) — no scheme, z.url() would reject it\n VERCEL_URL: z.string().min(1),\n VERCEL_BRANCH_URL: z.string().min(1).optional(),\n VERCEL_PROJECT_PRODUCTION_URL: z.string().min(1),\n VERCEL_DEPLOYMENT_ID: z.string().min(1),\n VERCEL_REGION: z.string().optional(),\n // z.string() not enum — Vercel may add providers (Azure DevOps, self-hosted GitLab) without notice\n VERCEL_GIT_PROVIDER: z.string().optional(),\n VERCEL_GIT_REPO_SLUG: z.string().optional(),\n VERCEL_GIT_REPO_OWNER: z.string().optional(),\n VERCEL_GIT_COMMIT_REF: z.string().optional(),\n VERCEL_GIT_COMMIT_SHA: z.string().optional(),\n VERCEL_GIT_COMMIT_MESSAGE: z.string().optional(),\n VERCEL_GIT_COMMIT_AUTHOR_LOGIN: z.string().optional(),\n VERCEL_GIT_PULL_REQUEST_ID: z.string().optional(),\n VERCEL_SKEW_PROTECTION_ENABLED: z.enum(['1']).optional(),\n },\n // Vercel sets VERCEL=1 on builds and under `vercel dev`\n detect: env => env.VERCEL === '1',\n} satisfies EnvPreset\n"],"mappings":";;AAGA,MAAa,UAAU;CACrB,QAAQ;EAEN,SAAS,EAAE,KAAK,CAAC,OAAO,CAAC;EACzB,UAAU,EAAE,QAAQ,CAAC,IAAI,EAAE;EAC3B,SAAS,EAAE,KAAK;GAAC;GAAc;GAAkB;GAAiB;GAAM,CAAC;EACzE,WAAW,EAAE,QAAQ,CAAC,IAAI,EAAE;EAE5B,YAAY,EAAE,KAAK;EACnB,kBAAkB,EAAE,KAAK;EACzB,KAAK,EAAE,KAAK;EACZ,QAAQ,EAAE,QAAQ,CAAC,IAAI,EAAE;EACzB,YAAY,EAAE,QAAQ,CAAC,IAAI,EAAE;EAE7B,cAAc,EAAE,KAAK,CAAC,OAAO,CAAC,CAAC,UAAU;EACzC,WAAW,EAAE,QAAQ,CAAC,UAAU;EAChC,gBAAgB,EAAE,KAAK,CAAC,UAAU;EAClC,qBAAqB,EAAE,QAAQ,CAAC,UAAU;EAC1C,mBAAmB,EAAE,KAAK,CAAC,UAAU;EACtC;CAED,SAAQ,QAAO,IAAI,YAAY;CAChC;;;ACtBD,MAAa,UAAU;CACrB,QAAQ;EACN,wBAAwB,EAAE,QAAQ,CAAC,IAAI,EAAE;EACzC,0BAA0B,EAAE,QAAQ,CAAC,IAAI,EAAE;EAC3C,oBAAoB,EAAE,QAAQ,CAAC,IAAI,EAAE;EACrC,sBAAsB,EAAE,QAAQ,CAAC,IAAI,EAAE;EACvC,oBAAoB,EAAE,QAAQ,CAAC,IAAI,EAAE;EACrC,sBAAsB,EAAE,QAAQ,CAAC,IAAI,EAAE;EACvC,uBAAuB,EAAE,QAAQ,CAAC,IAAI,EAAE;EACxC,oBAAoB,EAAE,QAAQ,CAAC,UAAU;EACzC,wBAAwB,EAAE,QAAQ,CAAC,UAAU;EAC7C,oBAAoB,EAAE,QAAQ,CAAC,UAAU;EACzC,uBAAuB,EAAE,QAAQ,CAAC,UAAU;EAC5C,wBAAwB,EAAE,QAAQ,CAAC,UAAU;EAC7C,uBAAuB,EAAE,QAAQ,CAAC,IAAI,EAAE,CAAC,UAAU;EACnD,wBAAwB,EAAE,QAAQ,CAAC,IAAI,EAAE,CAAC,UAAU;EACpD,0BAA0B,EAAE,QAAQ,CAAC,IAAI,EAAE,CAAC,UAAU;EACtD,wBAAwB,EAAE,OAAO,QAAQ,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC,IAAI,MAAM,CAAC,UAAU;EAE7E;CAED,SAAQ,QAAO,CAAC,CAAC,IAAI;CACtB;;;ACtBD,MAAa,SAAS;CACpB,QAAQ;EAEN,QAAQ,EAAE,KAAK,CAAC,IAAI,CAAC;EACrB,YAAY,EAAE,KAAK;GAAC;GAAc;GAAW;GAAc,CAAC;EAE5D,YAAY,EAAE,QAAQ,CAAC,IAAI,EAAE;EAC7B,mBAAmB,EAAE,QAAQ,CAAC,IAAI,EAAE,CAAC,UAAU;EAC/C,+BAA+B,EAAE,QAAQ,CAAC,IAAI,EAAE;EAChD,sBAAsB,EAAE,QAAQ,CAAC,IAAI,EAAE;EACvC,eAAe,EAAE,QAAQ,CAAC,UAAU;EAEpC,qBAAqB,EAAE,QAAQ,CAAC,UAAU;EAC1C,sBAAsB,EAAE,QAAQ,CAAC,UAAU;EAC3C,uBAAuB,EAAE,QAAQ,CAAC,UAAU;EAC5C,uBAAuB,EAAE,QAAQ,CAAC,UAAU;EAC5C,uBAAuB,EAAE,QAAQ,CAAC,UAAU;EAC5C,2BAA2B,EAAE,QAAQ,CAAC,UAAU;EAChD,gCAAgC,EAAE,QAAQ,CAAC,UAAU;EACrD,4BAA4B,EAAE,QAAQ,CAAC,UAAU;EACjD,gCAAgC,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC,UAAU;EACzD;CAED,SAAQ,QAAO,IAAI,WAAW;CAC/B"}
|
package/dist/schema.cjs
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
|
|
2
|
-
require("./dts-
|
|
2
|
+
require("./dts-BX0Cnqo-.cjs");
|
|
3
3
|
let zod = require("zod");
|
|
4
4
|
//#region src/schema.ts
|
|
5
5
|
function warnSideConflicts(keys, seen, userKeys, side) {
|
|
@@ -27,6 +27,7 @@ function defineEnv(definition) {
|
|
|
27
27
|
const result = { ...rest };
|
|
28
28
|
if (Object.keys(mergedServer).length > 0 || server !== void 0) result.server = mergedServer;
|
|
29
29
|
if (Object.keys(mergedClient).length > 0 || client !== void 0) result.client = mergedClient;
|
|
30
|
+
if (presets.length > 0) result.presets = presets;
|
|
30
31
|
return result;
|
|
31
32
|
}
|
|
32
33
|
function validateEnv(def, rawEnv) {
|
|
@@ -34,6 +35,10 @@ function validateEnv(def, rawEnv) {
|
|
|
34
35
|
...def.server,
|
|
35
36
|
...def.client
|
|
36
37
|
};
|
|
38
|
+
for (const preset of def.presets ?? []) {
|
|
39
|
+
if (!preset.detect || preset.detect(rawEnv)) continue;
|
|
40
|
+
for (const side of [preset.server, preset.client]) for (const [key, presetSchema] of Object.entries(side ?? {})) if (combinedShape[key] === presetSchema) combinedShape[key] = zod.z.optional(combinedShape[key]);
|
|
41
|
+
}
|
|
37
42
|
const result = zod.z.object(combinedShape).safeParse(rawEnv);
|
|
38
43
|
if (result.success) return {
|
|
39
44
|
success: true,
|
package/dist/schema.cjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"schema.cjs","names":["z"],"sources":["../src/schema.ts"],"sourcesContent":["import type { EnvDefinition, EnvPreset, ValidationResult } from './types'\nimport { z } from 'zod'\n\ntype DefineEnvInput = {\n presets?: EnvPreset[]\n} & EnvDefinition\n\nfunction warnSideConflicts(\n keys: string[],\n seen: Set<string>,\n userKeys: Set<string>,\n side: 'server' | 'client',\n): void {\n for (const key of keys) {\n const duplicate = seen.has(key)\n if (duplicate)\n console.warn(`[vite-env] \"${key}\" is defined in multiple presets. The last preset wins.`)\n seen.add(key)\n if (!duplicate && userKeys.has(key))\n console.warn(`[vite-env] \"${key}\" is defined in both a preset and your ${side} config. Your definition wins.`)\n }\n}\n\nfunction warnConflicts(\n presets: EnvPreset[],\n userServerKeys: Set<string>,\n userClientKeys: Set<string>,\n): void {\n const seenServerKeys = new Set<string>()\n const seenClientKeys = new Set<string>()\n\n for (const preset of presets) {\n warnSideConflicts(Object.keys(preset.server ?? {}), seenServerKeys, userServerKeys, 'server')\n warnSideConflicts(Object.keys(preset.client ?? {}), seenClientKeys, userClientKeys, 'client')\n }\n}\n\nexport function defineEnv<T extends DefineEnvInput>(definition: T): Omit<T, 'presets'> & Pick<EnvDefinition, 'server' | 'client'> {\n const { presets = [], server, client, ...rest } = definition\n // ...rest intentionally forwarded — T may carry extra keys beyond EnvDefinition\n\n const mergedServer: z.ZodRawShape = Object.assign({}, ...presets.map(p => p.server ?? {}), server)\n const mergedClient: z.ZodRawShape = Object.assign({}, ...presets.map(p => p.client ?? {}), client)\n\n warnConflicts(\n presets,\n new Set(Object.keys(server ?? {})),\n new Set(Object.keys(client ?? {})),\n )\n\n for (const key of Object.keys(mergedClient)) {\n if (!key.startsWith('VITE_')) {\n throw new Error(\n `[vite-env] Client env var \"${key}\" must be prefixed with VITE_.\\n`\n + ` Rename it to \"VITE_${key}\" or move it to \"server\" if it's secret.`,\n )\n }\n }\n\n const result: Record<string, unknown> = { ...rest }\n if (Object.keys(mergedServer).length > 0 || server !== undefined)\n result.server = mergedServer\n if (Object.keys(mergedClient).length > 0 || client !== undefined)\n result.client = mergedClient\n\n return result as Omit<T, 'presets'>\n}\n\nexport function validateEnv(\n def: EnvDefinition,\n rawEnv: Record<string, string>,\n): ValidationResult {\n const combinedShape = {\n ...def.server,\n ...def.client,\n }\n\n const schema = z.object(combinedShape)\n const result = schema.safeParse(rawEnv)\n\n if (result.success) {\n return { success: true, data: result.data, errors: [] as const }\n }\n\n return {\n success: false,\n data: null,\n errors: result.error.issues,\n }\n}\n"],"mappings":";;;;AAOA,SAAS,kBACP,MACA,MACA,UACA,MACM;AACN,MAAK,MAAM,OAAO,MAAM;EACtB,MAAM,YAAY,KAAK,IAAI,IAAI;AAC/B,MAAI,UACF,SAAQ,KAAK,eAAe,IAAI,yDAAyD;AAC3F,OAAK,IAAI,IAAI;AACb,MAAI,CAAC,aAAa,SAAS,IAAI,IAAI,CACjC,SAAQ,KAAK,eAAe,IAAI,yCAAyC,KAAK,gCAAgC;;;AAIpH,SAAS,cACP,SACA,gBACA,gBACM;CACN,MAAM,iCAAiB,IAAI,KAAa;CACxC,MAAM,iCAAiB,IAAI,KAAa;AAExC,MAAK,MAAM,UAAU,SAAS;AAC5B,oBAAkB,OAAO,KAAK,OAAO,UAAU,EAAE,CAAC,EAAE,gBAAgB,gBAAgB,SAAS;AAC7F,oBAAkB,OAAO,KAAK,OAAO,UAAU,EAAE,CAAC,EAAE,gBAAgB,gBAAgB,SAAS;;;AAIjG,SAAgB,UAAoC,
|
|
1
|
+
{"version":3,"file":"schema.cjs","names":["z"],"sources":["../src/schema.ts"],"sourcesContent":["import type { EnvDefinition, EnvPreset, ValidationResult } from './types'\nimport { z } from 'zod'\n\ntype DefineEnvInput = {\n presets?: EnvPreset[]\n} & EnvDefinition\n\nfunction warnSideConflicts(\n keys: string[],\n seen: Set<string>,\n userKeys: Set<string>,\n side: 'server' | 'client',\n): void {\n for (const key of keys) {\n const duplicate = seen.has(key)\n if (duplicate)\n console.warn(`[vite-env] \"${key}\" is defined in multiple presets. The last preset wins.`)\n seen.add(key)\n if (!duplicate && userKeys.has(key))\n console.warn(`[vite-env] \"${key}\" is defined in both a preset and your ${side} config. Your definition wins.`)\n }\n}\n\nfunction warnConflicts(\n presets: EnvPreset[],\n userServerKeys: Set<string>,\n userClientKeys: Set<string>,\n): void {\n const seenServerKeys = new Set<string>()\n const seenClientKeys = new Set<string>()\n\n for (const preset of presets) {\n warnSideConflicts(Object.keys(preset.server ?? {}), seenServerKeys, userServerKeys, 'server')\n warnSideConflicts(Object.keys(preset.client ?? {}), seenClientKeys, userClientKeys, 'client')\n }\n}\n\nexport function defineEnv<T extends DefineEnvInput>(definition: T): Omit<T, 'presets'> & Pick<EnvDefinition, 'server' | 'client' | 'presets'> {\n const { presets = [], server, client, ...rest } = definition\n // ...rest intentionally forwarded — T may carry extra keys beyond EnvDefinition\n\n const mergedServer: z.ZodRawShape = Object.assign({}, ...presets.map(p => p.server ?? {}), server)\n const mergedClient: z.ZodRawShape = Object.assign({}, ...presets.map(p => p.client ?? {}), client)\n\n warnConflicts(\n presets,\n new Set(Object.keys(server ?? {})),\n new Set(Object.keys(client ?? {})),\n )\n\n for (const key of Object.keys(mergedClient)) {\n if (!key.startsWith('VITE_')) {\n throw new Error(\n `[vite-env] Client env var \"${key}\" must be prefixed with VITE_.\\n`\n + ` Rename it to \"VITE_${key}\" or move it to \"server\" if it's secret.`,\n )\n }\n }\n\n const result: Record<string, unknown> = { ...rest }\n if (Object.keys(mergedServer).length > 0 || server !== undefined)\n result.server = mergedServer\n if (Object.keys(mergedClient).length > 0 || client !== undefined)\n result.client = mergedClient\n if (presets.length > 0)\n result.presets = presets\n\n return result as Omit<T, 'presets'> & Pick<EnvDefinition, 'presets'>\n}\n\nexport function validateEnv(\n def: EnvDefinition,\n rawEnv: Record<string, string>,\n): ValidationResult {\n const combinedShape: Record<string, z.ZodType> = {\n ...def.server,\n ...def.client,\n } as Record<string, z.ZodType>\n\n // Undetected-platform preset vars validate as optional — they only exist on\n // the platform; requiring them would break local dev. User overrides stay strict.\n // Mutating combinedShape also prevents double-wrapping when two undetected\n // presets share a key: after the first wrap, the identity check fails.\n for (const preset of def.presets ?? []) {\n if (!preset.detect || preset.detect(rawEnv))\n continue\n for (const side of [preset.server, preset.client]) {\n for (const [key, presetSchema] of Object.entries(side ?? {})) {\n if (combinedShape[key] === presetSchema)\n combinedShape[key] = z.optional(combinedShape[key])\n }\n }\n }\n\n const schema = z.object(combinedShape)\n const result = schema.safeParse(rawEnv)\n\n if (result.success) {\n return { success: true, data: result.data, errors: [] as const }\n }\n\n return {\n success: false,\n data: null,\n errors: result.error.issues,\n }\n}\n"],"mappings":";;;;AAOA,SAAS,kBACP,MACA,MACA,UACA,MACM;AACN,MAAK,MAAM,OAAO,MAAM;EACtB,MAAM,YAAY,KAAK,IAAI,IAAI;AAC/B,MAAI,UACF,SAAQ,KAAK,eAAe,IAAI,yDAAyD;AAC3F,OAAK,IAAI,IAAI;AACb,MAAI,CAAC,aAAa,SAAS,IAAI,IAAI,CACjC,SAAQ,KAAK,eAAe,IAAI,yCAAyC,KAAK,gCAAgC;;;AAIpH,SAAS,cACP,SACA,gBACA,gBACM;CACN,MAAM,iCAAiB,IAAI,KAAa;CACxC,MAAM,iCAAiB,IAAI,KAAa;AAExC,MAAK,MAAM,UAAU,SAAS;AAC5B,oBAAkB,OAAO,KAAK,OAAO,UAAU,EAAE,CAAC,EAAE,gBAAgB,gBAAgB,SAAS;AAC7F,oBAAkB,OAAO,KAAK,OAAO,UAAU,EAAE,CAAC,EAAE,gBAAgB,gBAAgB,SAAS;;;AAIjG,SAAgB,UAAoC,YAA0F;CAC5I,MAAM,EAAE,UAAU,EAAE,EAAE,QAAQ,QAAQ,GAAG,SAAS;CAGlD,MAAM,eAA8B,OAAO,OAAO,EAAE,EAAE,GAAG,QAAQ,KAAI,MAAK,EAAE,UAAU,EAAE,CAAC,EAAE,OAAO;CAClG,MAAM,eAA8B,OAAO,OAAO,EAAE,EAAE,GAAG,QAAQ,KAAI,MAAK,EAAE,UAAU,EAAE,CAAC,EAAE,OAAO;AAElG,eACE,SACA,IAAI,IAAI,OAAO,KAAK,UAAU,EAAE,CAAC,CAAC,EAClC,IAAI,IAAI,OAAO,KAAK,UAAU,EAAE,CAAC,CAAC,CACnC;AAED,MAAK,MAAM,OAAO,OAAO,KAAK,aAAa,CACzC,KAAI,CAAC,IAAI,WAAW,QAAQ,CAC1B,OAAM,IAAI,MACR,8BAA8B,IAAI,uDACR,IAAI,0CAC/B;CAIL,MAAM,SAAkC,EAAE,GAAG,MAAM;AACnD,KAAI,OAAO,KAAK,aAAa,CAAC,SAAS,KAAK,WAAW,KAAA,EACrD,QAAO,SAAS;AAClB,KAAI,OAAO,KAAK,aAAa,CAAC,SAAS,KAAK,WAAW,KAAA,EACrD,QAAO,SAAS;AAClB,KAAI,QAAQ,SAAS,EACnB,QAAO,UAAU;AAEnB,QAAO;;AAGT,SAAgB,YACd,KACA,QACkB;CAClB,MAAM,gBAA2C;EAC/C,GAAG,IAAI;EACP,GAAG,IAAI;EACR;AAMD,MAAK,MAAM,UAAU,IAAI,WAAW,EAAE,EAAE;AACtC,MAAI,CAAC,OAAO,UAAU,OAAO,OAAO,OAAO,CACzC;AACF,OAAK,MAAM,QAAQ,CAAC,OAAO,QAAQ,OAAO,OAAO,CAC/C,MAAK,MAAM,CAAC,KAAK,iBAAiB,OAAO,QAAQ,QAAQ,EAAE,CAAC,CAC1D,KAAI,cAAc,SAAS,aACzB,eAAc,OAAOA,IAAAA,EAAE,SAAS,cAAc,KAAK;;CAM3D,MAAM,SADSA,IAAAA,EAAE,OAAO,cACH,CAAC,UAAU,OAAO;AAEvC,KAAI,OAAO,QACT,QAAO;EAAE,SAAS;EAAM,MAAM,OAAO;EAAM,QAAQ,EAAE;EAAW;AAGlE,QAAO;EACL,SAAS;EACT,MAAM;EACN,QAAQ,OAAO,MAAM;EACtB"}
|
package/dist/schema.d.cts
CHANGED
|
@@ -1,10 +1,10 @@
|
|
|
1
|
-
import { l as ValidationResult, n as EnvDefinition, r as EnvPreset } from "./types-
|
|
1
|
+
import { l as ValidationResult, n as EnvDefinition, r as EnvPreset } from "./types-B61nsO8q.cjs";
|
|
2
2
|
|
|
3
3
|
//#region src/schema.d.ts
|
|
4
4
|
type DefineEnvInput = {
|
|
5
5
|
presets?: EnvPreset[];
|
|
6
6
|
} & EnvDefinition;
|
|
7
|
-
declare function defineEnv<T extends DefineEnvInput>(definition: T): Omit<T, 'presets'> & Pick<EnvDefinition, 'server' | 'client'>;
|
|
7
|
+
declare function defineEnv<T extends DefineEnvInput>(definition: T): Omit<T, 'presets'> & Pick<EnvDefinition, 'server' | 'client' | 'presets'>;
|
|
8
8
|
declare function validateEnv(def: EnvDefinition, rawEnv: Record<string, string>): ValidationResult;
|
|
9
9
|
//#endregion
|
|
10
10
|
export { defineEnv, validateEnv };
|
package/dist/schema.d.mts
CHANGED
|
@@ -1,10 +1,10 @@
|
|
|
1
|
-
import { l as ValidationResult, n as EnvDefinition, r as EnvPreset } from "./types
|
|
1
|
+
import { l as ValidationResult, n as EnvDefinition, r as EnvPreset } from "./types-KniR_Oqf.mjs";
|
|
2
2
|
|
|
3
3
|
//#region src/schema.d.ts
|
|
4
4
|
type DefineEnvInput = {
|
|
5
5
|
presets?: EnvPreset[];
|
|
6
6
|
} & EnvDefinition;
|
|
7
|
-
declare function defineEnv<T extends DefineEnvInput>(definition: T): Omit<T, 'presets'> & Pick<EnvDefinition, 'server' | 'client'>;
|
|
7
|
+
declare function defineEnv<T extends DefineEnvInput>(definition: T): Omit<T, 'presets'> & Pick<EnvDefinition, 'server' | 'client' | 'presets'>;
|
|
8
8
|
declare function validateEnv(def: EnvDefinition, rawEnv: Record<string, string>): ValidationResult;
|
|
9
9
|
//#endregion
|
|
10
10
|
export { defineEnv, validateEnv };
|
package/dist/schema.mjs
CHANGED
|
@@ -25,6 +25,7 @@ function defineEnv(definition) {
|
|
|
25
25
|
const result = { ...rest };
|
|
26
26
|
if (Object.keys(mergedServer).length > 0 || server !== void 0) result.server = mergedServer;
|
|
27
27
|
if (Object.keys(mergedClient).length > 0 || client !== void 0) result.client = mergedClient;
|
|
28
|
+
if (presets.length > 0) result.presets = presets;
|
|
28
29
|
return result;
|
|
29
30
|
}
|
|
30
31
|
function validateEnv(def, rawEnv) {
|
|
@@ -32,6 +33,10 @@ function validateEnv(def, rawEnv) {
|
|
|
32
33
|
...def.server,
|
|
33
34
|
...def.client
|
|
34
35
|
};
|
|
36
|
+
for (const preset of def.presets ?? []) {
|
|
37
|
+
if (!preset.detect || preset.detect(rawEnv)) continue;
|
|
38
|
+
for (const side of [preset.server, preset.client]) for (const [key, presetSchema] of Object.entries(side ?? {})) if (combinedShape[key] === presetSchema) combinedShape[key] = z.optional(combinedShape[key]);
|
|
39
|
+
}
|
|
35
40
|
const result = z.object(combinedShape).safeParse(rawEnv);
|
|
36
41
|
if (result.success) return {
|
|
37
42
|
success: true,
|
package/dist/schema.mjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"schema.mjs","names":[],"sources":["../src/schema.ts"],"sourcesContent":["import type { EnvDefinition, EnvPreset, ValidationResult } from './types'\nimport { z } from 'zod'\n\ntype DefineEnvInput = {\n presets?: EnvPreset[]\n} & EnvDefinition\n\nfunction warnSideConflicts(\n keys: string[],\n seen: Set<string>,\n userKeys: Set<string>,\n side: 'server' | 'client',\n): void {\n for (const key of keys) {\n const duplicate = seen.has(key)\n if (duplicate)\n console.warn(`[vite-env] \"${key}\" is defined in multiple presets. The last preset wins.`)\n seen.add(key)\n if (!duplicate && userKeys.has(key))\n console.warn(`[vite-env] \"${key}\" is defined in both a preset and your ${side} config. Your definition wins.`)\n }\n}\n\nfunction warnConflicts(\n presets: EnvPreset[],\n userServerKeys: Set<string>,\n userClientKeys: Set<string>,\n): void {\n const seenServerKeys = new Set<string>()\n const seenClientKeys = new Set<string>()\n\n for (const preset of presets) {\n warnSideConflicts(Object.keys(preset.server ?? {}), seenServerKeys, userServerKeys, 'server')\n warnSideConflicts(Object.keys(preset.client ?? {}), seenClientKeys, userClientKeys, 'client')\n }\n}\n\nexport function defineEnv<T extends DefineEnvInput>(definition: T): Omit<T, 'presets'> & Pick<EnvDefinition, 'server' | 'client'> {\n const { presets = [], server, client, ...rest } = definition\n // ...rest intentionally forwarded — T may carry extra keys beyond EnvDefinition\n\n const mergedServer: z.ZodRawShape = Object.assign({}, ...presets.map(p => p.server ?? {}), server)\n const mergedClient: z.ZodRawShape = Object.assign({}, ...presets.map(p => p.client ?? {}), client)\n\n warnConflicts(\n presets,\n new Set(Object.keys(server ?? {})),\n new Set(Object.keys(client ?? {})),\n )\n\n for (const key of Object.keys(mergedClient)) {\n if (!key.startsWith('VITE_')) {\n throw new Error(\n `[vite-env] Client env var \"${key}\" must be prefixed with VITE_.\\n`\n + ` Rename it to \"VITE_${key}\" or move it to \"server\" if it's secret.`,\n )\n }\n }\n\n const result: Record<string, unknown> = { ...rest }\n if (Object.keys(mergedServer).length > 0 || server !== undefined)\n result.server = mergedServer\n if (Object.keys(mergedClient).length > 0 || client !== undefined)\n result.client = mergedClient\n\n return result as Omit<T, 'presets'>\n}\n\nexport function validateEnv(\n def: EnvDefinition,\n rawEnv: Record<string, string>,\n): ValidationResult {\n const combinedShape = {\n ...def.server,\n ...def.client,\n }\n\n const schema = z.object(combinedShape)\n const result = schema.safeParse(rawEnv)\n\n if (result.success) {\n return { success: true, data: result.data, errors: [] as const }\n }\n\n return {\n success: false,\n data: null,\n errors: result.error.issues,\n }\n}\n"],"mappings":";;AAOA,SAAS,kBACP,MACA,MACA,UACA,MACM;AACN,MAAK,MAAM,OAAO,MAAM;EACtB,MAAM,YAAY,KAAK,IAAI,IAAI;AAC/B,MAAI,UACF,SAAQ,KAAK,eAAe,IAAI,yDAAyD;AAC3F,OAAK,IAAI,IAAI;AACb,MAAI,CAAC,aAAa,SAAS,IAAI,IAAI,CACjC,SAAQ,KAAK,eAAe,IAAI,yCAAyC,KAAK,gCAAgC;;;AAIpH,SAAS,cACP,SACA,gBACA,gBACM;CACN,MAAM,iCAAiB,IAAI,KAAa;CACxC,MAAM,iCAAiB,IAAI,KAAa;AAExC,MAAK,MAAM,UAAU,SAAS;AAC5B,oBAAkB,OAAO,KAAK,OAAO,UAAU,EAAE,CAAC,EAAE,gBAAgB,gBAAgB,SAAS;AAC7F,oBAAkB,OAAO,KAAK,OAAO,UAAU,EAAE,CAAC,EAAE,gBAAgB,gBAAgB,SAAS;;;AAIjG,SAAgB,UAAoC,
|
|
1
|
+
{"version":3,"file":"schema.mjs","names":[],"sources":["../src/schema.ts"],"sourcesContent":["import type { EnvDefinition, EnvPreset, ValidationResult } from './types'\nimport { z } from 'zod'\n\ntype DefineEnvInput = {\n presets?: EnvPreset[]\n} & EnvDefinition\n\nfunction warnSideConflicts(\n keys: string[],\n seen: Set<string>,\n userKeys: Set<string>,\n side: 'server' | 'client',\n): void {\n for (const key of keys) {\n const duplicate = seen.has(key)\n if (duplicate)\n console.warn(`[vite-env] \"${key}\" is defined in multiple presets. The last preset wins.`)\n seen.add(key)\n if (!duplicate && userKeys.has(key))\n console.warn(`[vite-env] \"${key}\" is defined in both a preset and your ${side} config. Your definition wins.`)\n }\n}\n\nfunction warnConflicts(\n presets: EnvPreset[],\n userServerKeys: Set<string>,\n userClientKeys: Set<string>,\n): void {\n const seenServerKeys = new Set<string>()\n const seenClientKeys = new Set<string>()\n\n for (const preset of presets) {\n warnSideConflicts(Object.keys(preset.server ?? {}), seenServerKeys, userServerKeys, 'server')\n warnSideConflicts(Object.keys(preset.client ?? {}), seenClientKeys, userClientKeys, 'client')\n }\n}\n\nexport function defineEnv<T extends DefineEnvInput>(definition: T): Omit<T, 'presets'> & Pick<EnvDefinition, 'server' | 'client' | 'presets'> {\n const { presets = [], server, client, ...rest } = definition\n // ...rest intentionally forwarded — T may carry extra keys beyond EnvDefinition\n\n const mergedServer: z.ZodRawShape = Object.assign({}, ...presets.map(p => p.server ?? {}), server)\n const mergedClient: z.ZodRawShape = Object.assign({}, ...presets.map(p => p.client ?? {}), client)\n\n warnConflicts(\n presets,\n new Set(Object.keys(server ?? {})),\n new Set(Object.keys(client ?? {})),\n )\n\n for (const key of Object.keys(mergedClient)) {\n if (!key.startsWith('VITE_')) {\n throw new Error(\n `[vite-env] Client env var \"${key}\" must be prefixed with VITE_.\\n`\n + ` Rename it to \"VITE_${key}\" or move it to \"server\" if it's secret.`,\n )\n }\n }\n\n const result: Record<string, unknown> = { ...rest }\n if (Object.keys(mergedServer).length > 0 || server !== undefined)\n result.server = mergedServer\n if (Object.keys(mergedClient).length > 0 || client !== undefined)\n result.client = mergedClient\n if (presets.length > 0)\n result.presets = presets\n\n return result as Omit<T, 'presets'> & Pick<EnvDefinition, 'presets'>\n}\n\nexport function validateEnv(\n def: EnvDefinition,\n rawEnv: Record<string, string>,\n): ValidationResult {\n const combinedShape: Record<string, z.ZodType> = {\n ...def.server,\n ...def.client,\n } as Record<string, z.ZodType>\n\n // Undetected-platform preset vars validate as optional — they only exist on\n // the platform; requiring them would break local dev. User overrides stay strict.\n // Mutating combinedShape also prevents double-wrapping when two undetected\n // presets share a key: after the first wrap, the identity check fails.\n for (const preset of def.presets ?? []) {\n if (!preset.detect || preset.detect(rawEnv))\n continue\n for (const side of [preset.server, preset.client]) {\n for (const [key, presetSchema] of Object.entries(side ?? {})) {\n if (combinedShape[key] === presetSchema)\n combinedShape[key] = z.optional(combinedShape[key])\n }\n }\n }\n\n const schema = z.object(combinedShape)\n const result = schema.safeParse(rawEnv)\n\n if (result.success) {\n return { success: true, data: result.data, errors: [] as const }\n }\n\n return {\n success: false,\n data: null,\n errors: result.error.issues,\n }\n}\n"],"mappings":";;AAOA,SAAS,kBACP,MACA,MACA,UACA,MACM;AACN,MAAK,MAAM,OAAO,MAAM;EACtB,MAAM,YAAY,KAAK,IAAI,IAAI;AAC/B,MAAI,UACF,SAAQ,KAAK,eAAe,IAAI,yDAAyD;AAC3F,OAAK,IAAI,IAAI;AACb,MAAI,CAAC,aAAa,SAAS,IAAI,IAAI,CACjC,SAAQ,KAAK,eAAe,IAAI,yCAAyC,KAAK,gCAAgC;;;AAIpH,SAAS,cACP,SACA,gBACA,gBACM;CACN,MAAM,iCAAiB,IAAI,KAAa;CACxC,MAAM,iCAAiB,IAAI,KAAa;AAExC,MAAK,MAAM,UAAU,SAAS;AAC5B,oBAAkB,OAAO,KAAK,OAAO,UAAU,EAAE,CAAC,EAAE,gBAAgB,gBAAgB,SAAS;AAC7F,oBAAkB,OAAO,KAAK,OAAO,UAAU,EAAE,CAAC,EAAE,gBAAgB,gBAAgB,SAAS;;;AAIjG,SAAgB,UAAoC,YAA0F;CAC5I,MAAM,EAAE,UAAU,EAAE,EAAE,QAAQ,QAAQ,GAAG,SAAS;CAGlD,MAAM,eAA8B,OAAO,OAAO,EAAE,EAAE,GAAG,QAAQ,KAAI,MAAK,EAAE,UAAU,EAAE,CAAC,EAAE,OAAO;CAClG,MAAM,eAA8B,OAAO,OAAO,EAAE,EAAE,GAAG,QAAQ,KAAI,MAAK,EAAE,UAAU,EAAE,CAAC,EAAE,OAAO;AAElG,eACE,SACA,IAAI,IAAI,OAAO,KAAK,UAAU,EAAE,CAAC,CAAC,EAClC,IAAI,IAAI,OAAO,KAAK,UAAU,EAAE,CAAC,CAAC,CACnC;AAED,MAAK,MAAM,OAAO,OAAO,KAAK,aAAa,CACzC,KAAI,CAAC,IAAI,WAAW,QAAQ,CAC1B,OAAM,IAAI,MACR,8BAA8B,IAAI,uDACR,IAAI,0CAC/B;CAIL,MAAM,SAAkC,EAAE,GAAG,MAAM;AACnD,KAAI,OAAO,KAAK,aAAa,CAAC,SAAS,KAAK,WAAW,KAAA,EACrD,QAAO,SAAS;AAClB,KAAI,OAAO,KAAK,aAAa,CAAC,SAAS,KAAK,WAAW,KAAA,EACrD,QAAO,SAAS;AAClB,KAAI,QAAQ,SAAS,EACnB,QAAO,UAAU;AAEnB,QAAO;;AAGT,SAAgB,YACd,KACA,QACkB;CAClB,MAAM,gBAA2C;EAC/C,GAAG,IAAI;EACP,GAAG,IAAI;EACR;AAMD,MAAK,MAAM,UAAU,IAAI,WAAW,EAAE,EAAE;AACtC,MAAI,CAAC,OAAO,UAAU,OAAO,OAAO,OAAO,CACzC;AACF,OAAK,MAAM,QAAQ,CAAC,OAAO,QAAQ,OAAO,OAAO,CAC/C,MAAK,MAAM,CAAC,KAAK,iBAAiB,OAAO,QAAQ,QAAQ,EAAE,CAAC,CAC1D,KAAI,cAAc,SAAS,aACzB,eAAc,OAAO,EAAE,SAAS,cAAc,KAAK;;CAM3D,MAAM,SADS,EAAE,OAAO,cACH,CAAC,UAAU,OAAO;AAEvC,KAAI,OAAO,QACT,QAAO;EAAE,SAAS;EAAM,MAAM,OAAO;EAAM,QAAQ,EAAE;EAAW;AAGlE,QAAO;EACL,SAAS;EACT,MAAM;EACN,QAAQ,OAAO,MAAM;EACtB"}
|
package/dist/standard.d.cts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { c as StandardValidationResult, o as StandardEnvDefinition } from "./types-
|
|
1
|
+
import { c as StandardValidationResult, o as StandardEnvDefinition } from "./types-B61nsO8q.cjs";
|
|
2
2
|
|
|
3
3
|
//#region src/standard.d.ts
|
|
4
4
|
declare function defineStandardEnv<T extends Omit<StandardEnvDefinition, '_standard'>>(definition: T): T & {
|
package/dist/standard.d.mts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { c as StandardValidationResult, o as StandardEnvDefinition } from "./types
|
|
1
|
+
import { c as StandardValidationResult, o as StandardEnvDefinition } from "./types-KniR_Oqf.mjs";
|
|
2
2
|
|
|
3
3
|
//#region src/standard.d.ts
|
|
4
4
|
declare function defineStandardEnv<T extends Omit<StandardEnvDefinition, '_standard'>>(definition: T): T & {
|
|
@@ -5,6 +5,12 @@ import { z } from "zod";
|
|
|
5
5
|
type EnvDefinition = {
|
|
6
6
|
server?: z.ZodRawShape;
|
|
7
7
|
client?: z.ZodRawShape;
|
|
8
|
+
/**
|
|
9
|
+
* Retained from defineEnv for validation-time platform detection.
|
|
10
|
+
* Gating relies on schema reference identity — cloning or serializing
|
|
11
|
+
* the definition disables it (preset keys become permanently strict).
|
|
12
|
+
*/
|
|
13
|
+
presets?: EnvPreset[];
|
|
8
14
|
};
|
|
9
15
|
type StandardEnvDefinition = {
|
|
10
16
|
server?: Record<string, StandardSchemaV1>;
|
|
@@ -14,6 +20,12 @@ type StandardEnvDefinition = {
|
|
|
14
20
|
type EnvPreset = {
|
|
15
21
|
server?: z.ZodRawShape;
|
|
16
22
|
client?: z.ZodRawShape;
|
|
23
|
+
/**
|
|
24
|
+
* Returns true when running on the platform that injects these vars.
|
|
25
|
+
* When false, preset vars validate as optional (user overrides excluded)
|
|
26
|
+
* so local dev passes without platform-injected vars.
|
|
27
|
+
*/
|
|
28
|
+
detect?: (env: Record<string, string | undefined>) => boolean;
|
|
17
29
|
};
|
|
18
30
|
type AnyEnvDefinition = EnvDefinition | StandardEnvDefinition;
|
|
19
31
|
type ValidationResult = {
|
|
@@ -43,4 +55,4 @@ type InferClientEnv<T extends EnvDefinition> = z.infer<z.ZodObject<OrEmptyShape<
|
|
|
43
55
|
type InferServerEnv<T extends EnvDefinition> = z.infer<z.ZodObject<OrEmptyShape<T['server']> & OrEmptyShape<T['client']>>>;
|
|
44
56
|
//#endregion
|
|
45
57
|
export { InferServerEnv as a, StandardValidationResult as c, InferClientEnv as i, ValidationResult as l, EnvDefinition as n, StandardEnvDefinition as o, EnvPreset as r, StandardValidationIssue as s, AnyEnvDefinition as t };
|
|
46
|
-
//# sourceMappingURL=types-
|
|
58
|
+
//# sourceMappingURL=types-B61nsO8q.d.cts.map
|
|
@@ -5,6 +5,12 @@ import { StandardSchemaV1 } from "@standard-schema/spec";
|
|
|
5
5
|
type EnvDefinition = {
|
|
6
6
|
server?: z.ZodRawShape;
|
|
7
7
|
client?: z.ZodRawShape;
|
|
8
|
+
/**
|
|
9
|
+
* Retained from defineEnv for validation-time platform detection.
|
|
10
|
+
* Gating relies on schema reference identity — cloning or serializing
|
|
11
|
+
* the definition disables it (preset keys become permanently strict).
|
|
12
|
+
*/
|
|
13
|
+
presets?: EnvPreset[];
|
|
8
14
|
};
|
|
9
15
|
type StandardEnvDefinition = {
|
|
10
16
|
server?: Record<string, StandardSchemaV1>;
|
|
@@ -14,6 +20,12 @@ type StandardEnvDefinition = {
|
|
|
14
20
|
type EnvPreset = {
|
|
15
21
|
server?: z.ZodRawShape;
|
|
16
22
|
client?: z.ZodRawShape;
|
|
23
|
+
/**
|
|
24
|
+
* Returns true when running on the platform that injects these vars.
|
|
25
|
+
* When false, preset vars validate as optional (user overrides excluded)
|
|
26
|
+
* so local dev passes without platform-injected vars.
|
|
27
|
+
*/
|
|
28
|
+
detect?: (env: Record<string, string | undefined>) => boolean;
|
|
17
29
|
};
|
|
18
30
|
type AnyEnvDefinition = EnvDefinition | StandardEnvDefinition;
|
|
19
31
|
type ValidationResult = {
|
|
@@ -43,4 +55,4 @@ type InferClientEnv<T extends EnvDefinition> = z.infer<z.ZodObject<OrEmptyShape<
|
|
|
43
55
|
type InferServerEnv<T extends EnvDefinition> = z.infer<z.ZodObject<OrEmptyShape<T['server']> & OrEmptyShape<T['client']>>>;
|
|
44
56
|
//#endregion
|
|
45
57
|
export { InferServerEnv as a, StandardValidationResult as c, InferClientEnv as i, ValidationResult as l, EnvDefinition as n, StandardEnvDefinition as o, EnvPreset as r, StandardValidationIssue as s, AnyEnvDefinition as t };
|
|
46
|
-
//# sourceMappingURL=types
|
|
58
|
+
//# sourceMappingURL=types-KniR_Oqf.d.mts.map
|