@arkenv/nextjs 1.0.0-alpha.3 → 1.0.0-alpha.5

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 (115) hide show
  1. package/dist/arkenv-internal-Do5bRP26.js +2 -0
  2. package/dist/arkenv-internal-Do5bRP26.js.map +1 -0
  3. package/dist/arkenv-internal-Dz0mDRKT.cjs +2 -0
  4. package/dist/arkenv-internal-Dz0mDRKT.cjs.map +1 -0
  5. package/dist/client.cjs +1 -1
  6. package/dist/client.cjs.map +1 -1
  7. package/dist/client.d.cts +6 -3
  8. package/dist/client.d.cts.map +1 -1
  9. package/dist/client.d.ts +6 -3
  10. package/dist/client.d.ts.map +1 -1
  11. package/dist/client.js +1 -1
  12. package/dist/client.js.map +1 -1
  13. package/dist/config-DNJIS9zz.cjs +103 -0
  14. package/dist/config-DNJIS9zz.cjs.map +1 -0
  15. package/dist/config.cjs +1 -76
  16. package/dist/config.d.cts +41 -29
  17. package/dist/config.d.cts.map +1 -1
  18. package/dist/config.d.ts +41 -29
  19. package/dist/config.d.ts.map +1 -1
  20. package/dist/config.js +66 -39
  21. package/dist/config.js.map +1 -1
  22. package/dist/{index-DvODqC0J.d.ts → index-96RGPyfa.d.cts} +2 -2
  23. package/dist/{index-CRUkF6-E.d.cts.map → index-96RGPyfa.d.cts.map} +1 -1
  24. package/dist/{index-CRUkF6-E.d.cts → index-Dypl5Zzg.d.ts} +2 -2
  25. package/dist/{index-DvODqC0J.d.ts.map → index-Dypl5Zzg.d.ts.map} +1 -1
  26. package/dist/index.cjs +1 -1
  27. package/dist/index.cjs.map +1 -1
  28. package/dist/index.d.cts +30 -8
  29. package/dist/index.d.cts.map +1 -1
  30. package/dist/index.d.ts +30 -8
  31. package/dist/index.d.ts.map +1 -1
  32. package/dist/index.js +1 -1
  33. package/dist/index.js.map +1 -1
  34. package/dist/react-server.cjs +1 -1
  35. package/dist/react-server.cjs.map +1 -1
  36. package/dist/react-server.d.cts +23 -8
  37. package/dist/react-server.d.cts.map +1 -1
  38. package/dist/react-server.d.ts +23 -8
  39. package/dist/react-server.d.ts.map +1 -1
  40. package/dist/react-server.js +1 -1
  41. package/dist/react-server.js.map +1 -1
  42. package/dist/script-CUpLLTKJ.cjs +2 -0
  43. package/dist/script-CUpLLTKJ.cjs.map +1 -0
  44. package/dist/script-DB7wIIvT.js +2 -0
  45. package/dist/script-DB7wIIvT.js.map +1 -0
  46. package/dist/script-DSWuhk88.d.cts +21 -0
  47. package/dist/script-DSWuhk88.d.cts.map +1 -0
  48. package/dist/script-Ii42Y-xZ.d.ts +21 -0
  49. package/dist/script-Ii42Y-xZ.d.ts.map +1 -0
  50. package/dist/server.cjs +1 -1
  51. package/dist/server.cjs.map +1 -1
  52. package/dist/server.d.cts +6 -3
  53. package/dist/server.d.cts.map +1 -1
  54. package/dist/server.d.ts +6 -3
  55. package/dist/server.d.ts.map +1 -1
  56. package/dist/server.js +1 -1
  57. package/dist/server.js.map +1 -1
  58. package/dist/shared.cjs +1 -1
  59. package/dist/shared.cjs.map +1 -1
  60. package/dist/shared.d.cts +3 -3
  61. package/dist/shared.d.cts.map +1 -1
  62. package/dist/shared.d.ts +3 -3
  63. package/dist/shared.d.ts.map +1 -1
  64. package/dist/shared.js +1 -1
  65. package/dist/shared.js.map +1 -1
  66. package/dist/standard/client.cjs +2 -0
  67. package/dist/standard/client.cjs.map +1 -0
  68. package/dist/standard/client.d.cts +30 -0
  69. package/dist/standard/client.d.cts.map +1 -0
  70. package/dist/standard/client.d.ts +30 -0
  71. package/dist/standard/client.d.ts.map +1 -0
  72. package/dist/standard/client.js +2 -0
  73. package/dist/standard/client.js.map +1 -0
  74. package/dist/standard/config.cjs +2 -0
  75. package/dist/standard/config.cjs.map +1 -0
  76. package/dist/standard/config.d.cts +14 -0
  77. package/dist/standard/config.d.cts.map +1 -0
  78. package/dist/standard/config.d.ts +14 -0
  79. package/dist/standard/config.d.ts.map +1 -0
  80. package/dist/standard/config.js +2 -0
  81. package/dist/standard/config.js.map +1 -0
  82. package/dist/standard/index.cjs +2 -0
  83. package/dist/standard/index.cjs.map +1 -0
  84. package/dist/standard/index.d.cts +35 -0
  85. package/dist/standard/index.d.cts.map +1 -0
  86. package/dist/standard/index.d.ts +35 -0
  87. package/dist/standard/index.d.ts.map +1 -0
  88. package/dist/standard/index.js +2 -0
  89. package/dist/standard/index.js.map +1 -0
  90. package/dist/standard/server.cjs +2 -0
  91. package/dist/standard/server.cjs.map +1 -0
  92. package/dist/standard/server.d.cts +18 -0
  93. package/dist/standard/server.d.cts.map +1 -0
  94. package/dist/standard/server.d.ts +18 -0
  95. package/dist/standard/server.d.ts.map +1 -0
  96. package/dist/standard/server.js +2 -0
  97. package/dist/standard/server.js.map +1 -0
  98. package/dist/standard/shared.cjs +2 -0
  99. package/dist/standard/shared.cjs.map +1 -0
  100. package/dist/standard/shared.d.cts +13 -0
  101. package/dist/standard/shared.d.cts.map +1 -0
  102. package/dist/standard/shared.d.ts +13 -0
  103. package/dist/standard/shared.d.ts.map +1 -0
  104. package/dist/standard/shared.js +2 -0
  105. package/dist/standard/shared.js.map +1 -0
  106. package/dist/{types-BTG7L0mq.d.cts → types-44R9mgTa.d.cts} +2 -2
  107. package/dist/{types-BTG7L0mq.d.cts.map → types-44R9mgTa.d.cts.map} +1 -1
  108. package/dist/{types-8YUW70UX.d.ts → types-gP-eTDyz.d.ts} +2 -2
  109. package/dist/{types-8YUW70UX.d.ts.map → types-gP-eTDyz.d.ts.map} +1 -1
  110. package/package.json +54 -9
  111. package/dist/arkenv-internal-BI25fuIK.cjs +0 -2
  112. package/dist/arkenv-internal-BI25fuIK.cjs.map +0 -1
  113. package/dist/arkenv-internal-DOhvmOZ_.js +0 -2
  114. package/dist/arkenv-internal-DOhvmOZ_.js.map +0 -1
  115. package/dist/config.cjs.map +0 -1
