@arkenv/nextjs 1.0.0-alpha.1 → 1.0.0-alpha.10

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (139) hide show
  1. package/LICENSE +3 -0
  2. package/README.md +3 -1
  3. package/dist/arkenv-internal-Cll5pV_F.cjs +2 -0
  4. package/dist/arkenv-internal-Cll5pV_F.cjs.map +1 -0
  5. package/dist/arkenv-internal-DEN5DTmX.js +2 -0
  6. package/dist/arkenv-internal-DEN5DTmX.js.map +1 -0
  7. package/dist/client.cjs +1 -1
  8. package/dist/client.cjs.map +1 -1
  9. package/dist/client.d.cts +11 -8
  10. package/dist/client.d.cts.map +1 -1
  11. package/dist/client.d.ts +11 -8
  12. package/dist/client.d.ts.map +1 -1
  13. package/dist/client.js +1 -1
  14. package/dist/client.js.map +1 -1
  15. package/dist/config/index.cjs +1 -0
  16. package/dist/config/index.d.cts +2 -0
  17. package/dist/config/index.d.ts +2 -0
  18. package/dist/config/index.js +1 -0
  19. package/dist/config-CStvXoN3.cjs +93 -0
  20. package/dist/config-CStvXoN3.cjs.map +1 -0
  21. package/dist/config-D2j45WDh.js +93 -0
  22. package/dist/config-D2j45WDh.js.map +1 -0
  23. package/dist/dist-Bof1Std7.cjs +2 -0
  24. package/dist/dist-Bof1Std7.cjs.map +1 -0
  25. package/dist/dist-DimRGXOV.js +2 -0
  26. package/dist/dist-DimRGXOV.js.map +1 -0
  27. package/dist/{index-C6bpQ5GU.d.cts → index-96RGPyfa.d.cts} +6 -3
  28. package/dist/index-96RGPyfa.d.cts.map +1 -0
  29. package/dist/index-BFQlm61W.d.ts +155 -0
  30. package/dist/index-BFQlm61W.d.ts.map +1 -0
  31. package/dist/index-CNzwVE5N.d.cts +155 -0
  32. package/dist/index-CNzwVE5N.d.cts.map +1 -0
  33. package/dist/{index-Bn3pRiJy.d.ts → index-bjEZwPUt.d.ts} +6 -3
  34. package/dist/index-bjEZwPUt.d.ts.map +1 -0
  35. package/dist/index.cjs +1 -1
  36. package/dist/index.cjs.map +1 -1
  37. package/dist/index.d.cts +31 -9
  38. package/dist/index.d.cts.map +1 -1
  39. package/dist/index.d.ts +31 -9
  40. package/dist/index.d.ts.map +1 -1
  41. package/dist/index.js +1 -1
  42. package/dist/index.js.map +1 -1
  43. package/dist/mock-server-only.cjs +2 -0
  44. package/dist/mock-server-only.cjs.map +1 -0
  45. package/dist/mock-server-only.d.cts +1 -0
  46. package/dist/mock-server-only.d.ts +1 -0
  47. package/dist/mock-server-only.js +2 -0
  48. package/dist/mock-server-only.js.map +1 -0
  49. package/dist/react-server.cjs +1 -1
  50. package/dist/react-server.cjs.map +1 -1
  51. package/dist/react-server.d.cts +24 -9
  52. package/dist/react-server.d.cts.map +1 -1
  53. package/dist/react-server.d.ts +24 -9
  54. package/dist/react-server.d.ts.map +1 -1
  55. package/dist/react-server.js +1 -1
  56. package/dist/react-server.js.map +1 -1
  57. package/dist/script-7FFqInPq.d.ts +21 -0
  58. package/dist/script-7FFqInPq.d.ts.map +1 -0
  59. package/dist/script-BHFJ0MU_.d.cts +21 -0
  60. package/dist/script-BHFJ0MU_.d.cts.map +1 -0
  61. package/dist/script-CZOPkAw3.js +2 -0
  62. package/dist/script-CZOPkAw3.js.map +1 -0
  63. package/dist/script-D-MYC2Uf.cjs +2 -0
  64. package/dist/script-D-MYC2Uf.cjs.map +1 -0
  65. package/dist/server.cjs +1 -1
  66. package/dist/server.cjs.map +1 -1
  67. package/dist/server.d.cts +12 -9
  68. package/dist/server.d.cts.map +1 -1
  69. package/dist/server.d.ts +12 -9
  70. package/dist/server.d.ts.map +1 -1
  71. package/dist/server.js +1 -1
  72. package/dist/server.js.map +1 -1
  73. package/dist/standard/client.cjs +2 -0
  74. package/dist/standard/client.cjs.map +1 -0
  75. package/dist/standard/client.d.cts +30 -0
  76. package/dist/standard/client.d.cts.map +1 -0
  77. package/dist/standard/client.d.ts +30 -0
  78. package/dist/standard/client.d.ts.map +1 -0
  79. package/dist/standard/client.js +2 -0
  80. package/dist/standard/client.js.map +1 -0
  81. package/dist/standard/config.cjs +2 -0
  82. package/dist/standard/config.cjs.map +1 -0
  83. package/dist/standard/config.d.cts +14 -0
  84. package/dist/standard/config.d.cts.map +1 -0
  85. package/dist/standard/config.d.ts +14 -0
  86. package/dist/standard/config.d.ts.map +1 -0
  87. package/dist/standard/config.js +2 -0
  88. package/dist/standard/config.js.map +1 -0
  89. package/dist/standard/index.cjs +2 -0
  90. package/dist/standard/index.cjs.map +1 -0
  91. package/dist/standard/index.d.cts +35 -0
  92. package/dist/standard/index.d.cts.map +1 -0
  93. package/dist/standard/index.d.ts +35 -0
  94. package/dist/standard/index.d.ts.map +1 -0
  95. package/dist/standard/index.js +2 -0
  96. package/dist/standard/index.js.map +1 -0
  97. package/dist/standard/server.cjs +2 -0
  98. package/dist/standard/server.cjs.map +1 -0
  99. package/dist/standard/server.d.cts +18 -0
  100. package/dist/standard/server.d.cts.map +1 -0
  101. package/dist/standard/server.d.ts +18 -0
  102. package/dist/standard/server.d.ts.map +1 -0
  103. package/dist/standard/server.js +2 -0
  104. package/dist/standard/server.js.map +1 -0
  105. package/dist/standard/shared.cjs +2 -0
  106. package/dist/standard/shared.cjs.map +1 -0
  107. package/dist/standard/shared.d.cts +13 -0
  108. package/dist/standard/shared.d.cts.map +1 -0
  109. package/dist/standard/shared.d.ts +13 -0
  110. package/dist/standard/shared.d.ts.map +1 -0
  111. package/dist/standard/shared.js +2 -0
  112. package/dist/standard/shared.js.map +1 -0
  113. package/dist/{types-DBqiLw5v.d.cts → types-44R9mgTa.d.cts} +2 -2
  114. package/dist/{types-DBqiLw5v.d.cts.map → types-44R9mgTa.d.cts.map} +1 -1
  115. package/dist/{types-BN4fEChy.d.ts → types-BzMGTYWv.d.ts} +2 -2
  116. package/dist/{types-BN4fEChy.d.ts.map → types-BzMGTYWv.d.ts.map} +1 -1
  117. package/package.json +67 -30
  118. package/dist/arkenv-internal-DA4LpI3t.cjs +0 -2
  119. package/dist/arkenv-internal-DA4LpI3t.cjs.map +0 -1
  120. package/dist/arkenv-internal-cagrxXTM.js +0 -2
  121. package/dist/arkenv-internal-cagrxXTM.js.map +0 -1
  122. package/dist/config.cjs +0 -76
  123. package/dist/config.cjs.map +0 -1
  124. package/dist/config.d.cts +0 -107
  125. package/dist/config.d.cts.map +0 -1
  126. package/dist/config.d.ts +0 -107
  127. package/dist/config.d.ts.map +0 -1
  128. package/dist/config.js +0 -76
  129. package/dist/config.js.map +0 -1
  130. package/dist/index-Bn3pRiJy.d.ts.map +0 -1
  131. package/dist/index-C6bpQ5GU.d.cts.map +0 -1
  132. package/dist/shared.cjs +0 -2
  133. package/dist/shared.cjs.map +0 -1
  134. package/dist/shared.d.cts +0 -16
  135. package/dist/shared.d.cts.map +0 -1
  136. package/dist/shared.d.ts +0 -16
  137. package/dist/shared.d.ts.map +0 -1
  138. package/dist/shared.js +0 -2
  139. package/dist/shared.js.map +0 -1
