envin 0.0.1 → 1.1.1

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 ADDED
@@ -0,0 +1,95 @@
1
+ ![Envin](./apps/docs/src/app/opengraph-image.png)
2
+
3
+ ## Installation
4
+
5
+ > [!NOTE]
6
+ >
7
+ > This is an ESM only package that requires a tsconfig with a module resolution that can read package.json#exports (`NodeNext` if transpiling with `tsc`, `Bundler` if using a bundler).
8
+
9
+ ```bash
10
+ # Core package, no framework specific features
11
+ bun add envin
12
+
13
+ # CLI, used e.g. for live previews
14
+ bun add @envin/cli
15
+ ```
16
+
17
+ For full documentation, see https://envin.turbostarter.dev
18
+
19
+ ## Usage
20
+
21
+ > [!NOTE]
22
+ >
23
+ > You may use any [Standard Schema](https://github.com/standard-schema/standard-schema) compliant validator of your choice.
24
+
25
+ This package supports the full power of [most popular schema libraries](https://github.com/standard-schema/standard-schema?tab=readme-ov-file#what-schema-libraries-implement-the-spec), meaning you can use `transforms` and `default` values.
26
+
27
+ ### Define your schema
28
+
29
+ ```ts
30
+ // env.config.ts
31
+ import { defineEnv } from "envin";
32
+ import { z } from "zod";
33
+
34
+ export default defineEnv({
35
+ /*
36
+ * Shared environment variables, available on the client and server.
37
+ */
38
+ shared: {
39
+ NODE_ENV: z.enum(["development", "production"]).default("development"),
40
+ },
41
+ /*
42
+ * Prefix for client environment variables.
43
+ */
44
+ clientPrefix: "NEXT_PUBLIC_",
45
+ /*
46
+ * Environment variables available on the client (and server).
47
+ *
48
+ * 💡 You'll get type errors if these are not prefixed with NEXT_PUBLIC_.
49
+ */
50
+ client: {
51
+ NEXT_PUBLIC_API_URL: z.string().url(),
52
+ },
53
+ /*
54
+ * Serverside Environment variables, not available on the client.
55
+ * Will throw if you access these variables on the client.
56
+ */
57
+ server: {
58
+ DATABASE_URL: z.string().url(),
59
+ },
60
+ /*
61
+ * In some cases, we need to manually destructure environment variables to make sure all are included in bundle.
62
+ *
63
+ * 💡 You'll get type errors if not all variables are included here.
64
+ */
65
+ envStrict: {
66
+ DATABASE_URL: process.env.DATABASE_URL,
67
+ NEXT_PUBLIC_API_URL: process.env.NEXT_PUBLIC_API_URL,
68
+ },
69
+ });
70
+ ```
71
+
72
+ ### Use the schema in your app with autocompletion and type inference
73
+
74
+ ```ts
75
+ // route.ts
76
+ import env from "~/env.config";
77
+
78
+ export const GET = (req: Request) => {
79
+ const DATABASE_URL = env.DATABASE_URL;
80
+ // use it...
81
+ };
82
+ ```
83
+
84
+ ## Live Preview
85
+
86
+ One of the most powerful features of this package is the ability to preview your environment variables in a livemode.
87
+
88
+ ```bash
89
+ # Run the CLI with your env.config.ts file
90
+ npx @envin/cli@latest dev
91
+ ```
92
+
93
+ ![Live Preview](./apps/docs/public/images/docs/live-preview.png)
94
+
95
+ This will start a live preview server that will automatically update your environment variables when you change them allowing you to find and fix errors before deploying your app.
package/dist/index.js CHANGED
@@ -1,2 +1 @@
1
1
  function S(e,n){if(e instanceof Promise)throw new Error(n)}function m(e,n){let i={},d=[];for(let a in e){let o=e[a]?.["~standard"].validate(n[a]);if(S(o,`Validation must be synchronous, but ${a} returned a Promise.`),o?.issues){d.push(...o.issues.map(u=>({...u,path:[a,...u.path??[]]})));continue}i[a]=o?.value}return d.length?{issues:d}:{value:i}}var x=e=>["__esModule","$$typeof"].includes(e),T=(e,n)=>({...e.shared&&e.shared,...e.server&&n&&e.server,...e.client&&e.client}),f=(e,n)=>({...e.extends?.reduce((d,a)=>({...d,...T(a,n)}),{}),...T(e,n)}),l=class extends Error{constructor(n){super(n),this.name="EnvError"}};function O(e){let n=e.envStrict??e.env??process.env;for(let[t,r]of Object.entries(n))r===""&&delete n[t];let i=e.isServer??(typeof window>"u"||"Deno"in window),d=e.onError??(t=>{throw console.error("\u274C Invalid environment variables:",t),new l("Invalid environment variables")}),a=e.onInvalidAccess??(t=>{throw new l(`\u274C Attempted to access a server-side environment variable on the client: ${t}`)}),o=!!e.skip,u=f(e,i);if(o)return{...n,_schema:u};let c=e.transform?.(u,i)["~standard"].validate(n)??m(u,n);S(c,"Validation must be synchronous!"),c.issues&&d(c.issues);let p=t=>{let r=[e,...e.extends??[]].map(s=>({keys:Object.keys(s.client??{}),prefix:s.clientPrefix})).some(s=>s.keys.includes(t)&&(!s.prefix||t.startsWith(s.prefix)));return![...Object.keys(e.shared??{}),...e.extends?.flatMap(s=>Object.keys(s.shared??{}))??[]].includes(t)&&!r},h=t=>i||!p(t);return new Proxy("value"in c?c.value:{},{get(t,r){if(typeof r=="string"&&!x(r))return r==="_schema"?u:h(r)?Reflect.get(t,r):a(r)}})}export{O as defineEnv};
2
- //# sourceMappingURL=index.js.map
@@ -1,2 +1 @@
1
1
  import*as t from"valibot";var o={id:"vercel",server:{VERCEL:t.optional(t.string()),CI:t.optional(t.string()),VERCEL_ENV:t.optional(t.picklist(["development","preview","production"]),"development"),VERCEL_URL:t.optional(t.string()),VERCEL_PROJECT_PRODUCTION_URL:t.optional(t.string()),VERCEL_BRANCH_URL:t.optional(t.string()),VERCEL_REGION:t.optional(t.string()),VERCEL_DEPLOYMENT_ID:t.optional(t.string()),VERCEL_SKEW_PROTECTION_ENABLED:t.optional(t.string()),VERCEL_AUTOMATION_BYPASS_SECRET:t.optional(t.string()),VERCEL_GIT_PROVIDER:t.optional(t.string()),VERCEL_GIT_REPO_SLUG:t.optional(t.string()),VERCEL_GIT_REPO_OWNER:t.optional(t.string()),VERCEL_GIT_REPO_ID:t.optional(t.string()),VERCEL_GIT_COMMIT_REF:t.optional(t.string()),VERCEL_GIT_COMMIT_SHA:t.optional(t.string()),VERCEL_GIT_COMMIT_MESSAGE:t.optional(t.string()),VERCEL_GIT_COMMIT_AUTHOR_LOGIN:t.optional(t.string()),VERCEL_GIT_COMMIT_AUTHOR_NAME:t.optional(t.string()),VERCEL_GIT_PREVIOUS_SHA:t.optional(t.string()),VERCEL_GIT_PULL_REQUEST_ID:t.optional(t.string())}},n={id:"neon-vercel",server:{DATABASE_URL:t.string(),DATABASE_URL_UNPOOLED:t.optional(t.string()),PGHOST:t.optional(t.string()),PGHOST_UNPOOLED:t.optional(t.string()),PGUSER:t.optional(t.string()),PGDATABASE:t.optional(t.string()),PGPASSWORD:t.optional(t.string()),POSTGRES_URL:t.optional(t.pipe(t.string(),t.url())),POSTGRES_URL_NON_POOLING:t.optional(t.pipe(t.string(),t.url())),POSTGRES_USER:t.optional(t.string()),POSTGRES_HOST:t.optional(t.string()),POSTGRES_PASSWORD:t.optional(t.string()),POSTGRES_DATABASE:t.optional(t.string()),POSTGRES_URL_NO_SSL:t.optional(t.pipe(t.string(),t.url())),POSTGRES_PRISMA_URL:t.optional(t.pipe(t.string(),t.url()))}},i={id:"uploadthing",server:{UPLOADTHING_TOKEN:t.string()}},v={id:"render",server:{IS_PULL_REQUEST:t.optional(t.string()),RENDER_DISCOVERY_SERVICE:t.optional(t.string()),RENDER_EXTERNAL_HOSTNAME:t.optional(t.string()),RENDER_EXTERNAL_URL:t.optional(t.pipe(t.string(),t.url())),RENDER_GIT_BRANCH:t.optional(t.string()),RENDER_GIT_COMMIT:t.optional(t.string()),RENDER_GIT_REPO_SLUG:t.optional(t.string()),RENDER_INSTANCE_ID:t.optional(t.string()),RENDER_SERVICE_ID:t.optional(t.string()),RENDER_SERVICE_NAME:t.optional(t.string()),RENDER_SERVICE_TYPE:t.optional(t.picklist(["web","pserv","cron","worker","static"])),RENDER:t.optional(t.string())}},r={id:"railway",server:{RAILWAY_PUBLIC_DOMAIN:t.optional(t.string()),RAILWAY_PRIVATE_DOMAIN:t.optional(t.string()),RAILWAY_TCP_PROXY_DOMAIN:t.optional(t.string()),RAILWAY_TCP_PROXY_PORT:t.optional(t.string()),RAILWAY_TCP_APPLICATION_PORT:t.optional(t.string()),RAILWAY_PROJECT_NAME:t.optional(t.string()),RAILWAY_PROJECT_ID:t.optional(t.string()),RAILWAY_ENVIRONMENT_NAME:t.optional(t.string()),RAILWAY_ENVIRONMENT_ID:t.optional(t.string()),RAILWAY_SERVICE_NAME:t.optional(t.string()),RAILWAY_SERVICE_ID:t.optional(t.string()),RAILWAY_REPLICA_ID:t.optional(t.string()),RAILWAY_DEPLOYMENT_ID:t.optional(t.string()),RAILWAY_SNAPSHOT_ID:t.optional(t.string()),RAILWAY_VOLUME_NAME:t.optional(t.string()),RAILWAY_VOLUME_MOUNT_PATH:t.optional(t.string()),RAILWAY_RUN_UID:t.optional(t.string()),RAILWAY_GIT_COMMIT_SHA:t.optional(t.string()),RAILWAY_GIT_AUTHOR_EMAIL:t.optional(t.string()),RAILWAY_GIT_BRANCH:t.optional(t.string()),RAILWAY_GIT_REPO_NAME:t.optional(t.string()),RAILWAY_GIT_REPO_OWNER:t.optional(t.string()),RAILWAY_GIT_COMMIT_MESSAGE:t.optional(t.string())}},_={id:"fly",server:{FLY_APP_NAME:t.optional(t.string()),FLY_MACHINE_ID:t.optional(t.string()),FLY_ALLOC_ID:t.optional(t.string()),FLY_REGION:t.optional(t.string()),FLY_PUBLIC_IP:t.optional(t.string()),FLY_IMAGE_REF:t.optional(t.string()),FLY_MACHINE_VERSION:t.optional(t.string()),FLY_PRIVATE_IP:t.optional(t.string()),FLY_PROCESS_GROUP:t.optional(t.string()),FLY_VM_MEMORY_MB:t.optional(t.string()),PRIMARY_REGION:t.optional(t.string())}},E={id:"netlify",server:{NETLIFY:t.optional(t.string()),BUILD_ID:t.optional(t.string()),CONTEXT:t.optional(t.picklist(["production","deploy-preview","branch-deploy","dev"])),REPOSITORY_URL:t.optional(t.string()),BRANCH:t.optional(t.string()),URL:t.optional(t.string()),DEPLOY_URL:t.optional(t.string()),DEPLOY_PRIME_URL:t.optional(t.string()),DEPLOY_ID:t.optional(t.string()),SITE_NAME:t.optional(t.string()),SITE_ID:t.optional(t.string())}},p={id:"upstash-redis",server:{UPSTASH_REDIS_REST_URL:t.pipe(t.string(),t.url()),UPSTASH_REDIS_REST_TOKEN:t.string()}},R={id:"coolify",server:{COOLIFY_FQDN:t.optional(t.string()),COOLIFY_URL:t.optional(t.string()),COOLIFY_BRANCH:t.optional(t.string()),COOLIFY_RESOURCE_UUID:t.optional(t.string()),COOLIFY_CONTAINER_NAME:t.optional(t.string()),SOURCE_COMMIT:t.optional(t.string()),PORT:t.optional(t.string()),HOST:t.optional(t.string())}};export{R as coolify,_ as fly,n as neonVercel,E as netlify,r as railway,v as render,i as uploadthing,p as upstashRedis,o as vercel};
2
- //# sourceMappingURL=valibot.js.map
@@ -1,2 +1 @@
1
1
  import{z as t}from"zod";var n={id:"vercel",server:{VERCEL:t.string().optional(),CI:t.string().optional(),VERCEL_ENV:t.enum(["development","preview","production"]).optional().default("development"),VERCEL_URL:t.string().optional(),VERCEL_PROJECT_PRODUCTION_URL:t.string().optional(),VERCEL_BRANCH_URL:t.string().optional(),VERCEL_REGION:t.string().optional(),VERCEL_DEPLOYMENT_ID:t.string().optional(),VERCEL_SKEW_PROTECTION_ENABLED:t.string().optional(),VERCEL_AUTOMATION_BYPASS_SECRET:t.string().optional(),VERCEL_GIT_PROVIDER:t.string().optional(),VERCEL_GIT_REPO_SLUG:t.string().optional(),VERCEL_GIT_REPO_OWNER:t.string().optional(),VERCEL_GIT_REPO_ID:t.string().optional(),VERCEL_GIT_COMMIT_REF:t.string().optional(),VERCEL_GIT_COMMIT_SHA:t.string().optional(),VERCEL_GIT_COMMIT_MESSAGE:t.string().optional(),VERCEL_GIT_COMMIT_AUTHOR_LOGIN:t.string().optional(),VERCEL_GIT_COMMIT_AUTHOR_NAME:t.string().optional(),VERCEL_GIT_PREVIOUS_SHA:t.string().optional(),VERCEL_GIT_PULL_REQUEST_ID:t.string().optional()}},i={id:"neon-vercel",server:{DATABASE_URL:t.string(),DATABASE_URL_UNPOOLED:t.string().optional(),PGHOST:t.string().optional(),PGHOST_UNPOOLED:t.string().optional(),PGUSER:t.string().optional(),PGDATABASE:t.string().optional(),PGPASSWORD:t.string().optional(),POSTGRES_URL:t.string().url().optional(),POSTGRES_URL_NON_POOLING:t.string().url().optional(),POSTGRES_USER:t.string().optional(),POSTGRES_HOST:t.string().optional(),POSTGRES_PASSWORD:t.string().optional(),POSTGRES_DATABASE:t.string().optional(),POSTGRES_URL_NO_SSL:t.string().url().optional(),POSTGRES_PRISMA_URL:t.string().url().optional()}},r={id:"uploadthing",server:{UPLOADTHING_TOKEN:t.string()}},_={id:"render",server:{IS_PULL_REQUEST:t.string().optional(),RENDER_DISCOVERY_SERVICE:t.string().optional(),RENDER_EXTERNAL_HOSTNAME:t.string().optional(),RENDER_EXTERNAL_URL:t.string().url().optional(),RENDER_GIT_BRANCH:t.string().optional(),RENDER_GIT_COMMIT:t.string().optional(),RENDER_GIT_REPO_SLUG:t.string().optional(),RENDER_INSTANCE_ID:t.string().optional(),RENDER_SERVICE_ID:t.string().optional(),RENDER_SERVICE_NAME:t.string().optional(),RENDER_SERVICE_TYPE:t.enum(["web","pserv","cron","worker","static"]).optional(),RENDER:t.string().optional()}},E={id:"railway",server:{RAILWAY_PUBLIC_DOMAIN:t.string().optional(),RAILWAY_PRIVATE_DOMAIN:t.string().optional(),RAILWAY_TCP_PROXY_DOMAIN:t.string().optional(),RAILWAY_TCP_PROXY_PORT:t.string().optional(),RAILWAY_TCP_APPLICATION_PORT:t.string().optional(),RAILWAY_PROJECT_NAME:t.string().optional(),RAILWAY_PROJECT_ID:t.string().optional(),RAILWAY_ENVIRONMENT_NAME:t.string().optional(),RAILWAY_ENVIRONMENT_ID:t.string().optional(),RAILWAY_SERVICE_NAME:t.string().optional(),RAILWAY_SERVICE_ID:t.string().optional(),RAILWAY_REPLICA_ID:t.string().optional(),RAILWAY_DEPLOYMENT_ID:t.string().optional(),RAILWAY_SNAPSHOT_ID:t.string().optional(),RAILWAY_VOLUME_NAME:t.string().optional(),RAILWAY_VOLUME_MOUNT_PATH:t.string().optional(),RAILWAY_RUN_UID:t.string().optional(),RAILWAY_GIT_COMMIT_SHA:t.string().optional(),RAILWAY_GIT_AUTHOR_EMAIL:t.string().optional(),RAILWAY_GIT_BRANCH:t.string().optional(),RAILWAY_GIT_REPO_NAME:t.string().optional(),RAILWAY_GIT_REPO_OWNER:t.string().optional(),RAILWAY_GIT_COMMIT_MESSAGE:t.string().optional()}},R={id:"fly",server:{FLY_APP_NAME:t.string().optional(),FLY_MACHINE_ID:t.string().optional(),FLY_ALLOC_ID:t.string().optional(),FLY_REGION:t.string().optional(),FLY_PUBLIC_IP:t.string().optional(),FLY_IMAGE_REF:t.string().optional(),FLY_MACHINE_VERSION:t.string().optional(),FLY_PRIVATE_IP:t.string().optional(),FLY_PROCESS_GROUP:t.string().optional(),FLY_VM_MEMORY_MB:t.string().optional(),PRIMARY_REGION:t.string().optional()}},p={id:"netlify",server:{NETLIFY:t.string().optional(),BUILD_ID:t.string().optional(),CONTEXT:t.enum(["production","deploy-preview","branch-deploy","dev"]).optional(),REPOSITORY_URL:t.string().optional(),BRANCH:t.string().optional(),URL:t.string().optional(),DEPLOY_URL:t.string().optional(),DEPLOY_PRIME_URL:t.string().optional(),DEPLOY_ID:t.string().optional(),SITE_NAME:t.string().optional(),SITE_ID:t.string().optional()}},s={id:"upstash-redis",server:{UPSTASH_REDIS_REST_URL:t.string().url(),UPSTASH_REDIS_REST_TOKEN:t.string()}},e={id:"coolify",server:{COOLIFY_FQDN:t.string().optional(),COOLIFY_URL:t.string().optional(),COOLIFY_BRANCH:t.string().optional(),COOLIFY_RESOURCE_UUID:t.string().optional(),COOLIFY_CONTAINER_NAME:t.string().optional(),SOURCE_COMMIT:t.string().optional(),PORT:t.string().optional(),HOST:t.string().optional()}};export{e as coolify,R as fly,i as neonVercel,p as netlify,E as railway,_ as render,r as uploadthing,s as upstashRedis,n as vercel};
2
- //# sourceMappingURL=zod.js.map
package/dist/types.d.ts CHANGED
@@ -90,6 +90,9 @@ type TPreset<TPrefix extends TPrefixFormat = TPrefixFormat, TShared extends TSha
90
90
  };
91
91
  type TSchema = StandardSchemaV1<object, object>;
92
92
  interface BaseOptions<TExtends extends TExtendsFormat> {
93
+ /**
94
+ * Array of preset configurations to extend from.
95
+ */
93
96
  extends?: TExtends;
94
97
  /**
95
98
  * Whether to skip validation of environment variables.
@@ -113,10 +116,14 @@ interface BaseOptions<TExtends extends TExtendsFormat> {
113
116
  onInvalidAccess?: (variable: string) => never;
114
117
  }
115
118
  interface LooseOptions<TExtends extends TExtendsFormat> extends BaseOptions<TExtends> {
119
+ /**
120
+ * Must be undefined when using loose options. Use `env` instead.
121
+ */
116
122
  envStrict?: never;
117
123
  /**
118
124
  * What object holds the environment variables at runtime. This is usually
119
125
  * `process.env` or `import.meta.env`.
126
+ * This doesn't enforce that all environment variables are set.
120
127
  */
121
128
  env?: Record<string, string | boolean | number | undefined>;
122
129
  }
@@ -132,9 +139,15 @@ interface StrictOptions<TPrefix extends TPrefixFormat, TServer extends TServerFo
132
139
  }[keyof TServer] | {
133
140
  [TKey in keyof TShared]: TKey extends string ? TKey : never;
134
141
  }[keyof TShared], string | boolean | number | undefined>;