@@ -0,0 +1 @@
1
+ {"version":3,"file":"client.js","names":["coreArkenv"],"sources":["../../src/standard/client.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 (Client entry point, Standard Mode).\n *\n * @param schema A flat schema of `NEXT_PUBLIC_*` Standard Schema validators\n * @param options Optional extends and runtimeEnv overrides\n * @returns A validated, readonly environment variables object\n */\nexport function arkenv<\n\tconst TSchema extends Record<string, StandardSchemaV1> = {},\n>(\n\tschema: TSchema & {\n\t\t[K in keyof TSchema]: K extends `NEXT_PUBLIC_${string}` ? unknown : never;\n\t},\n\toptions?: {\n\t\textends?: readonly unknown[];\n\t\truntimeEnv: Record<keyof TSchema, string | undefined> & Dict<string>;\n\t},\n): Readonly<{ [K in keyof TSchema]: StandardSchemaV1.InferOutput<TSchema[K]> }>;\n\n/**\n * Create a validated, type-safe environment configuration for Next.js applications using\n * the split client/shared schema pattern (Client entry point, Standard Mode).\n *\n * @param options The environment validation configuration with client and shared schemas\n * @returns A validated, readonly environment variables object\n */\nexport function arkenv<\n\tconst TClient extends Record<string, StandardSchemaV1> = {},\n\tconst TShared extends Record<string, StandardSchemaV1> = {},\n>(options: {\n\tclient?: TClient & {\n\t\t[K in keyof TClient]: K extends `NEXT_PUBLIC_${string}` ? unknown : never;\n\t};\n\tshared?: TShared;\n\textends?: readonly unknown[];\n\truntimeEnv: Record<keyof TClient | keyof TShared, unknown> &\n\t\tRecord<string, unknown>;\n}): Readonly<{\n\t[K in keyof (TClient & TShared)]: StandardSchemaV1.InferOutput<\n\t\t(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\"client\" in schemaOrOptions ||\n\t\t\t\"shared\" in schemaOrOptions);\n\n\tif (isLegacy) {\n\t\tif (\"server\" in schemaOrOptions) {\n\t\t\tthrow new Error(\n\t\t\t\t\"client entry point only accepts 'client' and 'shared' schemas.\",\n\t\t\t);\n\t\t}\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":"gHA+CA,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,GAAO,CACnBA,EACA,EACA"}
@@ -0,0 +1,2 @@
1
+ Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});const e=require(`../config-DNJIS9zz.cjs`);function t(t,n){return e.i(t,{...n,standard:!0})}exports.withArkEnv=t;
2
+ //# sourceMappingURL=config.cjs.map
@@ -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 { ArkEnvConfigOptions } from "../config.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 { ArkEnvConfigOptions } from "../config.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{withArkEnv as e}from"../config.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-DNJIS9zz.cjs`);const e=require(`../arkenv-internal-Dz0mDRKT.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-Dypl5Zzg.js";
2
+ import { t as MergeExtends } from "../types-gP-eTDyz.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-Do5bRP26.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-DNJIS9zz.cjs`);const e=require(`../arkenv-internal-Dz0mDRKT.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-Dypl5Zzg.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-Do5bRP26.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-DNJIS9zz.cjs`);const e=require(`../arkenv-internal-Dz0mDRKT.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-Dypl5Zzg.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-Do5bRP26.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-CRUkF6-E.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-BTG7L0mq.d.cts.map
12
+ //# sourceMappingURL=types-44R9mgTa.d.cts.map
@@ -1 +1 @@
1
- {"version":3,"file":"types-BTG7L0mq.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-DvODqC0J.js";
1
+ import { n as InferType } from "./index-Dypl5Zzg.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-8YUW70UX.d.ts.map
12
+ //# sourceMappingURL=types-gP-eTDyz.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"types-8YUW70UX.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-gP-eTDyz.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.3",
3
+ "version": "1.0.0-alpha.5",
4
4
  "author": "Yam Borodetsky <yam@yam.codes>",
5
5
  "repository": {
6
6
  "type": "git",
@@ -10,25 +10,43 @@
10
10
  "module": "./dist/index.js",
11
11
  "dependencies": {
12
12
  "chokidar": "^4.0.3",
13
- "server-only": "^0.0.1"
13
+ "jiti": "2.7.0",
14
+ "server-only": "^0.0.1",
15
+ "@arkenv/build": "0.0.1"
14
16
  },
15
17
  "devDependencies": {
16
18
  "@size-limit/preset-small-lib": "12.1.0",
19
+ "@types/react": "19.2.14",
17
20
  "arktype": "2.2.0",
18
21
  "next": "16.2.6",
22
+ "react": "19.2.5",
19
23
  "rimraf": "6.1.3",
20
24
  "size-limit": "12.1.0",
21
25
  "tsdown": "0.21.10",
22
26
  "typescript": "6.0.3",
23
27
  "vitest": "4.1.5",
28
+ "@arkenv/core": "1.0.0-alpha.2",
24
29
  "@repo/scope": "0.1.3",
25
- "@repo/types": "0.1.0",
26
- "arkenv": "1.0.0-alpha.2"
30
+ "@arkenv/standard": "1.0.0-alpha.3",
31
+ "@repo/types": "0.1.0"
27
32
  },
28
33
  "peerDependencies": {
29
- "arkenv": "^1.0.0",
34
+ "@arkenv/core": "^1.0.0",
35
+ "@arkenv/standard": "^1.0.0",
30
36
  "arktype": "^2.1.22",
31
- "next": "^13.4.0 || ^14.0.0 || ^15.0.0 || ^16.0.0-0"
37
+ "next": "^13.4.0 || ^14.0.0 || ^15.0.0 || ^16.0.0-0",
38
+ "react": "19.2.5"
39
+ },
40
+ "peerDependenciesMeta": {
41
+ "@arkenv/core": {
42
+ "optional": true
43
+ },
44
+ "@arkenv/standard": {
45
+ "optional": true
46
+ },
47
+ "arktype": {
48
+ "optional": true
49
+ }
32
50
  },
33
51
  "exports": {
34
52
  "./shared": {
@@ -48,7 +66,7 @@
48
66
  },
49
67
  ".": {
50
68
  "react-server": {
51
- "types": "./dist/index.d.ts",
69
+ "types": "./dist/react-server.d.ts",
52
70
  "import": "./dist/react-server.js",
53
71
  "require": "./dist/react-server.cjs"
54
72
  },
@@ -62,6 +80,31 @@
62
80
  "types": "./dist/config.d.ts",
63
81
  "import": "./dist/config.js",
64
82
  "require": "./dist/config.cjs"
83
+ },
84
+ "./standard/shared": {
85
+ "types": "./dist/standard/shared.d.ts",
86
+ "import": "./dist/standard/shared.js",
87
+ "require": "./dist/standard/shared.cjs"
88
+ },
89
+ "./standard/server": {
90
+ "types": "./dist/standard/server.d.ts",
91
+ "import": "./dist/standard/server.js",
92
+ "require": "./dist/standard/server.cjs"
93
+ },
94
+ "./standard/client": {
95
+ "types": "./dist/standard/client.d.ts",
96
+ "import": "./dist/standard/client.js",
97
+ "require": "./dist/standard/client.cjs"
98
+ },
99
+ "./standard": {
100
+ "types": "./dist/standard/index.d.ts",
101
+ "import": "./dist/standard/index.js",
102
+ "require": "./dist/standard/index.cjs"
103
+ },
104
+ "./standard/config": {
105
+ "types": "./dist/standard/config.d.ts",
106
+ "import": "./dist/standard/config.js",
107
+ "require": "./dist/standard/config.cjs"
65
108
  }
66
109
  },
67
110
  "bugs": "https://github.com/yamcodes/arkenv/labels/%40arkenv%2Fnextjs",
@@ -130,15 +173,17 @@
130
173
  {
131
174
  "name": "@arkenv/nextjs/config",
132
175
  "path": "dist/config.js",
133
- "limit": "3 kB",
176
+ "limit": "4 kB",
134
177
  "import": "*",
135
178
  "ignore": [
136
179
  "next",
137
180
  "arktype",
138
181
  "arkenv",
139
182
  "chokidar",
183
+ "jiti",
140
184
  "node:fs",
141
- "node:path"
185
+ "node:path",
186
+ "node:url"
142
187
  ]
143
188
  }
144
189
  ],
@@ -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]=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:_,safe:!1});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]=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:_,safe:!1}),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-BI25fuIK.cjs.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"arkenv-internal-BI25fuIK.cjs","names":[],"sources":["../src/arkenv-internal.ts"],"sourcesContent":["import type { Dict, 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: SchemaShape = {};\n\tlet shared: SchemaShape = {};\n\tlet extendsList: unknown[] = [];\n\tlet runtimeEnv: Dict<string> = {};\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: Dict<string> = {};\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: Dict<string> = {};\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] = 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];\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, {\n\t\t\t\t\t\tenv: combinedEnv,\n\t\t\t\t\t\tsafe: false,\n\t\t\t\t\t});\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] = 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];\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, {\n\t\tenv: combinedEnv,\n\t\tsafe: false,\n\t});\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]=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:_,safe:!1});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]=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:_,safe:!1}),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-DOhvmOZ_.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"arkenv-internal-DOhvmOZ_.js","names":["coreArkenv"],"sources":["../src/arkenv-internal.ts"],"sourcesContent":["import type { Dict, 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: SchemaShape = {};\n\tlet shared: SchemaShape = {};\n\tlet extendsList: unknown[] = [];\n\tlet runtimeEnv: Dict<string> = {};\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: Dict<string> = {};\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: Dict<string> = {};\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] = 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];\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, {\n\t\t\t\t\t\tenv: combinedEnv,\n\t\t\t\t\t\tsafe: false,\n\t\t\t\t\t});\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] = 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];\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, {\n\t\tenv: combinedEnv,\n\t\tsafe: false,\n\t});\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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"}