envapt 7.1.0 → 8.0.0-next.0

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 (299) hide show
  1. package/CHANGELOG.md +29 -105
  2. package/README.md +1 -1
  3. package/dist/node/converters/BuiltInConverters.cjs +1 -1
  4. package/dist/node/converters/BuiltInConverters.cjs.map +1 -1
  5. package/dist/node/converters/BuiltInConverters.mjs +1 -1
  6. package/dist/node/converters/BuiltInConverters.mjs.map +1 -1
  7. package/dist/node/converters/Converters.cjs.map +1 -1
  8. package/dist/node/converters/Converters.mjs.map +1 -1
  9. package/dist/node/converters/ValueConverter.cjs +1 -1
  10. package/dist/node/converters/ValueConverter.cjs.map +1 -1
  11. package/dist/node/converters/ValueConverter.mjs +1 -1
  12. package/dist/node/converters/ValueConverter.mjs.map +1 -1
  13. package/dist/node/core/AdvancedMethods.cjs +1 -1
  14. package/dist/node/core/AdvancedMethods.cjs.map +1 -1
  15. package/dist/node/core/AdvancedMethods.mjs +1 -1
  16. package/dist/node/core/AdvancedMethods.mjs.map +1 -1
  17. package/dist/node/core/EnvapterBase.cjs +1 -1
  18. package/dist/node/core/EnvapterBase.cjs.map +1 -1
  19. package/dist/node/core/EnvapterBase.mjs +1 -1
  20. package/dist/node/core/EnvapterBase.mjs.map +1 -1
  21. package/dist/node/core/Environment.cjs +2 -0
  22. package/dist/node/core/Environment.cjs.map +1 -0
  23. package/dist/node/core/Environment.mjs +2 -0
  24. package/dist/node/core/Environment.mjs.map +1 -0
  25. package/dist/node/core/EnvironmentMethods.cjs +1 -1
  26. package/dist/node/core/EnvironmentMethods.cjs.map +1 -1
  27. package/dist/node/core/EnvironmentMethods.mjs +1 -1
  28. package/dist/node/core/EnvironmentMethods.mjs.map +1 -1
  29. package/dist/node/core/PrimitiveMethods.cjs +1 -1
  30. package/dist/node/core/PrimitiveMethods.cjs.map +1 -1
  31. package/dist/node/core/PrimitiveMethods.mjs +1 -1
  32. package/dist/node/core/PrimitiveMethods.mjs.map +1 -1
  33. package/dist/node/core/engine.cjs +2 -0
  34. package/dist/node/core/engine.cjs.map +1 -0
  35. package/dist/node/core/engine.mjs +2 -0
  36. package/dist/node/core/engine.mjs.map +1 -0
  37. package/dist/node/core/paths.cjs +2 -0
  38. package/dist/node/core/paths.cjs.map +1 -0
  39. package/dist/node/core/paths.mjs +2 -0
  40. package/dist/node/core/paths.mjs.map +1 -0
  41. package/dist/node/core/state.cjs +2 -0
  42. package/dist/node/core/state.cjs.map +1 -0
  43. package/dist/node/core/state.mjs +2 -0
  44. package/dist/node/core/state.mjs.map +1 -0
  45. package/dist/node/decorators/resolveDecoratorValue.cjs +1 -1
  46. package/dist/node/decorators/resolveDecoratorValue.cjs.map +1 -1
  47. package/dist/node/decorators/resolveDecoratorValue.mjs +1 -1
  48. package/dist/node/decorators/resolveDecoratorValue.mjs.map +1 -1
  49. package/dist/node/engine/Envapter.cjs +1 -1
  50. package/dist/node/engine/Envapter.cjs.map +1 -1
  51. package/dist/node/engine/Envapter.mjs +1 -1
  52. package/dist/node/engine/Envapter.mjs.map +1 -1
  53. package/dist/node/engine/NodeEnvapter.cjs +1 -1
  54. package/dist/node/engine/NodeEnvapter.cjs.map +1 -1
  55. package/dist/node/engine/NodeEnvapter.mjs +1 -1
  56. package/dist/node/engine/NodeEnvapter.mjs.map +1 -1
  57. package/dist/node/engine/TemplateResolver.cjs +1 -1
  58. package/dist/node/engine/TemplateResolver.cjs.map +1 -1
  59. package/dist/node/engine/TemplateResolver.mjs +1 -1
  60. package/dist/node/engine/TemplateResolver.mjs.map +1 -1
  61. package/dist/node/engine/Validators.cjs +1 -1
  62. package/dist/node/engine/Validators.cjs.map +1 -1
  63. package/dist/node/engine/Validators.mjs +1 -1
  64. package/dist/node/engine/Validators.mjs.map +1 -1
  65. package/dist/node/index.cjs +1 -1
  66. package/dist/node/index.mjs +1 -1
  67. package/dist/node/infra/Error.cjs +1 -1
  68. package/dist/node/infra/Error.cjs.map +1 -1
  69. package/dist/node/infra/Error.mjs +1 -1
  70. package/dist/node/infra/Error.mjs.map +1 -1
  71. package/dist/node/infra/recase.cjs +2 -0
  72. package/dist/node/infra/recase.cjs.map +1 -0
  73. package/dist/node/infra/recase.mjs +2 -0
  74. package/dist/node/infra/recase.mjs.map +1 -0
  75. package/dist/node/sources/{NodeEnvSource.cjs → FileSource.cjs} +2 -2
  76. package/dist/node/sources/FileSource.cjs.map +1 -0
  77. package/dist/node/sources/{NodeEnvSource.mjs → FileSource.mjs} +2 -2
  78. package/dist/node/sources/FileSource.mjs.map +1 -0
  79. package/dist/node/sources/PortableSource.cjs.map +1 -1
  80. package/dist/node/sources/PortableSource.mjs.map +1 -1
  81. package/dist/node/sources/{UnboundEnvSource.cjs → UnboundSource.cjs} +2 -2
  82. package/dist/node/sources/UnboundSource.cjs.map +1 -0
  83. package/dist/{browser/sources/UnboundEnvSource.mjs → node/sources/UnboundSource.mjs} +2 -2
  84. package/dist/node/sources/UnboundSource.mjs.map +1 -0
  85. package/dist/node/sources/coerce.cjs.map +1 -1
  86. package/dist/node/sources/coerce.mjs.map +1 -1
  87. package/dist/node/sources/merge.cjs +2 -0
  88. package/dist/node/sources/merge.cjs.map +1 -0
  89. package/dist/node/sources/merge.mjs +2 -0
  90. package/dist/node/sources/merge.mjs.map +1 -0
  91. package/dist/portable/converters/BuiltInConverters.mjs +2 -0
  92. package/dist/portable/converters/BuiltInConverters.mjs.map +1 -0
  93. package/dist/portable/converters/Converters.mjs.map +1 -0
  94. package/dist/portable/converters/ValueConverter.mjs +2 -0
  95. package/dist/portable/converters/ValueConverter.mjs.map +1 -0
  96. package/dist/portable/core/AdvancedMethods.mjs +2 -0
  97. package/dist/portable/core/AdvancedMethods.mjs.map +1 -0
  98. package/dist/portable/core/EnvapterBase.mjs +2 -0
  99. package/dist/portable/core/EnvapterBase.mjs.map +1 -0
  100. package/dist/portable/core/Environment.mjs +2 -0
  101. package/dist/portable/core/Environment.mjs.map +1 -0
  102. package/dist/portable/core/EnvironmentMethods.mjs +2 -0
  103. package/dist/portable/core/EnvironmentMethods.mjs.map +1 -0
  104. package/dist/portable/core/PrimitiveMethods.mjs +2 -0
  105. package/dist/portable/core/PrimitiveMethods.mjs.map +1 -0
  106. package/dist/portable/core/engine.mjs +2 -0
  107. package/dist/portable/core/engine.mjs.map +1 -0
  108. package/dist/portable/core/paths.mjs +2 -0
  109. package/dist/portable/core/paths.mjs.map +1 -0
  110. package/dist/portable/core/state.mjs +2 -0
  111. package/dist/portable/core/state.mjs.map +1 -0
  112. package/dist/portable/decorators/resolveDecoratorValue.mjs +2 -0
  113. package/dist/portable/decorators/resolveDecoratorValue.mjs.map +1 -0
  114. package/dist/portable/engine/Envapter.mjs +2 -0
  115. package/dist/portable/engine/Envapter.mjs.map +1 -0
  116. package/dist/portable/engine/PortableEnvapter.mjs +2 -0
  117. package/dist/portable/engine/PortableEnvapter.mjs.map +1 -0
  118. package/dist/portable/engine/TemplateResolver.mjs +2 -0
  119. package/dist/portable/engine/TemplateResolver.mjs.map +1 -0
  120. package/dist/portable/engine/Validators.mjs +2 -0
  121. package/dist/portable/engine/Validators.mjs.map +1 -0
  122. package/dist/portable/engine/fileApiStub.mjs +2 -0
  123. package/dist/portable/engine/fileApiStub.mjs.map +1 -0
  124. package/dist/portable/index.mjs +1 -0
  125. package/dist/{browser → portable}/infra/Error.mjs +1 -1
  126. package/dist/{browser → portable}/infra/Error.mjs.map +1 -1
  127. package/dist/portable/infra/recase.mjs +2 -0
  128. package/dist/portable/infra/recase.mjs.map +1 -0
  129. package/dist/portable/sources/PortableSource.mjs.map +1 -0
  130. package/dist/{node/sources/UnboundEnvSource.mjs → portable/sources/UnboundSource.mjs} +2 -2
  131. package/dist/portable/sources/UnboundSource.mjs.map +1 -0
  132. package/dist/portable/sources/coerce.mjs.map +1 -0
  133. package/dist/portable/sources/merge.mjs +2 -0
  134. package/dist/portable/sources/merge.mjs.map +1 -0
  135. package/dist/types/converters/Converters.d.mts +1 -15
  136. package/dist/types/core/AdvancedMethods.d.mts +31 -19
  137. package/dist/types/core/EnvapterBase.d.mts +11 -24
  138. package/dist/types/core/Environment.d.mts +25 -0
  139. package/dist/types/core/EnvironmentMethods.d.mts +2 -67
  140. package/dist/types/core/PrimitiveMethods.d.mts +2 -10
  141. package/dist/types/engine/Envapter.d.mts +2 -3
  142. package/dist/types/engine/NodeEnvapter.d.mts +4 -7
  143. package/dist/types/engine/PortableEnvapter.d.mts +17 -5
  144. package/dist/types/index.d.mts +10 -14
  145. package/dist/types/index.portable.d.mts +9 -13
  146. package/dist/types/infra/Error.d.mts +3 -1
  147. package/dist/types/infra/StandardSchema.d.mts +1 -12
  148. package/dist/types/sources/{NodeEnvSource.d.mts → FileSource.d.mts} +5 -5
  149. package/dist/types/sources/PortableSource.d.mts +2 -2
  150. package/dist/types/sources/merge.d.mts +13 -0
  151. package/dist/types/types/Casing.d.mts +8 -0
  152. package/dist/types/types/Conversion.d.mts +9 -66
  153. package/dist/types/types/Decorator.d.mts +0 -14
  154. package/dist/types/types/Env.d.mts +1 -10
  155. package/dist/types/types/Options.d.mts +9 -2
  156. package/dist/types/types/Schema.d.mts +1 -13
  157. package/dist/types/types/Source.d.mts +8 -33
  158. package/package.json +62 -19
  159. package/aliases/browser.d.mts +0 -7
  160. package/aliases/browser.mjs +0 -4
  161. package/aliases/workerd.d.mts +0 -7
  162. package/aliases/workerd.mjs +0 -4
  163. package/dist/browser/converters/BuiltInConverters.mjs +0 -2
  164. package/dist/browser/converters/BuiltInConverters.mjs.map +0 -1
  165. package/dist/browser/converters/Converters.mjs.map +0 -1
  166. package/dist/browser/converters/ValueConverter.mjs +0 -2
  167. package/dist/browser/converters/ValueConverter.mjs.map +0 -1
  168. package/dist/browser/core/AdvancedMethods.mjs +0 -2
  169. package/dist/browser/core/AdvancedMethods.mjs.map +0 -1
  170. package/dist/browser/core/EnvapterBase.mjs +0 -2
  171. package/dist/browser/core/EnvapterBase.mjs.map +0 -1
  172. package/dist/browser/core/EnvironmentMethods.mjs +0 -2
  173. package/dist/browser/core/EnvironmentMethods.mjs.map +0 -1
  174. package/dist/browser/core/PrimitiveMethods.mjs +0 -2
  175. package/dist/browser/core/PrimitiveMethods.mjs.map +0 -1
  176. package/dist/browser/decorators/resolveDecoratorValue.mjs +0 -2
  177. package/dist/browser/decorators/resolveDecoratorValue.mjs.map +0 -1
  178. package/dist/browser/engine/Envapter.mjs +0 -2
  179. package/dist/browser/engine/Envapter.mjs.map +0 -1
  180. package/dist/browser/engine/PortableEnvapter.mjs +0 -2
  181. package/dist/browser/engine/PortableEnvapter.mjs.map +0 -1
  182. package/dist/browser/engine/TemplateResolver.mjs +0 -2
  183. package/dist/browser/engine/TemplateResolver.mjs.map +0 -1
  184. package/dist/browser/engine/Validators.mjs +0 -2
  185. package/dist/browser/engine/Validators.mjs.map +0 -1
  186. package/dist/browser/engine/installFileApiStubs.mjs +0 -2
  187. package/dist/browser/engine/installFileApiStubs.mjs.map +0 -1
  188. package/dist/browser/index.mjs +0 -1
  189. package/dist/browser/sources/ManualEnvSource.mjs +0 -2
  190. package/dist/browser/sources/ManualEnvSource.mjs.map +0 -1
  191. package/dist/browser/sources/PortableSource.mjs.map +0 -1
  192. package/dist/browser/sources/UnboundEnvSource.mjs.map +0 -1
  193. package/dist/browser/sources/WorkerEnvSource.mjs +0 -2
  194. package/dist/browser/sources/WorkerEnvSource.mjs.map +0 -1
  195. package/dist/browser/sources/coerce.mjs.map +0 -1
  196. package/dist/node/sources/ManualEnvSource.cjs +0 -2
  197. package/dist/node/sources/ManualEnvSource.cjs.map +0 -1
  198. package/dist/node/sources/ManualEnvSource.mjs +0 -2
  199. package/dist/node/sources/ManualEnvSource.mjs.map +0 -1
  200. package/dist/node/sources/NodeEnvSource.cjs.map +0 -1
  201. package/dist/node/sources/NodeEnvSource.mjs.map +0 -1
  202. package/dist/node/sources/UnboundEnvSource.cjs.map +0 -1
  203. package/dist/node/sources/UnboundEnvSource.mjs.map +0 -1
  204. package/dist/node/sources/WorkerEnvSource.cjs +0 -2
  205. package/dist/node/sources/WorkerEnvSource.cjs.map +0 -1
  206. package/dist/node/sources/WorkerEnvSource.mjs +0 -2
  207. package/dist/node/sources/WorkerEnvSource.mjs.map +0 -1
  208. package/dist/types/converters/ValueConverter.d.mts +0 -25
  209. package/dist/types/engine/TemplateResolver.d.mts +0 -17
  210. package/dist/types/sources/ManualEnvSource.d.mts +0 -12
  211. package/dist/types/sources/WorkerEnvSource.d.mts +0 -12
  212. package/dist/workerd/converters/BuiltInConverters.mjs +0 -2
  213. package/dist/workerd/converters/BuiltInConverters.mjs.map +0 -1
  214. package/dist/workerd/converters/Converters.mjs +0 -2
  215. package/dist/workerd/converters/Converters.mjs.map +0 -1
  216. package/dist/workerd/converters/ListOfBuiltInConverters.mjs +0 -2
  217. package/dist/workerd/converters/ListOfBuiltInConverters.mjs.map +0 -1
  218. package/dist/workerd/converters/ValueConverter.mjs +0 -2
  219. package/dist/workerd/converters/ValueConverter.mjs.map +0 -1
  220. package/dist/workerd/core/AdvancedMethods.mjs +0 -2
  221. package/dist/workerd/core/AdvancedMethods.mjs.map +0 -1
  222. package/dist/workerd/core/EnvapterBase.mjs +0 -2
  223. package/dist/workerd/core/EnvapterBase.mjs.map +0 -1
  224. package/dist/workerd/core/EnvironmentMethods.mjs +0 -2
  225. package/dist/workerd/core/EnvironmentMethods.mjs.map +0 -1
  226. package/dist/workerd/core/PrimitiveMethods.mjs +0 -2
  227. package/dist/workerd/core/PrimitiveMethods.mjs.map +0 -1
  228. package/dist/workerd/decorators/legacy/Envapt.mjs +0 -2
  229. package/dist/workerd/decorators/legacy/Envapt.mjs.map +0 -1
  230. package/dist/workerd/decorators/legacy/SugarDecorators.mjs +0 -2
  231. package/dist/workerd/decorators/legacy/SugarDecorators.mjs.map +0 -1
  232. package/dist/workerd/decorators/legacy/createPropertyDecorator.mjs +0 -2
  233. package/dist/workerd/decorators/legacy/createPropertyDecorator.mjs.map +0 -1
  234. package/dist/workerd/decorators/modern/Envapt.mjs +0 -2
  235. package/dist/workerd/decorators/modern/Envapt.mjs.map +0 -1
  236. package/dist/workerd/decorators/modern/SugarDecorators.mjs +0 -2
  237. package/dist/workerd/decorators/modern/SugarDecorators.mjs.map +0 -1
  238. package/dist/workerd/decorators/modern/createAccessorDecorator.mjs +0 -2
  239. package/dist/workerd/decorators/modern/createAccessorDecorator.mjs.map +0 -1
  240. package/dist/workerd/decorators/parseEnvaptOptions.mjs +0 -2
  241. package/dist/workerd/decorators/parseEnvaptOptions.mjs.map +0 -1
  242. package/dist/workerd/decorators/resolveDecoratorValue.mjs +0 -2
  243. package/dist/workerd/decorators/resolveDecoratorValue.mjs.map +0 -1
  244. package/dist/workerd/engine/Envapter.mjs +0 -2
  245. package/dist/workerd/engine/Envapter.mjs.map +0 -1
  246. package/dist/workerd/engine/PortableEnvapter.mjs +0 -2
  247. package/dist/workerd/engine/PortableEnvapter.mjs.map +0 -1
  248. package/dist/workerd/engine/TemplateResolver.mjs +0 -2
  249. package/dist/workerd/engine/TemplateResolver.mjs.map +0 -1
  250. package/dist/workerd/engine/Validators.mjs +0 -2
  251. package/dist/workerd/engine/Validators.mjs.map +0 -1
  252. package/dist/workerd/engine/installFileApiStubs.mjs +0 -2
  253. package/dist/workerd/engine/installFileApiStubs.mjs.map +0 -1
  254. package/dist/workerd/index.mjs +0 -1
  255. package/dist/workerd/infra/Debug.mjs +0 -2
  256. package/dist/workerd/infra/Debug.mjs.map +0 -1
  257. package/dist/workerd/infra/Dotenv.mjs +0 -3
  258. package/dist/workerd/infra/Dotenv.mjs.map +0 -1
  259. package/dist/workerd/infra/Error.mjs +0 -2
  260. package/dist/workerd/infra/Error.mjs.map +0 -1
  261. package/dist/workerd/infra/runtime.mjs +0 -2
  262. package/dist/workerd/infra/runtime.mjs.map +0 -1
  263. package/dist/workerd/legacy.mjs +0 -1
  264. package/dist/workerd/sources/ManualEnvSource.mjs +0 -2
  265. package/dist/workerd/sources/ManualEnvSource.mjs.map +0 -1
  266. package/dist/workerd/sources/PortableSource.mjs +0 -2
  267. package/dist/workerd/sources/PortableSource.mjs.map +0 -1
  268. package/dist/workerd/sources/UnboundEnvSource.mjs +0 -2
  269. package/dist/workerd/sources/UnboundEnvSource.mjs.map +0 -1
  270. package/dist/workerd/sources/WorkerEnvSource.mjs +0 -2
  271. package/dist/workerd/sources/WorkerEnvSource.mjs.map +0 -1
  272. package/dist/workerd/sources/coerce.mjs +0 -2
  273. package/dist/workerd/sources/coerce.mjs.map +0 -1
  274. /package/dist/{browser → portable}/converters/Converters.mjs +0 -0
  275. /package/dist/{browser → portable}/converters/ListOfBuiltInConverters.mjs +0 -0
  276. /package/dist/{browser → portable}/converters/ListOfBuiltInConverters.mjs.map +0 -0
  277. /package/dist/{browser → portable}/decorators/legacy/Envapt.mjs +0 -0
  278. /package/dist/{browser → portable}/decorators/legacy/Envapt.mjs.map +0 -0
  279. /package/dist/{browser → portable}/decorators/legacy/SugarDecorators.mjs +0 -0
  280. /package/dist/{browser → portable}/decorators/legacy/SugarDecorators.mjs.map +0 -0
  281. /package/dist/{browser → portable}/decorators/legacy/createPropertyDecorator.mjs +0 -0
  282. /package/dist/{browser → portable}/decorators/legacy/createPropertyDecorator.mjs.map +0 -0
  283. /package/dist/{browser → portable}/decorators/modern/Envapt.mjs +0 -0
  284. /package/dist/{browser → portable}/decorators/modern/Envapt.mjs.map +0 -0
  285. /package/dist/{browser → portable}/decorators/modern/SugarDecorators.mjs +0 -0
  286. /package/dist/{browser → portable}/decorators/modern/SugarDecorators.mjs.map +0 -0
  287. /package/dist/{browser → portable}/decorators/modern/createAccessorDecorator.mjs +0 -0
  288. /package/dist/{browser → portable}/decorators/modern/createAccessorDecorator.mjs.map +0 -0
  289. /package/dist/{browser → portable}/decorators/parseEnvaptOptions.mjs +0 -0
  290. /package/dist/{browser → portable}/decorators/parseEnvaptOptions.mjs.map +0 -0
  291. /package/dist/{browser → portable}/infra/Debug.mjs +0 -0
  292. /package/dist/{browser → portable}/infra/Debug.mjs.map +0 -0
  293. /package/dist/{browser → portable}/infra/Dotenv.mjs +0 -0
  294. /package/dist/{browser → portable}/infra/Dotenv.mjs.map +0 -0
  295. /package/dist/{browser → portable}/infra/runtime.mjs +0 -0
  296. /package/dist/{browser → portable}/infra/runtime.mjs.map +0 -0
  297. /package/dist/{browser → portable}/legacy.mjs +0 -0
  298. /package/dist/{browser → portable}/sources/PortableSource.mjs +0 -0
  299. /package/dist/{browser → portable}/sources/coerce.mjs +0 -0