142
+ /**
143
+ * Must be undefined when using strict options. Use `envStrict` instead.
144
+ */
135
145
  env?: never;
136
146
  }
137
147
  interface SharedOptions<TShared extends TSharedFormat> {
148
+ /**
149
+ * Specify your shared environment variables schema here. These variables are available on both client and server.
150
+ */
138
151
  shared?: TShared;
139
152
  }
140
153
  interface ClientOptions<TPrefix extends TPrefixFormat, TClient extends TClientFormat> {
@@ -171,8 +184,8 @@ interface TransformSchemaOptions<TShared extends TSharedFormat, TServer extends
171
184
  type EnvOptions<TPrefix extends TPrefixFormat = TPrefixFormat, TShared extends TSharedFormat = TSharedFormat, TServer extends TServerFormat = TServerFormat, TClient extends TClientFormat = TClientFormat, TExtends extends TExtendsFormat = TExtendsFormat, TFinalSchema extends TSchema = TSchema> = (LooseOptions<TExtends> | StrictOptions<TPrefix, TServer, TClient, TShared, TExtends>) & ValidationOptions<TPrefix, TShared, TServer, TClient> & TransformSchemaOptions<TShared, TServer, TClient, TExtends, TFinalSchema>;
172
185
  type FullSchemaShape<TShared extends TSharedFormat, TServer extends TServerFormat, TClient extends TClientFormat, TExtends extends TExtendsFormat> = CombinedSchema<Reduce<TExtends>, CombinedSchema<TShared, TServer, TClient>>;
173
186
  type FinalSchema<TShared extends TSharedFormat, TServer extends TServerFormat, TClient extends TClientFormat, TExtends extends TExtendsFormat> = StandardSchemaV1<object, UndefinedOptional<StandardSchemaDictionary.InferOutput<FullSchemaShape<TShared, TServer, TClient, TExtends>>>>;
174
- type DefineEnv<TFinalSchema extends TSchema = TSchema> = Readonly<Simplify<StandardSchemaV1.InferOutput<TFinalSchema>>> & {
187
+ type DefineEnv<TFinalSchema extends TSchema = TSchema> = Simplify<Readonly<StandardSchemaV1.InferOutput<TFinalSchema> & {
175
188
  _schema: TFinalSchema;
176
- };
189
+ }>>;
177
190
 
178
- export type { BaseOptions, ClientOptions, CombinedSchema, DefineEnv, EnvOptions, ErrorMessage, FinalSchema, FullSchemaShape, InferPresetOutput, LooseOptions, ServerOptions, SharedOptions, StrictOptions, TClientFormat, TExtendsFormat, TPrefixFormat, TPreset, TSchema, TServerFormat, TSharedFormat, TransformSchemaOptions, ValidationOptions };
191
+ export type { BaseOptions, ClientOptions, CombinedSchema, DefineEnv, EnvOptions, ErrorMessage, FinalSchema, FullSchemaShape, InferPresetOutput, LooseOptions, ServerOptions, SharedOptions, Simplify, StrictOptions, TClientFormat, TExtendsFormat, TPrefixFormat, TPreset, TSchema, TServerFormat, TSharedFormat, TransformSchemaOptions, ValidationOptions };
package/dist/types.js CHANGED
@@ -1 +0,0 @@
1
- //# sourceMappingURL=types.js.map
package/package.json CHANGED
@@ -1,6 +1,7 @@
1
1
  {
2
2
  "name": "envin",
3
- "version": "0.0.1",
3
+ "version": "1.1.1",
4
+ "description": "Type-safe env validation with live previews",
4
5
  "keywords": [
5
6
  "turbostarter",
6
7
  "environment variables",
@@ -14,6 +15,10 @@
14
15
  "url": "git+https://github.com/turbostarter/envin.git",
15
16
  "directory": "packages/core"
16
17
  },
18
+ "homepage": "https://envin.turbostarter.dev",
19
+ "bugs": {
20
+ "url": "https://github.com/turbostarter/envin/issues"
21
+ },
17
22
  "license": "MIT",
18
23
  "author": "Bartosz Zagrodzki",
19
24
  "type": "module",
@@ -21,17 +26,14 @@
21
26
  "./package.json": "./package.json",
22
27
  ".": {
23
28
  "types": "./dist/index.d.ts",
24
- "require": "./dist/index.js",
25
29
  "default": "./dist/index.js"
26
30
  },
27
31
  "./presets/*": {
28
32
  "types": "./dist/presets/*.d.ts",
29
- "require": "./dist/presets/*.js",
30
33
  "default": "./dist/presets/*.js"
31
34
  },
32
35
  "./types": {
33
36
  "types": "./dist/types.d.ts",
34
- "require": "./dist/types.js",
35
37
  "default": "./dist/types.js"
36
38
  }
37
39
  },
@@ -47,13 +49,14 @@
47
49
  "dev": "tsup --watch",
48
50
  "start": "node dist/index.js",
49
51
  "test": "bun test",
50
- "typecheck": "tsc --noEmit"
52
+ "typecheck": "tsc --noEmit",
53
+ "prepack": "bun run ../../scripts/populate-readme.ts"
51
54
  },
