envapt 7.0.0-next.0 → 7.0.0-next.2

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 (125) hide show
  1. package/CHANGELOG.md +12 -0
  2. package/dist/browser/engine/PortableEnvapter.mjs +2 -0
  3. package/dist/browser/engine/PortableEnvapter.mjs.map +1 -0
  4. package/dist/browser/engine/installFileApiStubs.mjs +1 -1
  5. package/dist/browser/engine/installFileApiStubs.mjs.map +1 -1
  6. package/dist/browser/index.mjs +1 -2
  7. package/dist/{node → types}/engine/NodeEnvapter.d.mts +0 -2
  8. package/dist/types/engine/PortableEnvapter.d.mts +14 -0
  9. package/dist/{node → types}/index.d.mts +0 -2
  10. package/dist/{browser/index.d.mts → types/index.portable.d.mts} +2 -2
  11. package/dist/{node/sources/NodeEnvSource.d.cts → types/sources/NodeEnvSource.d.mts} +2 -2
  12. package/dist/workerd/engine/PortableEnvapter.mjs +2 -0
  13. package/dist/workerd/engine/PortableEnvapter.mjs.map +1 -0
  14. package/dist/workerd/engine/installFileApiStubs.mjs +1 -1
  15. package/dist/workerd/engine/installFileApiStubs.mjs.map +1 -1
  16. package/dist/workerd/index.mjs +1 -2
  17. package/package.json +25 -22
  18. package/dist/browser/index.mjs.map +0 -1
  19. package/dist/node/config.d.mts +0 -2
  20. package/dist/node/converters/Converters.d.cts +0 -93
  21. package/dist/node/converters/Converters.d.mts +0 -95
  22. package/dist/node/converters/ValueConverter.d.cts +0 -25
  23. package/dist/node/converters/ValueConverter.d.mts +0 -27
  24. package/dist/node/core/AdvancedMethods.d.cts +0 -76
  25. package/dist/node/core/AdvancedMethods.d.mts +0 -78
  26. package/dist/node/core/EnvapterBase.d.cts +0 -75
  27. package/dist/node/core/EnvapterBase.d.mts +0 -77
  28. package/dist/node/core/EnvironmentMethods.d.cts +0 -115
  29. package/dist/node/core/EnvironmentMethods.d.mts +0 -117
  30. package/dist/node/core/PrimitiveMethods.d.cts +0 -70
  31. package/dist/node/core/PrimitiveMethods.d.mts +0 -72
  32. package/dist/node/decorators/legacy/Envapt.d.cts +0 -218
  33. package/dist/node/decorators/legacy/Envapt.d.mts +0 -220
  34. package/dist/node/decorators/legacy/SugarDecorators.d.cts +0 -40
  35. package/dist/node/decorators/legacy/SugarDecorators.d.mts +0 -42
  36. package/dist/node/decorators/modern/Envapt.d.cts +0 -218
  37. package/dist/node/decorators/modern/Envapt.d.mts +0 -220
  38. package/dist/node/decorators/modern/SugarDecorators.d.cts +0 -40
  39. package/dist/node/decorators/modern/SugarDecorators.d.mts +0 -42
  40. package/dist/node/engine/Envapter.d.cts +0 -70
  41. package/dist/node/engine/Envapter.d.mts +0 -72
  42. package/dist/node/engine/NodeEnvapter.d.cts +0 -73
  43. package/dist/node/engine/TemplateResolver.d.cts +0 -17
  44. package/dist/node/engine/TemplateResolver.d.mts +0 -19
  45. package/dist/node/index.d.cts +0 -19
  46. package/dist/node/infra/Debug.d.cts +0 -13
  47. package/dist/node/infra/Debug.d.mts +0 -15
  48. package/dist/node/infra/Dotenv.d.cts +0 -17
  49. package/dist/node/infra/Dotenv.d.mts +0 -19
  50. package/dist/node/infra/Error.d.cts +0 -72
  51. package/dist/node/infra/Error.d.mts +0 -74
  52. package/dist/node/infra/StandardSchema.d.cts +0 -59
  53. package/dist/node/infra/StandardSchema.d.mts +0 -61
  54. package/dist/node/legacy.d.cts +0 -4
  55. package/dist/node/legacy.d.mts +0 -6
  56. package/dist/node/sources/ManualEnvSource.d.cts +0 -19
  57. package/dist/node/sources/ManualEnvSource.d.mts +0 -21
  58. package/dist/node/sources/NodeEnvSource.d.mts +0 -22
  59. package/dist/node/sources/WorkerEnvSource.d.cts +0 -19
  60. package/dist/node/sources/WorkerEnvSource.d.mts +0 -21
  61. package/dist/node/types/Conversion.d.cts +0 -123
  62. package/dist/node/types/Conversion.d.mts +0 -125
  63. package/dist/node/types/Decorator.d.cts +0 -26
  64. package/dist/node/types/Decorator.d.mts +0 -28
  65. package/dist/node/types/Env.d.cts +0 -17
  66. package/dist/node/types/Env.d.mts +0 -19
  67. package/dist/node/types/Options.d.cts +0 -39
  68. package/dist/node/types/Options.d.mts +0 -41
  69. package/dist/node/types/Schema.d.cts +0 -12
  70. package/dist/node/types/Schema.d.mts +0 -14
  71. package/dist/node/types/Source.d.cts +0 -44
  72. package/dist/node/types/Source.d.mts +0 -46
  73. package/dist/workerd/converters/Converters.d.mts +0 -93
  74. package/dist/workerd/converters/ValueConverter.d.mts +0 -25
  75. package/dist/workerd/core/AdvancedMethods.d.mts +0 -76
  76. package/dist/workerd/core/EnvapterBase.d.mts +0 -75
  77. package/dist/workerd/core/EnvironmentMethods.d.mts +0 -115
  78. package/dist/workerd/core/PrimitiveMethods.d.mts +0 -70
  79. package/dist/workerd/decorators/legacy/Envapt.d.mts +0 -218
  80. package/dist/workerd/decorators/legacy/SugarDecorators.d.mts +0 -40
  81. package/dist/workerd/decorators/modern/Envapt.d.mts +0 -218
  82. package/dist/workerd/decorators/modern/SugarDecorators.d.mts +0 -40
  83. package/dist/workerd/engine/Envapter.d.mts +0 -70
  84. package/dist/workerd/engine/TemplateResolver.d.mts +0 -17
  85. package/dist/workerd/index.d.mts +0 -18
  86. package/dist/workerd/index.mjs.map +0 -1
  87. package/dist/workerd/infra/Debug.d.mts +0 -13
  88. package/dist/workerd/infra/Dotenv.d.mts +0 -17
  89. package/dist/workerd/infra/Error.d.mts +0 -72
  90. package/dist/workerd/infra/StandardSchema.d.mts +0 -59
  91. package/dist/workerd/legacy.d.mts +0 -4
  92. package/dist/workerd/sources/ManualEnvSource.d.mts +0 -19
  93. package/dist/workerd/sources/WorkerEnvSource.d.mts +0 -19
  94. package/dist/workerd/types/Conversion.d.mts +0 -123
  95. package/dist/workerd/types/Decorator.d.mts +0 -26
  96. package/dist/workerd/types/Env.d.mts +0 -17
  97. package/dist/workerd/types/Options.d.mts +0 -39
  98. package/dist/workerd/types/Schema.d.mts +0 -12
  99. package/dist/workerd/types/Source.d.mts +0 -44
  100. /package/dist/{node/config.d.cts → types/config.d.mts} +0 -0
  101. /package/dist/{browser → types}/converters/Converters.d.mts +0 -0
  102. /package/dist/{browser → types}/converters/ValueConverter.d.mts +0 -0
  103. /package/dist/{browser → types}/core/AdvancedMethods.d.mts +0 -0
  104. /package/dist/{browser → types}/core/EnvapterBase.d.mts +0 -0
  105. /package/dist/{browser → types}/core/EnvironmentMethods.d.mts +0 -0
  106. /package/dist/{browser → types}/core/PrimitiveMethods.d.mts +0 -0
  107. /package/dist/{browser → types}/decorators/legacy/Envapt.d.mts +0 -0
  108. /package/dist/{browser → types}/decorators/legacy/SugarDecorators.d.mts +0 -0
  109. /package/dist/{browser → types}/decorators/modern/Envapt.d.mts +0 -0
  110. /package/dist/{browser → types}/decorators/modern/SugarDecorators.d.mts +0 -0
  111. /package/dist/{browser → types}/engine/Envapter.d.mts +0 -0
  112. /package/dist/{browser → types}/engine/TemplateResolver.d.mts +0 -0
  113. /package/dist/{browser → types}/infra/Debug.d.mts +0 -0
  114. /package/dist/{browser → types}/infra/Dotenv.d.mts +0 -0
  115. /package/dist/{browser → types}/infra/Error.d.mts +0 -0
  116. /package/dist/{browser → types}/infra/StandardSchema.d.mts +0 -0
  117. /package/dist/{browser → types}/legacy.d.mts +0 -0
  118. /package/dist/{browser → types}/sources/ManualEnvSource.d.mts +0 -0
  119. /package/dist/{browser → types}/sources/WorkerEnvSource.d.mts +0 -0
  120. /package/dist/{browser → types}/types/Conversion.d.mts +0 -0
  121. /package/dist/{browser → types}/types/Decorator.d.mts +0 -0
  122. /package/dist/{browser → types}/types/Env.d.mts +0 -0
  123. /package/dist/{browser → types}/types/Options.d.mts +0 -0
  124. /package/dist/{browser → types}/types/Schema.d.mts +0 -0
  125. /package/dist/{browser → types}/types/Source.d.mts +0 -0