@@ -1,38 +1,12 @@
1
- import { ProfilesConfig } from "../types/Options.mjs";
1
+ import { Environment } from "./Environment.mjs";
2
2
  import { EnvapterBase } from "./EnvapterBase.mjs";
3
3
 
4
4
  //#region src/core/EnvironmentMethods.d.ts
5
- /**
6
- * Environment types supported by Envapter
7
- *
8
- * The following keys are checked in order until the first with a non-empty value is found, or defaulting to development if none are set:
9
- * - `ENVIRONMENT`
10
- * - `ENV`
11
- * - `NODE_ENV`
12
- * - `MODE`
13
- *
14
- * @public
15
- */
16
- declare enum Environment {
17
- /** The default when no environment variable names a known environment. */
18
- Development = 0,
19
- /** Selected when an environment variable reads `staging`. */
20
- Staging = 1,
21
- /** Selected when an environment variable reads `production`. */
22
- Production = 2,
23
- /** Selected when an environment variable reads `test`. */
24
- Test = 3
25
- }
26
5
  /**
27
6
  * Mixin for environment detection and checking methods
28
7
  * @internal
29
8
  */
30
9
  declare class EnvironmentMethods extends EnvapterBase {
31
- protected static _environment: Environment | undefined;
32
- protected static _environmentExplicitlySet: boolean;
33
- protected static _profiles: ProfilesConfig | undefined;
34
- protected static determineEnvironment(env?: string | Environment): void;
35
- private static firstEnvKeyValue;
36
10
  /**
37
11
  * Get the current application environment
38
12
  */
@@ -81,46 +55,7 @@ declare class EnvironmentMethods extends EnvapterBase {
81
55
  * @see {@link EnvironmentMethods.isTest}
82
56
  */
83
57
  get isTest(): boolean;
84
- protected static refreshCache(): void;
85
- /**
86
- * Reads the source's raw vars (not `this.config`, which would recurse: cascade selection runs
87
- * before the `.env` load). `Envapter.environment` may differ post-load if a file sets `ENVIRONMENT`.
88
- * @internal
89
- */
90
- protected static getCascadeEnvironment(): Environment;
91
- /**
92
- * Build the dotenv-flow cascade for a given environment, in dotenv first-wins precedence
93
- * order (highest precedence first). Missing files are silently filtered.
94
- *
95
- * Precedence is **most-specific-wins** (matches Vite / Astro / Vocs):
96
- * `.env.${env}.local` \> `.env.${env}` \> `.env.local` \> `.env`
97
- *
98
- * This differs from dotenv-flow / Next.js convention which puts `.env.local` above
99
- * `.env.${env}`. We chose the most-specific-wins order so committed env-specific files
100
- * (`.env.production`) are authoritative for that environment regardless of whether a
101
- * stray `.env.local` is present.
102
- * @internal
103
- */
104
- protected static buildCascadePaths(env: Environment): string[];
105
- private static normalizeProfilePaths;
106
- /**
107
- * Override the base implementation to layer the dotenv-flow cascade + any
108
- * `Envapter.configureProfiles` overrides on top of `_envPaths` when the user has NOT
109
- * explicitly set `envPaths`.
110
- *
111
- * Precedence (passed to dotenv with first-wins semantics):
112
- * 1. profile-configured paths for the current env (if any)
113
- * 2. `.env.${env}.local`
114
- * 3. `.env.${env}`
115
- * 4. `.env.local`
116
- * 5. `.env`
117
- *
118
- * If `useDefaults: false` is set on the profiles config, only (1) is loaded, no cascade.
119
- * If `envPaths` was explicitly set, only `envPaths` is loaded (everything else ignored).
120
- * @internal
121
- */
122
- protected static resolveEffectivePaths(): string[];
123
58
  }
124
59
  //#endregion
125
- export { Environment, EnvironmentMethods };
60
+ export { EnvironmentMethods };
126
61
  //# sourceMappingURL=EnvironmentMethods.d.mts.map
@@ -1,20 +1,12 @@
1
1
  import { ConditionalReturn } from "../types/Conversion.mjs";
2
+ import { EnvKeyInput } from "../types/Env.mjs";
2
3
  import { EnvironmentMethods } from "./EnvironmentMethods.mjs";
3
- import { EnvKeyInput, EnvapterService } from "../types/Env.mjs";
4
- import { ValueConverter } from "../converters/ValueConverter.mjs";
5
- import { TemplateResolver } from "../engine/TemplateResolver.mjs";
6
4
 
7
5
  //#region src/core/PrimitiveMethods.d.ts
8
6
  /**
9
7
  * @internal
10
8
  */
11
- declare class PrimitiveMethods extends EnvironmentMethods implements EnvapterService {
12
- private static readonly service;
13
- protected static readonly templateResolver: TemplateResolver;
14
- protected static readonly valueConverter: ValueConverter;
15
- isStrict(): boolean;
16
- protected static resolveForMirror(key: string, value: string): string;
17
- private static _get;
9
+ declare class PrimitiveMethods extends EnvironmentMethods {
18
10
  /**
19
11
  * Get a string environment variable with optional fallback.
20
12
  * Supports template variable resolution using `${VAR}` syntax.
@@ -1,4 +1,4 @@
1
- import { Environment } from "../core/EnvironmentMethods.mjs";
1
+ import { Environment } from "../core/Environment.mjs";
2
2
  import { AdvancedMethods } from "../core/AdvancedMethods.mjs";
3
3
 
4
4
  //#region src/engine/Envapter.d.ts
@@ -50,7 +50,7 @@ declare class Envapter extends AdvancedMethods {
50
50
  * Assert that one or more environment variables are present and non-empty (post-trim,
51
51
  * after template resolution). Throws `MissingEnvValue` listing every missing key.
52
52
  *
53
- * For typed fail-fast in functional code, use `Envapter.getUsing(key, { converter, required: true })`.
53
+ * For a typed required read in functional code, use `Envapter.getRequired(key, converter)`.
54
54
  *
55
55
  * @example
56
56
  * ```ts
@@ -59,7 +59,6 @@ declare class Envapter extends AdvancedMethods {
59
59
  * ```
60
60
  */
61
61
  static require(...keys: [string, ...string[]]): void;
62
- private static resolveAndValidate;
63
62
  /**
64
63
  * @see {@link Envapter.require}
65
64
  */
@@ -1,16 +1,13 @@
1
- import { EnvFileOptions } from "../infra/Dotenv.mjs";
2
1
  import { ProfilesConfig } from "../types/Options.mjs";
3
2
  import { Envapter } from "./Envapter.mjs";
3
+ import { EnvFileOptions } from "../infra/Dotenv.mjs";
4
4
 
5
5
  //#region src/engine/NodeEnvapter.d.ts
6
6
  /**
7
7
  * The Node/Bun/Deno facade: {@link Envapter} plus the filesystem-only configuration APIs (`.env`
8
- * path selection, base directory, dotenv options, and per-environment profiles). The browser and
9
- * Workers builds export the base {@link Envapter} without these, so calling one where there is no
10
- * filesystem is a compile error (and a thrown {@link EnvaptError} when types are bypassed).
11
- *
12
- * Writes target the state-owning class (`EnvapterBase`/`EnvironmentMethods`), not `this`: the engine
13
- * reads that state through `EnvapterBase`-anchored paths, so a subclass own-property would be invisible.
8
+ * path selection, base directory, dotenv options, and per-environment profiles). On the portable
9
+ * build (Workers, the browser, edge) these same APIs warn once and no-op by default, controlled by
10
+ * `Envapter.fileApiMode`.
14
11
  * @public
15
12
  */
16
13
  declare class NodeEnvapter extends Envapter {
@@ -1,14 +1,26 @@
1
+ import { ProfilesConfig } from "../types/Options.mjs";
1
2
  import { Envapter } from "./Envapter.mjs";
3
+ import { EnvFileOptions } from "../infra/Dotenv.mjs";
2
4
 
3
5
  //#region src/engine/PortableEnvapter.d.ts
4
6
  /**
5
- * The browser/Workers facade. {@link Envapter} with the filesystem-only configuration APIs
6
- * (`envPaths`, `baseDir`, `envFileOptions`, `configureProfiles`, `resetProfiles`) stubbed to throw
7
- * {@link EnvaptError}. The portable types omit those APIs, so the stubs only guard JS callers that
8
- * bypass the types.
7
+ * The browser/Workers/edge facade. {@link Envapter} with the filesystem-only config APIs present in
8
+ * the type but inert at runtime by default. Under the default `fileApiMode` of `'warn'` they warn once
9
+ * and no-op (getters return an empty default matching their type, setters do nothing). `'throw'` restores
10
+ * the {@link EnvaptError} `FileApiUnsupported`. The read side still throws `NoSourceBound` on first read
11
+ * until `useSource` binds a source.
9
12
  * @public
10
13
  */
11
- declare class PortableEnvapter extends Envapter {}
14
+ declare class PortableEnvapter extends Envapter {
15
+ static get envPaths(): string[];
16
+ static set envPaths(_paths: string[] | string);
17
+ static get baseDir(): string | undefined;
18
+ static set baseDir(_value: string | URL | undefined);
19
+ static get envFileOptions(): EnvFileOptions;
20
+ static set envFileOptions(_config: EnvFileOptions);
21
+ static configureProfiles(_config: ProfilesConfig): void;
22
+ static resetProfiles(): void;
23
+ }
12
24
  //#endregion
13
25
  export { PortableEnvapter };
14
26
  //# sourceMappingURL=PortableEnvapter.d.mts.map
@@ -1,20 +1,16 @@
1
+ import { Environment } from "./core/Environment.mjs";
1
2
  import { DebugLevel } from "./infra/Debug.mjs";
2
- import { EnvFileOptions } from "./infra/Dotenv.mjs";
3
- import { ArrayElement, ArrayOf, ConverterToken, Converters, CustomElementConverter, isArrayOf } from "./converters/Converters.mjs";
4
- import { AdvancedConverterReturn, BuiltInConverter, BuiltInConverterFunction, ConditionalReturn, ConverterFunction, EnvaptConverter, InferConverterFallbackType, InferConverterReturnType, InferPrimitiveReturnType, JsonValue, MapOfConverterFunctions, PrimitiveConstructor, TimeFallback, TimeUnit } from "./types/Conversion.mjs";
5
- import { InferSchemaInput, InferSchemaOutput, StandardSchemaV1 } from "./infra/StandardSchema.mjs";
6
- import { Err, SchemaConstraint, SchemaMustBeSync } from "./types/Schema.mjs";
7
- import { Environment } from "./core/EnvironmentMethods.mjs";
8
- import { EnvProfile, EnvaptOptions, ProfilesConfig } from "./types/Options.mjs";
9
- import { EnvKeyInput } from "./types/Env.mjs";
10
- import { BareEnvSource, EnvSource, FileEnvSource, Source } from "./types/Source.mjs";
11
- import { EnvaptAccessorDecorator, EnvaptFieldDecorator } from "./types/Decorator.mjs";
3
+ import { ConverterToken, Converters, CustomElementConverter, isArrayOf } from "./converters/Converters.mjs";
4
+ import { ConverterFunction, EnvaptConverter, JsonValue, TimeFallback } from "./types/Conversion.mjs";
5
+ import { StandardSchemaV1 } from "./infra/StandardSchema.mjs";
6
+ import { EnvProfile, EnvaptOptions, FileApiMode, ProfilesConfig } from "./types/Options.mjs";
7
+ import { Source } from "./types/Source.mjs";
12
8
  import { PortableSource } from "./sources/PortableSource.mjs";
13
- import { ManualEnvSource } from "./sources/ManualEnvSource.mjs";
14
- import { WorkerEnvSource } from "./sources/WorkerEnvSource.mjs";
9
+ import { merge } from "./sources/merge.mjs";
10
+ import { EnvFileOptions } from "./infra/Dotenv.mjs";
15
11
  import { EnvaptError, EnvaptErrorCodes } from "./infra/Error.mjs";
16
12
  import { Envapt } from "./decorators/modern/Envapt.mjs";
17
13
  import { EnvBool, EnvNum, EnvStr, EnvTime, EnvUrl } from "./decorators/modern/SugarDecorators.mjs";
18
14
  import { NodeEnvapter } from "./engine/NodeEnvapter.mjs";
19
- import { NodeEnvSource } from "./sources/NodeEnvSource.mjs";
20
- export { type AdvancedConverterReturn, type ArrayElement, type ArrayOf, type BareEnvSource, type BuiltInConverter, type BuiltInConverterFunction, type ConditionalReturn, type ConverterFunction, type ConverterToken, Converters, type CustomElementConverter, type DebugLevel, EnvBool, type EnvFileOptions, type EnvKeyInput, EnvNum, type EnvProfile, type EnvSource, EnvStr, EnvTime, EnvUrl, Envapt, type EnvaptAccessorDecorator, type EnvaptConverter, EnvaptError, EnvaptErrorCodes, type EnvaptFieldDecorator, type EnvaptOptions, NodeEnvapter as Envapter, Environment, type Err, type FileEnvSource, type InferConverterFallbackType, type InferConverterReturnType, type InferPrimitiveReturnType, type InferSchemaInput, type InferSchemaOutput, type JsonValue, ManualEnvSource, type MapOfConverterFunctions, NodeEnvSource, PortableSource, type PrimitiveConstructor, type ProfilesConfig, type SchemaConstraint, type SchemaMustBeSync, type Source, type StandardSchemaV1, type TimeFallback, type TimeUnit, WorkerEnvSource, isArrayOf };
15
+ import { FileSource } from "./sources/FileSource.mjs";
16
+ export { type ConverterFunction, type ConverterToken, Converters, type CustomElementConverter, type DebugLevel, EnvBool, type EnvFileOptions, EnvNum, type EnvProfile, EnvStr, EnvTime, EnvUrl, Envapt, type EnvaptConverter, EnvaptError, EnvaptErrorCodes, type EnvaptOptions, NodeEnvapter as Envapter, Environment, type FileApiMode, FileSource, type JsonValue, PortableSource, type ProfilesConfig, type Source, type StandardSchemaV1, type TimeFallback, isArrayOf, merge };
@@ -1,19 +1,15 @@
1
+ import { Environment } from "./core/Environment.mjs";
1
2
  import { DebugLevel } from "./infra/Debug.mjs";
2
- import { EnvFileOptions } from "./infra/Dotenv.mjs";
3
- import { ArrayElement, ArrayOf, ConverterToken, Converters, CustomElementConverter, isArrayOf } from "./converters/Converters.mjs";
4
- import { AdvancedConverterReturn, BuiltInConverter, BuiltInConverterFunction, ConditionalReturn, ConverterFunction, EnvaptConverter, InferConverterFallbackType, InferConverterReturnType, InferPrimitiveReturnType, JsonValue, MapOfConverterFunctions, PrimitiveConstructor, TimeFallback, TimeUnit } from "./types/Conversion.mjs";
5
- import { InferSchemaInput, InferSchemaOutput, StandardSchemaV1 } from "./infra/StandardSchema.mjs";
6
- import { Err, SchemaConstraint, SchemaMustBeSync } from "./types/Schema.mjs";
7
- import { Environment } from "./core/EnvironmentMethods.mjs";
8
- import { EnvProfile, EnvaptOptions, ProfilesConfig } from "./types/Options.mjs";
9
- import { EnvKeyInput } from "./types/Env.mjs";
10
- import { BareEnvSource, EnvSource, FileEnvSource, Source } from "./types/Source.mjs";
11
- import { EnvaptAccessorDecorator, EnvaptFieldDecorator } from "./types/Decorator.mjs";
3
+ import { ConverterToken, Converters, CustomElementConverter, isArrayOf } from "./converters/Converters.mjs";
4
+ import { ConverterFunction, EnvaptConverter, JsonValue, TimeFallback } from "./types/Conversion.mjs";
5
+ import { StandardSchemaV1 } from "./infra/StandardSchema.mjs";
6
+ import { EnvProfile, EnvaptOptions, FileApiMode, ProfilesConfig } from "./types/Options.mjs";
7
+ import { Source } from "./types/Source.mjs";
12
8
  import { PortableSource } from "./sources/PortableSource.mjs";
13
- import { ManualEnvSource } from "./sources/ManualEnvSource.mjs";
14
- import { WorkerEnvSource } from "./sources/WorkerEnvSource.mjs";
9
+ import { merge } from "./sources/merge.mjs";
10
+ import { EnvFileOptions } from "./infra/Dotenv.mjs";
15
11
  import { EnvaptError, EnvaptErrorCodes } from "./infra/Error.mjs";
16
12
  import { Envapt } from "./decorators/modern/Envapt.mjs";
17
13
  import { EnvBool, EnvNum, EnvStr, EnvTime, EnvUrl } from "./decorators/modern/SugarDecorators.mjs";
18
14
  import { PortableEnvapter } from "./engine/PortableEnvapter.mjs";
19
- export { type AdvancedConverterReturn, type ArrayElement, type ArrayOf, type BareEnvSource, type BuiltInConverter, type BuiltInConverterFunction, type ConditionalReturn, type ConverterFunction, type ConverterToken, Converters, type CustomElementConverter, type DebugLevel, EnvBool, type EnvFileOptions, type EnvKeyInput, EnvNum, type EnvProfile, type EnvSource, EnvStr, EnvTime, EnvUrl, Envapt, type EnvaptAccessorDecorator, type EnvaptConverter, EnvaptError, EnvaptErrorCodes, type EnvaptFieldDecorator, type EnvaptOptions, PortableEnvapter as Envapter, Environment, type Err, type FileEnvSource, type InferConverterFallbackType, type InferConverterReturnType, type InferPrimitiveReturnType, type InferSchemaInput, type InferSchemaOutput, type JsonValue, ManualEnvSource, type MapOfConverterFunctions, PortableSource, type PrimitiveConstructor, type ProfilesConfig, type SchemaConstraint, type SchemaMustBeSync, type Source, type StandardSchemaV1, type TimeFallback, type TimeUnit, WorkerEnvSource, isArrayOf };
15
+ export { type ConverterFunction, type ConverterToken, Converters, type CustomElementConverter, type DebugLevel, EnvBool, type EnvFileOptions, EnvNum, type EnvProfile, EnvStr, EnvTime, EnvUrl, Envapt, type EnvaptConverter, EnvaptError, EnvaptErrorCodes, type EnvaptOptions, PortableEnvapter as Envapter, Environment, type FileApiMode, type JsonValue, PortableSource, type ProfilesConfig, type Source, type StandardSchemaV1, type TimeFallback, isArrayOf, merge };
@@ -47,7 +47,9 @@ declare enum EnvaptErrorCodes {
47
47
  /** Thrown when a file-based API (envPaths, baseDir, configureProfiles) is used on a source without filesystem support */
48
48
  FileApiUnsupported = 306,
49
49
  /** Thrown when an environment value is read before a source is bound via Envapter.useSource */
50
- NoSourceBound = 307
50
+ NoSourceBound = 307,
51
+ /** Thrown when `merge` is called with no members, or with more than one filesystem-backed source */
52
+ InvalidMergedSource = 308
51
53
  }
52
54
  interface EnvaptErrorOptions {
53
55
  issues?: readonly StandardSchemaV1.Issue[];
@@ -43,18 +43,7 @@ declare namespace StandardSchemaV1 {
43
43
  type InferInput<Schema extends StandardSchemaV1> = NonNullable<Schema['~standard']['types']>['input'];
44
44
  type InferOutput<Schema extends StandardSchemaV1> = NonNullable<Schema['~standard']['types']>['output'];
45
45
  }
46
- /**
47
- * Envapt-side alias for {@link StandardSchemaV1.InferOutput}. Re-exported under a friendlier
48
- * name so consumers writing `static readonly x: InferSchemaOutput<typeof mySchema>`
49
- * don't need the namespace path.
50
- * @public
51
- */
52
46
  type InferSchemaOutput<Schema extends StandardSchemaV1> = StandardSchemaV1.InferOutput<Schema>;
53
- /**
54
- * Envapt-side alias for {@link StandardSchemaV1.InferInput}.
55
- * @public
56
- */
57
- type InferSchemaInput<Schema extends StandardSchemaV1> = StandardSchemaV1.InferInput<Schema>;
58
47
  //#endregion
59
- export { InferSchemaInput, InferSchemaOutput, StandardSchemaV1 };
48
+ export { InferSchemaOutput, StandardSchemaV1 };
60
49
  //# sourceMappingURL=StandardSchema.d.mts.map
@@ -1,13 +1,13 @@
1
- import { FileEnvSource } from "../types/Source.mjs";
1
+ import { FileCapableSource } from "../types/Source.mjs";
2
2
 
3
- //#region src/sources/NodeEnvSource.d.ts
3
+ //#region src/sources/FileSource.d.ts
4
4
  /**
5
5
  * Default environment source on Node, Bun, and Deno: a snapshot of `process.env`. Its
6
6
  * `supportsFiles` is `true`, so the engine also layers the `.env` cascade on top, resolves
7
7
  * `baseDir`, and can mirror loaded keys back to `process.env`.
8
8
  * @public
9
9
  */
10
- declare class NodeEnvSource implements FileEnvSource {
10
+ declare class FileSource implements FileCapableSource {
11
11
  /** Always `true`. The engine layers the `.env` cascade and `baseDir` on top of `process.env`. */
12
12
  readonly supportsFiles = true;
13
13
  /** Returns a snapshot clone of `process.env` as plain strings. */
@@ -26,5 +26,5 @@ declare class NodeEnvSource implements FileEnvSource {
26
26
  writeVars(vars: Record<string, string>): void;
27
27
  }
28
28
  //#endregion
29
- export { NodeEnvSource };
30
- //# sourceMappingURL=NodeEnvSource.d.mts.map
29
+ export { FileSource };
30
+ //# sourceMappingURL=FileSource.d.mts.map
@@ -1,4 +1,4 @@
1
- import { BareEnvSource } from "../types/Source.mjs";
1
+ import { BareSource } from "../types/Source.mjs";
2
2
 
3
3
  //#region src/sources/PortableSource.d.ts
4
4
  /**
@@ -10,7 +10,7 @@ import { BareEnvSource } from "../types/Source.mjs";
10
10
  * file APIs do not apply.
11
11
  * @public
12
12
  */
13
- declare class PortableSource implements BareEnvSource {
13
+ declare class PortableSource implements BareSource {
14
14
  /** Always `false`. With no filesystem, the `.env` cascade and file APIs do not apply. */
15
15
  readonly supportsFiles = false;
16
16
  private readonly vars;
@@ -0,0 +1,13 @@
1
+ import { Source } from "../types/Source.mjs";
2
+
3
+ //#region src/sources/merge.d.ts
4
+ /**
5
+ * Compose several sources into one, read last-wins. A later member's value overrides an earlier
6
+ * member's value for the same key. Bind the result with `Envapter.useSource`. Throws
7
+ * {@link EnvaptErrorCodes.InvalidMergedSource} with no members or with more than one file-backed member.
8
+ * @public
9
+ */
10
+ declare function merge(...members: Source[]): Source;
11
+ //#endregion
12
+ export { merge };
13
+ //# sourceMappingURL=merge.d.mts.map
@@ -0,0 +1,8 @@
1
+ //#region src/types/Casing.d.ts
2
+ type KeyCasing = 'camelCase' | 'PascalCase' | 'kebab-case';
3
+ type SnakeToPascal<Str extends string> = Str extends `${infer Head}_${infer Tail}` ? `${Capitalize<Lowercase<Head>>}${SnakeToPascal<Tail>}` : Capitalize<Lowercase<Str>>;
4
+ type SnakeToKebab<Str extends string, Acc extends string = ''> = Str extends `${infer Head}_${infer Tail}` ? SnakeToKebab<Tail, Head extends '' ? Acc : Acc extends '' ? Lowercase<Head> : `${Acc}-${Lowercase<Head>}`> : Str extends '' ? Acc : Acc extends '' ? Lowercase<Str> : `${Acc}-${Lowercase<Str>}`;
5
+ type RecaseKey<Key extends string, Casing> = Casing extends 'camelCase' ? Uncapitalize<SnakeToPascal<Key>> : Casing extends 'PascalCase' ? SnakeToPascal<Key> : Casing extends 'kebab-case' ? SnakeToKebab<Key> : Key;
6
+ //#endregion
7
+ export type { KeyCasing, RecaseKey };
8
+ //# sourceMappingURL=Casing.d.mts.map
@@ -1,30 +1,18 @@
1
1
  import { ArrayOf, ConverterToken, CustomElementConverter } from "../converters/Converters.mjs";
2
2
 
3
3
  //#region src/types/Conversion.d.ts
4
- /**
5
- * Scalar built-in converter tokens (e.g. `'number'`, `'time'`).
6
- * Excludes the array builder (see {@link ArrayOf}).
7
- * @public
8
- */
9
4
  type BuiltInConverter = ConverterToken;
10
- /**
11
- * Primitive types supported by Envapter
12
- * @public
13
- */
14
5
  type PrimitiveConstructor = typeof String | typeof Number | typeof Boolean | typeof BigInt | typeof Symbol;
15
- /**
16
- * String value from a .env file or environment variable
17
- * @public
18
- */
19
6
  type BaseInput = string | undefined;
20
7
  /**
21
- * Custom parser function type for environment variables
22
- * @param raw - Raw string value from environment
23
- * @param fallback - Fallback value if parsing fails
24
- * @returns Parsed value of type T
8
+ * Custom parser function for an environment variable. `TRaw` is the raw input, `string | undefined` by
9
+ * default, narrowed to `string` by the readers that guarantee a present value (`getRequired`, `getRequiredAll`).
10
+ * @param raw - Raw value from the environment
11
+ * @param fallback - Fallback value when parsing is skipped
12
+ * @returns Parsed value of type `TFallback`
25
13
  * @public
26
14
  */
27
- type ConverterFunction<TFallback = unknown> = (raw: BaseInput, fallback?: TFallback) => TFallback;
15
+ type ConverterFunction<TFallback = unknown, TRaw extends BaseInput = BaseInput> = (raw: TRaw, fallback?: TFallback) => TFallback;
28
16
  /**
29
17
  * Environment variable converter: a primitive constructor, a built-in scalar token, an `ArrayOf<...>`
30
18
  * produced by {@link Converters.array}, or a custom parser function.
@@ -55,26 +43,7 @@ interface ConverterMap {
55
43
  date: Date;
56
44
  time: number;
57
45
  }
58
- /**
59
- * Type mapping for built-in scalar converters to their return types
60
- * @internal
61
- */
62
46
  type BuiltInConverterReturnType<ConverterKey extends BuiltInConverter> = ConverterMap[ConverterKey];
63
- /**
64
- * Return type for built-in converter functions
65
- * @internal
66
- */
67
- type ReturnValuesOfConverterFunctions = ConverterMap[BuiltInConverter];
68
- /**
69
- * Function type for built-in converter functions
70
- * @internal
71
- */
72
- type BuiltInConverterFunction = (...args: Parameters<(...args: any[]) => ReturnValuesOfConverterFunctions>) => ReturnValuesOfConverterFunctions | undefined;
73
- /**
74
- * Map of built-in converter functions
75
- * @internal
76
- */
77
- type MapOfConverterFunctions = Record<BuiltInConverter, BuiltInConverterFunction>;
78
47
  /**
79
48
  * Time unit types for duration conversions
80
49
  * @internal
@@ -85,39 +54,13 @@ type TimeUnit = 'ms' | 's' | 'm' | 'h' | 'd' | 'w';
85
54
  * @public
86
55
  */
87
56
  type TimeFallback = number | `${number}${TimeUnit}`;
88
- /**
89
- * Helper type for getter methods that conditionally return undefined based on whether a fallback is provided
90
- * If fallback is provided, return ReturnType. If no fallback (undefined), return ReturnType | undefined.
91
- * @internal
92
- */
93
57
  type ConditionalReturn<ReturnType, TFallback> = TFallback extends undefined ? ReturnType | undefined : ReturnType;
94
- /**
95
- * Inferred return type for a converter.
96
- *
97
- * - `ArrayOf<E>` resolves to the element type's return as an array. When `E` is a custom
98
- * function, the function's return type drives the array element. When `E` is a scalar
99
- * token, `ConverterMap` provides the element type.
100
- * - Bare scalar tokens resolve through `ConverterMap`.
101
- * @internal
102
- */
103
58
  type InferConverterReturnType<TConverter> = TConverter extends ArrayOf<infer Element> ? Element extends BuiltInConverter ? ConverterMap[Element][] : Element extends CustomElementConverter<infer Returned> ? Returned[] : never : TConverter extends BuiltInConverter ? BuiltInConverterReturnType<TConverter> : never;
104
- /**
105
- * Type inference for the *fallback* slot of a converter. `Converters.Time` (scalar or array
106
- * element) accepts {@link TimeFallback} / `TimeFallback[]`; everything else mirrors the
107
- * return type. Add future asymmetric fallback/return converters to this conditional.
108
- * @internal
109
- */
59
+ type RequiredSpec = Record<string, BuiltInConverter | ArrayOf | ConverterFunction<unknown, string>>;
60
+ type InferSpecField<TConverter> = TConverter extends BuiltInConverter | ArrayOf ? InferConverterReturnType<TConverter> : TConverter extends ((raw: string) => infer TReturn) ? TReturn : never;
110
61
  type InferConverterFallbackType<TConverter> = TConverter extends 'time' ? TimeFallback : TConverter extends ArrayOf<infer Element> ? Element extends 'time' ? TimeFallback[] : InferConverterReturnType<TConverter> : InferConverterReturnType<TConverter>;
111
- /**
112
- * Complete type inference for advanced converter methods
113
- * @internal
114
- */
115
62
  type AdvancedConverterReturn<TConverter, TFallback = undefined> = ConditionalReturn<InferConverterReturnType<TConverter>, TFallback>;
116
- /**
117
- * Type inference for primitive constructor return types
118
- * @internal
119
- */
120
63
  type InferPrimitiveReturnType<TConstructor extends PrimitiveConstructor> = TConstructor extends typeof String ? string : TConstructor extends typeof Number ? number : TConstructor extends typeof Boolean ? boolean : TConstructor extends typeof BigInt ? bigint : TConstructor extends typeof Symbol ? symbol : never;
121
64
  //#endregion
122
- export type { AdvancedConverterReturn, BuiltInConverter, BuiltInConverterFunction, ConditionalReturn, ConverterFunction, EnvaptConverter, InferConverterFallbackType, InferConverterReturnType, InferPrimitiveReturnType, JsonValue, MapOfConverterFunctions, PrimitiveConstructor, TimeFallback, TimeUnit };
65
+ export type { AdvancedConverterReturn, BuiltInConverter, ConditionalReturn, ConverterFunction, EnvaptConverter, InferConverterFallbackType, InferConverterReturnType, InferPrimitiveReturnType, InferSpecField, JsonValue, PrimitiveConstructor, RequiredSpec, TimeFallback };
123
66
  //# sourceMappingURL=Conversion.d.mts.map
@@ -1,21 +1,7 @@
1
1
  //#region src/types/Decorator.d.ts
2
- /**
3
- * A legacy (experimentalDecorators) property decorator that also constrains the decorated field's
4
- * declared type. `Output` is the value the decorator produces. The field must be wide enough to hold
5
- * it, so a field narrower than `Output` fails to compile while a wider or nullable field is accepted.
6
- * The tuple wrap stops `Output` from distributing when it is a union.
7
- * @public
8
- */
9
2
  type EnvaptFieldDecorator<Output> = <Target, Key extends keyof Target>(target: Target, key: [Output] extends [Target[Key]] ? Key : {
10
3
  '[envapt] field type must hold the converter output': Output;
11
4
  }) => void;
12
- /**
13
- * A modern (TC39 Stage 3) accessor decorator that also constrains the decorated `accessor`'s
14
- * declared type. `Output` is the value the decorator produces. The accessor must be wide enough to
15
- * hold it, so an accessor narrower than `Output` fails to compile while a wider or nullable one is
16
- * accepted. The tuple wrap stops `Output` from distributing when it is a union.
17
- * @public
18
- */
19
5
  type EnvaptAccessorDecorator<Output> = <This, Value>(target: ClassAccessorDecoratorTarget<This, [Output] extends [Value] ? Value : {
20
6
  '[envapt] field type must hold the converter output': Output;
21
7
  }>, context: ClassAccessorDecoratorContext<This, [Output] extends [Value] ? Value : {
@@ -1,17 +1,8 @@
1
1
  //#region src/types/Env.d.ts
2
- /**
3
- * Accepted shape for environment variable lookups. Either a single key or an ordered list of keys.
4
- * @public
5
- */
6
2
  type EnvKeyInput = string | readonly [string, ...string[]];
7
3
  /**
8
4
  * @internal
9
5
  */
10
- interface EnvapterService {
11
- getRaw(key: EnvKeyInput): string | undefined;
12
- get(key: EnvKeyInput, def?: string): string | undefined;
13
- isStrict(): boolean;
14
- }
15
6
  //#endregion
16
- export type { EnvKeyInput, EnvapterService };
7
+ export type { EnvKeyInput };
17
8
  //# sourceMappingURL=Env.d.mts.map
@@ -1,5 +1,5 @@
1
+ import { Environment } from "../core/Environment.mjs";
1
2
  import { EnvaptConverter } from "./Conversion.mjs";
2
- import { Environment } from "../core/EnvironmentMethods.mjs";
3
3
 
4
4
  //#region src/types/Options.d.ts
5
5
  /**
@@ -37,6 +37,13 @@ type ProfilesConfig = Partial<Record<Environment, EnvProfile>> & {
37
37
  */
38
38
  useDefaults?: boolean;
39
39
  };
40
+ /**
41
+ * How the portable build's filesystem-only config APIs behave when called. `'warn'` (the default)
42
+ * warns once and no-ops, `'throw'` throws `FileApiUnsupported`. The node build runs these APIs
43
+ * normally and is unaffected by this value.
44
+ * @public
45
+ */
46
+ type FileApiMode = 'warn' | 'throw';
40
47
  //#endregion
41
- export type { EnvProfile, EnvaptOptions, ProfilesConfig };
48
+ export type { EnvProfile, EnvaptOptions, FileApiMode, ProfilesConfig };
42
49
  //# sourceMappingURL=Options.d.mts.map
@@ -2,23 +2,11 @@ import { StandardSchemaV1 } from "../infra/StandardSchema.mjs";
2
2
 
3
3
  //#region src/types/Schema.d.ts
4
4
  declare const _envaptErrBrand: unique symbol;
5
- /**
6
- * A branded string carrying a compile-time error message. The `unique symbol` brand cannot be
7
- * produced from user code, so the message string can't be copy-pasted to satisfy the type.
8
- */
9
5
  type Err<Msg extends string> = Msg & {
10
6
  readonly [_envaptErrBrand]: never;
11
7
  };
12
- /**
13
- * The {@link Err} returned when a Standard Schema's `validate` is async. envapt loads config at boot,
14
- * so async refinements are rejected at the type level.
15
- */
16
8
  type SchemaMustBeSync = Err<'Schema must be synchronous. envapt is boot-time config loading; async refinements (validate returning `Promise<Result>`) belong outside the env layer.'>;
17
- /**
18
- * Resolves to the schema when its `validate` is synchronous, or {@link SchemaMustBeSync} when it
19
- * returns a Promise.
20
- */
21
9
  type SchemaConstraint<Schema extends StandardSchemaV1> = ReturnType<Schema['~standard']['validate']> extends Promise<unknown> ? SchemaMustBeSync : Schema;
22
10
  //#endregion
23
- export type { Err, SchemaConstraint, SchemaMustBeSync };
11
+ export type { SchemaConstraint };
24
12
  //# sourceMappingURL=Schema.d.mts.map
@@ -1,49 +1,24 @@
1
1
  //#region src/types/Source.d.ts
2
- /**
3
- * A source with no filesystem: an injected object on the browser, or the Cloudflare `env` binding on
4
- * Workers. The `.env` cascade, profiles, and the `envPaths`/`baseDir`/`configureProfiles` APIs do not
5
- * apply. Only `readVars()` populates the cache.
6
- * @public
7
- */
8
- interface BareEnvSource {
9
- /** Return every variable this source provides, as plain strings. */
2
+ interface BareSource {
10
3
  readVars(): Record<string, string>;
11
- /** Leave unset (or `false`) because a bare source has no filesystem. */
12
4
  readonly supportsFiles?: false;
13
5
  }
14
- /**
15
- * A filesystem-backed source, like the default {@link NodeEnvSource}. Setting `supportsFiles` to
16
- * `true` requires all four file capabilities, so the engine can load the `.env` cascade, resolve
17
- * `baseDir`, and mirror loaded keys back to the ambient environment.
18
- * @public
19
- */
20
- interface FileEnvSource {
21
- /** Return every variable this source provides, as plain strings. */
6
+ interface FileCapableSource {
22
7
  readVars(): Record<string, string>;
23
- /** When `true`, the engine loads the `.env` cascade, profiles, and `envPaths` through the methods below. */
24
8
  readonly supportsFiles: true;
25
- /** Read a file's text, or `undefined` when it is absent or unreadable. Backs the loader and existence checks. */
26
9
  readFile(path: string, encoding: string): string | undefined;
27
- /** Join a relative `.env` path onto `baseDir`. Absolute paths are returned unchanged. */
28
10
  resolvePath(baseDir: string, candidate: string): string;
29
- /** Normalize a `baseDir` value (a directory path, or a module / `file:` URL) to an absolute directory path. */
30
11
  normalizeBaseDir(value: string | URL): string;
31
- /** Mirror loaded keys back to the ambient environment (e.g. `process.env`), backing `Envapter.syncProcessEnv`. */
32
12
  writeVars(vars: Record<string, string>): void;
33
13
  }
34
14
  /**
35
- * A pluggable source of environment variables. The default {@link NodeEnvSource} (a {@link FileEnvSource})
36
- * reads `process.env` plus the `.env` cascade. A {@link BareEnvSource} lets the same engine run where
37
- * there is no ambient environment (an injected object on the browser, the Cloudflare `env` binding on
38
- * Workers). Bind one with `Envapter.useSource`.
39
- * @public
40
- */
41
- type Source = BareEnvSource | FileEnvSource;
42
- /**
15
+ * A pluggable source of environment variables. The default {@link FileSource} reads `process.env` plus
16
+ * the `.env` cascade. A {@link PortableSource} lets the same engine run where there is no ambient
17
+ * environment (an injected object on the browser, the Cloudflare `env` binding on Workers). Bind one
18
+ * with `Envapter.useSource`.
43
19
  * @public
44
- * @deprecated Renamed to {@link Source} in v8.
45
20
  */
46
- type EnvSource = Source;
21
+ type Source = BareSource | FileCapableSource;
47
22
  //#endregion
48
- export type { BareEnvSource, EnvSource, FileEnvSource, Source };
23
+ export type { BareSource, FileCapableSource, Source };
49
24
  //# sourceMappingURL=Source.d.mts.map