@@ -0,0 +1 @@
1
+ {"version":3,"file":"config.cjs","names":["originalWithArkEnv"],"sources":["../../src/standard/config.ts"],"sourcesContent":["import {\n\ttype ArkEnvConfigOptions,\n\twithArkEnv as originalWithArkEnv,\n} from \"@/config\";\n\n/**\n * Wrap a Next.js configuration object to automatically generate the `runtimeEnv` block in `env.gen.ts` (Standard Mode).\n *\n * @param nextConfig The Next.js configuration object or function\n * @param options Optional configuration paths for schema and output files\n * @returns The Next.js configuration object unchanged\n */\nexport function withArkEnv<T>(nextConfig: T, options?: ArkEnvConfigOptions): T {\n\treturn originalWithArkEnv(nextConfig, {\n\t\t...options,\n\t\tstandard: true,\n\t});\n}\n"],"mappings":"6GAYA,SAAgB,EAAc,EAAe,EAAkC,CAC9E,OAAOA,EAAAA,EAAmB,EAAY,CACrC,GAAG,EACH,SAAU,GACV,CAAC"}
@@ -0,0 +1,14 @@
1
+ import { s as ArkEnvConfigOptions } from "../index-CNzwVE5N.cjs";
2
+
3
+ //#region src/standard/config.d.ts
4
+ /**
5
+ * Wrap a Next.js configuration object to automatically generate the `runtimeEnv` block in `env.gen.ts` (Standard Mode).
6
+ *
7
+ * @param nextConfig The Next.js configuration object or function
8
+ * @param options Optional configuration paths for schema and output files
9
+ * @returns The Next.js configuration object unchanged
10
+ */
11
+ declare function withArkEnv<T>(nextConfig: T, options?: ArkEnvConfigOptions): T;
12
+ //#endregion
13
+ export { withArkEnv };
14
+ //# sourceMappingURL=config.d.cts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"config.d.cts","names":[],"sources":["../../src/standard/config.ts"],"mappings":";;;;;AAYA;;;;;iBAAgB,UAAA,GAAA,CAAc,UAAA,EAAY,CAAA,EAAG,OAAA,GAAU,mBAAA,GAAsB,CAAA"}
@@ -0,0 +1,14 @@
1
+ import { s as ArkEnvConfigOptions } from "../index-BFQlm61W.js";
2
+
3
+ //#region src/standard/config.d.ts
4
+ /**
5
+ * Wrap a Next.js configuration object to automatically generate the `runtimeEnv` block in `env.gen.ts` (Standard Mode).
6
+ *
7
+ * @param nextConfig The Next.js configuration object or function
8
+ * @param options Optional configuration paths for schema and output files
9
+ * @returns The Next.js configuration object unchanged
10
+ */
11
+ declare function withArkEnv<T>(nextConfig: T, options?: ArkEnvConfigOptions): T;
12
+ //#endregion
13
+ export { withArkEnv };
14
+ //# sourceMappingURL=config.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"config.d.ts","names":[],"sources":["../../src/standard/config.ts"],"mappings":";;;;;AAYA;;;;;iBAAgB,UAAA,GAAA,CAAc,UAAA,EAAY,CAAA,EAAG,OAAA,GAAU,mBAAA,GAAsB,CAAA"}
@@ -0,0 +1,2 @@
1
+ import{i as e}from"../config-D2j45WDh.js";function t(t,n){return e(t,{...n,standard:!0})}export{t as withArkEnv};
2
+ //# sourceMappingURL=config.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"config.js","names":["originalWithArkEnv"],"sources":["../../src/standard/config.ts"],"sourcesContent":["import {\n\ttype ArkEnvConfigOptions,\n\twithArkEnv as originalWithArkEnv,\n} from \"@/config\";\n\n/**\n * Wrap a Next.js configuration object to automatically generate the `runtimeEnv` block in `env.gen.ts` (Standard Mode).\n *\n * @param nextConfig The Next.js configuration object or function\n * @param options Optional configuration paths for schema and output files\n * @returns The Next.js configuration object unchanged\n */\nexport function withArkEnv<T>(nextConfig: T, options?: ArkEnvConfigOptions): T {\n\treturn originalWithArkEnv(nextConfig, {\n\t\t...options,\n\t\tstandard: true,\n\t});\n}\n"],"mappings":"0CAYA,SAAgB,EAAc,EAAe,EAAkC,CAC9E,OAAOA,EAAmB,EAAY,CACrC,GAAG,EACH,SAAU,GACV,CAAC"}
@@ -0,0 +1,2 @@
1
+ Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:`Module`}}),require(`../config-CStvXoN3.cjs`);const e=require(`../arkenv-internal-Cll5pV_F.cjs`);let t=require(`@arkenv/standard`);function n(n,r){return n&&typeof n==`object`&&(`runtimeEnv`in n||`server`in n||`client`in n||`shared`in n)?e.t(n,!1,void 0,t.arkenv,t.getSchemaKeys):e.t(n,r,{isServer:!1},t.arkenv,t.getSchemaKeys)}exports.arkenv=n,exports.default=n;
2
+ //# sourceMappingURL=index.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.cjs","names":["arkenvInternal","coreArkenv","getSchemaKeys"],"sources":["../../src/standard/index.ts"],"sourcesContent":["import { arkenv as coreArkenv, getSchemaKeys } from \"@arkenv/standard\";\nimport type { StandardSchemaV1 } from \"@repo/types\";\nimport { arkenvInternal } from \"@/arkenv-internal\";\nimport type { MergeExtends } from \"../types\";\n\ntype ClientVisibleKeys<\n\tTSchema extends Record<string, StandardSchemaV1>,\n\tTExpose extends keyof TSchema,\n> = {\n\t[K in keyof TSchema]: K extends `NEXT_PUBLIC_${string}`\n\t\t? K\n\t\t: K extends \"NODE_ENV\"\n\t\t\t? K\n\t\t\t: K extends TExpose\n\t\t\t\t? K\n\t\t\t\t: never;\n}[keyof TSchema];\n\n/**\n * Create a validated, type-safe environment configuration for Next.js applications in Standard Mode.\n *\n * @param schema A flat schema of environment variable Standard Schema validators\n * @param options Optional configuration including client-side variables and extends\n * @returns A validated, readonly environment variables object wrapped in a security proxy\n */\nexport function arkenv<\n\tconst TSchema extends Record<string, StandardSchemaV1> = {},\n\tconst TExpose extends keyof TSchema = never,\n\tconst TExtends extends readonly unknown[] = [],\n>(\n\tschema: TSchema,\n\toptions?: {\n\t\texposeToClient?: readonly TExpose[];\n\t\texpose?: readonly TExpose[];\n\t\tshared?: readonly TExpose[];\n\t\textends?: [...TExtends];\n\t\truntimeEnv?: Record<string, unknown>;\n\t},\n): Readonly<\n\tPick<\n\t\t{ [K in keyof TSchema]: StandardSchemaV1.InferOutput<TSchema[K]> },\n\t\tExtract<keyof TSchema, ClientVisibleKeys<TSchema, TExpose>>\n\t> &\n\t\tMergeExtends<TExtends>\n>;\n\n/**\n * Create a validated, type-safe environment configuration for Next.js applications in Standard Mode.\n *\n * @deprecated Use the unified flat layout signature instead: `arkenv(schema, options)`\n * @param options The environment validation configuration options\n * @returns A validated, readonly environment variables object wrapped in a security proxy\n */\nexport function arkenv<\n\tconst TServer extends Record<string, StandardSchemaV1> = {},\n\tconst TClient extends Record<string, StandardSchemaV1> = {},\n\tconst TShared extends Record<string, StandardSchemaV1> = {},\n>(options: {\n\tserver?: TServer;\n\tclient?: TClient & {\n\t\t[K in keyof TClient]: K extends `NEXT_PUBLIC_${string}` ? unknown : never;\n\t};\n\tshared?: TShared;\n\truntimeEnv: Record<keyof TClient | keyof TShared, unknown> &\n\t\tRecord<string, unknown>;\n}): Readonly<{\n\t[K in keyof (TServer & TClient & TShared)]: StandardSchemaV1.InferOutput<\n\t\t(TServer & TClient & TShared)[K]\n\t>;\n}>;\n\nexport function arkenv(schemaOrOptions: any, optionsOrIsServer?: any): any {\n\tconst isLegacy =\n\t\tschemaOrOptions &&\n\t\ttypeof schemaOrOptions === \"object\" &&\n\t\t(\"runtimeEnv\" in schemaOrOptions ||\n\t\t\t\"server\" in schemaOrOptions ||\n\t\t\t\"client\" in schemaOrOptions ||\n\t\t\t\"shared\" in schemaOrOptions);\n\n\tif (isLegacy) {\n\t\treturn arkenvInternal(\n\t\t\tschemaOrOptions,\n\t\t\tfalse,\n\t\t\tundefined,\n\t\t\tcoreArkenv,\n\t\t\tgetSchemaKeys,\n\t\t);\n\t}\n\n\treturn arkenvInternal(\n\t\tschemaOrOptions,\n\t\toptionsOrIsServer,\n\t\t{ isServer: false },\n\t\tcoreArkenv,\n\t\tgetSchemaKeys,\n\t);\n}\n\nexport default arkenv;\n"],"mappings":"sNAuEA,SAAgB,EAAO,EAAsB,EAA8B,CAmB1E,OAjBC,GACA,OAAO,GAAoB,WAC1B,eAAgB,GAChB,WAAY,GACZ,WAAY,GACZ,WAAY,GAGNA,EAAAA,EACN,EACA,GACA,IAAA,GACAC,EAAAA,OACAC,EAAAA,cACA,CAGKF,EAAAA,EACN,EACA,EACA,CAAE,SAAU,GAAO,CACnBC,EAAAA,OACAC,EAAAA,cACA"}
@@ -0,0 +1,35 @@
1
+ import { r as StandardSchemaV1 } from "../index-96RGPyfa.cjs";
2
+ import { t as MergeExtends } from "../types-44R9mgTa.cjs";
3
+
4
+ //#region src/standard/index.d.ts
5
+ type ClientVisibleKeys<TSchema extends Record<string, StandardSchemaV1>, TExpose extends keyof TSchema> = { [K in keyof TSchema]: K extends `NEXT_PUBLIC_${string}` ? K : K extends "NODE_ENV" ? K : K extends TExpose ? K : never }[keyof TSchema];
6
+ /**
7
+ * Create a validated, type-safe environment configuration for Next.js applications in Standard Mode.
8
+ *
9
+ * @param schema A flat schema of environment variable Standard Schema validators
10
+ * @param options Optional configuration including client-side variables and extends
11
+ * @returns A validated, readonly environment variables object wrapped in a security proxy
12
+ */
13
+ declare function arkenv<const TSchema extends Record<string, StandardSchemaV1> = {}, const TExpose extends keyof TSchema = never, const TExtends extends readonly unknown[] = []>(schema: TSchema, options?: {
14
+ exposeToClient?: readonly TExpose[];
15
+ expose?: readonly TExpose[];
16
+ shared?: readonly TExpose[];
17
+ extends?: [...TExtends];
18
+ runtimeEnv?: Record<string, unknown>;
19
+ }): Readonly<Pick<{ [K in keyof TSchema]: StandardSchemaV1.InferOutput<TSchema[K]> }, Extract<keyof TSchema, ClientVisibleKeys<TSchema, TExpose>>> & MergeExtends<TExtends>>;
20
+ /**
21
+ * Create a validated, type-safe environment configuration for Next.js applications in Standard Mode.
22
+ *
23
+ * @deprecated Use the unified flat layout signature instead: `arkenv(schema, options)`
24
+ * @param options The environment validation configuration options
25
+ * @returns A validated, readonly environment variables object wrapped in a security proxy
26
+ */
27
+ declare function arkenv<const TServer extends Record<string, StandardSchemaV1> = {}, const TClient extends Record<string, StandardSchemaV1> = {}, const TShared extends Record<string, StandardSchemaV1> = {}>(options: {
28
+ server?: TServer;
29
+ client?: TClient & { [K in keyof TClient]: K extends `NEXT_PUBLIC_${string}` ? unknown : never };
30
+ shared?: TShared;
31
+ runtimeEnv: Record<keyof TClient | keyof TShared, unknown> & Record<string, unknown>;
32
+ }): Readonly<{ [K in keyof (TServer & TClient & TShared)]: StandardSchemaV1.InferOutput<(TServer & TClient & TShared)[K]> }>;
33
+ //#endregion
34
+ export { arkenv, arkenv as default };
35
+ //# sourceMappingURL=index.d.cts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.cts","names":[],"sources":["../../src/standard/index.ts"],"mappings":";;;;KAKK,iBAAA,iBACY,MAAA,SAAe,gBAAA,yBACT,OAAA,kBAEV,OAAA,GAAU,CAAA,mCACnB,CAAA,GACA,CAAA,sBACC,CAAA,GACA,CAAA,SAAU,OAAA,GACT,CAAA,iBAEE,OAAA;;;;;;;;iBASQ,MAAA,uBACO,MAAA,SAAe,gBAAA,oCACT,OAAA,yDAAA,CAG5B,MAAA,EAAQ,OAAA,EACR,OAAA;EACC,cAAA,YAA0B,OAAA;EAC1B,MAAA,YAAkB,OAAA;EAClB,MAAA,YAAkB,OAAA;EAClB,OAAA,OAAc,QAAA;EACd,UAAA,GAAa,MAAA;AAAA,IAEZ,QAAA,CACF,IAAA,eACe,OAAA,GAAU,gBAAA,CAAiB,WAAA,CAAY,OAAA,CAAQ,CAAA,MAC7D,OAAA,OAAc,OAAA,EAAS,iBAAA,CAAkB,OAAA,EAAS,OAAA,MAElD,YAAA,CAAa,QAAA;;;;;;;;iBAUC,MAAA,uBACO,MAAA,SAAe,gBAAA,8BACf,MAAA,SAAe,gBAAA,8BACf,MAAA,SAAe,gBAAA,OAAA,CACpC,OAAA;EACD,MAAA,GAAS,OAAA;EACT,MAAA,GAAS,OAAA,iBACI,OAAA,GAAU,CAAA;EAEvB,MAAA,GAAS,OAAA;EACT,UAAA,EAAY,MAAA,OAAa,OAAA,SAAgB,OAAA,aACxC,MAAA;AAAA,IACE,QAAA,gBACU,OAAA,GAAU,OAAA,GAAU,OAAA,IAAW,gBAAA,CAAiB,WAAA,EAC3D,OAAA,GAAU,OAAA,GAAU,OAAA,EAAS,CAAA"}
@@ -0,0 +1,35 @@
1
+ import { r as StandardSchemaV1 } from "../index-bjEZwPUt.js";
2
+ import { t as MergeExtends } from "../types-BzMGTYWv.js";
3
+
4
+ //#region src/standard/index.d.ts
5
+ type ClientVisibleKeys<TSchema extends Record<string, StandardSchemaV1>, TExpose extends keyof TSchema> = { [K in keyof TSchema]: K extends `NEXT_PUBLIC_${string}` ? K : K extends "NODE_ENV" ? K : K extends TExpose ? K : never }[keyof TSchema];
6
+ /**
7
+ * Create a validated, type-safe environment configuration for Next.js applications in Standard Mode.
8
+ *
9
+ * @param schema A flat schema of environment variable Standard Schema validators
10
+ * @param options Optional configuration including client-side variables and extends
11
+ * @returns A validated, readonly environment variables object wrapped in a security proxy
12
+ */
13
+ declare function arkenv<const TSchema extends Record<string, StandardSchemaV1> = {}, const TExpose extends keyof TSchema = never, const TExtends extends readonly unknown[] = []>(schema: TSchema, options?: {
14
+ exposeToClient?: readonly TExpose[];
15
+ expose?: readonly TExpose[];
16
+ shared?: readonly TExpose[];
17
+ extends?: [...TExtends];
18
+ runtimeEnv?: Record<string, unknown>;
19
+ }): Readonly<Pick<{ [K in keyof TSchema]: StandardSchemaV1.InferOutput<TSchema[K]> }, Extract<keyof TSchema, ClientVisibleKeys<TSchema, TExpose>>> & MergeExtends<TExtends>>;
20
+ /**
21
+ * Create a validated, type-safe environment configuration for Next.js applications in Standard Mode.
22
+ *
23
+ * @deprecated Use the unified flat layout signature instead: `arkenv(schema, options)`
24
+ * @param options The environment validation configuration options
25
+ * @returns A validated, readonly environment variables object wrapped in a security proxy
26
+ */
27
+ declare function arkenv<const TServer extends Record<string, StandardSchemaV1> = {}, const TClient extends Record<string, StandardSchemaV1> = {}, const TShared extends Record<string, StandardSchemaV1> = {}>(options: {
28
+ server?: TServer;
29
+ client?: TClient & { [K in keyof TClient]: K extends `NEXT_PUBLIC_${string}` ? unknown : never };
30
+ shared?: TShared;
31
+ runtimeEnv: Record<keyof TClient | keyof TShared, unknown> & Record<string, unknown>;
32
+ }): Readonly<{ [K in keyof (TServer & TClient & TShared)]: StandardSchemaV1.InferOutput<(TServer & TClient & TShared)[K]> }>;
33
+ //#endregion
34
+ export { arkenv, arkenv as default };
35
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","names":[],"sources":["../../src/standard/index.ts"],"mappings":";;;;KAKK,iBAAA,iBACY,MAAA,SAAe,gBAAA,yBACT,OAAA,kBAEV,OAAA,GAAU,CAAA,mCACnB,CAAA,GACA,CAAA,sBACC,CAAA,GACA,CAAA,SAAU,OAAA,GACT,CAAA,iBAEE,OAAA;;;;;;;;iBASQ,MAAA,uBACO,MAAA,SAAe,gBAAA,oCACT,OAAA,yDAAA,CAG5B,MAAA,EAAQ,OAAA,EACR,OAAA;EACC,cAAA,YAA0B,OAAA;EAC1B,MAAA,YAAkB,OAAA;EAClB,MAAA,YAAkB,OAAA;EAClB,OAAA,OAAc,QAAA;EACd,UAAA,GAAa,MAAA;AAAA,IAEZ,QAAA,CACF,IAAA,eACe,OAAA,GAAU,gBAAA,CAAiB,WAAA,CAAY,OAAA,CAAQ,CAAA,MAC7D,OAAA,OAAc,OAAA,EAAS,iBAAA,CAAkB,OAAA,EAAS,OAAA,MAElD,YAAA,CAAa,QAAA;;;;;;;;iBAUC,MAAA,uBACO,MAAA,SAAe,gBAAA,8BACf,MAAA,SAAe,gBAAA,8BACf,MAAA,SAAe,gBAAA,OAAA,CACpC,OAAA;EACD,MAAA,GAAS,OAAA;EACT,MAAA,GAAS,OAAA,iBACI,OAAA,GAAU,CAAA;EAEvB,MAAA,GAAS,OAAA;EACT,UAAA,EAAY,MAAA,OAAa,OAAA,SAAgB,OAAA,aACxC,MAAA;AAAA,IACE,QAAA,gBACU,OAAA,GAAU,OAAA,GAAU,OAAA,IAAW,gBAAA,CAAiB,WAAA,EAC3D,OAAA,GAAU,OAAA,GAAU,OAAA,EAAS,CAAA"}
@@ -0,0 +1,2 @@
1
+ import{t as e}from"../arkenv-internal-DEN5DTmX.js";import{arkenv as t,getSchemaKeys as n}from"@arkenv/standard";function r(r,i){return r&&typeof r==`object`&&(`runtimeEnv`in r||`server`in r||`client`in r||`shared`in r)?e(r,!1,void 0,t,n):e(r,i,{isServer:!1},t,n)}export{r as arkenv,r as default};
2
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","names":["coreArkenv"],"sources":["../../src/standard/index.ts"],"sourcesContent":["import { arkenv as coreArkenv, getSchemaKeys } from \"@arkenv/standard\";\nimport type { StandardSchemaV1 } from \"@repo/types\";\nimport { arkenvInternal } from \"@/arkenv-internal\";\nimport type { MergeExtends } from \"../types\";\n\ntype ClientVisibleKeys<\n\tTSchema extends Record<string, StandardSchemaV1>,\n\tTExpose extends keyof TSchema,\n> = {\n\t[K in keyof TSchema]: K extends `NEXT_PUBLIC_${string}`\n\t\t? K\n\t\t: K extends \"NODE_ENV\"\n\t\t\t? K\n\t\t\t: K extends TExpose\n\t\t\t\t? K\n\t\t\t\t: never;\n}[keyof TSchema];\n\n/**\n * Create a validated, type-safe environment configuration for Next.js applications in Standard Mode.\n *\n * @param schema A flat schema of environment variable Standard Schema validators\n * @param options Optional configuration including client-side variables and extends\n * @returns A validated, readonly environment variables object wrapped in a security proxy\n */\nexport function arkenv<\n\tconst TSchema extends Record<string, StandardSchemaV1> = {},\n\tconst TExpose extends keyof TSchema = never,\n\tconst TExtends extends readonly unknown[] = [],\n>(\n\tschema: TSchema,\n\toptions?: {\n\t\texposeToClient?: readonly TExpose[];\n\t\texpose?: readonly TExpose[];\n\t\tshared?: readonly TExpose[];\n\t\textends?: [...TExtends];\n\t\truntimeEnv?: Record<string, unknown>;\n\t},\n): Readonly<\n\tPick<\n\t\t{ [K in keyof TSchema]: StandardSchemaV1.InferOutput<TSchema[K]> },\n\t\tExtract<keyof TSchema, ClientVisibleKeys<TSchema, TExpose>>\n\t> &\n\t\tMergeExtends<TExtends>\n>;\n\n/**\n * Create a validated, type-safe environment configuration for Next.js applications in Standard Mode.\n *\n * @deprecated Use the unified flat layout signature instead: `arkenv(schema, options)`\n * @param options The environment validation configuration options\n * @returns A validated, readonly environment variables object wrapped in a security proxy\n */\nexport function arkenv<\n\tconst TServer extends Record<string, StandardSchemaV1> = {},\n\tconst TClient extends Record<string, StandardSchemaV1> = {},\n\tconst TShared extends Record<string, StandardSchemaV1> = {},\n>(options: {\n\tserver?: TServer;\n\tclient?: TClient & {\n\t\t[K in keyof TClient]: K extends `NEXT_PUBLIC_${string}` ? unknown : never;\n\t};\n\tshared?: TShared;\n\truntimeEnv: Record<keyof TClient | keyof TShared, unknown> &\n\t\tRecord<string, unknown>;\n}): Readonly<{\n\t[K in keyof (TServer & TClient & TShared)]: StandardSchemaV1.InferOutput<\n\t\t(TServer & TClient & TShared)[K]\n\t>;\n}>;\n\nexport function arkenv(schemaOrOptions: any, optionsOrIsServer?: any): any {\n\tconst isLegacy =\n\t\tschemaOrOptions &&\n\t\ttypeof schemaOrOptions === \"object\" &&\n\t\t(\"runtimeEnv\" in schemaOrOptions ||\n\t\t\t\"server\" in schemaOrOptions ||\n\t\t\t\"client\" in schemaOrOptions ||\n\t\t\t\"shared\" in schemaOrOptions);\n\n\tif (isLegacy) {\n\t\treturn arkenvInternal(\n\t\t\tschemaOrOptions,\n\t\t\tfalse,\n\t\t\tundefined,\n\t\t\tcoreArkenv,\n\t\t\tgetSchemaKeys,\n\t\t);\n\t}\n\n\treturn arkenvInternal(\n\t\tschemaOrOptions,\n\t\toptionsOrIsServer,\n\t\t{ isServer: false },\n\t\tcoreArkenv,\n\t\tgetSchemaKeys,\n\t);\n}\n\nexport default arkenv;\n"],"mappings":"gHAuEA,SAAgB,EAAO,EAAsB,EAA8B,CAmB1E,OAjBC,GACA,OAAO,GAAoB,WAC1B,eAAgB,GAChB,WAAY,GACZ,WAAY,GACZ,WAAY,GAGN,EACN,EACA,GACA,IAAA,GACAA,EACA,EACA,CAGK,EACN,EACA,EACA,CAAE,SAAU,GAAO,CACnBA,EACA,EACA"}
@@ -0,0 +1,2 @@
1
+ Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:`Module`}}),require(`../config-CStvXoN3.cjs`);const e=require(`../arkenv-internal-Cll5pV_F.cjs`);require(`server-only`);let t=require(`@arkenv/standard`);function n(n,r){if(n&&typeof n==`object`&&(`runtimeEnv`in n||`server`in n||`shared`in n)){if(`client`in n)throw Error(`server entry point only accepts 'server' and 'shared' schemas.`);return e.t(n,!0,void 0,t.arkenv,t.getSchemaKeys)}return e.t(n,r,{isServer:!0},t.arkenv,t.getSchemaKeys)}exports.arkenv=n,exports.default=n;
2
+ //# sourceMappingURL=server.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"server.cjs","names":["arkenvInternal","coreArkenv","getSchemaKeys"],"sources":["../../src/standard/server.ts"],"sourcesContent":["import \"server-only\";\nimport { arkenv as coreArkenv, getSchemaKeys } from \"@arkenv/standard\";\nimport type { Dict, StandardSchemaV1 } from \"@repo/types\";\nimport { arkenvInternal } from \"@/arkenv-internal\";\n\n/**\n * Create a validated, type-safe environment configuration for Next.js applications (Server entry point, Standard Mode).\n */\nexport function arkenv<\n\tconst TSchema extends Record<string, StandardSchemaV1> = {},\n>(\n\tschema: TSchema,\n\toptions?: {\n\t\textends?: readonly unknown[];\n\t\truntimeEnv?: Dict<string>;\n\t},\n): Readonly<{ [K in keyof TSchema]: StandardSchemaV1.InferOutput<TSchema[K]> }>;\n\nexport function arkenv<\n\tconst TServer extends Record<string, StandardSchemaV1> = {},\n\tconst TShared extends Record<string, StandardSchemaV1> = {},\n>(options: {\n\tserver?: TServer;\n\tshared?: TShared;\n\textends?: readonly unknown[];\n\truntimeEnv?: Record<keyof TShared, string | undefined> & Dict<string>;\n}): Readonly<{\n\t[K in keyof (TServer & TShared)]: StandardSchemaV1.InferOutput<\n\t\t(TServer & TShared)[K]\n\t>;\n}>;\n\nexport function arkenv(schemaOrOptions: any, optionsOrIsServer?: any): any {\n\tconst isLegacy =\n\t\tschemaOrOptions &&\n\t\ttypeof schemaOrOptions === \"object\" &&\n\t\t(\"runtimeEnv\" in schemaOrOptions ||\n\t\t\t\"server\" in schemaOrOptions ||\n\t\t\t\"shared\" in schemaOrOptions);\n\n\tif (isLegacy) {\n\t\tif (\"client\" in schemaOrOptions) {\n\t\t\tthrow new Error(\n\t\t\t\t\"server entry point only accepts 'server' and 'shared' schemas.\",\n\t\t\t);\n\t\t}\n\t\treturn arkenvInternal(\n\t\t\tschemaOrOptions,\n\t\t\ttrue,\n\t\t\tundefined,\n\t\t\tcoreArkenv,\n\t\t\tgetSchemaKeys,\n\t\t);\n\t}\n\n\treturn arkenvInternal(\n\t\tschemaOrOptions,\n\t\toptionsOrIsServer,\n\t\t{ isServer: true },\n\t\tcoreArkenv,\n\t\tgetSchemaKeys,\n\t);\n}\n\nexport default arkenv;\n"],"mappings":"6OAgCA,SAAgB,EAAO,EAAsB,EAA8B,CAQ1E,GANC,GACA,OAAO,GAAoB,WAC1B,eAAgB,GAChB,WAAY,GACZ,WAAY,GAEA,CACb,GAAI,WAAY,EACf,MAAU,MACT,iEACA,CAEF,OAAOA,EAAAA,EACN,EACA,GACA,IAAA,GACAC,EAAAA,OACAC,EAAAA,cACA,CAGF,OAAOF,EAAAA,EACN,EACA,EACA,CAAE,SAAU,GAAM,CAClBC,EAAAA,OACAC,EAAAA,cACA"}
@@ -0,0 +1,18 @@
1
+ import { i as Dict, r as StandardSchemaV1 } from "../index-96RGPyfa.cjs";
2
+ //#region src/standard/server.d.ts
3
+ /**
4
+ * Create a validated, type-safe environment configuration for Next.js applications (Server entry point, Standard Mode).
5
+ */
6
+ declare function arkenv<const TSchema extends Record<string, StandardSchemaV1> = {}>(schema: TSchema, options?: {
7
+ extends?: readonly unknown[];
8
+ runtimeEnv?: Dict<string>;
9
+ }): Readonly<{ [K in keyof TSchema]: StandardSchemaV1.InferOutput<TSchema[K]> }>;
10
+ declare function arkenv<const TServer extends Record<string, StandardSchemaV1> = {}, const TShared extends Record<string, StandardSchemaV1> = {}>(options: {
11
+ server?: TServer;
12
+ shared?: TShared;
13
+ extends?: readonly unknown[];
14
+ runtimeEnv?: Record<keyof TShared, string | undefined> & Dict<string>;
15
+ }): Readonly<{ [K in keyof (TServer & TShared)]: StandardSchemaV1.InferOutput<(TServer & TShared)[K]> }>;
16
+ //#endregion
17
+ export { arkenv, arkenv as default };
18
+ //# sourceMappingURL=server.d.cts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"server.d.cts","names":[],"sources":["../../src/standard/server.ts"],"mappings":";;;;AAQA;iBAAgB,MAAA,uBACO,MAAA,SAAe,gBAAA,OAAA,CAErC,MAAA,EAAQ,OAAA,EACR,OAAA;EACC,OAAA;EACA,UAAA,GAAa,IAAA;AAAA,IAEZ,QAAA,eAAuB,OAAA,GAAU,gBAAA,CAAiB,WAAA,CAAY,OAAA,CAAQ,CAAA;AAAA,iBAEzD,MAAA,uBACO,MAAA,SAAe,gBAAA,8BACf,MAAA,SAAe,gBAAA,OAAA,CACpC,OAAA;EACD,MAAA,GAAS,OAAA;EACT,MAAA,GAAS,OAAA;EACT,OAAA;EACA,UAAA,GAAa,MAAA,OAAa,OAAA,wBAA+B,IAAA;AAAA,IACtD,QAAA,gBACU,OAAA,GAAU,OAAA,IAAW,gBAAA,CAAiB,WAAA,EACjD,OAAA,GAAU,OAAA,EAAS,CAAA"}
@@ -0,0 +1,18 @@
1
+ import { i as Dict, r as StandardSchemaV1 } from "../index-bjEZwPUt.js";
2
+ //#region src/standard/server.d.ts
3
+ /**
4
+ * Create a validated, type-safe environment configuration for Next.js applications (Server entry point, Standard Mode).
5
+ */
6
+ declare function arkenv<const TSchema extends Record<string, StandardSchemaV1> = {}>(schema: TSchema, options?: {
7
+ extends?: readonly unknown[];
8
+ runtimeEnv?: Dict<string>;
9
+ }): Readonly<{ [K in keyof TSchema]: StandardSchemaV1.InferOutput<TSchema[K]> }>;
10
+ declare function arkenv<const TServer extends Record<string, StandardSchemaV1> = {}, const TShared extends Record<string, StandardSchemaV1> = {}>(options: {
11
+ server?: TServer;
12
+ shared?: TShared;
13
+ extends?: readonly unknown[];
14
+ runtimeEnv?: Record<keyof TShared, string | undefined> & Dict<string>;
15
+ }): Readonly<{ [K in keyof (TServer & TShared)]: StandardSchemaV1.InferOutput<(TServer & TShared)[K]> }>;
16
+ //#endregion
17
+ export { arkenv, arkenv as default };
18
+ //# sourceMappingURL=server.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"server.d.ts","names":[],"sources":["../../src/standard/server.ts"],"mappings":";;;;AAQA;iBAAgB,MAAA,uBACO,MAAA,SAAe,gBAAA,OAAA,CAErC,MAAA,EAAQ,OAAA,EACR,OAAA;EACC,OAAA;EACA,UAAA,GAAa,IAAA;AAAA,IAEZ,QAAA,eAAuB,OAAA,GAAU,gBAAA,CAAiB,WAAA,CAAY,OAAA,CAAQ,CAAA;AAAA,iBAEzD,MAAA,uBACO,MAAA,SAAe,gBAAA,8BACf,MAAA,SAAe,gBAAA,OAAA,CACpC,OAAA;EACD,MAAA,GAAS,OAAA;EACT,MAAA,GAAS,OAAA;EACT,OAAA;EACA,UAAA,GAAa,MAAA,OAAa,OAAA,wBAA+B,IAAA;AAAA,IACtD,QAAA,gBACU,OAAA,GAAU,OAAA,IAAW,gBAAA,CAAiB,WAAA,EACjD,OAAA,GAAU,OAAA,EAAS,CAAA"}
@@ -0,0 +1,2 @@
1
+ import{t as e}from"../arkenv-internal-DEN5DTmX.js";import"server-only";import{arkenv as t,getSchemaKeys as n}from"@arkenv/standard";function r(r,i){if(r&&typeof r==`object`&&(`runtimeEnv`in r||`server`in r||`shared`in r)){if(`client`in r)throw Error(`server entry point only accepts 'server' and 'shared' schemas.`);return e(r,!0,void 0,t,n)}return e(r,i,{isServer:!0},t,n)}export{r as arkenv,r as default};
2
+ //# sourceMappingURL=server.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"server.js","names":["coreArkenv"],"sources":["../../src/standard/server.ts"],"sourcesContent":["import \"server-only\";\nimport { arkenv as coreArkenv, getSchemaKeys } from \"@arkenv/standard\";\nimport type { Dict, StandardSchemaV1 } from \"@repo/types\";\nimport { arkenvInternal } from \"@/arkenv-internal\";\n\n/**\n * Create a validated, type-safe environment configuration for Next.js applications (Server entry point, Standard Mode).\n */\nexport function arkenv<\n\tconst TSchema extends Record<string, StandardSchemaV1> = {},\n>(\n\tschema: TSchema,\n\toptions?: {\n\t\textends?: readonly unknown[];\n\t\truntimeEnv?: Dict<string>;\n\t},\n): Readonly<{ [K in keyof TSchema]: StandardSchemaV1.InferOutput<TSchema[K]> }>;\n\nexport function arkenv<\n\tconst TServer extends Record<string, StandardSchemaV1> = {},\n\tconst TShared extends Record<string, StandardSchemaV1> = {},\n>(options: {\n\tserver?: TServer;\n\tshared?: TShared;\n\textends?: readonly unknown[];\n\truntimeEnv?: Record<keyof TShared, string | undefined> & Dict<string>;\n}): Readonly<{\n\t[K in keyof (TServer & TShared)]: StandardSchemaV1.InferOutput<\n\t\t(TServer & TShared)[K]\n\t>;\n}>;\n\nexport function arkenv(schemaOrOptions: any, optionsOrIsServer?: any): any {\n\tconst isLegacy =\n\t\tschemaOrOptions &&\n\t\ttypeof schemaOrOptions === \"object\" &&\n\t\t(\"runtimeEnv\" in schemaOrOptions ||\n\t\t\t\"server\" in schemaOrOptions ||\n\t\t\t\"shared\" in schemaOrOptions);\n\n\tif (isLegacy) {\n\t\tif (\"client\" in schemaOrOptions) {\n\t\t\tthrow new Error(\n\t\t\t\t\"server entry point only accepts 'server' and 'shared' schemas.\",\n\t\t\t);\n\t\t}\n\t\treturn arkenvInternal(\n\t\t\tschemaOrOptions,\n\t\t\ttrue,\n\t\t\tundefined,\n\t\t\tcoreArkenv,\n\t\t\tgetSchemaKeys,\n\t\t);\n\t}\n\n\treturn arkenvInternal(\n\t\tschemaOrOptions,\n\t\toptionsOrIsServer,\n\t\t{ isServer: true },\n\t\tcoreArkenv,\n\t\tgetSchemaKeys,\n\t);\n}\n\nexport default arkenv;\n"],"mappings":"oIAgCA,SAAgB,EAAO,EAAsB,EAA8B,CAQ1E,GANC,GACA,OAAO,GAAoB,WAC1B,eAAgB,GAChB,WAAY,GACZ,WAAY,GAEA,CACb,GAAI,WAAY,EACf,MAAU,MACT,iEACA,CAEF,OAAO,EACN,EACA,GACA,IAAA,GACAA,EACA,EACA,CAGF,OAAO,EACN,EACA,EACA,CAAE,SAAU,GAAM,CAClBA,EACA,EACA"}
@@ -0,0 +1,2 @@
1
+ Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:`Module`}}),require(`../config-CStvXoN3.cjs`);const e=require(`../arkenv-internal-Cll5pV_F.cjs`);let t=require(`@arkenv/standard`);function n(n,r){return e.t(n,r,{isServer:typeof window>`u`,isShared:!0},t.arkenv,t.getSchemaKeys)}exports.arkenv=n,exports.default=n;
2
+ //# sourceMappingURL=shared.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"shared.cjs","names":["arkenvInternal","coreArkenv","getSchemaKeys"],"sources":["../../src/standard/shared.ts"],"sourcesContent":["import { arkenv as coreArkenv, getSchemaKeys } from \"@arkenv/standard\";\nimport type { Dict, StandardSchemaV1 } from \"@repo/types\";\nimport { arkenvInternal } from \"@/arkenv-internal\";\n\n/**\n * Create a validated, type-safe environment configuration for Next.js applications (Shared entry point, Standard Mode).\n */\nexport function arkenv<\n\tconst TSchema extends Record<string, StandardSchemaV1> = {},\n>(\n\tschema: TSchema,\n\toptions?: {\n\t\textends?: readonly unknown[];\n\t\truntimeEnv?: Dict<string>;\n\t},\n): Readonly<{\n\t[K in keyof TSchema]: StandardSchemaV1.InferOutput<TSchema[K]>;\n}> {\n\tconst isServer = typeof window === \"undefined\";\n\treturn arkenvInternal(\n\t\tschema,\n\t\toptions,\n\t\t{\n\t\t\tisServer,\n\t\t\tisShared: true,\n\t\t},\n\t\tcoreArkenv,\n\t\tgetSchemaKeys,\n\t) as any;\n}\n\nexport default arkenv;\n"],"mappings":"sNAOA,SAAgB,EAGf,EACA,EAME,CAEF,OAAOA,EAAAA,EACN,EACA,EACA,CACC,SALe,OAAO,OAAW,IAMjC,SAAU,GACV,CACDC,EAAAA,OACAC,EAAAA,cACA"}
@@ -0,0 +1,13 @@
1
+ import { i as Dict, r as StandardSchemaV1 } from "../index-96RGPyfa.cjs";
2
+
3
+ //#region src/standard/shared.d.ts
4
+ /**
5
+ * Create a validated, type-safe environment configuration for Next.js applications (Shared entry point, Standard Mode).
6
+ */
7
+ declare function arkenv<const TSchema extends Record<string, StandardSchemaV1> = {}>(schema: TSchema, options?: {
8
+ extends?: readonly unknown[];
9
+ runtimeEnv?: Dict<string>;
10
+ }): Readonly<{ [K in keyof TSchema]: StandardSchemaV1.InferOutput<TSchema[K]> }>;
11
+ //#endregion
12
+ export { arkenv, arkenv as default };
13
+ //# sourceMappingURL=shared.d.cts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"shared.d.cts","names":[],"sources":["../../src/standard/shared.ts"],"mappings":";;;;;AAOA;iBAAgB,MAAA,uBACO,MAAA,SAAe,gBAAA,OAAA,CAErC,MAAA,EAAQ,OAAA,EACR,OAAA;EACC,OAAA;EACA,UAAA,GAAa,IAAA;AAAA,IAEZ,QAAA,eACU,OAAA,GAAU,gBAAA,CAAiB,WAAA,CAAY,OAAA,CAAQ,CAAA"}
@@ -0,0 +1,13 @@
1
+ import { i as Dict, r as StandardSchemaV1 } from "../index-bjEZwPUt.js";
2
+
3
+ //#region src/standard/shared.d.ts
4
+ /**
5
+ * Create a validated, type-safe environment configuration for Next.js applications (Shared entry point, Standard Mode).
6
+ */
7
+ declare function arkenv<const TSchema extends Record<string, StandardSchemaV1> = {}>(schema: TSchema, options?: {
8
+ extends?: readonly unknown[];
9
+ runtimeEnv?: Dict<string>;
10
+ }): Readonly<{ [K in keyof TSchema]: StandardSchemaV1.InferOutput<TSchema[K]> }>;
11
+ //#endregion
12
+ export { arkenv, arkenv as default };
13
+ //# sourceMappingURL=shared.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"shared.d.ts","names":[],"sources":["../../src/standard/shared.ts"],"mappings":";;;;;AAOA;iBAAgB,MAAA,uBACO,MAAA,SAAe,gBAAA,OAAA,CAErC,MAAA,EAAQ,OAAA,EACR,OAAA;EACC,OAAA;EACA,UAAA,GAAa,IAAA;AAAA,IAEZ,QAAA,eACU,OAAA,GAAU,gBAAA,CAAiB,WAAA,CAAY,OAAA,CAAQ,CAAA"}
@@ -0,0 +1,2 @@
1
+ import{t as e}from"../arkenv-internal-DEN5DTmX.js";import{arkenv as t,getSchemaKeys as n}from"@arkenv/standard";function r(r,i){return e(r,i,{isServer:typeof window>`u`,isShared:!0},t,n)}export{r as arkenv,r as default};
2
+ //# sourceMappingURL=shared.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"shared.js","names":["coreArkenv"],"sources":["../../src/standard/shared.ts"],"sourcesContent":["import { arkenv as coreArkenv, getSchemaKeys } from \"@arkenv/standard\";\nimport type { Dict, StandardSchemaV1 } from \"@repo/types\";\nimport { arkenvInternal } from \"@/arkenv-internal\";\n\n/**\n * Create a validated, type-safe environment configuration for Next.js applications (Shared entry point, Standard Mode).\n */\nexport function arkenv<\n\tconst TSchema extends Record<string, StandardSchemaV1> = {},\n>(\n\tschema: TSchema,\n\toptions?: {\n\t\textends?: readonly unknown[];\n\t\truntimeEnv?: Dict<string>;\n\t},\n): Readonly<{\n\t[K in keyof TSchema]: StandardSchemaV1.InferOutput<TSchema[K]>;\n}> {\n\tconst isServer = typeof window === \"undefined\";\n\treturn arkenvInternal(\n\t\tschema,\n\t\toptions,\n\t\t{\n\t\t\tisServer,\n\t\t\tisShared: true,\n\t\t},\n\t\tcoreArkenv,\n\t\tgetSchemaKeys,\n\t) as any;\n}\n\nexport default arkenv;\n"],"mappings":"gHAOA,SAAgB,EAGf,EACA,EAME,CAEF,OAAO,EACN,EACA,EACA,CACC,SALe,OAAO,OAAW,IAMjC,SAAU,GACV,CACDA,EACA,EACA"}
@@ -1,4 +1,4 @@
1
- import { n as InferType } from "./index-C6bpQ5GU.cjs";
1
+ import { n as InferType } from "./index-96RGPyfa.cjs";
2
2
 