package/CHANGELOG.md CHANGED
@@ -1,5 +1,17 @@
1
1
  # envapt
2
2
 
3
+ ## 7.0.0-next.2
4
+
5
+ ### Patch Changes
6
+
7
+ - 5384199: The `envapt/browser` and `envapt/workerd` builds are now side-effect-free, so a bundler can drop the parts of envapt a consumer never imports. Importing a single export such as `EnvaptError` or `Converters` from the portable builds now ships about 1.3 kB instead of about 22 kB. The filesystem-only APIs (`envPaths`, `baseDir`, `envFileOptions`, `configureProfiles`, `resetProfiles`) still throw `EnvaptError` on the browser and Workers builds, their stubs moved onto the portable `Envapter` class so they install only when that class is used.
8
+
9
+ ## 7.0.0-next.1
10
+
11
+ ### Patch Changes
12
+
13
+ - 0bbcc85: Editor auto-import now suggests each public name once instead of once per runtime build. The published type declarations are emitted as a single shared tree that the Node, Workers, and browser entry points all re-export, so `Envapt`, `Envapter`, the converters, and the rest resolve to one declaration. The Workers and browser entries still expose the portable `Envapter` without the file-only APIs. The package no longer ships the redundant per-runtime declaration trees, so the install is smaller.
14
+
3
15
  ## 7.0.0-next.0
4
16
 
5
17
  ### Major Changes
@@ -0,0 +1,2 @@
1
+ import{Envapter as e}from"./Envapter.mjs";import{installFileApiStubs as t}from"./installFileApiStubs.mjs";var n=class n extends e{static{t(n)}};export{n as PortableEnvapter};
2
+ //# sourceMappingURL=PortableEnvapter.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"PortableEnvapter.mjs","names":[],"sources":["../../../src/engine/PortableEnvapter.ts"],"sourcesContent":["import { Envapter } from './Envapter';\nimport { installFileApiStubs } from './installFileApiStubs';\n\n/**\n * The browser/Workers facade. {@link Envapter} with the filesystem-only configuration APIs\n * (`envPaths`, `baseDir`, `envFileOptions`, `configureProfiles`, `resetProfiles`) stubbed to throw\n * {@link EnvaptError}. The portable types omit those APIs, so the stubs only guard JS callers that\n * bypass the types.\n * @public\n */\nexport class PortableEnvapter extends Envapter {\n // A static block (not a top-level statement in a separate entry) keeps the stub install intrinsic to\n // this class, so it tree-shakes out of a leaf import and needs no sideEffects entry. Depends on the\n // es2022 native static-block emit, lowering the target defeats it.\n static {\n installFileApiStubs(PortableEnvapter);\n }\n}\n"],"mappings":"0GAUA,IAAa,EAAb,MAAa,UAAyB,CAAS,CAI3C,OACI,EAAoB,CAAgB,CACxC,CACJ"}
@@ -1,2 +1,2 @@
1
- import{EnvaptError as e}from"../infra/Error.mjs";import{Envapter as t}from"./Envapter.mjs";const n=[`envPaths`,`baseDir`,`envFileOptions`,`configureProfiles`,`resetProfiles`];function r(t){throw new e(306,`Envapter.${t} requires a filesystem-backed source and is not available in this build.`)}function i(){for(let e of n)Object.defineProperty(t,e,{configurable:!0,get:()=>r(e),set:()=>r(e)})}export{i as installFileApiStubs};
1
+ import{EnvaptError as e}from"../infra/Error.mjs";const t=[`envPaths`,`baseDir`,`envFileOptions`,`configureProfiles`,`resetProfiles`];function n(t){throw new e(306,`Envapter.${t} requires a filesystem-backed source and is not available in this build.`)}function r(e){for(let r of t)Object.defineProperty(e,r,{configurable:!0,get:()=>n(r),set:()=>n(r)})}export{r as installFileApiStubs};
2
2
  //# sourceMappingURL=installFileApiStubs.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"installFileApiStubs.mjs","names":[],"sources":["../../../src/engine/installFileApiStubs.ts"],"sourcesContent":["import { Envapter } from './Envapter';\nimport { EnvaptError, EnvaptErrorCodes } from '../infra/Error';\n\nconst FILE_ONLY_APIS = ['envPaths', 'baseDir', 'envFileOptions', 'configureProfiles', 'resetProfiles'] as const;\n\nfunction fileApiUnsupported(api: string): never {\n throw new EnvaptError(\n EnvaptErrorCodes.FileApiUnsupported,\n `Envapter.${api} requires a filesystem-backed source and is not available in this build.`\n );\n}\n\n// Call from each entry's own top level, not via `export * from` another entry: the build tree-shakes a\n// re-exported entry's side effect away, which would silently drop these stubs from that entry's output.\nexport function installFileApiStubs(): void {\n for (const api of FILE_ONLY_APIS) {\n Object.defineProperty(Envapter, api, {\n configurable: true,\n get: () => fileApiUnsupported(api),\n set: () => fileApiUnsupported(api)\n });\n }\n}\n"],"mappings":"2FAGA,MAAM,EAAiB,CAAC,WAAY,UAAW,iBAAkB,oBAAqB,eAAe,EAErG,SAAS,EAAmB,EAAoB,CAC5C,MAAM,IAAI,EAAA,IAEN,YAAY,EAAI,yEACpB,CACJ,CAIA,SAAgB,GAA4B,CACxC,IAAK,IAAM,KAAO,EACd,OAAO,eAAe,EAAU,EAAK,CACjC,aAAc,GACd,QAAW,EAAmB,CAAG,EACjC,QAAW,EAAmB,CAAG,CACrC,CAAC,CAET"}
