@farm.js/core 0.1.0-beta.5 → 0.1.0-beta.7

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 (149) hide show
  1. package/dist/agent-runtime.d.mts +2 -2
  2. package/dist/agent-runtime.d.ts +2 -2
  3. package/dist/api/route-manager.d.mts +3 -3
  4. package/dist/api/route-manager.d.ts +3 -3
  5. package/dist/api.d.mts +3 -3
  6. package/dist/api.d.ts +3 -3
  7. package/dist/{app-CakAr8Be.d.mts → app-BWtqQu3R.d.mts} +6 -4
  8. package/dist/app-markdown.cjs +31 -7
  9. package/dist/app-markdown.cjs.map +1 -1
  10. package/dist/app-markdown.d.mts +2 -2
  11. package/dist/app-markdown.d.ts +2 -2
  12. package/dist/app-markdown.mjs +2 -1
  13. package/dist/{app-BjN-da13.d.ts → app-xltejvLY.d.ts} +6 -4
  14. package/dist/{chunk-A2LUXHD2.mjs → chunk-5VYHFKWE.mjs} +214 -58
  15. package/dist/chunk-5VYHFKWE.mjs.map +1 -0
  16. package/dist/{chunk-EEABSBKK.mjs → chunk-6F5OI5GA.mjs} +2 -2
  17. package/dist/chunk-6F5OI5GA.mjs.map +1 -0
  18. package/dist/{chunk-LLC7BNXW.mjs → chunk-7FBJLMQH.mjs} +73 -10
  19. package/dist/chunk-7FBJLMQH.mjs.map +1 -0
  20. package/dist/{chunk-NM3CRAAL.mjs → chunk-B4W3BNTL.mjs} +24 -8
  21. package/dist/chunk-B4W3BNTL.mjs.map +1 -0
  22. package/dist/{chunk-BHG3LVHH.mjs → chunk-CGIXMLSY.mjs} +15 -7
  23. package/dist/chunk-CGIXMLSY.mjs.map +1 -0
  24. package/dist/{chunk-C3DLZMBU.mjs → chunk-DJSGLHCN.mjs} +2 -2
  25. package/dist/{chunk-2NHCNRF6.mjs → chunk-GFMBXLGP.mjs} +56 -20
  26. package/dist/chunk-GFMBXLGP.mjs.map +1 -0
  27. package/dist/chunk-I4CUBGVF.mjs +93 -0
  28. package/dist/chunk-I4CUBGVF.mjs.map +1 -0
  29. package/dist/{chunk-HNIQFZKB.mjs → chunk-ME4MO2RJ.mjs} +27 -37
  30. package/dist/chunk-ME4MO2RJ.mjs.map +1 -0
  31. package/dist/{chunk-RSKVYESE.mjs → chunk-RQ633A5I.mjs} +1 -1
  32. package/dist/chunk-RQ633A5I.mjs.map +1 -0
  33. package/dist/{chunk-2CUKEMVR.mjs → chunk-WDU6QXNK.mjs} +1 -1
  34. package/dist/chunk-WDU6QXNK.mjs.map +1 -0
  35. package/dist/{chunk-QGQX7SFC.mjs → chunk-ZVWA4ZQ3.mjs} +17 -8
  36. package/dist/chunk-ZVWA4ZQ3.mjs.map +1 -0
  37. package/dist/{client-plugins-DQQ1adXM.d.mts → client-plugins-BI2R6Eae.d.mts} +74 -3
  38. package/dist/{client-plugins-Cw4qUGsw.d.ts → client-plugins-DU9oMspX.d.ts} +74 -3
  39. package/dist/client-plugins.d.mts +2 -2
  40. package/dist/client-plugins.d.ts +2 -2
  41. package/dist/client.cjs.map +1 -1
  42. package/dist/client.d.mts +2 -2
  43. package/dist/client.d.ts +2 -2
  44. package/dist/client.mjs +1 -1
  45. package/dist/config.d.mts +2 -2
  46. package/dist/config.d.ts +2 -2
  47. package/dist/{devtools-LVC3VB5P.mjs → devtools-REQTS3I7.mjs} +6 -5
  48. package/dist/{devtools-LVC3VB5P.mjs.map → devtools-REQTS3I7.mjs.map} +1 -1
  49. package/dist/docs.cjs +51 -56
  50. package/dist/docs.cjs.map +1 -1
  51. package/dist/docs.mjs +6 -5
  52. package/dist/env-types.cjs +14 -5
  53. package/dist/env-types.cjs.map +1 -1
  54. package/dist/env-types.d.mts +2 -1
  55. package/dist/env-types.d.ts +2 -1
  56. package/dist/env-types.mjs +3 -1
  57. package/dist/env.cjs.map +1 -1
  58. package/dist/env.d.mts +1 -1
  59. package/dist/env.d.ts +1 -1
  60. package/dist/env.mjs +1 -1
  61. package/dist/i18n/client.d.mts +2 -2
  62. package/dist/i18n/client.d.ts +2 -2
  63. package/dist/i18n/index.d.mts +3 -3
  64. package/dist/i18n/index.d.ts +3 -3
  65. package/dist/i18n/server.d.mts +5 -5
  66. package/dist/i18n/server.d.ts +5 -5
  67. package/dist/index.cjs +931 -567
  68. package/dist/index.cjs.map +1 -1
  69. package/dist/index.d.mts +15 -13
  70. package/dist/index.d.ts +15 -13
  71. package/dist/index.mjs +23 -16
  72. package/dist/index.mjs.map +1 -1
  73. package/dist/integrations.d.mts +2 -2
  74. package/dist/integrations.d.ts +2 -2
  75. package/dist/internal/build-runtime.cjs +643 -322
  76. package/dist/internal/build-runtime.cjs.map +1 -1
  77. package/dist/internal/build-runtime.d.mts +4 -4
  78. package/dist/internal/build-runtime.d.ts +4 -4
  79. package/dist/internal/build-runtime.mjs +11 -10
  80. package/dist/internal/config-runtime.cjs +135 -39
  81. package/dist/internal/config-runtime.cjs.map +1 -1
  82. package/dist/internal/config-runtime.d.mts +3 -3
  83. package/dist/internal/config-runtime.d.ts +3 -3
  84. package/dist/internal/config-runtime.mjs +5 -4
  85. package/dist/internal/production-runtime.d.mts +6 -6
  86. package/dist/internal/production-runtime.d.ts +6 -6
  87. package/dist/markdown.cjs +73 -8
  88. package/dist/markdown.cjs.map +1 -1
  89. package/dist/markdown.d.mts +19 -2
  90. package/dist/markdown.d.ts +19 -2
  91. package/dist/markdown.mjs +5 -1
  92. package/dist/{metadata-BAPg_Nmo.d.ts → metadata-Cm9ujH4I.d.ts} +1 -1
  93. package/dist/{metadata-_6i9oFG3.d.mts → metadata-DacXbnLA.d.mts} +1 -1
  94. package/dist/middleware.d.mts +4 -4
  95. package/dist/middleware.d.ts +4 -4
  96. package/dist/plugin.cjs +679 -434
  97. package/dist/plugin.cjs.map +1 -1
  98. package/dist/plugin.d.mts +2 -2
  99. package/dist/plugin.d.ts +2 -2
  100. package/dist/plugin.mjs +8 -7
  101. package/dist/{production-runtime-DPfgMV9Y.d.mts → production-runtime-4KKq1AVC.d.mts} +2 -2
  102. package/dist/{production-runtime-BoJDc5mc.d.ts → production-runtime-DRsWDN2x.d.ts} +2 -2
  103. package/dist/{request-BrFBuc8G.d.mts → request-Dsq4kGW0.d.mts} +1 -1
  104. package/dist/{request-BslSZIRz.d.ts → request-udtobOLv.d.ts} +1 -1
  105. package/dist/request.d.mts +2 -2
  106. package/dist/request.d.ts +2 -2
  107. package/dist/{resolver-DlOPpjkB.d.mts → resolver-DJqjLMg_.d.mts} +1 -1
  108. package/dist/{resolver-C6iecsDV.d.ts → resolver-IH4RmPEl.d.ts} +1 -1
  109. package/dist/routes.d.mts +2 -2
  110. package/dist/routes.d.ts +2 -2
  111. package/dist/{runtime-DeAAZ6gO.d.mts → runtime-Cxpq6xZN.d.mts} +2 -2
  112. package/dist/{runtime-B6GvwDS1.d.ts → runtime-bv63eUiO.d.ts} +2 -2
  113. package/dist/server-plugins.d.mts +3 -3
  114. package/dist/server-plugins.d.ts +3 -3
  115. package/dist/server.cjs +731 -447
  116. package/dist/server.cjs.map +1 -1
  117. package/dist/server.d.mts +9 -9
  118. package/dist/server.d.ts +9 -9
  119. package/dist/server.mjs +9 -8
  120. package/dist/server.mjs.map +1 -1
  121. package/dist/testing.d.mts +2 -2
  122. package/dist/testing.d.ts +2 -2
  123. package/dist/{types-BH1lhg5G.d.mts → types-BMxWr97v.d.mts} +2 -2
  124. package/dist/{types-BH1lhg5G.d.ts → types-BMxWr97v.d.ts} +2 -2
  125. package/dist/{utils-Drsyz1Vj.d.ts → utils-B-cUHwoK.d.ts} +1 -1
  126. package/dist/{utils-CHXlMDkg.d.mts → utils-Cm41AefV.d.mts} +1 -1
  127. package/dist/version.cjs +1 -1
  128. package/dist/version.cjs.map +1 -1
  129. package/dist/version.mjs +1 -1
  130. package/dist/vite.cjs +682 -437
  131. package/dist/vite.cjs.map +1 -1
  132. package/dist/vite.d.mts +2 -2
  133. package/dist/vite.d.ts +2 -2
  134. package/dist/vite.mjs +6 -5
  135. package/package.json +3 -2
  136. package/types/client.d.ts +1 -1
  137. package/types/image.d.ts +4 -0
  138. package/types/images.d.ts +59 -0
  139. package/dist/chunk-2CUKEMVR.mjs.map +0 -1
  140. package/dist/chunk-2NHCNRF6.mjs.map +0 -1
  141. package/dist/chunk-A2LUXHD2.mjs.map +0 -1
  142. package/dist/chunk-BHG3LVHH.mjs.map +0 -1
  143. package/dist/chunk-EEABSBKK.mjs.map +0 -1
  144. package/dist/chunk-HNIQFZKB.mjs.map +0 -1
  145. package/dist/chunk-LLC7BNXW.mjs.map +0 -1
  146. package/dist/chunk-NM3CRAAL.mjs.map +0 -1
  147. package/dist/chunk-QGQX7SFC.mjs.map +0 -1
  148. package/dist/chunk-RSKVYESE.mjs.map +0 -1
  149. /package/dist/{chunk-C3DLZMBU.mjs.map → chunk-DJSGLHCN.mjs.map} +0 -0