3
3
  //#region src/types.d.ts
4
4
  /**
@@ -9,4 +9,4 @@ type ResolveExtendsElement<T> = [InferType<T>] extends [never] ? T : InferType<T
9
9
  type MergeExtends<TExtends extends readonly unknown[] | undefined> = TExtends extends readonly unknown[] ? UnionToIntersection<ResolveExtendsElement<TExtends[number]>> : {};
10
10
  //#endregion
11
11
  export { MergeExtends as t };
12
- //# sourceMappingURL=types-DBqiLw5v.d.cts.map
12
+ //# sourceMappingURL=types-44R9mgTa.d.cts.map
@@ -1 +1 @@
1
- {"version":3,"file":"types-DBqiLw5v.d.cts","names":[],"sources":["../src/types.ts"],"mappings":";;;;;AAMA;KAAY,mBAAA,OACX,CAAA,gBACI,CAAA,EAAG,CAAA,6BAEG,CAAA,sBACR,CAAA;AAAA,KAGS,qBAAA,OAA4B,SAAA,CAAU,CAAA,qBAC/C,CAAA,GACA,SAAA,CAAU,CAAA;AAAA,KAED,YAAA,oDACX,QAAA,8BACG,mBAAA,CAAoB,qBAAA,CAAsB,QAAA"}
1
+ {"version":3,"file":"types-44R9mgTa.d.cts","names":[],"sources":["../src/types.ts"],"mappings":";;;;;AAMA;KAAY,mBAAA,OACX,CAAA,gBACI,CAAA,EAAG,CAAA,6BAEG,CAAA,sBACR,CAAA;AAAA,KAGS,qBAAA,OAA4B,SAAA,CAAU,CAAA,qBAC/C,CAAA,GACA,SAAA,CAAU,CAAA;AAAA,KAED,YAAA,oDACX,QAAA,8BACG,mBAAA,CAAoB,qBAAA,CAAsB,QAAA"}
@@ -1,4 +1,4 @@
1
- import { n as InferType } from "./index-Bn3pRiJy.js";
1
+ import { n as InferType } from "./index-bjEZwPUt.js";
2
2
 
3
3
  //#region src/types.d.ts
4
4
  /**
@@ -9,4 +9,4 @@ type ResolveExtendsElement<T> = [InferType<T>] extends [never] ? T : InferType<T
9
9
  type MergeExtends<TExtends extends readonly unknown[] | undefined> = TExtends extends readonly unknown[] ? UnionToIntersection<ResolveExtendsElement<TExtends[number]>> : {};
10
10
  //#endregion
11
11
  export { MergeExtends as t };
12
- //# sourceMappingURL=types-BN4fEChy.d.ts.map
12
+ //# sourceMappingURL=types-BzMGTYWv.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"types-BN4fEChy.d.ts","names":[],"sources":["../src/types.ts"],"mappings":";;;;;AAMA;KAAY,mBAAA,OACX,CAAA,gBACI,CAAA,EAAG,CAAA,6BAEG,CAAA,sBACR,CAAA;AAAA,KAGS,qBAAA,OAA4B,SAAA,CAAU,CAAA,qBAC/C,CAAA,GACA,SAAA,CAAU,CAAA;AAAA,KAED,YAAA,oDACX,QAAA,8BACG,mBAAA,CAAoB,qBAAA,CAAsB,QAAA"}
1
+ {"version":3,"file":"types-BzMGTYWv.d.ts","names":[],"sources":["../src/types.ts"],"mappings":";;;;;AAMA;KAAY,mBAAA,OACX,CAAA,gBACI,CAAA,EAAG,CAAA,6BAEG,CAAA,sBACR,CAAA;AAAA,KAGS,qBAAA,OAA4B,SAAA,CAAU,CAAA,qBAC/C,CAAA,GACA,SAAA,CAAU,CAAA;AAAA,KAED,YAAA,oDACX,QAAA,8BACG,mBAAA,CAAoB,qBAAA,CAAsB,QAAA"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@arkenv/nextjs",
3
- "version": "1.0.0-alpha.1",
3
+ "version": "1.0.0-alpha.10",
4
4
  "author": "Yam Borodetsky <yam@yam.codes>",
5
5
  "repository": {
6
6
  "type": "git",
@@ -10,31 +10,47 @@
10
10
  "module": "./dist/index.js",
11
11
  "dependencies": {
12
12
  "chokidar": "^4.0.3",
13
+ "jiti": "2.7.0",
13
14
  "server-only": "^0.0.1",
14
- "arkenv": "1.0.0-alpha.1"
15
+ "@arkenv/build": "0.0.2-alpha.2"
15
16
  },
16
17
  "devDependencies": {
17
18
  "@size-limit/preset-small-lib": "12.1.0",
19
+ "@types/react": "19.2.14",
18
20
  "arktype": "2.2.0",
19
21
  "next": "16.2.6",
22
+ "react": "19.2.5",
20
23
  "rimraf": "6.1.3",
21
24
  "size-limit": "12.1.0",
22
25
  "tsdown": "0.21.10",
23
26
  "typescript": "6.0.3",
24
27
  "vitest": "4.1.5",
28
+ "@arkenv/core": "1.0.0-alpha.4",
29
+ "@arkenv/standard": "1.0.0-alpha.4",
30
+ "@repo/log": "0.0.1",
25
31
  "@repo/scope": "0.1.3",
26
- "@repo/types": "0.1.0"
32
+ "@repo/types": "0.1.0",
33
+ "@repo/utils": "0.1.3"
27
34
  },
28
35
  "peerDependencies": {
36
+ "@arkenv/core": "^1.0.0",
37
+ "@arkenv/standard": "^1.0.0",
29
38
  "arktype": "^2.1.22",
30
- "next": "^13.4.0 || ^14.0.0 || ^15.0.0 || ^16.0.0-0"
39
+ "next": "^13.4.0 || ^14.0.0 || ^15.0.0 || ^16.0.0-0",
40
+ "react": "19.2.5"
31
41
  },
32
- "exports": {
33
- "./shared": {
34
- "types": "./dist/shared.d.ts",
35
- "import": "./dist/shared.js",
36
- "require": "./dist/shared.cjs"
42
+ "peerDependenciesMeta": {
43
+ "@arkenv/core": {
44
+ "optional": true
45
+ },
46
+ "@arkenv/standard": {
47
+ "optional": true
37
48
  },
49
+ "arktype": {
50
+ "optional": true
51
+ }
52
+ },
53
+ "exports": {
38
54
  "./server": {
39
55
  "types": "./dist/server.d.ts",
40
56
  "import": "./dist/server.js",
@@ -47,7 +63,7 @@
47
63
  },
48
64
  ".": {
49
65
  "react-server": {
50
- "types": "./dist/index.d.ts",
66
+ "types": "./dist/react-server.d.ts",
51
67
  "import": "./dist/react-server.js",
52
68
  "require": "./dist/react-server.cjs"
53
69
  },
@@ -58,9 +74,34 @@
58
74
  }
59
75
  },
60
76
  "./config": {
61
- "types": "./dist/config.d.ts",
62
- "import": "./dist/config.js",
63
- "require": "./dist/config.cjs"
77
+ "types": "./dist/config/index.d.ts",
78
+ "import": "./dist/config/index.js",
79
+ "require": "./dist/config/index.cjs"
80
+ },
81
+ "./standard/shared": {
82
+ "types": "./dist/standard/shared.d.ts",
83
+ "import": "./dist/standard/shared.js",
84
+ "require": "./dist/standard/shared.cjs"
85
+ },
86
+ "./standard/server": {
87
+ "types": "./dist/standard/server.d.ts",
88
+ "import": "./dist/standard/server.js",
89
+ "require": "./dist/standard/server.cjs"
90
+ },
91
+ "./standard/client": {
92
+ "types": "./dist/standard/client.d.ts",
93
+ "import": "./dist/standard/client.js",
94
+ "require": "./dist/standard/client.cjs"
95
+ },
96
+ "./standard": {
97
+ "types": "./dist/standard/index.d.ts",
98
+ "import": "./dist/standard/index.js",
99
+ "require": "./dist/standard/index.cjs"
100
+ },
101
+ "./standard/config": {
102
+ "types": "./dist/standard/config.d.ts",
103
+ "import": "./dist/standard/config.js",
104
+ "require": "./dist/standard/config.cjs"
64
105
  }
65
106
  },
66
107
  "bugs": "https://github.com/yamcodes/arkenv/labels/%40arkenv%2Fnextjs",
@@ -70,10 +111,15 @@
70
111
  ],
71
112
  "homepage": "https://arkenv.js.org",
72
113
  "keywords": [
73
- "arktype",
74
114
  "arkenv",
75
- "environment",
76
- "variables",
115
+ "arktype",
116
+ "env",
117
+ "environment-variables",
118
+ "dotenv",
119
+ "config",
120
+ "validation",
121
+ "typesafe",
122
+ "standard-schema",
77
123
  "next",
78
124
  "nextjs"
79
125
  ],
@@ -92,17 +138,6 @@
92
138
  "arkenv"
93
139
  ]
94
140
  },
95
- {
96
- "name": "@arkenv/nextjs/shared",
97
- "path": "dist/shared.js",
98
- "limit": "1.5 kB",
99
- "import": "*",
100
- "ignore": [
101
- "next",
102
- "arktype",
103
- "arkenv"
104
- ]
105
- },
106
141
  {
107
142
  "name": "@arkenv/nextjs/server",
108
143
  "path": "dist/server.js",
@@ -128,16 +163,18 @@
128
163
  },
129
164
  {
130
165
  "name": "@arkenv/nextjs/config",
131
- "path": "dist/config.js",
132
- "limit": "3 kB",
166
+ "path": "dist/config/index.js",
167
+ "limit": "4 kB",
133
168
  "import": "*",
134
169
  "ignore": [
135
170
  "next",
136
171
  "arktype",
137
172
  "arkenv",
138
173
  "chokidar",
174
+ "jiti",
139
175
  "node:fs",
140
- "node:path"
176
+ "node:path",
177
+ "node:url"
141
178
  ]
142
179
  }
143
180
  ],
@@ -1,2 +0,0 @@
1
- require(`./config.cjs`);let e=require(`arkenv`);const t=Symbol.for(`arkenv.extended_env`),n=Symbol.for(`arkenv.keys`),r=Symbol.for(`arkenv.server_only_keys`);function i(e){if(!e||typeof e!=`object`&&typeof e!=`function`)return[];if(e.json&&typeof e.json==`object`&&e.json.domain===`object`){let t=[];if(Array.isArray(e.json.required))for(let n of e.json.required)n&&typeof n==`object`&&`key`in n&&t.push(n.key);if(Array.isArray(e.json.optional))for(let n of e.json.optional)n&&typeof n==`object`&&`key`in n&&t.push(n.key);return t}return`shape`in e&&e.shape&&typeof e.shape==`object`?Object.keys(e.shape):`entries`in e&&e.entries&&typeof e.entries==`object`?Object.keys(e.entries):Object.keys(e)}function a(a,o,s){let c={},l={},u={},d=[],f={},p=!1;if(typeof o==`boolean`)c=a.server||{},l=a.client||{},u=a.shared||{},d=a.extends||[],f=a.runtimeEnv||{},p=o;else{let e=a||{},t=o||{};d=t.extends||[],f=t.runtimeEnv||{},p=!!s?.isServer,s?.isShared?u=e:p?c=e:l=e}let m={},h=new Set,g=new Set;for(let e of Object.keys(c))h.add(e),!(e in l)&&!(e in u)&&g.add(e);for(let e of Object.keys(l))h.add(e);for(let e of Object.keys(u))h.add(e);let _={};if(d&&Array.isArray(d)){for(let a of d)if(a&&(typeof a==`object`||typeof a==`function`)){let o=a[t];if(o){m={...m,...o};let e=a[n];if(e instanceof Set)for(let t of e)h.add(t);let t=a[r];if(t instanceof Set)for(let e of t)g.add(e)}else{for(let e of Object.keys(m))m[e]!==void 0&&(_[e]=String(m[e]));for(let e of Object.keys(f))f[e]!==void 0&&(_[e]=f[e]);if(p)for(let e of Object.keys(c))_[e]===void 0&&process.env[e]!==void 0&&(_[e]=process.env[e]);let t=(0,e.arkenv)(a,{env:_});m={...m,...t};let n=i(a);for(let e of n)h.add(e),p&&!e.startsWith(`NEXT_PUBLIC_`)&&!s?.isShared&&g.add(e)}}}for(let e of Object.keys(l))g.delete(e);for(let e of Object.keys(u))g.delete(e);for(let e of Object.keys(l))if(!e.startsWith(`NEXT_PUBLIC_`))throw Error(`Client-side environment variables must be prefixed with 'NEXT_PUBLIC_'. Found invalid key: ${e}`);let v=[...Object.keys(l),...Object.keys(u)];for(let e of v)if(!(e in f))throw Error(`Missing key in runtimeEnv: ${e}. All client and shared environment variables must be explicitly destructured in runtimeEnv.`);for(let e of Object.keys(f))if(!h.has(e))throw Error(`Environment variable '${e}' is passed to runtimeEnv but is not defined in the schema.`);for(let e of Object.keys(m))m[e]!==void 0&&(_[e]=String(m[e]));for(let e of Object.keys(f))f[e]!==void 0&&(_[e]=f[e]);if(p)for(let e of Object.keys(c))_[e]===void 0&&process.env[e]!==void 0&&(_[e]=process.env[e]);let y=(0,e.arkenv)(p?{...c,...l,...u}:{...l,...u},{env:_}),b={...m,...y};return new Proxy(b,{get(e,i,a){if(i===t)return e;if(i===n)return h;if(i===r)return g;if(typeof i==`symbol`)return Reflect.get(e,i,a);if(typeof i==`string`){if(g.has(i)&&!p)throw Error(`Accessing server-side environment variable '${i}' on the client is not allowed.`);if(!h.has(i)&&!(i in Object.prototype)&&!(i===`__esModule`||i===`$$typeof`||i===`toJSON`||i===`inspect`))throw Error(`Environment variable '${i}' is not defined in the schema.`)}return Reflect.get(e,i,a)}})}Object.defineProperty(exports,`t`,{enumerable:!0,get:function(){return a}});
2
- //# sourceMappingURL=arkenv-internal-DA4LpI3t.cjs.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"arkenv-internal-DA4LpI3t.cjs","names":[],"sources":["../src/arkenv-internal.ts"],"sourcesContent":["import type { SchemaShape } from \"@repo/types\";\nimport { arkenv as coreArkenv } from \"arkenv\";\n\nexport const EXTENDED_ENV = Symbol.for(\"arkenv.extended_env\");\nexport const ENV_KEYS = Symbol.for(\"arkenv.keys\");\nexport const SERVER_ONLY_KEYS = Symbol.for(\"arkenv.server_only_keys\");\n\nfunction getSchemaKeys(schema: any): string[] {\n\tif (!schema || (typeof schema !== \"object\" && typeof schema !== \"function\")) {\n\t\treturn [];\n\t}\n\n\t// ArkType Type\n\tif (\n\t\tschema.json &&\n\t\ttypeof schema.json === \"object\" &&\n\t\tschema.json.domain === \"object\"\n\t) {\n\t\tconst keys: string[] = [];\n\t\tif (Array.isArray(schema.json.required)) {\n\t\t\tfor (const r of schema.json.required) {\n\t\t\t\tif (r && typeof r === \"object\" && \"key\" in r) {\n\t\t\t\t\tkeys.push(r.key);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\tif (Array.isArray(schema.json.optional)) {\n\t\t\tfor (const o of schema.json.optional) {\n\t\t\t\tif (o && typeof o === \"object\" && \"key\" in o) {\n\t\t\t\t\tkeys.push(o.key);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\treturn keys;\n\t}\n\n\t// Zod schema\n\tif (\"shape\" in schema && schema.shape && typeof schema.shape === \"object\") {\n\t\treturn Object.keys(schema.shape);\n\t}\n\n\t// Valibot schema\n\tif (\n\t\t\"entries\" in schema &&\n\t\tschema.entries &&\n\t\ttypeof schema.entries === \"object\"\n\t) {\n\t\treturn Object.keys(schema.entries);\n\t}\n\n\t// Plain object schema\n\treturn Object.keys(schema);\n}\n\n/**\n * Validate and wrap environment variables in a security proxy.\n *\n * @internal\n */\nexport function arkenvInternal(\n\tschemaOrOptions: any,\n\toptionsOrIsServer: any,\n\tcontext?: { isServer: boolean; isShared?: boolean },\n): unknown {\n\tlet server: SchemaShape = {};\n\tlet client: Record<string, unknown> = {};\n\tlet shared: SchemaShape = {};\n\tlet extendsList: unknown[] = [];\n\tlet runtimeEnv: Record<string, unknown> = {};\n\tlet isServer = false;\n\n\tif (typeof optionsOrIsServer === \"boolean\") {\n\t\t// Old nested schema behavior (backward compatible)\n\t\tserver = schemaOrOptions.server || {};\n\t\tclient = schemaOrOptions.client || {};\n\t\tshared = schemaOrOptions.shared || {};\n\t\textendsList = schemaOrOptions.extends || [];\n\t\truntimeEnv = schemaOrOptions.runtimeEnv || {};\n\t\tisServer = optionsOrIsServer;\n\t} else {\n\t\t// New flat schema behavior\n\t\tconst flatSchema = schemaOrOptions || {};\n\t\tconst options = optionsOrIsServer || {};\n\t\textendsList = options.extends || [];\n\t\truntimeEnv = options.runtimeEnv || {};\n\t\tisServer = !!context?.isServer;\n\n\t\tif (context?.isShared) {\n\t\t\tshared = flatSchema;\n\t\t} else if (isServer) {\n\t\t\tserver = flatSchema;\n\t\t} else {\n\t\t\tclient = flatSchema;\n\t\t}\n\t}\n\n\tlet extendedEnvValues: Record<string, unknown> = {};\n\tconst allKeys = new Set<string>();\n\tconst serverOnlyKeys = new Set<string>();\n\n\t// Add local keys\n\tfor (const key of Object.keys(server)) {\n\t\tallKeys.add(key);\n\t\tif (!(key in client) && !(key in shared)) {\n\t\t\tserverOnlyKeys.add(key);\n\t\t}\n\t}\n\tfor (const key of Object.keys(client)) {\n\t\tallKeys.add(key);\n\t}\n\tfor (const key of Object.keys(shared)) {\n\t\tallKeys.add(key);\n\t}\n\n\t// Prepare combined environment for core validation\n\tconst combinedEnv: Record<string, string | undefined> = {};\n\n\t// Process extended environments\n\tif (extendsList && Array.isArray(extendsList)) {\n\t\tfor (const ext of extendsList) {\n\t\t\tif (ext && (typeof ext === \"object\" || typeof ext === \"function\")) {\n\t\t\t\tconst raw = (ext as any)[EXTENDED_ENV];\n\t\t\t\tif (raw) {\n\t\t\t\t\textendedEnvValues = { ...extendedEnvValues, ...raw };\n\n\t\t\t\t\tconst extKeys = (ext as any)[ENV_KEYS];\n\t\t\t\t\tif (extKeys instanceof Set) {\n\t\t\t\t\t\tfor (const key of extKeys) allKeys.add(key);\n\t\t\t\t\t}\n\n\t\t\t\t\tconst extServerOnly = (ext as any)[SERVER_ONLY_KEYS];\n\t\t\t\t\tif (extServerOnly instanceof Set) {\n\t\t\t\t\t\tfor (const key of extServerOnly) serverOnlyKeys.add(key);\n\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\t// Prepare what we have so far for validating the extended schema\n\t\t\t\t\tfor (const key of Object.keys(extendedEnvValues)) {\n\t\t\t\t\t\tif (extendedEnvValues[key] !== undefined) {\n\t\t\t\t\t\t\tcombinedEnv[key] = String(extendedEnvValues[key]);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tfor (const key of Object.keys(runtimeEnv)) {\n\t\t\t\t\t\tif (runtimeEnv[key] !== undefined) {\n\t\t\t\t\t\t\tcombinedEnv[key] = runtimeEnv[key] as string;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tif (isServer) {\n\t\t\t\t\t\tfor (const key of Object.keys(server)) {\n\t\t\t\t\t\t\tif (\n\t\t\t\t\t\t\t\tcombinedEnv[key] === undefined &&\n\t\t\t\t\t\t\t\tprocess.env[key] !== undefined\n\t\t\t\t\t\t\t) {\n\t\t\t\t\t\t\t\tcombinedEnv[key] = process.env[key];\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\tconst validated = coreArkenv(ext as any, { env: combinedEnv });\n\t\t\t\t\textendedEnvValues = { ...extendedEnvValues, ...validated };\n\n\t\t\t\t\tconst extKeys = getSchemaKeys(ext);\n\t\t\t\t\tfor (const key of extKeys) {\n\t\t\t\t\t\tallKeys.add(key);\n\t\t\t\t\t\t// Only classify as server-only if we are on the server, it's not a public key,\n\t\t\t\t\t\t// and we aren't explicitly inside the shared entry point.\n\t\t\t\t\t\tif (\n\t\t\t\t\t\t\tisServer &&\n\t\t\t\t\t\t\t!key.startsWith(\"NEXT_PUBLIC_\") &&\n\t\t\t\t\t\t\t!context?.isShared\n\t\t\t\t\t\t) {\n\t\t\t\t\t\t\tserverOnlyKeys.add(key);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\t// Remove keys from serverOnlyKeys if they are defined as client or shared locally\n\tfor (const key of Object.keys(client)) {\n\t\tserverOnlyKeys.delete(key);\n\t}\n\tfor (const key of Object.keys(shared)) {\n\t\tserverOnlyKeys.delete(key);\n\t}\n\n\t// Validate options\n\t// For client keys, check prefix\n\tfor (const key of Object.keys(client)) {\n\t\tif (!key.startsWith(\"NEXT_PUBLIC_\")) {\n\t\t\tthrow new Error(\n\t\t\t\t`Client-side environment variables must be prefixed with 'NEXT_PUBLIC_'. Found invalid key: ${key}`,\n\t\t\t);\n\t\t}\n\t}\n\n\t// Check runtimeEnv has all local client and shared keys\n\tconst requiredKeys = [...Object.keys(client), ...Object.keys(shared)];\n\tfor (const key of requiredKeys) {\n\t\tif (!(key in runtimeEnv)) {\n\t\t\tthrow new Error(\n\t\t\t\t`Missing key in runtimeEnv: ${key}. All client and shared environment variables must be explicitly destructured in runtimeEnv.`,\n\t\t\t);\n\t\t}\n\t}\n\n\t// Check runtimeEnv does not have any keys not defined in the schema (allKeys)\n\tfor (const key of Object.keys(runtimeEnv)) {\n\t\tif (!allKeys.has(key)) {\n\t\t\tthrow new Error(\n\t\t\t\t`Environment variable '${key}' is passed to runtimeEnv but is not defined in the schema.`,\n\t\t\t);\n\t\t}\n\t}\n\n\t// Build final combinedEnv\n\tfor (const key of Object.keys(extendedEnvValues)) {\n\t\tif (extendedEnvValues[key] !== undefined) {\n\t\t\tcombinedEnv[key] = String(extendedEnvValues[key]);\n\t\t}\n\t}\n\n\tfor (const key of Object.keys(runtimeEnv)) {\n\t\tif (runtimeEnv[key] !== undefined) {\n\t\t\tcombinedEnv[key] = runtimeEnv[key] as string;\n\t\t}\n\t}\n\n\tif (isServer) {\n\t\t// Fallback server keys to process.env if omitted or undefined\n\t\tfor (const key of Object.keys(server)) {\n\t\t\tif (combinedEnv[key] === undefined && process.env[key] !== undefined) {\n\t\t\t\tcombinedEnv[key] = process.env[key];\n\t\t\t}\n\t\t}\n\t}\n\n\t// Select schema based on environment\n\tconst schema = isServer\n\t\t? { ...server, ...client, ...shared }\n\t\t: { ...client, ...shared };\n\n\t// Run core validation\n\tconst validated = coreArkenv(schema as any, { env: combinedEnv });\n\n\tconst mergedValidated = { ...extendedEnvValues, ...validated };\n\n\t// Return a Proxy wrapper\n\treturn new Proxy(mergedValidated, {\n\t\tget(target, prop, receiver) {\n\t\t\tif (prop === EXTENDED_ENV) {\n\t\t\t\treturn target;\n\t\t\t}\n\t\t\tif (prop === ENV_KEYS) {\n\t\t\t\treturn allKeys;\n\t\t\t}\n\t\t\tif (prop === SERVER_ONLY_KEYS) {\n\t\t\t\treturn serverOnlyKeys;\n\t\t\t}\n\n\t\t\t// Always allow symbol properties (Symbol.iterator, Symbol.toStringTag, etc.)\n\t\t\tif (typeof prop === \"symbol\") {\n\t\t\t\treturn Reflect.get(target, prop, receiver);\n\t\t\t}\n\n\t\t\tif (typeof prop === \"string\") {\n\t\t\t\tif (serverOnlyKeys.has(prop) && !isServer) {\n\t\t\t\t\tthrow new Error(\n\t\t\t\t\t\t`Accessing server-side environment variable '${prop}' on the client is not allowed.`,\n\t\t\t\t\t);\n\t\t\t\t}\n\n\t\t\t\t// Allow schema keys and standard Object prototype properties\n\t\t\t\tif (!allKeys.has(prop) && !(prop in Object.prototype)) {\n\t\t\t\t\t// Fallback for bundler/framework-specific properties that bypass the prototype\n\t\t\t\t\tconst isCommonKey =\n\t\t\t\t\t\tprop === \"__esModule\" ||\n\t\t\t\t\t\tprop === \"$$typeof\" ||\n\t\t\t\t\t\tprop === \"toJSON\" ||\n\t\t\t\t\t\tprop === \"inspect\";\n\n\t\t\t\t\tif (!isCommonKey) {\n\t\t\t\t\t\tthrow new Error(\n\t\t\t\t\t\t\t`Environment variable '${prop}' is not defined in the schema.`,\n\t\t\t\t\t\t);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn Reflect.get(target, prop, receiver);\n\t\t},\n\t});\n}\n"],"mappings":"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"}
@@ -1,2 +0,0 @@
1
- import{arkenv as e}from"arkenv";const t=Symbol.for(`arkenv.extended_env`),n=Symbol.for(`arkenv.keys`),r=Symbol.for(`arkenv.server_only_keys`);function i(e){if(!e||typeof e!=`object`&&typeof e!=`function`)return[];if(e.json&&typeof e.json==`object`&&e.json.domain===`object`){let t=[];if(Array.isArray(e.json.required))for(let n of e.json.required)n&&typeof n==`object`&&`key`in n&&t.push(n.key);if(Array.isArray(e.json.optional))for(let n of e.json.optional)n&&typeof n==`object`&&`key`in n&&t.push(n.key);return t}return`shape`in e&&e.shape&&typeof e.shape==`object`?Object.keys(e.shape):`entries`in e&&e.entries&&typeof e.entries==`object`?Object.keys(e.entries):Object.keys(e)}function a(a,o,s){let c={},l={},u={},d=[],f={},p=!1;if(typeof o==`boolean`)c=a.server||{},l=a.client||{},u=a.shared||{},d=a.extends||[],f=a.runtimeEnv||{},p=o;else{let e=a||{},t=o||{};d=t.extends||[],f=t.runtimeEnv||{},p=!!s?.isServer,s?.isShared?u=e:p?c=e:l=e}let m={},h=new Set,g=new Set;for(let e of Object.keys(c))h.add(e),!(e in l)&&!(e in u)&&g.add(e);for(let e of Object.keys(l))h.add(e);for(let e of Object.keys(u))h.add(e);let _={};if(d&&Array.isArray(d)){for(let a of d)if(a&&(typeof a==`object`||typeof a==`function`)){let o=a[t];if(o){m={...m,...o};let e=a[n];if(e instanceof Set)for(let t of e)h.add(t);let t=a[r];if(t instanceof Set)for(let e of t)g.add(e)}else{for(let e of Object.keys(m))m[e]!==void 0&&(_[e]=String(m[e]));for(let e of Object.keys(f))f[e]!==void 0&&(_[e]=f[e]);if(p)for(let e of Object.keys(c))_[e]===void 0&&process.env[e]!==void 0&&(_[e]=process.env[e]);let t=e(a,{env:_});m={...m,...t};let n=i(a);for(let e of n)h.add(e),p&&!e.startsWith(`NEXT_PUBLIC_`)&&!s?.isShared&&g.add(e)}}}for(let e of Object.keys(l))g.delete(e);for(let e of Object.keys(u))g.delete(e);for(let e of Object.keys(l))if(!e.startsWith(`NEXT_PUBLIC_`))throw Error(`Client-side environment variables must be prefixed with 'NEXT_PUBLIC_'. Found invalid key: ${e}`);let v=[...Object.keys(l),...Object.keys(u)];for(let e of v)if(!(e in f))throw Error(`Missing key in runtimeEnv: ${e}. All client and shared environment variables must be explicitly destructured in runtimeEnv.`);for(let e of Object.keys(f))if(!h.has(e))throw Error(`Environment variable '${e}' is passed to runtimeEnv but is not defined in the schema.`);for(let e of Object.keys(m))m[e]!==void 0&&(_[e]=String(m[e]));for(let e of Object.keys(f))f[e]!==void 0&&(_[e]=f[e]);if(p)for(let e of Object.keys(c))_[e]===void 0&&process.env[e]!==void 0&&(_[e]=process.env[e]);let y=e(p?{...c,...l,...u}:{...l,...u},{env:_}),b={...m,...y};return new Proxy(b,{get(e,i,a){if(i===t)return e;if(i===n)return h;if(i===r)return g;if(typeof i==`symbol`)return Reflect.get(e,i,a);if(typeof i==`string`){if(g.has(i)&&!p)throw Error(`Accessing server-side environment variable '${i}' on the client is not allowed.`);if(!h.has(i)&&!(i in Object.prototype)&&!(i===`__esModule`||i===`$$typeof`||i===`toJSON`||i===`inspect`))throw Error(`Environment variable '${i}' is not defined in the schema.`)}return Reflect.get(e,i,a)}})}export{a as t};
2
- //# sourceMappingURL=arkenv-internal-cagrxXTM.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"arkenv-internal-cagrxXTM.js","names":["coreArkenv"],"sources":["../src/arkenv-internal.ts"],"sourcesContent":["import type { SchemaShape } from \"@repo/types\";\nimport { arkenv as coreArkenv } from \"arkenv\";\n\nexport const EXTENDED_ENV = Symbol.for(\"arkenv.extended_env\");\nexport const ENV_KEYS = Symbol.for(\"arkenv.keys\");\nexport const SERVER_ONLY_KEYS = Symbol.for(\"arkenv.server_only_keys\");\n\nfunction getSchemaKeys(schema: any): string[] {\n\tif (!schema || (typeof schema !== \"object\" && typeof schema !== \"function\")) {\n\t\treturn [];\n\t}\n\n\t// ArkType Type\n\tif (\n\t\tschema.json &&\n\t\ttypeof schema.json === \"object\" &&\n\t\tschema.json.domain === \"object\"\n\t) {\n\t\tconst keys: string[] = [];\n\t\tif (Array.isArray(schema.json.required)) {\n\t\t\tfor (const r of schema.json.required) {\n\t\t\t\tif (r && typeof r === \"object\" && \"key\" in r) {\n\t\t\t\t\tkeys.push(r.key);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\tif (Array.isArray(schema.json.optional)) {\n\t\t\tfor (const o of schema.json.optional) {\n\t\t\t\tif (o && typeof o === \"object\" && \"key\" in o) {\n\t\t\t\t\tkeys.push(o.key);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\treturn keys;\n\t}\n\n\t// Zod schema\n\tif (\"shape\" in schema && schema.shape && typeof schema.shape === \"object\") {\n\t\treturn Object.keys(schema.shape);\n\t}\n\n\t// Valibot schema\n\tif (\n\t\t\"entries\" in schema &&\n\t\tschema.entries &&\n\t\ttypeof schema.entries === \"object\"\n\t) {\n\t\treturn Object.keys(schema.entries);\n\t}\n\n\t// Plain object schema\n\treturn Object.keys(schema);\n}\n\n/**\n * Validate and wrap environment variables in a security proxy.\n *\n * @internal\n */\nexport function arkenvInternal(\n\tschemaOrOptions: any,\n\toptionsOrIsServer: any,\n\tcontext?: { isServer: boolean; isShared?: boolean },\n): unknown {\n\tlet server: SchemaShape = {};\n\tlet client: Record<string, unknown> = {};\n\tlet shared: SchemaShape = {};\n\tlet extendsList: unknown[] = [];\n\tlet runtimeEnv: Record<string, unknown> = {};\n\tlet isServer = false;\n\n\tif (typeof optionsOrIsServer === \"boolean\") {\n\t\t// Old nested schema behavior (backward compatible)\n\t\tserver = schemaOrOptions.server || {};\n\t\tclient = schemaOrOptions.client || {};\n\t\tshared = schemaOrOptions.shared || {};\n\t\textendsList = schemaOrOptions.extends || [];\n\t\truntimeEnv = schemaOrOptions.runtimeEnv || {};\n\t\tisServer = optionsOrIsServer;\n\t} else {\n\t\t// New flat schema behavior\n\t\tconst flatSchema = schemaOrOptions || {};\n\t\tconst options = optionsOrIsServer || {};\n\t\textendsList = options.extends || [];\n\t\truntimeEnv = options.runtimeEnv || {};\n\t\tisServer = !!context?.isServer;\n\n\t\tif (context?.isShared) {\n\t\t\tshared = flatSchema;\n\t\t} else if (isServer) {\n\t\t\tserver = flatSchema;\n\t\t} else {\n\t\t\tclient = flatSchema;\n\t\t}\n\t}\n\n\tlet extendedEnvValues: Record<string, unknown> = {};\n\tconst allKeys = new Set<string>();\n\tconst serverOnlyKeys = new Set<string>();\n\n\t// Add local keys\n\tfor (const key of Object.keys(server)) {\n\t\tallKeys.add(key);\n\t\tif (!(key in client) && !(key in shared)) {\n\t\t\tserverOnlyKeys.add(key);\n\t\t}\n\t}\n\tfor (const key of Object.keys(client)) {\n\t\tallKeys.add(key);\n\t}\n\tfor (const key of Object.keys(shared)) {\n\t\tallKeys.add(key);\n\t}\n\n\t// Prepare combined environment for core validation\n\tconst combinedEnv: Record<string, string | undefined> = {};\n\n\t// Process extended environments\n\tif (extendsList && Array.isArray(extendsList)) {\n\t\tfor (const ext of extendsList) {\n\t\t\tif (ext && (typeof ext === \"object\" || typeof ext === \"function\")) {\n\t\t\t\tconst raw = (ext as any)[EXTENDED_ENV];\n\t\t\t\tif (raw) {\n\t\t\t\t\textendedEnvValues = { ...extendedEnvValues, ...raw };\n\n\t\t\t\t\tconst extKeys = (ext as any)[ENV_KEYS];\n\t\t\t\t\tif (extKeys instanceof Set) {\n\t\t\t\t\t\tfor (const key of extKeys) allKeys.add(key);\n\t\t\t\t\t}\n\n\t\t\t\t\tconst extServerOnly = (ext as any)[SERVER_ONLY_KEYS];\n\t\t\t\t\tif (extServerOnly instanceof Set) {\n\t\t\t\t\t\tfor (const key of extServerOnly) serverOnlyKeys.add(key);\n\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\t// Prepare what we have so far for validating the extended schema\n\t\t\t\t\tfor (const key of Object.keys(extendedEnvValues)) {\n\t\t\t\t\t\tif (extendedEnvValues[key] !== undefined) {\n\t\t\t\t\t\t\tcombinedEnv[key] = String(extendedEnvValues[key]);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tfor (const key of Object.keys(runtimeEnv)) {\n\t\t\t\t\t\tif (runtimeEnv[key] !== undefined) {\n\t\t\t\t\t\t\tcombinedEnv[key] = runtimeEnv[key] as string;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tif (isServer) {\n\t\t\t\t\t\tfor (const key of Object.keys(server)) {\n\t\t\t\t\t\t\tif (\n\t\t\t\t\t\t\t\tcombinedEnv[key] === undefined &&\n\t\t\t\t\t\t\t\tprocess.env[key] !== undefined\n\t\t\t\t\t\t\t) {\n\t\t\t\t\t\t\t\tcombinedEnv[key] = process.env[key];\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\tconst validated = coreArkenv(ext as any, { env: combinedEnv });\n\t\t\t\t\textendedEnvValues = { ...extendedEnvValues, ...validated };\n\n\t\t\t\t\tconst extKeys = getSchemaKeys(ext);\n\t\t\t\t\tfor (const key of extKeys) {\n\t\t\t\t\t\tallKeys.add(key);\n\t\t\t\t\t\t// Only classify as server-only if we are on the server, it's not a public key,\n\t\t\t\t\t\t// and we aren't explicitly inside the shared entry point.\n\t\t\t\t\t\tif (\n\t\t\t\t\t\t\tisServer &&\n\t\t\t\t\t\t\t!key.startsWith(\"NEXT_PUBLIC_\") &&\n\t\t\t\t\t\t\t!context?.isShared\n\t\t\t\t\t\t) {\n\t\t\t\t\t\t\tserverOnlyKeys.add(key);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\t// Remove keys from serverOnlyKeys if they are defined as client or shared locally\n\tfor (const key of Object.keys(client)) {\n\t\tserverOnlyKeys.delete(key);\n\t}\n\tfor (const key of Object.keys(shared)) {\n\t\tserverOnlyKeys.delete(key);\n\t}\n\n\t// Validate options\n\t// For client keys, check prefix\n\tfor (const key of Object.keys(client)) {\n\t\tif (!key.startsWith(\"NEXT_PUBLIC_\")) {\n\t\t\tthrow new Error(\n\t\t\t\t`Client-side environment variables must be prefixed with 'NEXT_PUBLIC_'. Found invalid key: ${key}`,\n\t\t\t);\n\t\t}\n\t}\n\n\t// Check runtimeEnv has all local client and shared keys\n\tconst requiredKeys = [...Object.keys(client), ...Object.keys(shared)];\n\tfor (const key of requiredKeys) {\n\t\tif (!(key in runtimeEnv)) {\n\t\t\tthrow new Error(\n\t\t\t\t`Missing key in runtimeEnv: ${key}. All client and shared environment variables must be explicitly destructured in runtimeEnv.`,\n\t\t\t);\n\t\t}\n\t}\n\n\t// Check runtimeEnv does not have any keys not defined in the schema (allKeys)\n\tfor (const key of Object.keys(runtimeEnv)) {\n\t\tif (!allKeys.has(key)) {\n\t\t\tthrow new Error(\n\t\t\t\t`Environment variable '${key}' is passed to runtimeEnv but is not defined in the schema.`,\n\t\t\t);\n\t\t}\n\t}\n\n\t// Build final combinedEnv\n\tfor (const key of Object.keys(extendedEnvValues)) {\n\t\tif (extendedEnvValues[key] !== undefined) {\n\t\t\tcombinedEnv[key] = String(extendedEnvValues[key]);\n\t\t}\n\t}\n\n\tfor (const key of Object.keys(runtimeEnv)) {\n\t\tif (runtimeEnv[key] !== undefined) {\n\t\t\tcombinedEnv[key] = runtimeEnv[key] as string;\n\t\t}\n\t}\n\n\tif (isServer) {\n\t\t// Fallback server keys to process.env if omitted or undefined\n\t\tfor (const key of Object.keys(server)) {\n\t\t\tif (combinedEnv[key] === undefined && process.env[key] !== undefined) {\n\t\t\t\tcombinedEnv[key] = process.env[key];\n\t\t\t}\n\t\t}\n\t}\n\n\t// Select schema based on environment\n\tconst schema = isServer\n\t\t? { ...server, ...client, ...shared }\n\t\t: { ...client, ...shared };\n\n\t// Run core validation\n\tconst validated = coreArkenv(schema as any, { env: combinedEnv });\n\n\tconst mergedValidated = { ...extendedEnvValues, ...validated };\n\n\t// Return a Proxy wrapper\n\treturn new Proxy(mergedValidated, {\n\t\tget(target, prop, receiver) {\n\t\t\tif (prop === EXTENDED_ENV) {\n\t\t\t\treturn target;\n\t\t\t}\n\t\t\tif (prop === ENV_KEYS) {\n\t\t\t\treturn allKeys;\n\t\t\t}\n\t\t\tif (prop === SERVER_ONLY_KEYS) {\n\t\t\t\treturn serverOnlyKeys;\n\t\t\t}\n\n\t\t\t// Always allow symbol properties (Symbol.iterator, Symbol.toStringTag, etc.)\n\t\t\tif (typeof prop === \"symbol\") {\n\t\t\t\treturn Reflect.get(target, prop, receiver);\n\t\t\t}\n\n\t\t\tif (typeof prop === \"string\") {\n\t\t\t\tif (serverOnlyKeys.has(prop) && !isServer) {\n\t\t\t\t\tthrow new Error(\n\t\t\t\t\t\t`Accessing server-side environment variable '${prop}' on the client is not allowed.`,\n\t\t\t\t\t);\n\t\t\t\t}\n\n\t\t\t\t// Allow schema keys and standard Object prototype properties\n\t\t\t\tif (!allKeys.has(prop) && !(prop in Object.prototype)) {\n\t\t\t\t\t// Fallback for bundler/framework-specific properties that bypass the prototype\n\t\t\t\t\tconst isCommonKey =\n\t\t\t\t\t\tprop === \"__esModule\" ||\n\t\t\t\t\t\tprop === \"$$typeof\" ||\n\t\t\t\t\t\tprop === \"toJSON\" ||\n\t\t\t\t\t\tprop === \"inspect\";\n\n\t\t\t\t\tif (!isCommonKey) {\n\t\t\t\t\t\tthrow new Error(\n\t\t\t\t\t\t\t`Environment variable '${prop}' is not defined in the schema.`,\n\t\t\t\t\t\t);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn Reflect.get(target, prop, receiver);\n\t\t},\n\t});\n}\n"],"mappings":"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"}