1
+ {"version":3,"file":"installFileApiStubs.mjs","names":[],"sources":["../../../src/engine/installFileApiStubs.ts"],"sourcesContent":["import { EnvaptError, EnvaptErrorCodes } from '../infra/Error';\n\nconst FILE_ONLY_APIS = ['envPaths', 'baseDir', 'envFileOptions', 'configureProfiles', 'resetProfiles'] as const;\n\nfunction fileApiUnsupported(api: string): never {\n throw new EnvaptError(\n EnvaptErrorCodes.FileApiUnsupported,\n `Envapter.${api} requires a filesystem-backed source and is not available in this build.`\n );\n}\n\n// Call from a class static block, not an entry top level, or the build drops the stubs from a\n// re-exported entry as a tree-shaken side effect.\nexport function installFileApiStubs(target: object): void {\n for (const api of FILE_ONLY_APIS) {\n Object.defineProperty(target, api, {\n configurable: true,\n get: () => fileApiUnsupported(api),\n set: () => fileApiUnsupported(api)\n });\n }\n}\n"],"mappings":"iDAEA,MAAM,EAAiB,CAAC,WAAY,UAAW,iBAAkB,oBAAqB,eAAe,EAErG,SAAS,EAAmB,EAAoB,CAC5C,MAAM,IAAI,EAAA,IAEN,YAAY,EAAI,yEACpB,CACJ,CAIA,SAAgB,EAAoB,EAAsB,CACtD,IAAK,IAAM,KAAO,EACd,OAAO,eAAe,EAAQ,EAAK,CAC/B,aAAc,GACd,QAAW,EAAmB,CAAG,EACjC,QAAW,EAAmB,CAAG,CACrC,CAAC,CAET"}
@@ -1,2 +1 @@
1
- import{Converters as e,isArrayOf as t}from"./converters/Converters.mjs";import{EnvaptError as n,EnvaptErrorCodes as r}from"./infra/Error.mjs";import{Environment as i}from"./core/EnvironmentMethods.mjs";import{Envapter as a}from"./engine/Envapter.mjs";import{installFileApiStubs as o}from"./engine/installFileApiStubs.mjs";import{ManualEnvSource as s}from"./sources/ManualEnvSource.mjs";import{WorkerEnvSource as c}from"./sources/WorkerEnvSource.mjs";import{Envapt as l}from"./decorators/modern/Envapt.mjs";import{EnvBool as u,EnvNum as d,EnvStr as f,EnvTime as p,EnvUrl as m}from"./decorators/modern/SugarDecorators.mjs";o();export{e as Converters,u as EnvBool,d as EnvNum,f as EnvStr,p as EnvTime,m as EnvUrl,l as Envapt,n as EnvaptError,r as EnvaptErrorCodes,a as Envapter,i as Environment,s as ManualEnvSource,c as WorkerEnvSource,t as isArrayOf};
2
- //# sourceMappingURL=index.mjs.map
1
+ import{Converters as e,isArrayOf as t}from"./converters/Converters.mjs";import{EnvaptError as n,EnvaptErrorCodes as r}from"./infra/Error.mjs";import{Environment as i}from"./core/EnvironmentMethods.mjs";import{ManualEnvSource as a}from"./sources/ManualEnvSource.mjs";import{WorkerEnvSource as o}from"./sources/WorkerEnvSource.mjs";import{Envapt as s}from"./decorators/modern/Envapt.mjs";import{EnvBool as c,EnvNum as l,EnvStr as u,EnvTime as d,EnvUrl as f}from"./decorators/modern/SugarDecorators.mjs";import{PortableEnvapter as p}from"./engine/PortableEnvapter.mjs";export{e as Converters,c as EnvBool,l as EnvNum,u as EnvStr,d as EnvTime,f as EnvUrl,s as Envapt,n as EnvaptError,r as EnvaptErrorCodes,p as Envapter,i as Environment,a as ManualEnvSource,o as WorkerEnvSource,t as isArrayOf};
@@ -1,5 +1,3 @@
1
- import __tsdown_shims_path from 'node:path';
2
- import __tsdown_shims_url from 'node:url';
3
1
  import { EnvFileOptions } from "../infra/Dotenv.mjs";
4
2
  import { ProfilesConfig } from "../types/Options.mjs";
5
3
  import { Envapter } from "./Envapter.mjs";
@@ -0,0 +1,14 @@
1
+ import { Envapter } from "./Envapter.mjs";
2
+
3
+ //#region src/engine/PortableEnvapter.d.ts
4
+ /**
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.
9
+ * @public
10
+ */
11
+ declare class PortableEnvapter extends Envapter {}
12
+ //#endregion
13
+ export { PortableEnvapter };
14
+ //# sourceMappingURL=PortableEnvapter.d.mts.map
@@ -1,5 +1,3 @@
1
- import __tsdown_shims_path from 'node:path';
2
- import __tsdown_shims_url from 'node:url';
3
1
  import { DebugLevel } from "./infra/Debug.mjs";