package/dist/docs.mjs CHANGED
@@ -9,18 +9,19 @@ import {
9
9
  isFarmDocsRequest,
10
10
  loadFarmDocsPage,
11
11
  resolveFarmDocsContentDir
12
- } from "./chunk-HNIQFZKB.mjs";
12
+ } from "./chunk-ME4MO2RJ.mjs";
13
13
  import "./chunk-V7RBCSDJ.mjs";
14
- import "./chunk-NM3CRAAL.mjs";
14
+ import "./chunk-B4W3BNTL.mjs";
15
15
  import "./chunk-UVCIEUJC.mjs";
16
- import "./chunk-RSKVYESE.mjs";
16
+ import "./chunk-RQ633A5I.mjs";
17
+ import "./chunk-I4CUBGVF.mjs";
17
18
  import "./chunk-74YTBPTY.mjs";
18
19
  import "./chunk-7MABZJIM.mjs";
19
20
  import "./chunk-YW7OBE6Q.mjs";
20
21
  import "./chunk-GY2STC2S.mjs";
21
22
  import "./chunk-UB5UOSHB.mjs";
22
- import "./chunk-LLC7BNXW.mjs";
23
- import "./chunk-QGQX7SFC.mjs";
23
+ import "./chunk-ZVWA4ZQ3.mjs";
24
+ import "./chunk-7FBJLMQH.mjs";
24
25
  import "./chunk-XIVV5IWN.mjs";
25
26
  import "./chunk-GXASWWJU.mjs";
26
27
  import "./chunk-K4667E2Q.mjs";
@@ -31,6 +31,7 @@ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: tru
31
31
  // src/env-types.ts
32
32
  var env_types_exports = {};
33
33
  __export(env_types_exports, {
34
+ createEnvTypeDeclarations: () => createEnvTypeDeclarations,
34
35
  generateEnvTypes: () => generateEnvTypes
35
36
  });
36
37
  module.exports = __toCommonJS(env_types_exports);