52
55
  "devDependencies": {
53
56
  "tsup": "^8.5.0",
54
57
  "typescript": "5.8.3",
55
58
  "valibot": "1.1.0",
56
- "zod": "3.24.1"
59
+ "zod": "3.25.56"
57
60
  },
58
61
  "peerDependencies": {
59
62
  "arktype": "^2.1.0",
package/dist/index.js.map DELETED
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../src/standard.ts","../src/index.ts"],"sourcesContent":["/** The Standard Schema interface. */\nexport interface StandardSchemaV1<Input = unknown, Output = Input> {\n /** The Standard Schema properties. */\n readonly \"~standard\": StandardSchemaV1.Props<Input, Output>;\n}\n\nexport declare namespace StandardSchemaV1 {\n /** The Standard Schema properties interface. */\n export interface Props<Input = unknown, Output = Input> {\n /** The version number of the standard. */\n readonly version: 1;\n /** The vendor name of the schema library. */\n readonly vendor: string;\n /** Validates unknown input values. */\n readonly validate: (\n value: unknown,\n ) => Result<Output> | Promise<Result<Output>>;\n /** Inferred types associated with the schema. */\n readonly types?: Types<Input, Output> | undefined;\n }\n\n /** The result interface of the validate function. */\n export type Result<Output> = SuccessResult<Output> | FailureResult;\n\n /** The result interface if validation succeeds. */\n export interface SuccessResult<Output> {\n /** The typed output value. */\n readonly value: Output;\n /** The non-existent issues. */\n readonly issues?: undefined;\n }\n\n /** The result interface if validation fails. */\n export interface FailureResult {\n /** The issues of failed validation. */\n readonly issues: ReadonlyArray<Issue>;\n }\n\n /** The issue interface of the failure output. */\n export interface Issue {\n /** The error message of the issue. */\n readonly message: string;\n /** The path of the issue, if any. */\n readonly path?: ReadonlyArray<PropertyKey | PathSegment> | undefined;\n }\n\n /** The path segment interface of the issue. */\n export interface PathSegment {\n /** The key representing a path segment. */\n readonly key: PropertyKey;\n }\n\n /** The Standard Schema types interface. */\n export interface Types<Input = unknown, Output = Input> {\n /** The input type of the schema. */\n readonly input: Input;\n /** The output type of the schema. */\n readonly output: Output;\n }\n\n /** Infers the input type of a Standard Schema. */\n export type InferInput<Schema extends StandardSchemaV1> = NonNullable<\n Schema[\"~standard\"][\"types\"]\n >[\"input\"];\n\n /** Infers the output type of a Standard Schema. */\n export type InferOutput<Schema extends StandardSchemaV1> = NonNullable<\n Schema[\"~standard\"][\"types\"]\n >[\"output\"];\n}\n\nexport type StandardSchemaDictionary<\n Input = Record<string, unknown>,\n Output extends Record<keyof Input, unknown> = Input,\n> = {\n [K in keyof Input]-?: StandardSchemaV1<Input[K], Output[K]>;\n};\n\nexport namespace StandardSchemaDictionary {\n export type InferInput<T extends StandardSchemaDictionary> = {\n [K in keyof T]: StandardSchemaV1.InferInput<T[K]>;\n };\n export type InferOutput<T extends StandardSchemaDictionary> = {\n [K in keyof T]: StandardSchemaV1.InferOutput<T[K]>;\n };\n}\n\nexport function ensureSynchronous<T>(\n value: T | Promise<T>,\n message: string,\n): asserts value is T {\n if (value instanceof Promise) {\n throw new Error(message);\n }\n}\n\nexport function parseWithDictionary<TDict extends StandardSchemaDictionary>(\n dictionary: TDict,\n value: Record<string, unknown>,\n): StandardSchemaV1.Result<StandardSchemaDictionary.InferOutput<TDict>> {\n const result: Record<string, unknown> = {};\n const issues: StandardSchemaV1.Issue[] = [];\n for (const key in dictionary) {\n const propResult = dictionary[key]?.[\"~standard\"].validate(value[key]);\n\n ensureSynchronous(\n propResult,\n `Validation must be synchronous, but ${key} returned a Promise.`,\n );\n\n if (propResult?.issues) {\n issues.push(\n ...propResult.issues.map((issue) => ({\n ...issue,\n path: [key, ...(issue.path ?? [])],\n })),\n );\n continue;\n }\n result[key] = propResult?.value;\n }\n if (issues.length) {\n return { issues };\n }\n return { value: result as never };\n}\n","import { ensureSynchronous, parseWithDictionary } from \"./standard\";\nimport type {\n DefineEnv,\n EnvOptions,\n FinalSchema,\n TClientFormat,\n TExtendsFormat,\n TPrefixFormat,\n TSchema,\n TServerFormat,\n TSharedFormat,\n ValidationOptions,\n} from \"./types\";\n\nconst ignoreProp = (prop: string) => {\n return [\"__esModule\", \"$$typeof\"].includes(prop);\n};\n\nconst getCombinedSchema = <\n TPrefix extends TPrefixFormat,\n TShared extends TSharedFormat,\n TServer extends TServerFormat,\n TClient extends TClientFormat,\n>(\n options: ValidationOptions<TPrefix, TShared, TServer, TClient>,\n isServer: boolean,\n) => {\n return {\n ...(options.shared && options.shared),\n ...(options.server && isServer && options.server),\n ...(options.client && options.client),\n };\n};\n\nconst getFinalSchema = <\n TPrefix extends TPrefixFormat,\n TShared extends TSharedFormat,\n TServer extends TServerFormat,\n TClient extends TClientFormat,\n TExtends extends TExtendsFormat,\n TFinalSchema extends TSchema,\n>(\n options: EnvOptions<\n TPrefix,\n TShared,\n TServer,\n TClient,\n TExtends,\n TFinalSchema\n >,\n isServer: boolean,\n) => {\n const presets = options.extends?.reduce(\n (acc, preset) => {\n return {\n // biome-ignore lint/performance/noAccumulatingSpread: necessary for merging preset schemas\n ...acc,\n ...getCombinedSchema(preset, isServer),\n };\n },\n {} as ValidationOptions<string, TShared, TServer, TClient>,\n );\n\n return {\n ...presets,\n ...getCombinedSchema(options, isServer),\n };\n};\n\nclass EnvError extends Error {\n constructor(message: string) {\n super(message);\n this.name = \"EnvError\";\n }\n}\n\nexport function defineEnv<\n TPrefix extends TPrefixFormat,\n TShared extends TSharedFormat = NonNullable<unknown>,\n TServer extends TServerFormat = NonNullable<unknown>,\n TClient extends TClientFormat = NonNullable<unknown>,\n const TExtends extends TExtendsFormat = [],\n TFinalSchema extends TSchema = FinalSchema<\n TShared,\n TServer,\n TClient,\n TExtends\n >,\n>(\n options: EnvOptions<\n TPrefix,\n TShared,\n TServer,\n TClient,\n TExtends,\n TFinalSchema\n >,\n): DefineEnv<TFinalSchema> {\n const values = options.envStrict ?? options.env ?? process.env;\n\n for (const [key, value] of Object.entries(values)) {\n if (value === \"\") {\n delete values[key];\n }\n }\n\n const isServer =\n options.isServer ?? (typeof window === \"undefined\" || \"Deno\" in window);\n\n const onError =\n options.onError ??\n ((issues) => {\n console.error(\"❌ Invalid environment variables:\", issues);\n throw new EnvError(\"Invalid environment variables\");\n });\n\n const onInvalidAccess =\n options.onInvalidAccess ??\n ((variable) => {\n throw new EnvError(\n `❌ Attempted to access a server-side environment variable on the client: ${variable}`,\n );\n });\n\n const skip = !!options.skip;\n const schema = getFinalSchema(options, isServer);\n\n if (skip) {\n return {\n ...values,\n _schema: schema,\n // biome-ignore lint/suspicious/noExplicitAny: we set the type explicitly\n } as any;\n }\n\n const parsed =\n options\n .transform?.(schema as never, isServer)\n [\"~standard\"].validate(values) ?? parseWithDictionary(schema, values);\n\n ensureSynchronous(parsed, \"Validation must be synchronous!\");\n\n if (parsed.issues) {\n onError(parsed.issues);\n }\n\n const isServerAccess = (prop: string) => {\n const isClientAccess = [options, ...(options.extends ?? [])]\n .map((preset) => ({\n keys: Object.keys(preset.client ?? {}),\n prefix: preset.clientPrefix,\n }))\n .some(\n (preset) =>\n preset.keys.includes(prop) &&\n (!preset.prefix || prop.startsWith(preset.prefix)),\n );\n\n const isSharedAccess = [\n ...Object.keys(options.shared ?? {}),\n ...(options.extends?.flatMap((ext) => Object.keys(ext.shared ?? {})) ??\n []),\n ].includes(prop);\n\n return !isSharedAccess && !isClientAccess;\n };\n const isValidServerAccess = (prop: string) => {\n return isServer || !isServerAccess(prop);\n };\n\n const env = new Proxy(\"value\" in parsed ? parsed.value : {}, {\n get(target, prop) {\n if (typeof prop !== \"string\") return undefined;\n if (ignoreProp(prop)) return undefined;\n if (prop === \"_schema\") return schema;\n if (!isValidServerAccess(prop)) return onInvalidAccess(prop);\n return Reflect.get(target, prop);\n },\n });\n\n // biome-ignore lint/suspicious/noExplicitAny: we set the type explicitly\n return env as any;\n}\n"],"mappings":"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","names":["ensureSynchronous","value","message","parseWithDictionary","dictionary","result","issues","key","propResult","issue","ignoreProp","prop","getCombinedSchema","options","isServer","getFinalSchema","acc","preset","EnvError","message","defineEnv","values","key","value","onError","issues","onInvalidAccess","variable","skip","schema","parsed","parseWithDictionary","ensureSynchronous","isServerAccess","isClientAccess","ext","isValidServerAccess","target"]}
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../../src/presets/valibot.ts"],"sourcesContent":["/**\n * Presets for Valibot\n * @module\n */\nimport * as v from \"valibot\";\nimport type { InferPresetOutput } from \"../types\";\n\n/**\n * Vercel System Environment Variables\n * @see https://vercel.com/docs/projects/environment-variables/system-environment-variables#system-environment-variables\n */\nexport const vercel = {\n id: \"vercel\",\n server: {\n VERCEL: v.optional(v.string()),\n CI: v.optional(v.string()),\n VERCEL_ENV: v.optional(\n v.picklist([\"development\", \"preview\", \"production\"]),\n \"development\",\n ),\n VERCEL_URL: v.optional(v.string()),\n VERCEL_PROJECT_PRODUCTION_URL: v.optional(v.string()),\n VERCEL_BRANCH_URL: v.optional(v.string()),\n VERCEL_REGION: v.optional(v.string()),\n VERCEL_DEPLOYMENT_ID: v.optional(v.string()),\n VERCEL_SKEW_PROTECTION_ENABLED: v.optional(v.string()),\n VERCEL_AUTOMATION_BYPASS_SECRET: v.optional(v.string()),\n VERCEL_GIT_PROVIDER: v.optional(v.string()),\n VERCEL_GIT_REPO_SLUG: v.optional(v.string()),\n VERCEL_GIT_REPO_OWNER: v.optional(v.string()),\n VERCEL_GIT_REPO_ID: v.optional(v.string()),\n VERCEL_GIT_COMMIT_REF: v.optional(v.string()),\n VERCEL_GIT_COMMIT_SHA: v.optional(v.string()),\n VERCEL_GIT_COMMIT_MESSAGE: v.optional(v.string()),\n VERCEL_GIT_COMMIT_AUTHOR_LOGIN: v.optional(v.string()),\n VERCEL_GIT_COMMIT_AUTHOR_NAME: v.optional(v.string()),\n VERCEL_GIT_PREVIOUS_SHA: v.optional(v.string()),\n VERCEL_GIT_PULL_REQUEST_ID: v.optional(v.string()),\n },\n} as const;\n\nexport type VercelEnv = InferPresetOutput<typeof vercel>;\n\n/**\n * Neon for Vercel Environment Variables\n * @see https://neon.tech/docs/guides/vercel-native-integration#environment-variables-set-by-the-integration\n */\nexport const neonVercel = {\n id: \"neon-vercel\",\n server: {\n DATABASE_URL: v.string(),\n DATABASE_URL_UNPOOLED: v.optional(v.string()),\n PGHOST: v.optional(v.string()),\n PGHOST_UNPOOLED: v.optional(v.string()),\n PGUSER: v.optional(v.string()),\n PGDATABASE: v.optional(v.string()),\n PGPASSWORD: v.optional(v.string()),\n POSTGRES_URL: v.optional(v.pipe(v.string(), v.url())),\n POSTGRES_URL_NON_POOLING: v.optional(v.pipe(v.string(), v.url())),\n POSTGRES_USER: v.optional(v.string()),\n POSTGRES_HOST: v.optional(v.string()),\n POSTGRES_PASSWORD: v.optional(v.string()),\n POSTGRES_DATABASE: v.optional(v.string()),\n POSTGRES_URL_NO_SSL: v.optional(v.pipe(v.string(), v.url())),\n POSTGRES_PRISMA_URL: v.optional(v.pipe(v.string(), v.url())),\n },\n} as const;\n\nexport type NeonVercelEnv = InferPresetOutput<typeof neonVercel>;\n\n/**\n * @see https://docs.uploadthing.com/getting-started/appdir#add-env-variables\n */\nexport const uploadthing = {\n id: \"uploadthing\",\n server: {\n UPLOADTHING_TOKEN: v.string(),\n },\n} as const;\n\nexport type UploadthingEnv = InferPresetOutput<typeof uploadthing>;\n\n/**\n * Render System Environment Variables\n * @see https://docs.render.com/environment-variables#all-runtimes\n */\nexport const render = {\n id: \"render\",\n server: {\n IS_PULL_REQUEST: v.optional(v.string()),\n RENDER_DISCOVERY_SERVICE: v.optional(v.string()),\n RENDER_EXTERNAL_HOSTNAME: v.optional(v.string()),\n RENDER_EXTERNAL_URL: v.optional(v.pipe(v.string(), v.url())),\n RENDER_GIT_BRANCH: v.optional(v.string()),\n RENDER_GIT_COMMIT: v.optional(v.string()),\n RENDER_GIT_REPO_SLUG: v.optional(v.string()),\n RENDER_INSTANCE_ID: v.optional(v.string()),\n RENDER_SERVICE_ID: v.optional(v.string()),\n RENDER_SERVICE_NAME: v.optional(v.string()),\n RENDER_SERVICE_TYPE: v.optional(\n v.picklist([\"web\", \"pserv\", \"cron\", \"worker\", \"static\"]),\n ),\n RENDER: v.optional(v.string()),\n },\n} as const;\n\nexport type RenderEnv = InferPresetOutput<typeof render>;\n\n/**\n * Railway Environment Variables\n * @see https://docs.railway.app/reference/variables#railway-provided-variables\n */\nexport const railway = {\n id: \"railway\",\n server: {\n RAILWAY_PUBLIC_DOMAIN: v.optional(v.string()),\n RAILWAY_PRIVATE_DOMAIN: v.optional(v.string()),\n RAILWAY_TCP_PROXY_DOMAIN: v.optional(v.string()),\n RAILWAY_TCP_PROXY_PORT: v.optional(v.string()),\n RAILWAY_TCP_APPLICATION_PORT: v.optional(v.string()),\n RAILWAY_PROJECT_NAME: v.optional(v.string()),\n RAILWAY_PROJECT_ID: v.optional(v.string()),\n RAILWAY_ENVIRONMENT_NAME: v.optional(v.string()),\n RAILWAY_ENVIRONMENT_ID: v.optional(v.string()),\n RAILWAY_SERVICE_NAME: v.optional(v.string()),\n RAILWAY_SERVICE_ID: v.optional(v.string()),\n RAILWAY_REPLICA_ID: v.optional(v.string()),\n RAILWAY_DEPLOYMENT_ID: v.optional(v.string()),\n RAILWAY_SNAPSHOT_ID: v.optional(v.string()),\n RAILWAY_VOLUME_NAME: v.optional(v.string()),\n RAILWAY_VOLUME_MOUNT_PATH: v.optional(v.string()),\n RAILWAY_RUN_UID: v.optional(v.string()),\n RAILWAY_GIT_COMMIT_SHA: v.optional(v.string()),\n RAILWAY_GIT_AUTHOR_EMAIL: v.optional(v.string()),\n RAILWAY_GIT_BRANCH: v.optional(v.string()),\n RAILWAY_GIT_REPO_NAME: v.optional(v.string()),\n RAILWAY_GIT_REPO_OWNER: v.optional(v.string()),\n RAILWAY_GIT_COMMIT_MESSAGE: v.optional(v.string()),\n },\n} as const;\n\nexport type RailwayEnv = InferPresetOutput<typeof railway>;\n\n/**\n * Fly.io Environment Variables\n * @see https://fly.io/docs/machines/runtime-environment/#environment-variables\n */\nexport const fly = {\n id: \"fly\",\n server: {\n FLY_APP_NAME: v.optional(v.string()),\n FLY_MACHINE_ID: v.optional(v.string()),\n FLY_ALLOC_ID: v.optional(v.string()),\n FLY_REGION: v.optional(v.string()),\n FLY_PUBLIC_IP: v.optional(v.string()),\n FLY_IMAGE_REF: v.optional(v.string()),\n FLY_MACHINE_VERSION: v.optional(v.string()),\n FLY_PRIVATE_IP: v.optional(v.string()),\n FLY_PROCESS_GROUP: v.optional(v.string()),\n FLY_VM_MEMORY_MB: v.optional(v.string()),\n PRIMARY_REGION: v.optional(v.string()),\n },\n} as const;\n\nexport type FlyEnv = InferPresetOutput<typeof fly>;\n\n/**\n * Netlify Environment Variables\n * @see https://docs.netlify.com/configure-builds/environment-variables\n */\nexport const netlify = {\n id: \"netlify\",\n server: {\n NETLIFY: v.optional(v.string()),\n BUILD_ID: v.optional(v.string()),\n CONTEXT: v.optional(\n v.picklist([\"production\", \"deploy-preview\", \"branch-deploy\", \"dev\"]),\n ),\n REPOSITORY_URL: v.optional(v.string()),\n BRANCH: v.optional(v.string()),\n URL: v.optional(v.string()),\n DEPLOY_URL: v.optional(v.string()),\n DEPLOY_PRIME_URL: v.optional(v.string()),\n DEPLOY_ID: v.optional(v.string()),\n SITE_NAME: v.optional(v.string()),\n SITE_ID: v.optional(v.string()),\n },\n} as const;\n\nexport type NetlifyEnv = InferPresetOutput<typeof netlify>;\n\n/**\n * Upstash redis Environment Variables\n * @see https://upstash.com/docs/redis/howto/connectwithupstashredis\n */\nexport const upstashRedis = {\n id: \"upstash-redis\",\n server: {\n UPSTASH_REDIS_REST_URL: v.pipe(v.string(), v.url()),\n UPSTASH_REDIS_REST_TOKEN: v.string(),\n },\n} as const;\n\nexport type UpstashRedisEnv = InferPresetOutput<typeof upstashRedis>;\n\n/**\n * Coolify Environment Variables\n * @see https://coolify.io/docs/knowledge-base/environment-variables#predefined-variables\n */\nexport const coolify = {\n id: \"coolify\",\n server: {\n COOLIFY_FQDN: v.optional(v.string()),\n COOLIFY_URL: v.optional(v.string()),\n COOLIFY_BRANCH: v.optional(v.string()),\n COOLIFY_RESOURCE_UUID: v.optional(v.string()),\n COOLIFY_CONTAINER_NAME: v.optional(v.string()),\n SOURCE_COMMIT: v.optional(v.string()),\n PORT: v.optional(v.string()),\n HOST: v.optional(v.string()),\n },\n} as const;\n\nexport type CoolifyEnv = InferPresetOutput<typeof coolify>;\n"],"mappings":"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","names":["v","vercel","neonVercel","uploadthing","render","railway","fly","netlify","upstashRedis","coolify"]}
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../../src/presets/zod.ts"],"sourcesContent":["/**\n * Presets for Zod\n * * @module\n */\nimport { z } from \"zod\";\nimport type { InferPresetOutput } from \"../types\";\n\n/**\n * Vercel System Environment Variables\n * @see https://vercel.com/docs/projects/environment-variables/system-environment-variables#system-environment-variables\n */\nexport const vercel = {\n id: \"vercel\",\n server: {\n VERCEL: z.string().optional(),\n CI: z.string().optional(),\n VERCEL_ENV: z\n .enum([\"development\", \"preview\", \"production\"])\n .optional()\n .default(\"development\"),\n VERCEL_URL: z.string().optional(),\n VERCEL_PROJECT_PRODUCTION_URL: z.string().optional(),\n VERCEL_BRANCH_URL: z.string().optional(),\n VERCEL_REGION: z.string().optional(),\n VERCEL_DEPLOYMENT_ID: z.string().optional(),\n VERCEL_SKEW_PROTECTION_ENABLED: z.string().optional(),\n VERCEL_AUTOMATION_BYPASS_SECRET: z.string().optional(),\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_REPO_ID: 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_COMMIT_AUTHOR_NAME: z.string().optional(),\n VERCEL_GIT_PREVIOUS_SHA: z.string().optional(),\n VERCEL_GIT_PULL_REQUEST_ID: z.string().optional(),\n },\n} as const;\n\nexport type VercelEnv = InferPresetOutput<typeof vercel>;\n\n/**\n * Neon for Vercel Environment Variables\n * @see https://neon.tech/docs/guides/vercel-native-integration#environment-variables-set-by-the-integration\n */\nexport const neonVercel = {\n id: \"neon-vercel\",\n server: {\n DATABASE_URL: z.string(),\n DATABASE_URL_UNPOOLED: z.string().optional(),\n PGHOST: z.string().optional(),\n PGHOST_UNPOOLED: z.string().optional(),\n PGUSER: z.string().optional(),\n PGDATABASE: z.string().optional(),\n PGPASSWORD: z.string().optional(),\n POSTGRES_URL: z.string().url().optional(),\n POSTGRES_URL_NON_POOLING: z.string().url().optional(),\n POSTGRES_USER: z.string().optional(),\n POSTGRES_HOST: z.string().optional(),\n POSTGRES_PASSWORD: z.string().optional(),\n POSTGRES_DATABASE: z.string().optional(),\n POSTGRES_URL_NO_SSL: z.string().url().optional(),\n POSTGRES_PRISMA_URL: z.string().url().optional(),\n },\n} as const;\n\nexport type NeonVercelEnv = InferPresetOutput<typeof neonVercel>;\n\n/**\n * @see https://docs.uploadthing.com/getting-started/appdir#add-env-variables\n */\nexport const uploadthing = {\n id: \"uploadthing\",\n server: {\n UPLOADTHING_TOKEN: z.string(),\n },\n} as const;\n\nexport type UploadthingEnv = InferPresetOutput<typeof uploadthing>;\n\n/**\n * Render System Environment Variables\n * @see https://docs.render.com/environment-variables#all-runtimes\n */\nexport const render = {\n id: \"render\",\n server: {\n IS_PULL_REQUEST: z.string().optional(),\n RENDER_DISCOVERY_SERVICE: z.string().optional(),\n RENDER_EXTERNAL_HOSTNAME: z.string().optional(),\n RENDER_EXTERNAL_URL: z.string().url().optional(),\n RENDER_GIT_BRANCH: z.string().optional(),\n RENDER_GIT_COMMIT: z.string().optional(),\n RENDER_GIT_REPO_SLUG: z.string().optional(),\n RENDER_INSTANCE_ID: z.string().optional(),\n RENDER_SERVICE_ID: z.string().optional(),\n RENDER_SERVICE_NAME: z.string().optional(),\n RENDER_SERVICE_TYPE: z\n .enum([\"web\", \"pserv\", \"cron\", \"worker\", \"static\"])\n .optional(),\n RENDER: z.string().optional(),\n },\n} as const;\n\nexport type RenderEnv = InferPresetOutput<typeof render>;\n\n/**\n * Railway Environment Variables\n * @see https://docs.railway.app/reference/variables#railway-provided-variables\n */\nexport const railway = {\n id: \"railway\",\n server: {\n RAILWAY_PUBLIC_DOMAIN: z.string().optional(),\n RAILWAY_PRIVATE_DOMAIN: z.string().optional(),\n RAILWAY_TCP_PROXY_DOMAIN: z.string().optional(),\n RAILWAY_TCP_PROXY_PORT: z.string().optional(),\n RAILWAY_TCP_APPLICATION_PORT: z.string().optional(),\n RAILWAY_PROJECT_NAME: z.string().optional(),\n RAILWAY_PROJECT_ID: z.string().optional(),\n RAILWAY_ENVIRONMENT_NAME: z.string().optional(),\n RAILWAY_ENVIRONMENT_ID: z.string().optional(),\n RAILWAY_SERVICE_NAME: z.string().optional(),\n RAILWAY_SERVICE_ID: z.string().optional(),\n RAILWAY_REPLICA_ID: z.string().optional(),\n RAILWAY_DEPLOYMENT_ID: z.string().optional(),\n RAILWAY_SNAPSHOT_ID: z.string().optional(),\n RAILWAY_VOLUME_NAME: z.string().optional(),\n RAILWAY_VOLUME_MOUNT_PATH: z.string().optional(),\n RAILWAY_RUN_UID: z.string().optional(),\n RAILWAY_GIT_COMMIT_SHA: z.string().optional(),\n RAILWAY_GIT_AUTHOR_EMAIL: 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_GIT_COMMIT_MESSAGE: z.string().optional(),\n },\n} as const;\n\nexport type RailwayEnv = InferPresetOutput<typeof railway>;\n\n/**\n * Fly.io Environment Variables\n * @see https://fly.io/docs/machines/runtime-environment/#environment-variables\n */\nexport const fly = {\n id: \"fly\",\n server: {\n FLY_APP_NAME: z.string().optional(),\n FLY_MACHINE_ID: z.string().optional(),\n FLY_ALLOC_ID: z.string().optional(),\n FLY_REGION: z.string().optional(),\n FLY_PUBLIC_IP: z.string().optional(),\n FLY_IMAGE_REF: z.string().optional(),\n FLY_MACHINE_VERSION: z.string().optional(),\n FLY_PRIVATE_IP: z.string().optional(),\n FLY_PROCESS_GROUP: z.string().optional(),\n FLY_VM_MEMORY_MB: z.string().optional(),\n PRIMARY_REGION: z.string().optional(),\n },\n} as const;\n\nexport type FlyEnv = InferPresetOutput<typeof fly>;\n\n/**\n * Netlify Environment Variables\n * @see https://docs.netlify.com/configure-builds/environment-variables\n */\nexport const netlify = {\n id: \"netlify\",\n server: {\n NETLIFY: z.string().optional(),\n BUILD_ID: z.string().optional(),\n CONTEXT: z\n .enum([\"production\", \"deploy-preview\", \"branch-deploy\", \"dev\"])\n .optional(),\n REPOSITORY_URL: z.string().optional(),\n BRANCH: z.string().optional(),\n URL: z.string().optional(),\n DEPLOY_URL: z.string().optional(),\n DEPLOY_PRIME_URL: z.string().optional(),\n DEPLOY_ID: z.string().optional(),\n SITE_NAME: z.string().optional(),\n SITE_ID: z.string().optional(),\n },\n} as const;\n\nexport type NetlifyEnv = InferPresetOutput<typeof netlify>;\n\n/**\n * Upstash redis Environment Variables\n * @see https://upstash.com/docs/redis/howto/connectwithupstashredis\n */\nexport const upstashRedis = {\n id: \"upstash-redis\",\n server: {\n UPSTASH_REDIS_REST_URL: z.string().url(),\n UPSTASH_REDIS_REST_TOKEN: z.string(),\n },\n} as const;\n\nexport type UpstashRedisEnv = InferPresetOutput<typeof upstashRedis>;\n\n/**\n * Coolify Environment Variables\n * @see https://coolify.io/docs/knowledge-base/environment-variables#predefined-variables\n */\nexport const coolify = {\n id: \"coolify\",\n server: {\n COOLIFY_FQDN: z.string().optional(),\n COOLIFY_URL: z.string().optional(),\n COOLIFY_BRANCH: z.string().optional(),\n COOLIFY_RESOURCE_UUID: z.string().optional(),\n COOLIFY_CONTAINER_NAME: z.string().optional(),\n SOURCE_COMMIT: z.string().optional(),\n PORT: z.string().optional(),\n HOST: z.string().optional(),\n },\n} as const;\n\nexport type CoolifyEnv = InferPresetOutput<typeof coolify>;\n"],"mappings":"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","names":["z","vercel","neonVercel","uploadthing","render","railway","fly","netlify","upstashRedis","coolify"]}
package/dist/types.js.map DELETED
@@ -1 +0,0 @@
1
- {"version":3,"sources":[],"sourcesContent":[],"mappings":"","names":[]}