4
2
  import { EnvFileOptions } from "./infra/Dotenv.mjs";
5
3
  import { ArrayElement, ArrayOf, ConverterToken, Converters, CustomElementConverter, isArrayOf } from "./converters/Converters.mjs";
@@ -9,10 +9,10 @@ import { EnvProfile, EnvaptOptions, ProfilesConfig } from "./types/Options.mjs";
9
9
  import { EnvKeyInput } from "./types/Env.mjs";
10
10
  import { BareEnvSource, EnvSource, FileEnvSource } from "./types/Source.mjs";
11
11
  import { EnvaptAccessorDecorator, EnvaptFieldDecorator } from "./types/Decorator.mjs";
12
- import { Envapter } from "./engine/Envapter.mjs";
13
12
  import { ManualEnvSource } from "./sources/ManualEnvSource.mjs";
14
13
  import { WorkerEnvSource } from "./sources/WorkerEnvSource.mjs";
15
14
  import { EnvaptError, EnvaptErrorCodes } from "./infra/Error.mjs";
16
15
  import { Envapt } from "./decorators/modern/Envapt.mjs";
17
16
  import { EnvBool, EnvNum, EnvStr, EnvTime, EnvUrl } from "./decorators/modern/SugarDecorators.mjs";
18
- 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, Envapter, Environment, type Err, type FileEnvSource, type InferConverterFallbackType, type InferConverterReturnType, type InferPrimitiveReturnType, type InferSchemaInput, type InferSchemaOutput, type JsonValue, ManualEnvSource, type MapOfConverterFunctions, type PrimitiveConstructor, type ProfilesConfig, type SchemaConstraint, type SchemaMustBeSync, type StandardSchemaV1, type TimeFallback, type TimeUnit, WorkerEnvSource, isArrayOf };
17
+ import { PortableEnvapter } from "./engine/PortableEnvapter.mjs";
18
+ 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, type PrimitiveConstructor, type ProfilesConfig, type SchemaConstraint, type SchemaMustBeSync, type StandardSchemaV1, type TimeFallback, type TimeUnit, WorkerEnvSource, isArrayOf };
@@ -1,4 +1,4 @@
1
- import { FileEnvSource } from "../types/Source.cjs";
1
+ import { FileEnvSource } from "../types/Source.mjs";
2
2
 
3
3
  //#region src/sources/NodeEnvSource.d.ts