@@ -77,18 +78,25 @@ var CONFIG_FILENAMES = [
77
78
  async function generateEnvTypes(options) {
78
79
  const root = path.resolve(options.root);
79
80
  const srcDir = options.srcDir || "src";
80
- const outPath = path.join(root, srcDir, options.outFile || DEFAULT_OUT_FILE);
81
+ const outFile = options.outFile || DEFAULT_OUT_FILE;
82
+ const outPath = path.isAbsolute(outFile) ? outFile : path.join(root, srcDir, outFile);
83
+ const content = createEnvTypeDeclarations(options, outPath);
84
+ fs.mkdirSync(path.dirname(outPath), { recursive: true });
85
+ writeFileIfChanged(outPath, content);
86
+ return outPath;
87
+ }
88
+ __name(generateEnvTypes, "generateEnvTypes");
89
+ function createEnvTypeDeclarations(options, outPath) {
90
+ const root = path.resolve(options.root);
81
91
  const configPath = findConfigPath(root, options.configPath);
82
92
  const configPaths = [
83
93
  ...(options.layerConfigPaths ?? []).filter((value) => fs.existsSync(value)),
84
94
  ...configPath ? [configPath] : []
85
95
  ];
86
96
  const content = configPaths.length > 1 ? createLayeredConfigBackedEnvTypes(outPath, configPaths) : configPaths.length === 1 ? createConfigBackedEnvTypes(outPath, configPaths[0]) : createEmptyEnvTypes();
87
- fs.mkdirSync(path.dirname(outPath), { recursive: true });
88
- writeFileIfChanged(outPath, content);
89
- return outPath;
97
+ return content;
90
98
  }
91
- __name(generateEnvTypes, "generateEnvTypes");
99
+ __name(createEnvTypeDeclarations, "createEnvTypeDeclarations");
92
100
  function createLayeredConfigBackedEnvTypes(outPath, configPaths) {
93
101
  const imports = configPaths.map(
94
102
  (configPath, index) => `import type FarmConfig${index} from ${JSON.stringify(toTypeImportPath(outPath, configPath))};`
@@ -218,6 +226,7 @@ function toTypeImportPath(outPath, targetPath) {
218
226
  __name(toTypeImportPath, "toTypeImportPath");
219
227
  // Annotate the CommonJS export names for ESM import in node:
220
228
  0 && (module.exports = {
229
+ createEnvTypeDeclarations,
221
230
  generateEnvTypes
222
231
  });
223
232
  //# sourceMappingURL=env-types.cjs.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/env-types.ts","../src/write-file-if-changed.ts"],"sourcesContent":["import * as fs from \"fs\";\nimport * as path from \"path\";\nimport { writeFileIfChanged } from \"./write-file-if-changed\";\n\nexport interface GenerateEnvTypesOptions {\n root: string;\n srcDir?: string;\n outFile?: string;\n configPath?: string;\n /** Lower-priority layer config files, ordered before the project config. */\n layerConfigPaths?: readonly string[];\n}\n\nconst DEFAULT_OUT_FILE = \"farm-env.d.ts\";\nconst CONFIG_FILENAMES = [\n \"farm.config.ts\",\n \"farm.config.tsx\",\n \"farm.config.mts\",\n \"farm.config.cts\",\n \"farm.config.js\",\n \"farm.config.jsx\",\n \"farm.config.mjs\",\n \"farm.config.cjs\",\n \"config.ts\",\n \"config.tsx\",\n \"config.mts\",\n \"config.cts\",\n \"config.js\",\n \"config.jsx\",\n \"config.mjs\",\n \"config.cjs\",\n];\n\nexport async function generateEnvTypes(options: GenerateEnvTypesOptions): Promise<string> {\n const root = path.resolve(options.root);\n const srcDir = options.srcDir || \"src\";\n const outPath = path.join(root, srcDir, options.outFile || DEFAULT_OUT_FILE);\n const configPath = findConfigPath(root, options.configPath);\n const configPaths = [\n ...(options.layerConfigPaths ?? []).filter((value) => fs.existsSync(value)),\n ...(configPath ? [configPath] : []),\n ];\n const content =\n configPaths.length > 1\n ? createLayeredConfigBackedEnvTypes(outPath, configPaths)\n : configPaths.length === 1\n ? createConfigBackedEnvTypes(outPath, configPaths[0])\n : createEmptyEnvTypes();\n\n fs.mkdirSync(path.dirname(outPath), { recursive: true });\n writeFileIfChanged(outPath, content);\n\n return outPath;\n}\n\nfunction createLayeredConfigBackedEnvTypes(outPath: string, configPaths: string[]): string {\n const imports = configPaths\n .map(\n (configPath, index) =>\n `import type FarmConfig${index} from ${JSON.stringify(toTypeImportPath(outPath, configPath))};`,\n )\n .join(\"\\n\");\n const resolvedTypes = configPaths\n .map(\n (_configPath, index) => `\ntype FarmConfigEnv${index} = typeof FarmConfig${index} extends { env?: infer TEnv }\n ? NonNullable<TEnv>\n : never;\ntype FarmResolvedEnv${index} = [FarmConfigEnv${index}] extends [never]\n ? { server: {}; public: {} }\n : InferEnv<FarmConfigEnv${index}>;`,\n )\n .join(\"\\n\");\n const mergedTypes = configPaths\n .slice(1)\n .map(\n (_configPath, index) =>\n `type FarmMergedEnv${index + 1} = MergeFarmEnv<${index === 0 ? \"FarmResolvedEnv0\" : `FarmMergedEnv${index}`}, FarmResolvedEnv${index + 1}>;`,\n )\n .join(\"\\n\");\n const finalType = `FarmMergedEnv${configPaths.length - 1}`;\n\n return `/**\n * Auto-generated env types from Farm layers and farm.config.\n * Regenerated on dev start, build, and farm generate.\n */\n${imports}\nimport type { InferEnv } from \"@farm.js/core/env\";\n\ntype MergeFarmEnv<TBase, TOverride> = {\n server: Omit<TBase extends { server: infer T } ? T : {}, keyof (TOverride extends { server: infer T } ? T : {})> &\n (TOverride extends { server: infer T } ? T : {});\n public: Omit<TBase extends { public: infer T } ? T : {}, keyof (TOverride extends { public: infer T } ? T : {})> &\n (TOverride extends { public: infer T } ? T : {});\n};\n${resolvedTypes}\n${mergedTypes}\n\ntype FarmResolvedEnv = ${finalType};\n\ndeclare module \"@farm.js/core/env\" {\n interface FarmEnvTypes {\n server: FarmResolvedEnv[\"server\"];\n public: FarmResolvedEnv[\"public\"];\n }\n}\n\ndeclare module \"@farm.js/core\" {\n interface FarmEnvTypes {\n server: FarmResolvedEnv[\"server\"];\n public: FarmResolvedEnv[\"public\"];\n }\n}\n\nexport {};\n`;\n}\n\nfunction findConfigPath(root: string, configPath?: string): string | null {\n if (configPath) {\n const resolvedPath = path.isAbsolute(configPath) ? configPath : path.join(root, configPath);\n return fs.existsSync(resolvedPath) ? resolvedPath : null;\n }\n\n for (const filename of CONFIG_FILENAMES) {\n const resolvedPath = path.join(root, filename);\n if (fs.existsSync(resolvedPath)) {\n return resolvedPath;\n }\n }\n\n return null;\n}\n\nfunction createConfigBackedEnvTypes(outPath: string, configPath: string): string {\n const configImportPath = toTypeImportPath(outPath, configPath);\n\n return `/**\n * Auto-generated env types from farm.config.\n * Regenerated on dev start, build, and farm generate.\n */\nimport type FarmConfig from ${JSON.stringify(configImportPath)};\nimport type { InferEnv } from \"@farm.js/core/env\";\n\ntype FarmConfigEnv = typeof FarmConfig extends { env?: infer TEnv } ? NonNullable<TEnv> : never;\ntype FarmResolvedEnv = [FarmConfigEnv] extends [never]\n ? { server: {}; public: {} }\n : InferEnv<FarmConfigEnv>;\n\ndeclare module \"@farm.js/core/env\" {\n interface FarmEnvTypes {\n server: FarmResolvedEnv[\"server\"];\n public: FarmResolvedEnv[\"public\"];\n }\n}\n\ndeclare module \"@farm.js/core\" {\n interface FarmEnvTypes {\n server: FarmResolvedEnv[\"server\"];\n public: FarmResolvedEnv[\"public\"];\n }\n}\n\nexport {};\n`;\n}\n\nfunction createEmptyEnvTypes(): string {\n return `/**\n * Auto-generated env types from farm.config.\n * Regenerated on dev start, build, and farm generate.\n */\ndeclare module \"@farm.js/core/env\" {\n interface FarmEnvTypes {\n server: {};\n public: {};\n }\n}\n\ndeclare module \"@farm.js/core\" {\n interface FarmEnvTypes {\n server: {};\n public: {};\n }\n}\n\nexport {};\n`;\n}\n\nfunction toTypeImportPath(outPath: string, targetPath: string): string {\n const relativePath = path\n .relative(path.dirname(outPath), targetPath)\n .replace(/\\\\/g, \"/\")\n .replace(/\\.(tsx?|jsx?|mjs|cjs|mts|cts)$/, \"\");\n\n return relativePath.startsWith(\".\") ? relativePath : `./${relativePath}`;\n}\n","import { readFileSync, writeFileSync } from \"node:fs\";\n\nexport function writeFileIfChanged(filePath: string, content: string): boolean {\n try {\n if (readFileSync(filePath, \"utf8\") === content) {\n return false;\n }\n } catch (error) {\n if ((error as NodeJS.ErrnoException).code !== \"ENOENT\") {\n throw error;\n }\n }\n\n writeFileSync(filePath, content, \"utf8\");\n return true;\n}\n"],"mappings":"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","names":[]}
1
+ {"version":3,"sources":["../src/env-types.ts","../src/write-file-if-changed.ts"],"sourcesContent":["import * as fs from \"fs\";\nimport * as path from \"path\";\nimport { writeFileIfChanged } from \"./write-file-if-changed\";\n\nexport interface GenerateEnvTypesOptions {\n root: string;\n srcDir?: string;\n outFile?: string;\n configPath?: string;\n /** Lower-priority layer config files, ordered before the project config. */\n layerConfigPaths?: readonly string[];\n}\n\nconst DEFAULT_OUT_FILE = \"farm-env.d.ts\";\nconst CONFIG_FILENAMES = [\n \"farm.config.ts\",\n \"farm.config.tsx\",\n \"farm.config.mts\",\n \"farm.config.cts\",\n \"farm.config.js\",\n \"farm.config.jsx\",\n \"farm.config.mjs\",\n \"farm.config.cjs\",\n \"config.ts\",\n \"config.tsx\",\n \"config.mts\",\n \"config.cts\",\n \"config.js\",\n \"config.jsx\",\n \"config.mjs\",\n \"config.cjs\",\n];\n\nexport async function generateEnvTypes(options: GenerateEnvTypesOptions): Promise<string> {\n const root = path.resolve(options.root);\n const srcDir = options.srcDir || \"src\";\n const outFile = options.outFile || DEFAULT_OUT_FILE;\n const outPath = path.isAbsolute(outFile) ? outFile : path.join(root, srcDir, outFile);\n const content = createEnvTypeDeclarations(options, outPath);\n\n fs.mkdirSync(path.dirname(outPath), { recursive: true });\n writeFileIfChanged(outPath, content);\n\n return outPath;\n}\n\nexport function createEnvTypeDeclarations(\n options: GenerateEnvTypesOptions,\n outPath: string,\n): string {\n const root = path.resolve(options.root);\n const configPath = findConfigPath(root, options.configPath);\n const configPaths = [\n ...(options.layerConfigPaths ?? []).filter((value) => fs.existsSync(value)),\n ...(configPath ? [configPath] : []),\n ];\n const content =\n configPaths.length > 1\n ? createLayeredConfigBackedEnvTypes(outPath, configPaths)\n : configPaths.length === 1\n ? createConfigBackedEnvTypes(outPath, configPaths[0])\n : createEmptyEnvTypes();\n\n return content;\n}\n\nfunction createLayeredConfigBackedEnvTypes(outPath: string, configPaths: string[]): string {\n const imports = configPaths\n .map(\n (configPath, index) =>\n `import type FarmConfig${index} from ${JSON.stringify(toTypeImportPath(outPath, configPath))};`,\n )\n .join(\"\\n\");\n const resolvedTypes = configPaths\n .map(\n (_configPath, index) => `\ntype FarmConfigEnv${index} = typeof FarmConfig${index} extends { env?: infer TEnv }\n ? NonNullable<TEnv>\n : never;\ntype FarmResolvedEnv${index} = [FarmConfigEnv${index}] extends [never]\n ? { server: {}; public: {} }\n : InferEnv<FarmConfigEnv${index}>;`,\n )\n .join(\"\\n\");\n const mergedTypes = configPaths\n .slice(1)\n .map(\n (_configPath, index) =>\n `type FarmMergedEnv${index + 1} = MergeFarmEnv<${index === 0 ? \"FarmResolvedEnv0\" : `FarmMergedEnv${index}`}, FarmResolvedEnv${index + 1}>;`,\n )\n .join(\"\\n\");\n const finalType = `FarmMergedEnv${configPaths.length - 1}`;\n\n return `/**\n * Auto-generated env types from Farm layers and farm.config.\n * Regenerated on dev start, build, and farm generate.\n */\n${imports}\nimport type { InferEnv } from \"@farm.js/core/env\";\n\ntype MergeFarmEnv<TBase, TOverride> = {\n server: Omit<TBase extends { server: infer T } ? T : {}, keyof (TOverride extends { server: infer T } ? T : {})> &\n (TOverride extends { server: infer T } ? T : {});\n public: Omit<TBase extends { public: infer T } ? T : {}, keyof (TOverride extends { public: infer T } ? T : {})> &\n (TOverride extends { public: infer T } ? T : {});\n};\n${resolvedTypes}\n${mergedTypes}\n\ntype FarmResolvedEnv = ${finalType};\n\ndeclare module \"@farm.js/core/env\" {\n interface FarmEnvTypes {\n server: FarmResolvedEnv[\"server\"];\n public: FarmResolvedEnv[\"public\"];\n }\n}\n\ndeclare module \"@farm.js/core\" {\n interface FarmEnvTypes {\n server: FarmResolvedEnv[\"server\"];\n public: FarmResolvedEnv[\"public\"];\n }\n}\n\nexport {};\n`;\n}\n\nfunction findConfigPath(root: string, configPath?: string): string | null {\n if (configPath) {\n const resolvedPath = path.isAbsolute(configPath) ? configPath : path.join(root, configPath);\n return fs.existsSync(resolvedPath) ? resolvedPath : null;\n }\n\n for (const filename of CONFIG_FILENAMES) {\n const resolvedPath = path.join(root, filename);\n if (fs.existsSync(resolvedPath)) {\n return resolvedPath;\n }\n }\n\n return null;\n}\n\nfunction createConfigBackedEnvTypes(outPath: string, configPath: string): string {\n const configImportPath = toTypeImportPath(outPath, configPath);\n\n return `/**\n * Auto-generated env types from farm.config.\n * Regenerated on dev start, build, and farm generate.\n */\nimport type FarmConfig from ${JSON.stringify(configImportPath)};\nimport type { InferEnv } from \"@farm.js/core/env\";\n\ntype FarmConfigEnv = typeof FarmConfig extends { env?: infer TEnv } ? NonNullable<TEnv> : never;\ntype FarmResolvedEnv = [FarmConfigEnv] extends [never]\n ? { server: {}; public: {} }\n : InferEnv<FarmConfigEnv>;\n\ndeclare module \"@farm.js/core/env\" {\n interface FarmEnvTypes {\n server: FarmResolvedEnv[\"server\"];\n public: FarmResolvedEnv[\"public\"];\n }\n}\n\ndeclare module \"@farm.js/core\" {\n interface FarmEnvTypes {\n server: FarmResolvedEnv[\"server\"];\n public: FarmResolvedEnv[\"public\"];\n }\n}\n\nexport {};\n`;\n}\n\nfunction createEmptyEnvTypes(): string {\n return `/**\n * Auto-generated env types from farm.config.\n * Regenerated on dev start, build, and farm generate.\n */\ndeclare module \"@farm.js/core/env\" {\n interface FarmEnvTypes {\n server: {};\n public: {};\n }\n}\n\ndeclare module \"@farm.js/core\" {\n interface FarmEnvTypes {\n server: {};\n public: {};\n }\n}\n\nexport {};\n`;\n}\n\nfunction toTypeImportPath(outPath: string, targetPath: string): string {\n const relativePath = path\n .relative(path.dirname(outPath), targetPath)\n .replace(/\\\\/g, \"/\")\n .replace(/\\.(tsx?|jsx?|mjs|cjs|mts|cts)$/, \"\");\n\n return relativePath.startsWith(\".\") ? relativePath : `./${relativePath}`;\n}\n","import { readFileSync, writeFileSync } from \"node:fs\";\n\nexport function writeFileIfChanged(filePath: string, content: string): boolean {\n try {\n if (readFileSync(filePath, \"utf8\") === content) {\n return false;\n }\n } catch (error) {\n if ((error as NodeJS.ErrnoException).code !== \"ENOENT\") {\n throw error;\n }\n }\n\n writeFileSync(filePath, content, \"utf8\");\n return true;\n}\n"],"mappings":"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","names":[]}
@@ -7,5 +7,6 @@ interface GenerateEnvTypesOptions {
7
7
  layerConfigPaths?: readonly string[];
8
8
  }
9
9
  declare function generateEnvTypes(options: GenerateEnvTypesOptions): Promise<string>;
10
+ declare function createEnvTypeDeclarations(options: GenerateEnvTypesOptions, outPath: string): string;
10
11
 
11
- export { type GenerateEnvTypesOptions, generateEnvTypes };
12
+ export { type GenerateEnvTypesOptions, createEnvTypeDeclarations, generateEnvTypes };
@@ -7,5 +7,6 @@ interface GenerateEnvTypesOptions {
7
7
  layerConfigPaths?: readonly string[];
8
8
  }
9
9
  declare function generateEnvTypes(options: GenerateEnvTypesOptions): Promise<string>;
10
+ declare function createEnvTypeDeclarations(options: GenerateEnvTypesOptions, outPath: string): string;
10
11
 
11
- export { type GenerateEnvTypesOptions, generateEnvTypes };
12
+ export { type GenerateEnvTypesOptions, createEnvTypeDeclarations, generateEnvTypes };
@@ -1,9 +1,11 @@
1
1
  import {
2
+ createEnvTypeDeclarations,
2
3
  generateEnvTypes
3
- } from "./chunk-BHG3LVHH.mjs";
4
+ } from "./chunk-CGIXMLSY.mjs";
4
5
  import "./chunk-USWZZUEH.mjs";
5
6
  import "./chunk-CGILA3WO.mjs";
6
7
  export {
8
+ createEnvTypeDeclarations,
7
9
  generateEnvTypes
8
10
  };
9
11
  //# sourceMappingURL=env-types.mjs.map
package/dist/env.cjs.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/env.ts"],"sourcesContent":["export interface EnvSchema<TOutput = unknown> {\n parse(value: unknown): TOutput;\n}\n\nexport type EnvParser<TOutput = unknown> =\n | EnvSchema<TOutput>\n | ((value: string | undefined, context: { key: string; scope: \"server\" | \"public\" }) => TOutput);\n\nexport type EnvShape = Record<string, EnvParser<any>>;\n\nexport type InferEnvParser<TParser> =\n TParser extends EnvSchema<infer TOutput>\n ? TOutput\n : TParser extends (value: string | undefined, context: any) => infer TOutput\n ? TOutput\n : never;\n\nexport type InferEnvShape<TShape> = TShape extends EnvShape\n ? { [K in keyof TShape]: InferEnvParser<TShape[K]> }\n : {};\n\nexport interface FarmEnvConfig<\n TServer extends EnvShape = EnvShape,\n TPublic extends EnvShape = EnvShape,\n> {\n server?: TServer;\n public?: TPublic;\n}\n\nexport interface ResolvedFarmEnv<\n TServer extends Record<string, any> = Record<string, unknown>,\n TPublic extends Record<string, any> = Record<string, unknown>,\n> {\n server: TServer;\n public: TPublic;\n}\n\nexport type InferEnv<TConfig> =\n TConfig extends FarmEnvConfig<infer TServer, infer TPublic>\n ? ResolvedFarmEnv<InferEnvShape<TServer>, InferEnvShape<TPublic>>\n : ResolvedFarmEnv;\n\n/**\n * Augmented by generated src/farm-env.d.ts for project-specific autocomplete.\n */\nexport interface FarmEnvTypes {}\n\nexport type FarmServerEnv = FarmEnvTypes extends { server: infer TServer }\n ? TServer extends Record<string, any>\n ? TServer\n : Record<string, unknown>\n : Record<string, unknown>;\n\nexport type FarmPublicEnv = FarmEnvTypes extends { public: infer TPublic }\n ? TPublic extends Record<string, any>\n ? TPublic\n : Record<string, unknown>\n : Record<string, unknown>;\n\nexport type FarmTypedEnv = ResolvedFarmEnv<FarmServerEnv, FarmPublicEnv>;\n\ndeclare const __FARM_PUBLIC_ENV__: Record<string, unknown> | undefined;\ndeclare const __FARM_ENV__: ResolvedFarmEnv | undefined;\n\nconst FARM_ENV_SYMBOL = Symbol.for(\"farm.env\");\nconst farmEnvGlobal = globalThis as typeof globalThis & {\n [FARM_ENV_SYMBOL]?: ResolvedFarmEnv;\n};\nlet currentEnv: ResolvedFarmEnv = getInitialEnv();\n\nexport function resolveEnv<TConfig extends FarmEnvConfig<any, any> | undefined>(\n config: TConfig,\n source: Record<string, string | undefined> = getProcessEnv(),\n): InferEnv<NonNullable<TConfig>> {\n const resolved = {\n server: resolveEnvScope(config?.server, source, \"server\"),\n public: resolveEnvScope(config?.public, source, \"public\"),\n } as InferEnv<NonNullable<TConfig>>;\n\n return resolved;\n}\n\nexport function setEnv(env: ResolvedFarmEnv): void {\n currentEnv = normalizeResolvedEnv(env);\n if (typeof window === \"undefined\") {\n farmEnvGlobal[FARM_ENV_SYMBOL] = currentEnv;\n }\n}\n\nexport function getResolvedEnv<TEnv extends ResolvedFarmEnv = FarmTypedEnv>(): TEnv {\n return getCurrentEnv() as TEnv;\n}\n\nexport function getEnv<TServer extends Record<string, any> = FarmServerEnv>(): TServer;\nexport function getEnv<TKey extends Extract<keyof FarmServerEnv, string>>(\n key: TKey,\n): FarmServerEnv[TKey];\nexport function getEnv(key?: string): unknown {\n assertServerEnvAccess();\n if (key === undefined) {\n return getCurrentEnv().server;\n }\n\n return getCurrentEnv().server[key];\n}\n\nexport function getPublicEnv<TPublic extends Record<string, any> = FarmPublicEnv>(): TPublic;\nexport function getPublicEnv<TKey extends Extract<keyof FarmPublicEnv, string>>(\n key: TKey,\n): FarmPublicEnv[TKey];\nexport function getPublicEnv(key?: string): unknown {\n if (key === undefined) {\n return getCurrentEnv().public;\n }\n\n return getCurrentEnv().public[key];\n}\n\nexport const env = createEnvProxy(\"server\") as FarmServerEnv;\nexport const serverEnv = env;\nexport const publicEnv = createEnvProxy(\"public\") as FarmPublicEnv;\n\nfunction resolveEnvScope(\n shape: EnvShape | undefined,\n source: Record<string, string | undefined>,\n scope: \"server\" | \"public\",\n): Record<string, unknown> {\n if (!shape) {\n return {};\n }\n\n const resolved: Record<string, unknown> = {};\n\n for (const [key, parser] of Object.entries(shape)) {\n try {\n resolved[key] = parseEnvValue(parser, source[key], key, scope);\n } catch (error) {\n const message = error instanceof Error ? error.message : String(error);\n throw new Error(`Invalid ${scope} env \"${key}\": ${message}`);\n }\n }\n\n return resolved;\n}\n\nfunction parseEnvValue(\n parser: EnvParser<any>,\n value: string | undefined,\n key: string,\n scope: \"server\" | \"public\",\n): unknown {\n if (typeof parser === \"function\") {\n return parser(value, { key, scope });\n }\n\n if (parser && typeof parser.parse === \"function\") {\n return parser.parse(value);\n }\n\n throw new Error(\"expected a parser function or schema with parse()\");\n}\n\nfunction createEnvProxy(scope: \"server\" | \"public\"): Record<string, unknown> {\n return new Proxy(\n {},\n {\n get(_target, property) {\n if (typeof property === \"symbol\") {\n return undefined;\n }\n\n const env = getEnvScope(scope);\n return env[property];\n },\n ownKeys() {\n return Reflect.ownKeys(getEnvScope(scope));\n },\n getOwnPropertyDescriptor(_target, property) {\n const env = getEnvScope(scope);\n if (!(property in env)) {\n return undefined;\n }\n\n return {\n enumerable: true,\n configurable: true,\n value: env[property as keyof typeof env],\n };\n },\n has(_target, property) {\n return property in getEnvScope(scope);\n },\n },\n );\n}\n\nfunction getEnvScope(scope: \"server\" | \"public\"): Record<string, unknown> {\n if (scope === \"server\") {\n assertServerEnvAccess();\n }\n\n return getCurrentEnv()[scope] || {};\n}\n\nfunction assertServerEnvAccess(): void {\n if (typeof window !== \"undefined\") {\n throw new Error(\"Farm server env is not available in the browser. Use publicEnv.\");\n }\n}\n\nfunction getInitialEnv(): ResolvedFarmEnv {\n const injectedEnv = getInjectedEnv();\n if (injectedEnv) {\n return injectedEnv;\n }\n\n if (typeof window === \"undefined\" && farmEnvGlobal[FARM_ENV_SYMBOL]) {\n return normalizeResolvedEnv(farmEnvGlobal[FARM_ENV_SYMBOL]);\n }\n\n return {\n server: {},\n public: getInjectedPublicEnv(),\n };\n}\n\nfunction getCurrentEnv(): ResolvedFarmEnv {\n if (typeof window === \"undefined\" && farmEnvGlobal[FARM_ENV_SYMBOL]) {\n return farmEnvGlobal[FARM_ENV_SYMBOL];\n }\n\n return currentEnv;\n}\n\nfunction getInjectedEnv(): ResolvedFarmEnv | null {\n try {\n if (typeof __FARM_ENV__ !== \"undefined\" && __FARM_ENV__) {\n return normalizeResolvedEnv(__FARM_ENV__);\n }\n } catch {\n // The compile-time global is only defined in Farm server bundles.\n }\n\n return null;\n}\n\nfunction getInjectedPublicEnv(): Record<string, unknown> {\n try {\n if (typeof __FARM_PUBLIC_ENV__ !== \"undefined\" && __FARM_PUBLIC_ENV__) {\n return __FARM_PUBLIC_ENV__;\n }\n } catch {\n // The compile-time global is only defined in Farm browser bundles.\n }\n\n return {};\n}\n\nfunction normalizeResolvedEnv(env: ResolvedFarmEnv): ResolvedFarmEnv {\n return {\n server: isRecord(env.server) ? env.server : {},\n public: isRecord(env.public) ? env.public : {},\n };\n}\n\nfunction isRecord(value: unknown): value is Record<string, unknown> {\n return !!value && typeof value === \"object\" && !Array.isArray(value);\n}\n\nfunction getProcessEnv(): Record<string, string | undefined> {\n if (typeof process !== \"undefined\" && process.env) {\n return process.env;\n }\n\n return {};\n}\n"],"mappings":"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","names":["env"]}
1
+ {"version":3,"sources":["../src/env.ts"],"sourcesContent":["export interface EnvSchema<TOutput = unknown> {\n parse(value: unknown): TOutput;\n}\n\nexport type EnvParser<TOutput = unknown> =\n | EnvSchema<TOutput>\n | ((value: string | undefined, context: { key: string; scope: \"server\" | \"public\" }) => TOutput);\n\nexport type EnvShape = Record<string, EnvParser<any>>;\n\nexport type InferEnvParser<TParser> =\n TParser extends EnvSchema<infer TOutput>\n ? TOutput\n : TParser extends (value: string | undefined, context: any) => infer TOutput\n ? TOutput\n : never;\n\nexport type InferEnvShape<TShape> = TShape extends EnvShape\n ? { [K in keyof TShape]: InferEnvParser<TShape[K]> }\n : {};\n\nexport interface FarmEnvConfig<\n TServer extends EnvShape = EnvShape,\n TPublic extends EnvShape = EnvShape,\n> {\n server?: TServer;\n public?: TPublic;\n}\n\nexport interface ResolvedFarmEnv<\n TServer extends Record<string, any> = Record<string, unknown>,\n TPublic extends Record<string, any> = Record<string, unknown>,\n> {\n server: TServer;\n public: TPublic;\n}\n\nexport type InferEnv<TConfig> =\n TConfig extends FarmEnvConfig<infer TServer, infer TPublic>\n ? ResolvedFarmEnv<InferEnvShape<TServer>, InferEnvShape<TPublic>>\n : ResolvedFarmEnv;\n\n/**\n * Augmented by generated src/farm.d.ts for project-specific autocomplete.\n */\nexport interface FarmEnvTypes {}\n\nexport type FarmServerEnv = FarmEnvTypes extends { server: infer TServer }\n ? TServer extends Record<string, any>\n ? TServer\n : Record<string, unknown>\n : Record<string, unknown>;\n\nexport type FarmPublicEnv = FarmEnvTypes extends { public: infer TPublic }\n ? TPublic extends Record<string, any>\n ? TPublic\n : Record<string, unknown>\n : Record<string, unknown>;\n\nexport type FarmTypedEnv = ResolvedFarmEnv<FarmServerEnv, FarmPublicEnv>;\n\ndeclare const __FARM_PUBLIC_ENV__: Record<string, unknown> | undefined;\ndeclare const __FARM_ENV__: ResolvedFarmEnv | undefined;\n\nconst FARM_ENV_SYMBOL = Symbol.for(\"farm.env\");\nconst farmEnvGlobal = globalThis as typeof globalThis & {\n [FARM_ENV_SYMBOL]?: ResolvedFarmEnv;\n};\nlet currentEnv: ResolvedFarmEnv = getInitialEnv();\n\nexport function resolveEnv<TConfig extends FarmEnvConfig<any, any> | undefined>(\n config: TConfig,\n source: Record<string, string | undefined> = getProcessEnv(),\n): InferEnv<NonNullable<TConfig>> {\n const resolved = {\n server: resolveEnvScope(config?.server, source, \"server\"),\n public: resolveEnvScope(config?.public, source, \"public\"),\n } as InferEnv<NonNullable<TConfig>>;\n\n return resolved;\n}\n\nexport function setEnv(env: ResolvedFarmEnv): void {\n currentEnv = normalizeResolvedEnv(env);\n if (typeof window === \"undefined\") {\n farmEnvGlobal[FARM_ENV_SYMBOL] = currentEnv;\n }\n}\n\nexport function getResolvedEnv<TEnv extends ResolvedFarmEnv = FarmTypedEnv>(): TEnv {\n return getCurrentEnv() as TEnv;\n}\n\nexport function getEnv<TServer extends Record<string, any> = FarmServerEnv>(): TServer;\nexport function getEnv<TKey extends Extract<keyof FarmServerEnv, string>>(\n key: TKey,\n): FarmServerEnv[TKey];\nexport function getEnv(key?: string): unknown {\n assertServerEnvAccess();\n if (key === undefined) {\n return getCurrentEnv().server;\n }\n\n return getCurrentEnv().server[key];\n}\n\nexport function getPublicEnv<TPublic extends Record<string, any> = FarmPublicEnv>(): TPublic;\nexport function getPublicEnv<TKey extends Extract<keyof FarmPublicEnv, string>>(\n key: TKey,\n): FarmPublicEnv[TKey];\nexport function getPublicEnv(key?: string): unknown {\n if (key === undefined) {\n return getCurrentEnv().public;\n }\n\n return getCurrentEnv().public[key];\n}\n\nexport const env = createEnvProxy(\"server\") as FarmServerEnv;\nexport const serverEnv = env;\nexport const publicEnv = createEnvProxy(\"public\") as FarmPublicEnv;\n\nfunction resolveEnvScope(\n shape: EnvShape | undefined,\n source: Record<string, string | undefined>,\n scope: \"server\" | \"public\",\n): Record<string, unknown> {\n if (!shape) {\n return {};\n }\n\n const resolved: Record<string, unknown> = {};\n\n for (const [key, parser] of Object.entries(shape)) {\n try {\n resolved[key] = parseEnvValue(parser, source[key], key, scope);\n } catch (error) {\n const message = error instanceof Error ? error.message : String(error);\n throw new Error(`Invalid ${scope} env \"${key}\": ${message}`);\n }\n }\n\n return resolved;\n}\n\nfunction parseEnvValue(\n parser: EnvParser<any>,\n value: string | undefined,\n key: string,\n scope: \"server\" | \"public\",\n): unknown {\n if (typeof parser === \"function\") {\n return parser(value, { key, scope });\n }\n\n if (parser && typeof parser.parse === \"function\") {\n return parser.parse(value);\n }\n\n throw new Error(\"expected a parser function or schema with parse()\");\n}\n\nfunction createEnvProxy(scope: \"server\" | \"public\"): Record<string, unknown> {\n return new Proxy(\n {},\n {\n get(_target, property) {\n if (typeof property === \"symbol\") {\n return undefined;\n }\n\n const env = getEnvScope(scope);\n return env[property];\n },\n ownKeys() {\n return Reflect.ownKeys(getEnvScope(scope));\n },\n getOwnPropertyDescriptor(_target, property) {\n const env = getEnvScope(scope);\n if (!(property in env)) {\n return undefined;\n }\n\n return {\n enumerable: true,\n configurable: true,\n value: env[property as keyof typeof env],\n };\n },\n has(_target, property) {\n return property in getEnvScope(scope);\n },\n },\n );\n}\n\nfunction getEnvScope(scope: \"server\" | \"public\"): Record<string, unknown> {\n if (scope === \"server\") {\n assertServerEnvAccess();\n }\n\n return getCurrentEnv()[scope] || {};\n}\n\nfunction assertServerEnvAccess(): void {\n if (typeof window !== \"undefined\") {\n throw new Error(\"Farm server env is not available in the browser. Use publicEnv.\");\n }\n}\n\nfunction getInitialEnv(): ResolvedFarmEnv {\n const injectedEnv = getInjectedEnv();\n if (injectedEnv) {\n return injectedEnv;\n }\n\n if (typeof window === \"undefined\" && farmEnvGlobal[FARM_ENV_SYMBOL]) {\n return normalizeResolvedEnv(farmEnvGlobal[FARM_ENV_SYMBOL]);\n }\n\n return {\n server: {},\n public: getInjectedPublicEnv(),\n };\n}\n\nfunction getCurrentEnv(): ResolvedFarmEnv {\n if (typeof window === \"undefined\" && farmEnvGlobal[FARM_ENV_SYMBOL]) {\n return farmEnvGlobal[FARM_ENV_SYMBOL];\n }\n\n return currentEnv;\n}\n\nfunction getInjectedEnv(): ResolvedFarmEnv | null {\n try {\n if (typeof __FARM_ENV__ !== \"undefined\" && __FARM_ENV__) {\n return normalizeResolvedEnv(__FARM_ENV__);\n }\n } catch {\n // The compile-time global is only defined in Farm server bundles.\n }\n\n return null;\n}\n\nfunction getInjectedPublicEnv(): Record<string, unknown> {\n try {\n if (typeof __FARM_PUBLIC_ENV__ !== \"undefined\" && __FARM_PUBLIC_ENV__) {\n return __FARM_PUBLIC_ENV__;\n }\n } catch {\n // The compile-time global is only defined in Farm browser bundles.\n }\n\n return {};\n}\n\nfunction normalizeResolvedEnv(env: ResolvedFarmEnv): ResolvedFarmEnv {\n return {\n server: isRecord(env.server) ? env.server : {},\n public: isRecord(env.public) ? env.public : {},\n };\n}\n\nfunction isRecord(value: unknown): value is Record<string, unknown> {\n return !!value && typeof value === \"object\" && !Array.isArray(value);\n}\n\nfunction getProcessEnv(): Record<string, string | undefined> {\n if (typeof process !== \"undefined\" && process.env) {\n return process.env;\n }\n\n return {};\n}\n"],"mappings":"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","names":["env"]}
package/dist/env.d.mts CHANGED
@@ -20,7 +20,7 @@ interface ResolvedFarmEnv<TServer extends Record<string, any> = Record<string, u
20
20
  }
21
21
  type InferEnv<TConfig> = TConfig extends FarmEnvConfig<infer TServer, infer TPublic> ? ResolvedFarmEnv<InferEnvShape<TServer>, InferEnvShape<TPublic>> : ResolvedFarmEnv;
22
22
  /**
23
- * Augmented by generated src/farm-env.d.ts for project-specific autocomplete.
23
+ * Augmented by generated src/farm.d.ts for project-specific autocomplete.
24
24
  */
25
25
  interface FarmEnvTypes {
26
26
  }
package/dist/env.d.ts CHANGED
@@ -20,7 +20,7 @@ interface ResolvedFarmEnv<TServer extends Record<string, any> = Record<string, u
20
20
  }
21
21
  type InferEnv<TConfig> = TConfig extends FarmEnvConfig<infer TServer, infer TPublic> ? ResolvedFarmEnv<InferEnvShape<TServer>, InferEnvShape<TPublic>> : ResolvedFarmEnv;
22
22
  /**
23
- * Augmented by generated src/farm-env.d.ts for project-specific autocomplete.
23
+ * Augmented by generated src/farm.d.ts for project-specific autocomplete.
24
24
  */
25
25
  interface FarmEnvTypes {
26
26
  }
package/dist/env.mjs CHANGED
@@ -7,7 +7,7 @@ import {
7
7
  resolveEnv,
8
8
  serverEnv,
9
9
  setEnv
10
- } from "./chunk-RSKVYESE.mjs";
10
+ } from "./chunk-RQ633A5I.mjs";
11
11
  import "./chunk-CGILA3WO.mjs";
12
12
  export {
13
13
  env,
@@ -1,5 +1,5 @@
1
- import { d as FarmTranslator, c as FarmI18nLocale, a as FarmI18nClientSnapshot } from '../types-BH1lhg5G.mjs';
2
- export { e as FarmI18nMessageArgs, f as FarmI18nMessageKey } from '../types-BH1lhg5G.mjs';
1
+ import { d as FarmTranslator, c as FarmI18nLocale, a as FarmI18nClientSnapshot } from '../types-BMxWr97v.mjs';
2
+ export { e as FarmI18nMessageArgs, f as FarmI18nMessageKey } from '../types-BMxWr97v.mjs';
3
3
 
4
4
  declare const t: FarmTranslator;
5
5
 
@@ -1,5 +1,5 @@
1
- import { d as FarmTranslator, c as FarmI18nLocale, a as FarmI18nClientSnapshot } from '../types-BH1lhg5G.js';
2
- export { e as FarmI18nMessageArgs, f as FarmI18nMessageKey } from '../types-BH1lhg5G.js';
1
+ import { d as FarmTranslator, c as FarmI18nLocale, a as FarmI18nClientSnapshot } from '../types-BMxWr97v.js';
2
+ export { e as FarmI18nMessageArgs, f as FarmI18nMessageKey } from '../types-BMxWr97v.js';
3
3
 
4
4
  declare const t: FarmTranslator;
5
5
 
@@ -1,6 +1,6 @@
1
- import { j as FarmI18nRouting } from '../types-BH1lhg5G.mjs';
2
- export { l as FarmI18nCatalog, F as FarmI18nCatalogs, a as FarmI18nClientSnapshot, g as FarmI18nCookieConfig, h as FarmI18nDetectionSignal, i as FarmI18nDirection, c as FarmI18nLocale, m as FarmI18nLocaleRegistry, b as FarmI18nLocaleSource, e as FarmI18nMessageArgs, f as FarmI18nMessageKey, n as FarmI18nMessageRegistry, o as FarmI18nMessageValues, k as FarmI18nUserConfig, d as FarmTranslator, R as ResolvedFarmI18nConfig } from '../types-BH1lhg5G.mjs';
3
- export { c as createFarmLocaleCookie, g as getFarmLocaleVaryHeaders, m as matchFarmLocale } from '../resolver-DlOPpjkB.mjs';
1
+ import { j as FarmI18nRouting } from '../types-BMxWr97v.mjs';
2
+ export { l as FarmI18nCatalog, F as FarmI18nCatalogs, a as FarmI18nClientSnapshot, g as FarmI18nCookieConfig, h as FarmI18nDetectionSignal, i as FarmI18nDirection, c as FarmI18nLocale, m as FarmI18nLocaleRegistry, b as FarmI18nLocaleSource, e as FarmI18nMessageArgs, f as FarmI18nMessageKey, n as FarmI18nMessageRegistry, o as FarmI18nMessageValues, k as FarmI18nUserConfig, d as FarmTranslator, R as ResolvedFarmI18nConfig } from '../types-BMxWr97v.mjs';
3
+ export { c as createFarmLocaleCookie, g as getFarmLocaleVaryHeaders, m as matchFarmLocale } from '../resolver-DJqjLMg_.mjs';
4
4
 
5
5
  interface FarmLocalePathConfig {
6
6
  locales: readonly string[];
@@ -1,6 +1,6 @@
1
- import { j as FarmI18nRouting } from '../types-BH1lhg5G.js';
2
- export { l as FarmI18nCatalog, F as FarmI18nCatalogs, a as FarmI18nClientSnapshot, g as FarmI18nCookieConfig, h as FarmI18nDetectionSignal, i as FarmI18nDirection, c as FarmI18nLocale, m as FarmI18nLocaleRegistry, b as FarmI18nLocaleSource, e as FarmI18nMessageArgs, f as FarmI18nMessageKey, n as FarmI18nMessageRegistry, o as FarmI18nMessageValues, k as FarmI18nUserConfig, d as FarmTranslator, R as ResolvedFarmI18nConfig } from '../types-BH1lhg5G.js';
3
- export { c as createFarmLocaleCookie, g as getFarmLocaleVaryHeaders, m as matchFarmLocale } from '../resolver-C6iecsDV.js';
1
+ import { j as FarmI18nRouting } from '../types-BMxWr97v.js';
2
+ export { l as FarmI18nCatalog, F as FarmI18nCatalogs, a as FarmI18nClientSnapshot, g as FarmI18nCookieConfig, h as FarmI18nDetectionSignal, i as FarmI18nDirection, c as FarmI18nLocale, m as FarmI18nLocaleRegistry, b as FarmI18nLocaleSource, e as FarmI18nMessageArgs, f as FarmI18nMessageKey, n as FarmI18nMessageRegistry, o as FarmI18nMessageValues, k as FarmI18nUserConfig, d as FarmTranslator, R as ResolvedFarmI18nConfig } from '../types-BMxWr97v.js';
3
+ export { c as createFarmLocaleCookie, g as getFarmLocaleVaryHeaders, m as matchFarmLocale } from '../resolver-IH4RmPEl.js';
4
4
 
5
5
  interface FarmLocalePathConfig {
6
6
  locales: readonly string[];
@@ -1,8 +1,8 @@
1
- import { F as FarmLocaleResolution } from '../resolver-DlOPpjkB.mjs';
2
- import { F as FarmI18nRuntime } from '../runtime-DeAAZ6gO.mjs';
3
- export { c as createFarmI18nRuntime } from '../runtime-DeAAZ6gO.mjs';
4
- import { c as FarmI18nLocale, b as FarmI18nLocaleSource, d as FarmTranslator, a as FarmI18nClientSnapshot } from '../types-BH1lhg5G.mjs';
5
- export { e as FarmI18nMessageArgs, f as FarmI18nMessageKey } from '../types-BH1lhg5G.mjs';
1
+ import { F as FarmLocaleResolution } from '../resolver-DJqjLMg_.mjs';
2
+ import { F as FarmI18nRuntime } from '../runtime-Cxpq6xZN.mjs';
3
+ export { c as createFarmI18nRuntime } from '../runtime-Cxpq6xZN.mjs';
4
+ import { c as FarmI18nLocale, b as FarmI18nLocaleSource, d as FarmTranslator, a as FarmI18nClientSnapshot } from '../types-BMxWr97v.mjs';
5
+ export { e as FarmI18nMessageArgs, f as FarmI18nMessageKey } from '../types-BMxWr97v.mjs';
6
6
 
7
7
  interface FarmListFormatOptions {
8
8
  localeMatcher?: "lookup" | "best fit";
@@ -1,8 +1,8 @@
1
- import { F as FarmLocaleResolution } from '../resolver-C6iecsDV.js';
2
- import { F as FarmI18nRuntime } from '../runtime-B6GvwDS1.js';
3
- export { c as createFarmI18nRuntime } from '../runtime-B6GvwDS1.js';
4
- import { c as FarmI18nLocale, b as FarmI18nLocaleSource, d as FarmTranslator, a as FarmI18nClientSnapshot } from '../types-BH1lhg5G.js';
5
- export { e as FarmI18nMessageArgs, f as FarmI18nMessageKey } from '../types-BH1lhg5G.js';
1
+ import { F as FarmLocaleResolution } from '../resolver-IH4RmPEl.js';
2
+ import { F as FarmI18nRuntime } from '../runtime-bv63eUiO.js';
3
+ export { c as createFarmI18nRuntime } from '../runtime-bv63eUiO.js';
4
+ import { c as FarmI18nLocale, b as FarmI18nLocaleSource, d as FarmTranslator, a as FarmI18nClientSnapshot } from '../types-BMxWr97v.js';
5
+ export { e as FarmI18nMessageArgs, f as FarmI18nMessageKey } from '../types-BMxWr97v.js';
6
6
 
7
7
  interface FarmListFormatOptions {
8
8
  localeMatcher?: "lookup" | "best fit";