4
4
  /**
@@ -17,4 +17,4 @@ declare class NodeEnvSource implements FileEnvSource {
17
17
  }
18
18
  //#endregion
19
19
  export { NodeEnvSource };
20
- //# sourceMappingURL=NodeEnvSource.d.cts.map
20
+ //# sourceMappingURL=NodeEnvSource.d.mts.map
@@ -0,0 +1,2 @@
1
+ import{Envapter as e}from"./Envapter.mjs";import{installFileApiStubs as t}from"./installFileApiStubs.mjs";var n=class n extends e{static{t(n)}};export{n as PortableEnvapter};
2
+ //# sourceMappingURL=PortableEnvapter.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"PortableEnvapter.mjs","names":[],"sources":["../../../src/engine/PortableEnvapter.ts"],"sourcesContent":["import { Envapter } from './Envapter';\nimport { installFileApiStubs } from './installFileApiStubs';\n\n/**\n * The browser/Workers facade. {@link Envapter} with the filesystem-only configuration APIs\n * (`envPaths`, `baseDir`, `envFileOptions`, `configureProfiles`, `resetProfiles`) stubbed to throw\n * {@link EnvaptError}. The portable types omit those APIs, so the stubs only guard JS callers that\n * bypass the types.\n * @public\n */\nexport class PortableEnvapter extends Envapter {\n // A static block (not a top-level statement in a separate entry) keeps the stub install intrinsic to\n // this class, so it tree-shakes out of a leaf import and needs no sideEffects entry. Depends on the\n // es2022 native static-block emit, lowering the target defeats it.\n static {\n installFileApiStubs(PortableEnvapter);\n }\n}\n"],"mappings":"0GAUA,IAAa,EAAb,MAAa,UAAyB,CAAS,CAI3C,OACI,EAAoB,CAAgB,CACxC,CACJ"}
@@ -1,2 +1,2 @@
1
- import{EnvaptError as e}from"../infra/Error.mjs";import{Envapter as t}from"./Envapter.mjs";const n=[`envPaths`,`baseDir`,`envFileOptions`,`configureProfiles`,`resetProfiles`];function r(t){throw new e(306,`Envapter.${t} requires a filesystem-backed source and is not available in this build.`)}function i(){for(let e of n)Object.defineProperty(t,e,{configurable:!0,get:()=>r(e),set:()=>r(e)})}export{i as installFileApiStubs};
1
+ import{EnvaptError as e}from"../infra/Error.mjs";const t=[`envPaths`,`baseDir`,`envFileOptions`,`configureProfiles`,`resetProfiles`];function n(t){throw new e(306,`Envapter.${t} requires a filesystem-backed source and is not available in this build.`)}function r(e){for(let r of t)Object.defineProperty(e,r,{configurable:!0,get:()=>n(r),set:()=>n(r)})}export{r as installFileApiStubs};
2
2
  //# sourceMappingURL=installFileApiStubs.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"installFileApiStubs.mjs","names":[],"sources":["../../../src/engine/installFileApiStubs.ts"],"sourcesContent":["import { Envapter } from './Envapter';\nimport { EnvaptError, EnvaptErrorCodes } from '../infra/Error';\n\nconst FILE_ONLY_APIS = ['envPaths', 'baseDir', 'envFileOptions', 'configureProfiles', 'resetProfiles'] as const;\n\nfunction fileApiUnsupported(api: string): never {\n throw new EnvaptError(\n EnvaptErrorCodes.FileApiUnsupported,\n `Envapter.${api} requires a filesystem-backed source and is not available in this build.`\n );\n}\n\n// Call from each entry's own top level, not via `export * from` another entry: the build tree-shakes a\n// re-exported entry's side effect away, which would silently drop these stubs from that entry's output.\nexport function installFileApiStubs(): void {\n for (const api of FILE_ONLY_APIS) {\n Object.defineProperty(Envapter, api, {\n configurable: true,\n get: () => fileApiUnsupported(api),\n set: () => fileApiUnsupported(api)\n });\n }\n}\n"],"mappings":"2FAGA,MAAM,EAAiB,CAAC,WAAY,UAAW,iBAAkB,oBAAqB,eAAe,EAErG,SAAS,EAAmB,EAAoB,CAC5C,MAAM,IAAI,EAAA,IAEN,YAAY,EAAI,yEACpB,CACJ,CAIA,SAAgB,GAA4B,CACxC,IAAK,IAAM,KAAO,EACd,OAAO,eAAe,EAAU,EAAK,CACjC,aAAc,GACd,QAAW,EAAmB,CAAG,EACjC,QAAW,EAAmB,CAAG,CACrC,CAAC,CAET"}
1
+ {"version":3,"file":"installFileApiStubs.mjs","names":[],"sources":["../../../src/engine/installFileApiStubs.ts"],"sourcesContent":["import { EnvaptError, EnvaptErrorCodes } from '../infra/Error';\n\nconst FILE_ONLY_APIS = ['envPaths', 'baseDir', 'envFileOptions', 'configureProfiles', 'resetProfiles'] as const;\n\nfunction fileApiUnsupported(api: string): never {\n throw new EnvaptError(\n EnvaptErrorCodes.FileApiUnsupported,\n `Envapter.${api} requires a filesystem-backed source and is not available in this build.`\n );\n}\n\n// Call from a class static block, not an entry top level, or the build drops the stubs from a\n// re-exported entry as a tree-shaken side effect.\nexport function installFileApiStubs(target: object): void {\n for (const api of FILE_ONLY_APIS) {\n Object.defineProperty(target, api, {\n configurable: true,\n get: () => fileApiUnsupported(api),\n set: () => fileApiUnsupported(api)\n });\n }\n}\n"],"mappings":"iDAEA,MAAM,EAAiB,CAAC,WAAY,UAAW,iBAAkB,oBAAqB,eAAe,EAErG,SAAS,EAAmB,EAAoB,CAC5C,MAAM,IAAI,EAAA,IAEN,YAAY,EAAI,yEACpB,CACJ,CAIA,SAAgB,EAAoB,EAAsB,CACtD,IAAK,IAAM,KAAO,EACd,OAAO,eAAe,EAAQ,EAAK,CAC/B,aAAc,GACd,QAAW,EAAmB,CAAG,EACjC,QAAW,EAAmB,CAAG,CACrC,CAAC,CAET"}
@@ -1,2 +1 @@
1
- import{Converters as e,isArrayOf as t}from"./converters/Converters.mjs";import{EnvaptError as n,EnvaptErrorCodes as r}from"./infra/Error.mjs";import{Environment as i}from"./core/EnvironmentMethods.mjs";import{Envapter as a}from"./engine/Envapter.mjs";import{installFileApiStubs as o}from"./engine/installFileApiStubs.mjs";import{ManualEnvSource as s}from"./sources/ManualEnvSource.mjs";import{WorkerEnvSource as c}from"./sources/WorkerEnvSource.mjs";import{Envapt as l}from"./decorators/modern/Envapt.mjs";import{EnvBool as u,EnvNum as d,EnvStr as f,EnvTime as p,EnvUrl as m}from"./decorators/modern/SugarDecorators.mjs";o();export{e as Converters,u as EnvBool,d as EnvNum,f as EnvStr,p as EnvTime,m as EnvUrl,l as Envapt,n as EnvaptError,r as EnvaptErrorCodes,a as Envapter,i as Environment,s as ManualEnvSource,c as WorkerEnvSource,t as isArrayOf};
2
- //# sourceMappingURL=index.mjs.map
1
+ import{Converters as e,isArrayOf as t}from"./converters/Converters.mjs";import{EnvaptError as n,EnvaptErrorCodes as r}from"./infra/Error.mjs";import{Environment as i}from"./core/EnvironmentMethods.mjs";import{ManualEnvSource as a}from"./sources/ManualEnvSource.mjs";import{WorkerEnvSource as o}from"./sources/WorkerEnvSource.mjs";import{Envapt as s}from"./decorators/modern/Envapt.mjs";import{EnvBool as c,EnvNum as l,EnvStr as u,EnvTime as d,EnvUrl as f}from"./decorators/modern/SugarDecorators.mjs";import{PortableEnvapter as p}from"./engine/PortableEnvapter.mjs";export{e as Converters,c as EnvBool,l as EnvNum,u as EnvStr,d as EnvTime,f as EnvUrl,s as Envapt,n as EnvaptError,r as EnvaptErrorCodes,p as Envapter,i as Environment,a as ManualEnvSource,o as WorkerEnvSource,t as isArrayOf};
package/package.json CHANGED
@@ -1,84 +1,84 @@
1
1
  {
2
2
  "name": "envapt",
3
3
  "type": "module",
4
- "version": "7.0.0-next.0",
4
+ "version": "7.0.0-next.2",
5
5
  "description": "Type-safe config for TypeScript. Read typed values from any source, process.env, .env files, Cloudflare Workers bindings, browser bundles, or any object you supply. Zero runtime dependencies, one API across Node, Bun, Deno, Workers, and the browser. TC39 accessor decorators (legacy decorators at envapt/legacy), converters, and Standard Schema (zod/valibot/arktype) validation.",
6
- "types": "./dist/node/index.d.mts",
6
+ "types": "./dist/types/index.d.mts",
7
7
  "exports": {
8
8
  ".": {
9
9
  "workerd": {
10
- "types": "./dist/workerd/index.d.mts",
10
+ "types": "./dist/types/index.portable.d.mts",
11
11
  "default": "./dist/workerd/index.mjs"
12
12
  },
13
13
  "browser": {
14
- "types": "./dist/browser/index.d.mts",
14
+ "types": "./dist/types/index.portable.d.mts",
15
15
  "default": "./dist/browser/index.mjs"
16
16
  },
17
17
  "node": {
18
18
  "import": {
19
- "types": "./dist/node/index.d.mts",
19
+ "types": "./dist/types/index.d.mts",
20
20
  "default": "./dist/node/index.mjs"
21
21
  },
22
22
  "require": {
23
- "types": "./dist/node/index.d.cts",
23
+ "types": "./dist/types/index.d.mts",
24
24
  "default": "./dist/node/index.cjs"
25
25
  }
26
26
  },
27
27
  "default": {
28
28
  "import": {
29
- "types": "./dist/node/index.d.mts",
29
+ "types": "./dist/types/index.d.mts",
30
30
  "default": "./dist/node/index.mjs"
31
31
  },
32
32
  "require": {
33
- "types": "./dist/node/index.d.cts",
33
+ "types": "./dist/types/index.d.mts",
34
34
  "default": "./dist/node/index.cjs"
35
35
  }
36
36
  }
37
37
  },
38
38
  "./workerd": {
39
- "types": "./dist/workerd/index.d.mts",
39
+ "types": "./dist/types/index.portable.d.mts",
40
40
  "default": "./dist/workerd/index.mjs"
41
41
  },
42
42
  "./browser": {
43
- "types": "./dist/browser/index.d.mts",
43
+ "types": "./dist/types/index.portable.d.mts",
44
44
  "default": "./dist/browser/index.mjs"
45
45
  },
46
46
  "./config": {
47
47
  "import": {
48
- "types": "./dist/node/config.d.mts",
48
+ "types": "./dist/types/config.d.mts",
49
49
  "default": "./dist/node/config.mjs"
50
50
  },
51
51
  "require": {
52
- "types": "./dist/node/config.d.cts",
52
+ "types": "./dist/types/config.d.mts",
53
53
  "default": "./dist/node/config.cjs"
54
54
  }
55
55
  },
56
56
  "./legacy": {
57
57
  "workerd": {
58
- "types": "./dist/workerd/legacy.d.mts",
58
+ "types": "./dist/types/legacy.d.mts",
59
59
  "default": "./dist/workerd/legacy.mjs"
60
60
  },
61
61
  "browser": {
62
- "types": "./dist/browser/legacy.d.mts",
62
+ "types": "./dist/types/legacy.d.mts",
63
63
  "default": "./dist/browser/legacy.mjs"
64
64
  },
65
65
  "node": {
66
66
  "import": {
67
- "types": "./dist/node/legacy.d.mts",
67
+ "types": "./dist/types/legacy.d.mts",
68
68
  "default": "./dist/node/legacy.mjs"
69
69
  },
70
70
  "require": {
71
- "types": "./dist/node/legacy.d.cts",
71
+ "types": "./dist/types/legacy.d.mts",
72
72
  "default": "./dist/node/legacy.cjs"
73
73
  }
74
74
  },
75
75
  "default": {
76
76
  "import": {
77
- "types": "./dist/node/legacy.d.mts",
77
+ "types": "./dist/types/legacy.d.mts",
78
78
  "default": "./dist/node/legacy.mjs"
79
79
  },
80
80
  "require": {
81
- "types": "./dist/node/legacy.d.cts",
81
+ "types": "./dist/types/legacy.d.mts",
82
82
  "default": "./dist/node/legacy.cjs"
83
83
  }
84
84
  }
@@ -86,12 +86,13 @@
86
86
  },
87
87
  "sideEffects": [
88
88
  "./dist/node/config.cjs",
89
- "./dist/node/config.mjs",
90
- "./dist/browser/index.mjs",
91
- "./dist/workerd/index.mjs"
89
+ "./dist/node/config.mjs"
92
90
  ],
93
91
  "files": [
94
- "dist",
92
+ "dist/**/*.mjs",
93
+ "dist/**/*.cjs",
94
+ "dist/**/*.map",
95
+ "dist/types",
95
96
  "NOTICE.md",
96
97
  "LICENSE",
97
98
  "README.md",
@@ -168,6 +169,8 @@
168
169
  "test:workers": "tsc --noEmit -p tests/workers/tsconfig.json && vitest run --config vitest.workers.config.ts",
169
170
  "test:browser": "tsc --noEmit -p tests/browser/tsconfig.json && vitest run --config vitest.browser.config.ts",
170
171
  "test:consumer-build": "node tests/consumer-build/run.mjs",
172
+ "test:tree-shaking": "node tests/tree-shaking/run.mjs",
173
+ "test:exports-dedup": "node tests/exports-dedup/run.mjs",
171
174
  "test:tsc-emit": "node tests/tsc-emit/run.mjs",
172
175
  "test:stage3-emit": "node tests/stage3-emit/run.mjs",
173
176
  "test:all": "node ../../scripts/test-all.mjs",
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.mjs","names":[],"sources":["../../src/browser.ts"],"sourcesContent":["import { Envapter } from './engine/Envapter';\nimport { installFileApiStubs } from './engine/installFileApiStubs';\n\nexport * from './common';\nexport * from './decorators/modern';\nexport { Envapter };\n\ninstallFileApiStubs();\n"],"mappings":"6mBAOA,EAAoB"}
@@ -1,2 +0,0 @@
1
- import __tsdown_shims_path from 'node:path';
2
- import __tsdown_shims_url from 'node:url';
@@ -1,93 +0,0 @@
1
- //#region src/converters/Converters.d.ts
2
- declare const SCALAR: {
3
- readonly String: "string";
4
- readonly Number: "number";
5
- readonly Boolean: "boolean";
6
- readonly Bigint: "bigint";
7
- readonly Symbol: "symbol";
8
- readonly Integer: "integer";
9
- readonly Float: "float";
10
- readonly Json: "json";
11
- readonly Url: "url";
12
- readonly Regexp: "regexp";
13
- readonly Date: "date";
14
- readonly Time: "time";
15
- };
16
- /**
17
- * String tokens for every built-in scalar converter.
18
- * @public
19
- */
20
- type ConverterToken = (typeof SCALAR)[keyof typeof SCALAR];
21
- /**
22
- * Custom element converter for use inside {@link Converters.array}. Receives the trimmed,
23
- * non-empty raw string for one array slot and returns the parsed value.
24
- * @public
25
- */
26
- type CustomElementConverter<TReturn = unknown> = (raw: string) => TReturn;
27
- /**
28
- * Valid element converters for {@link Converters.array}: any scalar token except
29
- * `json` and `regexp` (those don't compose as array elements), or a custom function.
30
- * @public
31
- */
32
- type ArrayElement = Exclude<ConverterToken, 'json' | 'regexp'> | CustomElementConverter;
33
- /**
34
- * Phantom-branded token produced by {@link Converters.array}. The `T` type parameter carries
35
- * the element converter through any variable indirection so inference survives. The
36
- * `__envaptKind` discriminant is present at runtime for dispatch.
37
- * @public
38
- */
39
- interface ArrayOf<TElement extends ArrayElement = ArrayElement> {
40
- readonly __envaptKind: 'array';
41
- readonly of: TElement;
42
- readonly delimiter: string;
43
- }
44
- /**
45
- * Runtime type guard for tokens produced by {@link Converters.array}.
46
- * @internal
47
- */
48
- declare function isArrayOf(value: unknown): value is ArrayOf;
49
- type ArrayScalarElement = Exclude<ConverterToken, 'json' | 'regexp'>;
50
- declare function buildArrayConverter<TReturn>(opts: {
51
- of: CustomElementConverter<TReturn>;
52
- delimiter?: string;
53
- }): ArrayOf<CustomElementConverter<TReturn>>;
54
- declare function buildArrayConverter<TToken extends ArrayScalarElement>(opts: {
55
- of: TToken;
56
- delimiter?: string;
57
- }): ArrayOf<TToken>;
58
- declare function buildArrayConverter(opts?: {
59
- delimiter?: string;
60
- }): ArrayOf<'string'>;
61
- /**
62
- * Built-in converters for environment variables. Use the scalar tokens (e.g. `Converters.Number`)
63
- * for primitive types and the {@link Converters.array} builder for delimited lists.
64
- *
65
- * @example
66
- * ```ts
67
- * \@Envapt('PORT', { converter: Converters.Number, fallback: 3000 })
68
- * static readonly port: number;
69
- *
70
- * \@Envapt('TAGS', { converter: Converters.array({ of: Converters.String, delimiter: ' ' }) })
71
- * static readonly tags: string[];
72
- * ```
73
- *
74
- * @public
75
- */
76
- declare const Converters: {
77
- readonly array: typeof buildArrayConverter;
78
- readonly String: "string";
79
- readonly Number: "number";
80
- readonly Boolean: "boolean";
81
- readonly Bigint: "bigint";
82
- readonly Symbol: "symbol";
83
- readonly Integer: "integer";
84
- readonly Float: "float";
85
- readonly Json: "json";
86
- readonly Url: "url";
87
- readonly Regexp: "regexp";
88
- readonly Date: "date";
89
- readonly Time: "time";
90
- };
91
- //#endregion
92
- export { ArrayElement, ArrayOf, ConverterToken, Converters, CustomElementConverter, isArrayOf };
93
- //# sourceMappingURL=Converters.d.cts.map
@@ -1,95 +0,0 @@
1
- import __tsdown_shims_path from 'node:path';
2
- import __tsdown_shims_url from 'node:url';
3
- //#region src/converters/Converters.d.ts
4
- declare const SCALAR: {
5
- readonly String: "string";
6
- readonly Number: "number";
7
- readonly Boolean: "boolean";
8
- readonly Bigint: "bigint";
9
- readonly Symbol: "symbol";
10
- readonly Integer: "integer";
11
- readonly Float: "float";
12
- readonly Json: "json";
13
- readonly Url: "url";
14
- readonly Regexp: "regexp";
15
- readonly Date: "date";
16
- readonly Time: "time";
17
- };
18
- /**
19
- * String tokens for every built-in scalar converter.
20
- * @public
21
- */
22
- type ConverterToken = (typeof SCALAR)[keyof typeof SCALAR];
23
- /**
24
- * Custom element converter for use inside {@link Converters.array}. Receives the trimmed,
25
- * non-empty raw string for one array slot and returns the parsed value.
26
- * @public
27
- */
28
- type CustomElementConverter<TReturn = unknown> = (raw: string) => TReturn;
29
- /**
30
- * Valid element converters for {@link Converters.array}: any scalar token except
31
- * `json` and `regexp` (those don't compose as array elements), or a custom function.
32
- * @public
33
- */
34
- type ArrayElement = Exclude<ConverterToken, 'json' | 'regexp'> | CustomElementConverter;
35
- /**
36
- * Phantom-branded token produced by {@link Converters.array}. The `T` type parameter carries
37
- * the element converter through any variable indirection so inference survives. The
38
- * `__envaptKind` discriminant is present at runtime for dispatch.
39
- * @public
40
- */
41
- interface ArrayOf<TElement extends ArrayElement = ArrayElement> {
42
- readonly __envaptKind: 'array';
43
- readonly of: TElement;
44
- readonly delimiter: string;
45
- }
46
- /**
47
- * Runtime type guard for tokens produced by {@link Converters.array}.
48
- * @internal
49
- */
50
- declare function isArrayOf(value: unknown): value is ArrayOf;
51
- type ArrayScalarElement = Exclude<ConverterToken, 'json' | 'regexp'>;
52
- declare function buildArrayConverter<TReturn>(opts: {
53
- of: CustomElementConverter<TReturn>;
54
- delimiter?: string;
55
- }): ArrayOf<CustomElementConverter<TReturn>>;
56
- declare function buildArrayConverter<TToken extends ArrayScalarElement>(opts: {
57
- of: TToken;
58
- delimiter?: string;
59
- }): ArrayOf<TToken>;
60
- declare function buildArrayConverter(opts?: {
61
- delimiter?: string;
62
- }): ArrayOf<'string'>;
63
- /**
64
- * Built-in converters for environment variables. Use the scalar tokens (e.g. `Converters.Number`)
65
- * for primitive types and the {@link Converters.array} builder for delimited lists.
66
- *
67
- * @example
68
- * ```ts
69
- * \@Envapt('PORT', { converter: Converters.Number, fallback: 3000 })
70
- * static readonly port: number;
71
- *
72
- * \@Envapt('TAGS', { converter: Converters.array({ of: Converters.String, delimiter: ' ' }) })
73
- * static readonly tags: string[];
74
- * ```
75
- *
76
- * @public
77
- */
78
- declare const Converters: {
79
- readonly array: typeof buildArrayConverter;
80
- readonly String: "string";
81
- readonly Number: "number";
82
- readonly Boolean: "boolean";
83
- readonly Bigint: "bigint";
84
- readonly Symbol: "symbol";
85
- readonly Integer: "integer";
86
- readonly Float: "float";
87
- readonly Json: "json";
88
- readonly Url: "url";
89
- readonly Regexp: "regexp";
90
- readonly Date: "date";
91
- readonly Time: "time";
92
- };
93
- //#endregion
94
- export { ArrayElement, ArrayOf, ConverterToken, Converters, CustomElementConverter, isArrayOf };
95
- //# sourceMappingURL=Converters.d.mts.map
@@ -1,25 +0,0 @@
1
- import { EnvaptConverter } from "../types/Conversion.cjs";
2
- import { StandardSchemaV1 } from "../infra/StandardSchema.cjs";
3
- import { EnvKeyInput, EnvapterService } from "../types/Env.cjs";
4
-
5
- //#region src/converters/ValueConverter.d.ts
6
- /**
7
- * Convert a resolved environment value to its declared type via built-in, primitive, array,
8
- * custom, or Standard Schema converters.
9
- * @internal
10
- */
11
- declare class ValueConverter {
12
- private readonly envService;
13
- constructor(envService: EnvapterService);
14
- convertValue<TFallback>(key: EnvKeyInput, fallback: TFallback | undefined, converter: EnvaptConverter<TFallback> | undefined, hasFallback: boolean): TFallback | null | undefined;
15
- private processFallbackForConverter;
16
- private convertPrimitiveToString;
17
- private processBuiltInConverter;
18
- private processArrayConverter;
19
- private processCustomConverter;
20
- private resolveConverter;
21
- convertWithSchema(key: EnvKeyInput, schema: StandardSchemaV1, fallback: unknown, hasFallback: boolean): unknown;
22
- }
23
- //#endregion
24
- export { ValueConverter };
25
- //# sourceMappingURL=ValueConverter.d.cts.map
@@ -1,27 +0,0 @@
1
- import __tsdown_shims_path from 'node:path';
2
- import __tsdown_shims_url from 'node:url';
3
- import { EnvaptConverter } from "../types/Conversion.mjs";
4
- import { StandardSchemaV1 } from "../infra/StandardSchema.mjs";
5
- import { EnvKeyInput, EnvapterService } from "../types/Env.mjs";
6
-
7
- //#region src/converters/ValueConverter.d.ts
8
- /**
9
- * Convert a resolved environment value to its declared type via built-in, primitive, array,
10
- * custom, or Standard Schema converters.
11
- * @internal
12
- */
13
- declare class ValueConverter {
14
- private readonly envService;
15
- constructor(envService: EnvapterService);
16
- convertValue<TFallback>(key: EnvKeyInput, fallback: TFallback | undefined, converter: EnvaptConverter<TFallback> | undefined, hasFallback: boolean): TFallback | null | undefined;
17
- private processFallbackForConverter;
18
- private convertPrimitiveToString;
19
- private processBuiltInConverter;
20
- private processArrayConverter;
21
- private processCustomConverter;
22
- private resolveConverter;
23
- convertWithSchema(key: EnvKeyInput, schema: StandardSchemaV1, fallback: unknown, hasFallback: boolean): unknown;
24
- }
25
- //#endregion
26
- export { ValueConverter };
27
- //# sourceMappingURL=ValueConverter.d.mts.map
@@ -1,76 +0,0 @@
1
- import { ArrayOf } from "../converters/Converters.cjs";
2
- import { AdvancedConverterReturn, BuiltInConverter, ConditionalReturn, ConverterFunction, InferConverterReturnType, TimeFallback } from "../types/Conversion.cjs";
3
- import { InferSchemaOutput, StandardSchemaV1 } from "../infra/StandardSchema.cjs";
4
- import { SchemaConstraint } from "../types/Schema.cjs";
5
- import { EnvKeyInput } from "../types/Env.cjs";
6
- import { PrimitiveMethods } from "./PrimitiveMethods.cjs";
7
-
8
- //#region src/core/AdvancedMethods.d.ts
9
- interface GetUsingRequiredOptions<TConverter> {
10
- converter: TConverter;
11
- required: true;
12
- }
13
- interface GetWithRequiredOptions<TReturnType> {
14
- converter: ConverterFunction<TReturnType>;
15
- required: true;
16
- }
17
- /**
18
- * Mixin for advanced methods for environment variable conversion using built-in and custom converters
19
- * @internal
20
- */
21
- declare class AdvancedMethods extends PrimitiveMethods {
22
- /**
23
- * Get an environment variable using a built-in converter.
24
- *
25
- * Supports both scalar tokens (e.g. `Converters.Number`) and `ArrayOf<...>` tokens
26
- * produced by `Converters.array(...)`. The key can be a single name or an ordered list;
27
- * the first defined value wins.
28
- */
29
- static getUsing<TFallback extends TimeFallback | undefined = undefined>(key: EnvKeyInput, converter: 'time', fallback?: TFallback): ConditionalReturn<number, TFallback>;
30
- static getUsing<TConverter extends BuiltInConverter | ArrayOf, TFallback = undefined>(key: EnvKeyInput, converter: TConverter, fallback?: TFallback): AdvancedConverterReturn<TConverter, TFallback>;
31
- static getUsing<TReturn>(key: EnvKeyInput, converter: BuiltInConverter | ArrayOf, fallback?: TReturn): TReturn;
32
- static getUsing(key: EnvKeyInput, options: GetUsingRequiredOptions<'time'>): number;
33
- static getUsing<TConverter extends BuiltInConverter | ArrayOf>(key: EnvKeyInput, options: GetUsingRequiredOptions<TConverter>): InferConverterReturnType<TConverter>;
34
- /**
35
- * @see {@link AdvancedMethods.getUsing}
36
- */
37
- getUsing<TFallback extends TimeFallback | undefined = undefined>(key: EnvKeyInput, converter: 'time', fallback?: TFallback): ConditionalReturn<number, TFallback>;
38
- getUsing<TConverter extends BuiltInConverter | ArrayOf, TFallback = undefined>(key: EnvKeyInput, converter: TConverter, fallback?: TFallback): AdvancedConverterReturn<TConverter, TFallback>;
39
- getUsing<TReturn>(key: EnvKeyInput, converter: BuiltInConverter | ArrayOf, fallback?: TReturn): TReturn;
40
- getUsing(key: EnvKeyInput, options: GetUsingRequiredOptions<'time'>): number;
41
- getUsing<TConverter extends BuiltInConverter | ArrayOf>(key: EnvKeyInput, options: GetUsingRequiredOptions<TConverter>): InferConverterReturnType<TConverter>;
42
- /**
43
- * Get an environment variable using a custom converter function.
44
- * Accepts a single key or an ordered list for automatic fallback.
45
- */
46
- static getWith<TReturnType, TFallback extends TReturnType | undefined = undefined>(key: EnvKeyInput, converter: ConverterFunction<TReturnType>, fallback?: TFallback): ConditionalReturn<TReturnType, TFallback>;
47
- static getWith<TReturnType>(key: EnvKeyInput, options: GetWithRequiredOptions<TReturnType>): TReturnType;
48
- /**
49
- * @see {@link AdvancedMethods.getWith}
50
- */
51
- getWith<TReturnType, TFallback extends TReturnType | undefined = undefined>(key: EnvKeyInput, converter: ConverterFunction<TReturnType>, fallback?: TFallback): ConditionalReturn<TReturnType, TFallback>;
52
- getWith<TReturnType>(key: EnvKeyInput, options: GetWithRequiredOptions<TReturnType>): TReturnType;
53
- /**
54
- * Validate an environment variable through a {@link StandardSchemaV1}-conformant schema
55
- * (zod, valibot, arktype, etc). Throws `MissingEnvValue` if the env value is absent and
56
- * no fallback is provided. The fallback, when provided, is returned as-is on missing;
57
- * it does NOT pass through the schema (mirrors custom-converter behavior).
58
- *
59
- * Synchronous schemas only. A Promise-returning `validate` triggers an
60
- * `InvalidUserDefinedConfig` throw at the call site.
61
- *
62
- * @example
63
- * ```ts
64
- * import { z } from 'zod';
65
- * const port = Envapter.parse('PORT', z.coerce.number().min(1024).max(65535), 3000);
66
- * ```
67
- */
68
- static parse<Schema extends StandardSchemaV1>(key: EnvKeyInput, schema: SchemaConstraint<Schema>, fallback?: InferSchemaOutput<Schema>): InferSchemaOutput<Schema>;
69
- /**
70
- * @see {@link AdvancedMethods.parse}
71
- */
72
- parse<Schema extends StandardSchemaV1>(key: EnvKeyInput, schema: SchemaConstraint<Schema>, fallback?: InferSchemaOutput<Schema>): InferSchemaOutput<Schema>;
73
- }
74
- //#endregion
75
- export { AdvancedMethods };
76
- //# sourceMappingURL=AdvancedMethods.d.cts.map