@c9up/ream 0.1.25 → 0.1.27

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 (302) hide show
  1. package/README.md +65 -0
  2. package/dist/ConfigLoader.d.ts +46 -5
  3. package/dist/ConfigLoader.d.ts.map +1 -1
  4. package/dist/ConfigLoader.js +60 -9
  5. package/dist/ConfigLoader.js.map +1 -1
  6. package/dist/HttpKernel.d.ts.map +1 -1
  7. package/dist/HttpKernel.js +46 -6
  8. package/dist/HttpKernel.js.map +1 -1
  9. package/dist/Ignitor.d.ts +115 -7
  10. package/dist/Ignitor.d.ts.map +1 -1
  11. package/dist/Ignitor.js +254 -40
  12. package/dist/Ignitor.js.map +1 -1
  13. package/dist/console/BaseCommand.d.ts +217 -0
  14. package/dist/console/BaseCommand.d.ts.map +1 -0
  15. package/dist/console/BaseCommand.js +340 -0
  16. package/dist/console/BaseCommand.js.map +1 -0
  17. package/dist/console/Console.d.ts +86 -0
  18. package/dist/console/Console.d.ts.map +1 -0
  19. package/dist/console/Console.js +134 -0
  20. package/dist/console/Console.js.map +1 -0
  21. package/dist/console/ExceptionHandler.d.ts +28 -0
  22. package/dist/console/ExceptionHandler.d.ts.map +1 -0
  23. package/dist/console/ExceptionHandler.js +76 -0
  24. package/dist/console/ExceptionHandler.js.map +1 -0
  25. package/dist/console/HelpCommand.d.ts +16 -0
  26. package/dist/console/HelpCommand.d.ts.map +1 -0
  27. package/dist/console/HelpCommand.js +40 -0
  28. package/dist/console/HelpCommand.js.map +1 -0
  29. package/dist/console/IndexGenerator.d.ts +24 -0
  30. package/dist/console/IndexGenerator.d.ts.map +1 -0
  31. package/dist/console/IndexGenerator.js +65 -0
  32. package/dist/console/IndexGenerator.js.map +1 -0
  33. package/dist/console/Kernel.d.ts +298 -0
  34. package/dist/console/Kernel.d.ts.map +1 -0
  35. package/dist/console/Kernel.js +1120 -0
  36. package/dist/console/Kernel.js.map +1 -0
  37. package/dist/console/ListCommand.d.ts +18 -0
  38. package/dist/console/ListCommand.d.ts.map +1 -0
  39. package/dist/console/ListCommand.js +60 -0
  40. package/dist/console/ListCommand.js.map +1 -0
  41. package/dist/console/assertions.d.ts +20 -0
  42. package/dist/console/assertions.d.ts.map +1 -0
  43. package/dist/console/assertions.js +84 -0
  44. package/dist/console/assertions.js.map +1 -0
  45. package/dist/console/cliui.d.ts +248 -0
  46. package/dist/console/cliui.d.ts.map +1 -0
  47. package/dist/console/cliui.js +587 -0
  48. package/dist/console/cliui.js.map +1 -0
  49. package/dist/console/decorators.d.ts +90 -0
  50. package/dist/console/decorators.d.ts.map +1 -0
  51. package/dist/console/decorators.js +142 -0
  52. package/dist/console/decorators.js.map +1 -0
  53. package/dist/console/index.d.ts +32 -0
  54. package/dist/console/index.d.ts.map +1 -0
  55. package/dist/console/index.js +24 -0
  56. package/dist/console/index.js.map +1 -0
  57. package/dist/console/loaders.d.ts +52 -0
  58. package/dist/console/loaders.d.ts.map +1 -0
  59. package/dist/console/loaders.js +131 -0
  60. package/dist/console/loaders.js.map +1 -0
  61. package/dist/console/parser.d.ts +86 -0
  62. package/dist/console/parser.d.ts.map +1 -0
  63. package/dist/console/parser.js +440 -0
  64. package/dist/console/parser.js.map +1 -0
  65. package/dist/console/prompts.d.ts +124 -0
  66. package/dist/console/prompts.d.ts.map +1 -0
  67. package/dist/console/prompts.js +356 -0
  68. package/dist/console/prompts.js.map +1 -0
  69. package/dist/console/tracing.d.ts +17 -0
  70. package/dist/console/tracing.d.ts.map +1 -0
  71. package/dist/console/tracing.js +11 -0
  72. package/dist/console/tracing.js.map +1 -0
  73. package/dist/console/types.d.ts +255 -0
  74. package/dist/console/types.d.ts.map +1 -0
  75. package/dist/console/types.js +25 -0
  76. package/dist/console/types.js.map +1 -0
  77. package/dist/console/ui.d.ts +20 -0
  78. package/dist/console/ui.d.ts.map +1 -0
  79. package/dist/console/ui.js +31 -0
  80. package/dist/console/ui.js.map +1 -0
  81. package/dist/console/utils.d.ts +27 -0
  82. package/dist/console/utils.d.ts.map +1 -0
  83. package/dist/console/utils.js +56 -0
  84. package/dist/console/utils.js.map +1 -0
  85. package/dist/container/Container.d.ts +23 -3
  86. package/dist/container/Container.d.ts.map +1 -1
  87. package/dist/container/Container.js +177 -70
  88. package/dist/container/Container.js.map +1 -1
  89. package/dist/container/types.d.ts +14 -2
  90. package/dist/container/types.d.ts.map +1 -1
  91. package/dist/decorators/Service.d.ts +7 -0
  92. package/dist/decorators/Service.d.ts.map +1 -1
  93. package/dist/decorators/Service.js +23 -3
  94. package/dist/decorators/Service.js.map +1 -1
  95. package/dist/env/Env.d.ts +29 -4
  96. package/dist/env/Env.d.ts.map +1 -1
  97. package/dist/env/Env.js +27 -4
  98. package/dist/env/Env.js.map +1 -1
  99. package/dist/env/Secret.d.ts +11 -0
  100. package/dist/env/Secret.d.ts.map +1 -0
  101. package/dist/env/Secret.js +36 -0
  102. package/dist/env/Secret.js.map +1 -0
  103. package/dist/env/interpolate.d.ts +26 -0
  104. package/dist/env/interpolate.d.ts.map +1 -0
  105. package/dist/env/interpolate.js +48 -0
  106. package/dist/env/interpolate.js.map +1 -0
  107. package/dist/env/loadEnvFiles.d.ts.map +1 -1
  108. package/dist/env/loadEnvFiles.js +14 -4
  109. package/dist/env/loadEnvFiles.js.map +1 -1
  110. package/dist/env/schema.d.ts +23 -6
  111. package/dist/env/schema.d.ts.map +1 -1
  112. package/dist/env/schema.js +67 -33
  113. package/dist/env/schema.js.map +1 -1
  114. package/dist/errors/ReamError.d.ts +25 -0
  115. package/dist/errors/ReamError.d.ts.map +1 -1
  116. package/dist/errors/ReamError.js +5 -0
  117. package/dist/errors/ReamError.js.map +1 -1
  118. package/dist/errors/prettyPrintError.d.ts +9 -0
  119. package/dist/errors/prettyPrintError.d.ts.map +1 -0
  120. package/dist/errors/prettyPrintError.js +22 -0
  121. package/dist/errors/prettyPrintError.js.map +1 -0
  122. package/dist/events/Emitter.d.ts +1 -1
  123. package/dist/events/Emitter.d.ts.map +1 -1
  124. package/dist/events/Emitter.js +1 -1
  125. package/dist/events/Emitter.js.map +1 -1
  126. package/dist/events/EventsProvider.d.ts +2 -2
  127. package/dist/events/EventsProvider.d.ts.map +1 -1
  128. package/dist/events/EventsProvider.js +3 -3
  129. package/dist/events/EventsProvider.js.map +1 -1
  130. package/dist/graphql/GraphQLEngine.d.ts +1 -1
  131. package/dist/graphql/GraphQLEngine.d.ts.map +1 -1
  132. package/dist/graphql/GraphQLEngine.js +2 -2
  133. package/dist/graphql/GraphQLEngine.js.map +1 -1
  134. package/dist/graphql/GraphQLProvider.d.ts.map +1 -1
  135. package/dist/graphql/GraphQLProvider.js +7 -3
  136. package/dist/graphql/GraphQLProvider.js.map +1 -1
  137. package/dist/http/Exception.d.ts +63 -1
  138. package/dist/http/Exception.d.ts.map +1 -1
  139. package/dist/http/Exception.js +185 -48
  140. package/dist/http/Exception.js.map +1 -1
  141. package/dist/http/HttpContext.d.ts +53 -7
  142. package/dist/http/HttpContext.d.ts.map +1 -1
  143. package/dist/http/HttpContext.js +56 -15
  144. package/dist/http/HttpContext.js.map +1 -1
  145. package/dist/http/RedirectBuilder.d.ts.map +1 -1
  146. package/dist/http/RedirectBuilder.js +4 -1
  147. package/dist/http/RedirectBuilder.js.map +1 -1
  148. package/dist/http/Request.d.ts +141 -10
  149. package/dist/http/Request.d.ts.map +1 -1
  150. package/dist/http/Request.js +244 -34
  151. package/dist/http/Request.js.map +1 -1
  152. package/dist/http/Response.d.ts +176 -9
  153. package/dist/http/Response.d.ts.map +1 -1
  154. package/dist/http/Response.js +404 -16
  155. package/dist/http/Response.js.map +1 -1
  156. package/dist/index.d.ts +19 -8
  157. package/dist/index.d.ts.map +1 -1
  158. package/dist/index.js +20 -5
  159. package/dist/index.js.map +1 -1
  160. package/dist/middleware/Pipeline.d.ts +29 -8
  161. package/dist/middleware/Pipeline.d.ts.map +1 -1
  162. package/dist/middleware/Pipeline.js +40 -2
  163. package/dist/middleware/Pipeline.js.map +1 -1
  164. package/dist/openapi/OpenApiProvider.js +4 -4
  165. package/dist/openapi/OpenApiProvider.js.map +1 -1
  166. package/dist/router/Router.d.ts +223 -31
  167. package/dist/router/Router.d.ts.map +1 -1
  168. package/dist/router/Router.js +520 -102
  169. package/dist/router/Router.js.map +1 -1
  170. package/dist/rpc/RpcProvider.d.ts +1 -0
  171. package/dist/rpc/RpcProvider.d.ts.map +1 -1
  172. package/dist/rpc/RpcProvider.js +7 -3
  173. package/dist/rpc/RpcProvider.js.map +1 -1
  174. package/dist/rpc/RpcRouter.d.ts +2 -2
  175. package/dist/rpc/RpcRouter.d.ts.map +1 -1
  176. package/dist/rpc/RpcRouter.js +17 -5
  177. package/dist/rpc/RpcRouter.js.map +1 -1
  178. package/dist/scheduler/ScheduleProvider.d.ts.map +1 -1
  179. package/dist/scheduler/ScheduleProvider.js +7 -15
  180. package/dist/scheduler/ScheduleProvider.js.map +1 -1
  181. package/dist/server/Server.d.ts +17 -4
  182. package/dist/server/Server.d.ts.map +1 -1
  183. package/dist/server/Server.js +41 -7
  184. package/dist/server/Server.js.map +1 -1
  185. package/dist/services/app.d.ts +1 -1
  186. package/dist/services/app.js +1 -1
  187. package/dist/services/console.d.ts +21 -0
  188. package/dist/services/console.d.ts.map +1 -0
  189. package/dist/services/console.js +35 -0
  190. package/dist/services/console.js.map +1 -0
  191. package/dist/session/SessionMiddleware.js +3 -3
  192. package/dist/session/SessionMiddleware.js.map +1 -1
  193. package/dist/storage/StaticProvider.js +1 -1
  194. package/dist/storage/StaticProvider.js.map +1 -1
  195. package/dist/testing/ApiResponse.d.ts +218 -0
  196. package/dist/testing/ApiResponse.d.ts.map +1 -0
  197. package/dist/testing/ApiResponse.js +576 -0
  198. package/dist/testing/ApiResponse.js.map +1 -0
  199. package/dist/testing/RequestBuilder.d.ts +155 -35
  200. package/dist/testing/RequestBuilder.d.ts.map +1 -1
  201. package/dist/testing/RequestBuilder.js +455 -109
  202. package/dist/testing/RequestBuilder.js.map +1 -1
  203. package/dist/testing/TestClient.d.ts +53 -37
  204. package/dist/testing/TestClient.d.ts.map +1 -1
  205. package/dist/testing/TestClient.js +84 -52
  206. package/dist/testing/TestClient.js.map +1 -1
  207. package/dist/utils/Macroable.d.ts +30 -0
  208. package/dist/utils/Macroable.d.ts.map +1 -0
  209. package/dist/utils/Macroable.js +43 -0
  210. package/dist/utils/Macroable.js.map +1 -0
  211. package/dist/utils/inflect.d.ts +17 -0
  212. package/dist/utils/inflect.d.ts.map +1 -0
  213. package/dist/utils/inflect.js +32 -0
  214. package/dist/utils/inflect.js.map +1 -0
  215. package/dist/utils/objectPath.d.ts +57 -0
  216. package/dist/utils/objectPath.d.ts.map +1 -0
  217. package/dist/utils/objectPath.js +141 -0
  218. package/dist/utils/objectPath.js.map +1 -0
  219. package/events.darwin-arm64.node +0 -0
  220. package/events.darwin-x64.node +0 -0
  221. package/events.linux-arm64-gnu.node +0 -0
  222. package/events.linux-x64-gnu.node +0 -0
  223. package/events.win32-x64-msvc.node +0 -0
  224. package/index.darwin-arm64.node +0 -0
  225. package/index.darwin-x64.node +0 -0
  226. package/index.linux-arm64-gnu.node +0 -0
  227. package/index.linux-x64-gnu.node +0 -0
  228. package/index.win32-x64-msvc.node +0 -0
  229. package/package.json +20 -2
  230. package/scheduler.darwin-arm64.node +0 -0
  231. package/scheduler.darwin-x64.node +0 -0
  232. package/scheduler.linux-arm64-gnu.node +0 -0
  233. package/scheduler.linux-x64-gnu.node +0 -0
  234. package/scheduler.win32-x64-msvc.node +0 -0
  235. package/src/ConfigLoader.ts +72 -9
  236. package/src/HttpKernel.ts +53 -15
  237. package/src/Ignitor.ts +364 -45
  238. package/src/console/BaseCommand.ts +467 -0
  239. package/src/console/Console.ts +174 -0
  240. package/src/console/ExceptionHandler.ts +91 -0
  241. package/src/console/HelpCommand.ts +37 -0
  242. package/src/console/IndexGenerator.ts +79 -0
  243. package/src/console/Kernel.ts +1382 -0
  244. package/src/console/ListCommand.ts +55 -0
  245. package/src/console/assertions.ts +114 -0
  246. package/src/console/cliui.ts +756 -0
  247. package/src/console/decorators.ts +199 -0
  248. package/src/console/index.ts +67 -0
  249. package/src/console/loaders.ts +145 -0
  250. package/src/console/parser.ts +598 -0
  251. package/src/console/prompts.ts +548 -0
  252. package/src/console/tracing.ts +22 -0
  253. package/src/console/types.ts +280 -0
  254. package/src/console/ui.ts +37 -0
  255. package/src/console/utils.ts +69 -0
  256. package/src/container/Container.ts +198 -72
  257. package/src/container/types.ts +15 -2
  258. package/src/decorators/Service.ts +28 -3
  259. package/src/env/Env.ts +49 -5
  260. package/src/env/Secret.ts +41 -0
  261. package/src/env/interpolate.ts +54 -0
  262. package/src/env/loadEnvFiles.ts +12 -4
  263. package/src/env/schema.ts +109 -35
  264. package/src/errors/ReamError.ts +31 -0
  265. package/src/errors/prettyPrintError.ts +20 -0
  266. package/src/events/Emitter.ts +2 -2
  267. package/src/events/EventsProvider.ts +5 -5
  268. package/src/graphql/GraphQLEngine.ts +4 -4
  269. package/src/graphql/GraphQLProvider.ts +7 -3
  270. package/src/http/Exception.ts +214 -37
  271. package/src/http/HttpContext.ts +87 -18
  272. package/src/http/RedirectBuilder.ts +4 -1
  273. package/src/http/Request.ts +264 -34
  274. package/src/http/Response.ts +478 -27
  275. package/src/index.ts +41 -6
  276. package/src/middleware/Pipeline.ts +77 -6
  277. package/src/openapi/OpenApiProvider.ts +4 -4
  278. package/src/router/Router.ts +631 -113
  279. package/src/rpc/RpcProvider.ts +6 -2
  280. package/src/rpc/RpcRouter.ts +22 -7
  281. package/src/scheduler/ScheduleProvider.ts +7 -15
  282. package/src/server/Server.ts +49 -10
  283. package/src/services/app.ts +1 -1
  284. package/src/services/console.ts +42 -0
  285. package/src/session/SessionMiddleware.ts +4 -4
  286. package/src/storage/StaticProvider.ts +1 -1
  287. package/src/testing/ApiResponse.ts +691 -0
  288. package/src/testing/RequestBuilder.ts +577 -137
  289. package/src/testing/TestClient.ts +110 -77
  290. package/src/utils/Macroable.ts +54 -0
  291. package/src/utils/inflect.ts +29 -0
  292. package/src/utils/objectPath.ts +142 -0
  293. package/dist/console/CommandRunner.d.ts +0 -18
  294. package/dist/console/CommandRunner.d.ts.map +0 -1
  295. package/dist/console/CommandRunner.js +0 -65
  296. package/dist/console/CommandRunner.js.map +0 -1
  297. package/dist/decorators/Lazy.d.ts +0 -19
  298. package/dist/decorators/Lazy.d.ts.map +0 -1
  299. package/dist/decorators/Lazy.js +0 -53
  300. package/dist/decorators/Lazy.js.map +0 -1
  301. package/src/console/CommandRunner.ts +0 -82
  302. package/src/decorators/Lazy.ts +0 -57
package/dist/env/Env.js CHANGED
@@ -1,3 +1,4 @@
1
+ import { defineIdentifier, defineIdentifierIfMissing, removeIdentifier, } from './interpolate.js';
1
2
  import { loadEnvFiles } from './loadEnvFiles.js';
2
3
  import { schema } from './schema.js';
3
4
  /** Raised when one or more environment variables fail validation. */
@@ -13,6 +14,18 @@ export class EnvValidationException extends Error {
13
14
  export class Env {
14
15
  /** The validation schema surface — `Env.schema.string()`, `.number()`, … */
15
16
  static schema = schema;
17
+ /** Register an interpolation identifier (AdonisJS `Env.defineIdentifier`). */
18
+ static defineIdentifier(name, resolver) {
19
+ defineIdentifier(name, resolver);
20
+ }
21
+ /** Register an identifier only if the name is free (AdonisJS `defineIdentifierIfMissing`). */
22
+ static defineIdentifierIfMissing(name, resolver) {
23
+ defineIdentifierIfMissing(name, resolver);
24
+ }
25
+ /** Remove a registered interpolation identifier (AdonisJS `Env.removeIdentifier`). */
26
+ static removeIdentifier(name) {
27
+ removeIdentifier(name);
28
+ }
16
29
  #values;
17
30
  constructor(values) {
18
31
  this.#values = values;
@@ -43,10 +56,20 @@ export class Env {
43
56
  return new Env(collected);
44
57
  }
45
58
  get(key, fallback) {
46
- const value = this.#values[key];
47
- if (value === undefined && fallback !== undefined)
48
- return fallback;
49
- return value;
59
+ const cached = this.#values[key];
60
+ if (cached !== undefined)
61
+ return cached;
62
+ // Fallback to raw process.env for keys outside the validated schema.
63
+ const fromEnv = process.env[key];
64
+ if (fromEnv !== undefined && fromEnv !== '')
65
+ return fromEnv;
66
+ return fallback;
67
+ }
68
+ set(key, value) {
69
+ // Reflect.set writes to the generic-typed cache without a cast (a direct
70
+ // `this.#values[key] = value` is rejected: a generic type is read-only-indexed).
71
+ Reflect.set(this.#values, key, value);
72
+ process.env[key] = String(value);
50
73
  }
51
74
  }
52
75
  //# sourceMappingURL=Env.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"Env.js","sourceRoot":"","sources":["../../src/env/Env.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAA;AAChD,OAAO,EAAmB,MAAM,EAAE,MAAM,aAAa,CAAA;AA+BrD,qEAAqE;AACrE,MAAM,OAAO,sBAAuB,SAAQ,KAAK;IAC/C,sFAAsF;IAC7E,IAAI,CAAQ;IACrB,YAAY,QAAkB;QAC5B,KAAK,CAAC,yCAAyC,CAAC,CAAA;QAChD,IAAI,CAAC,IAAI,GAAG,yBAAyB,CAAA;QACrC,IAAI,CAAC,IAAI,GAAG,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;IACjC,CAAC;CACF;AAED,MAAM,OAAO,GAAG;IACd,4EAA4E;IAC5E,MAAM,CAAU,MAAM,GAAG,MAAM,CAAA;IAEtB,OAAO,CAAQ;IAExB,YAAoB,MAAc;QAChC,IAAI,CAAC,OAAO,GAAG,MAAM,CAAA;IACvB,CAAC;IAED;;;;OAIG;IACH,MAAM,CAAC,KAAK,CAAC,MAAM,CACjB,OAAY,EACZ,MAAS;QAET,YAAY,CAAC,OAAO,EAAE,EAAE,YAAY,EAAE,OAAO,CAAC,GAAG,CAAC,QAAQ,KAAK,MAAM,EAAE,CAAC,CAAA;QAExE,MAAM,QAAQ,GAAa,EAAE,CAAA;QAC7B,MAAM,SAAS,GAA4B,EAAE,CAAA;QAC7C,KAAK,MAAM,GAAG,IAAI,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC;YACtC,IAAI,CAAC;gBACH,SAAS,CAAC,GAAG,CAAC,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC,QAAQ,CAAC,GAAG,EAAE,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAA;YAC9D,CAAC;YAAC,OAAO,GAAG,EAAE,CAAC;gBACb,QAAQ,CAAC,IAAI,CAAC,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAA;YACjE,CAAC;QACH,CAAC;QACD,IAAI,QAAQ,CAAC,MAAM,GAAG,CAAC;YAAE,MAAM,IAAI,sBAAsB,CAAC,QAAQ,CAAC,CAAA;QAEnE,6EAA6E;QAC7E,0EAA0E;QAC1E,2EAA2E;QAC3E,+EAA+E;QAC/E,OAAO,IAAI,GAAG,CAAC,SAAyB,CAAC,CAAA;IAC3C,CAAC;IAKD,GAAG,CAAyB,GAAM,EAAE,QAAoB;QACtD,MAAM,KAAK,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,CAAA;QAC/B,IAAI,KAAK,KAAK,SAAS,IAAI,QAAQ,KAAK,SAAS;YAAE,OAAO,QAAQ,CAAA;QAClE,OAAO,KAAK,CAAA;IACd,CAAC"}
1
+ {"version":3,"file":"Env.js","sourceRoot":"","sources":["../../src/env/Env.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,11 @@
1
+ export declare class Secret<T> {
2
+ #private;
3
+ constructor(value: T, redactedKeyword?: string);
4
+ /** Redacted placeholder (so `JSON.stringify` never emits the secret). */
5
+ toJSON(): string;
6
+ /** Redacted placeholder for string coercion + template literals. */
7
+ toString(): string;
8
+ /** Release the underlying value — the one deliberate way to read the secret. */
9
+ release(): T;
10
+ }
11
+ //# sourceMappingURL=Secret.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Secret.d.ts","sourceRoot":"","sources":["../../src/env/Secret.ts"],"names":[],"mappings":"AAYA,qBAAa,MAAM,CAAC,CAAC;;gBAIP,KAAK,EAAE,CAAC,EAAE,eAAe,GAAE,MAAiB;IAKxD,yEAAyE;IACzE,MAAM,IAAI,MAAM;IAIhB,oEAAoE;IACpE,QAAQ,IAAI,MAAM;IASlB,gFAAgF;IAChF,OAAO,IAAI,CAAC;CAGb"}
@@ -0,0 +1,36 @@
1
+ /**
2
+ * Secret — wraps a sensitive value so it never leaks through logs, JSON, or
3
+ * `util.inspect`. Mirrors `@poppinss/utils`'s `Secret` (zero-dep here). Read the
4
+ * underlying value explicitly with {@link release}.
5
+ *
6
+ * const key = env.get('APP_KEY') // Secret<string> when declared via schema.secret
7
+ * key.toString() // '[redacted]'
8
+ * JSON.stringify({ key }) // '{"key":"[redacted]"}'
9
+ * key.release() // the real value — only when you deliberately need it
10
+ */
11
+ const REDACTED = '[redacted]';
12
+ export class Secret {
13
+ #value;
14
+ #keyword;
15
+ constructor(value, redactedKeyword = REDACTED) {
16
+ this.#value = value;
17
+ this.#keyword = redactedKeyword;
18
+ }
19
+ /** Redacted placeholder (so `JSON.stringify` never emits the secret). */
20
+ toJSON() {
21
+ return this.#keyword;
22
+ }
23
+ /** Redacted placeholder for string coercion + template literals. */
24
+ toString() {
25
+ return this.#keyword;
26
+ }
27
+ /** Redacted placeholder for `console.log` / `util.inspect`. */
28
+ [Symbol.for('nodejs.util.inspect.custom')]() {
29
+ return this.#keyword;
30
+ }
31
+ /** Release the underlying value — the one deliberate way to read the secret. */
32
+ release() {
33
+ return this.#value;
34
+ }
35
+ }
36
+ //# sourceMappingURL=Secret.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Secret.js","sourceRoot":"","sources":["../../src/env/Secret.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AACH,MAAM,QAAQ,GAAG,YAAY,CAAA;AAE7B,MAAM,OAAO,MAAM;IACR,MAAM,CAAG;IACT,QAAQ,CAAQ;IAEzB,YAAY,KAAQ,EAAE,kBAA0B,QAAQ;QACtD,IAAI,CAAC,MAAM,GAAG,KAAK,CAAA;QACnB,IAAI,CAAC,QAAQ,GAAG,eAAe,CAAA;IACjC,CAAC;IAED,yEAAyE;IACzE,MAAM;QACJ,OAAO,IAAI,CAAC,QAAQ,CAAA;IACtB,CAAC;IAED,oEAAoE;IACpE,QAAQ;QACN,OAAO,IAAI,CAAC,QAAQ,CAAA;IACtB,CAAC;IAED,+DAA+D;IAC/D,CAAC,MAAM,CAAC,GAAG,CAAC,4BAA4B,CAAC,CAAC;QACxC,OAAO,IAAI,CAAC,QAAQ,CAAA;IACtB,CAAC;IAED,gFAAgF;IAChF,OAAO;QACL,OAAO,IAAI,CAAC,MAAM,CAAA;IACpB,CAAC;CACF"}
@@ -0,0 +1,26 @@
1
+ /**
2
+ * Env value interpolation — AdonisJS-style variable substitution + identifiers,
3
+ * applied by {@link loadEnvFiles} as each `.env` value is loaded.
4
+ *
5
+ * - `$VAR` / `${VAR}` are replaced with the value of `VAR` (looked up against
6
+ * the values already loaded + `process.env`). A missing reference expands to
7
+ * an empty string. `\$` is a literal dollar sign (escape).
8
+ * - `identifier:rest` — when `identifier` was registered via
9
+ * {@link defineIdentifier}, the registered callback transforms `rest`
10
+ * (e.g. a `base64:` decoder). Unregistered prefixes (like `postgres://…`)
11
+ * are left untouched.
12
+ */
13
+ /** Transform the remainder of an `identifier:rest` value into its final form. */
14
+ export type IdentifierResolver = (value: string) => string;
15
+ /** Register an identifier resolver (AdonisJS `Env.defineIdentifier`). */
16
+ export declare function defineIdentifier(name: string, resolver: IdentifierResolver): void;
17
+ /** Register an identifier resolver only if the name is free (AdonisJS `defineIdentifierIfMissing`). */
18
+ export declare function defineIdentifierIfMissing(name: string, resolver: IdentifierResolver): void;
19
+ /** Remove a registered identifier (AdonisJS `Env.removeIdentifier`). */
20
+ export declare function removeIdentifier(name: string): void;
21
+ /**
22
+ * Expand `$VAR` / `${VAR}` references and apply an identifier prefix. `lookup`
23
+ * resolves a referenced variable name to its current value (or undefined).
24
+ */
25
+ export declare function interpolate(value: string, lookup: (name: string) => string | undefined): string;
26
+ //# sourceMappingURL=interpolate.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"interpolate.d.ts","sourceRoot":"","sources":["../../src/env/interpolate.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAEH,iFAAiF;AACjF,MAAM,MAAM,kBAAkB,GAAG,CAAC,KAAK,EAAE,MAAM,KAAK,MAAM,CAAA;AAI1D,yEAAyE;AACzE,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,kBAAkB,GAAG,IAAI,CAEjF;AAED,uGAAuG;AACvG,wBAAgB,yBAAyB,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,kBAAkB,GAAG,IAAI,CAE1F;AAED,wEAAwE;AACxE,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,CAEnD;AAID;;;GAGG;AACH,wBAAgB,WAAW,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,MAAM,GAAG,SAAS,GAAG,MAAM,CAc/F"}
@@ -0,0 +1,48 @@
1
+ /**
2
+ * Env value interpolation — AdonisJS-style variable substitution + identifiers,
3
+ * applied by {@link loadEnvFiles} as each `.env` value is loaded.
4
+ *
5
+ * - `$VAR` / `${VAR}` are replaced with the value of `VAR` (looked up against
6
+ * the values already loaded + `process.env`). A missing reference expands to
7
+ * an empty string. `\$` is a literal dollar sign (escape).
8
+ * - `identifier:rest` — when `identifier` was registered via
9
+ * {@link defineIdentifier}, the registered callback transforms `rest`
10
+ * (e.g. a `base64:` decoder). Unregistered prefixes (like `postgres://…`)
11
+ * are left untouched.
12
+ */
13
+ const identifiers = new Map();
14
+ /** Register an identifier resolver (AdonisJS `Env.defineIdentifier`). */
15
+ export function defineIdentifier(name, resolver) {
16
+ identifiers.set(name, resolver);
17
+ }
18
+ /** Register an identifier resolver only if the name is free (AdonisJS `defineIdentifierIfMissing`). */
19
+ export function defineIdentifierIfMissing(name, resolver) {
20
+ if (!identifiers.has(name))
21
+ identifiers.set(name, resolver);
22
+ }
23
+ /** Remove a registered identifier (AdonisJS `Env.removeIdentifier`). */
24
+ export function removeIdentifier(name) {
25
+ identifiers.delete(name);
26
+ }
27
+ const REFERENCE = /(\\)?\$(?:\{([^}]+)\}|([A-Za-z_][A-Za-z0-9_]*))/g;
28
+ /**
29
+ * Expand `$VAR` / `${VAR}` references and apply an identifier prefix. `lookup`
30
+ * resolves a referenced variable name to its current value (or undefined).
31
+ */
32
+ export function interpolate(value, lookup) {
33
+ const substituted = value.replace(REFERENCE, (full, escaped, braced, bare) => {
34
+ // `\$FOO` → literal `$FOO` (drop only the escaping backslash).
35
+ if (escaped)
36
+ return full.slice(1);
37
+ const name = braced ?? bare;
38
+ return lookup(name) ?? '';
39
+ });
40
+ const prefixed = /^([A-Za-z_][A-Za-z0-9_]*):([\s\S]*)$/.exec(substituted);
41
+ if (prefixed) {
42
+ const resolver = identifiers.get(prefixed[1]);
43
+ if (resolver)
44
+ return resolver(prefixed[2]);
45
+ }
46
+ return substituted;
47
+ }
48
+ //# sourceMappingURL=interpolate.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"interpolate.js","sourceRoot":"","sources":["../../src/env/interpolate.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAKH,MAAM,WAAW,GAAG,IAAI,GAAG,EAA8B,CAAA;AAEzD,yEAAyE;AACzE,MAAM,UAAU,gBAAgB,CAAC,IAAY,EAAE,QAA4B;IACzE,WAAW,CAAC,GAAG,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAA;AACjC,CAAC;AAED,uGAAuG;AACvG,MAAM,UAAU,yBAAyB,CAAC,IAAY,EAAE,QAA4B;IAClF,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,IAAI,CAAC;QAAE,WAAW,CAAC,GAAG,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAA;AAC7D,CAAC;AAED,wEAAwE;AACxE,MAAM,UAAU,gBAAgB,CAAC,IAAY;IAC3C,WAAW,CAAC,MAAM,CAAC,IAAI,CAAC,CAAA;AAC1B,CAAC;AAED,MAAM,SAAS,GAAG,kDAAkD,CAAA;AAEpE;;;GAGG;AACH,MAAM,UAAU,WAAW,CAAC,KAAa,EAAE,MAA4C;IACrF,MAAM,WAAW,GAAG,KAAK,CAAC,OAAO,CAAC,SAAS,EAAE,CAAC,IAAI,EAAE,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,EAAE;QAC3E,+DAA+D;QAC/D,IAAI,OAAO;YAAE,OAAO,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAA;QACjC,MAAM,IAAI,GAAG,MAAM,IAAI,IAAI,CAAA;QAC3B,OAAO,MAAM,CAAC,IAAI,CAAC,IAAI,EAAE,CAAA;IAC3B,CAAC,CAAC,CAAA;IAEF,MAAM,QAAQ,GAAG,sCAAsC,CAAC,IAAI,CAAC,WAAW,CAAC,CAAA;IACzE,IAAI,QAAQ,EAAE,CAAC;QACb,MAAM,QAAQ,GAAG,WAAW,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAA;QAC7C,IAAI,QAAQ;YAAE,OAAO,QAAQ,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAA;IAC5C,CAAC;IACD,OAAO,WAAW,CAAA;AACpB,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"loadEnvFiles.d.ts","sourceRoot":"","sources":["../../src/env/loadEnvFiles.ts"],"names":[],"mappings":"AAIA;;;;;;;;;;;;GAYG;AACH,wBAAgB,YAAY,CAAC,OAAO,EAAE,GAAG,EAAE,OAAO,GAAE;IAAE,YAAY,CAAC,EAAE,OAAO,CAAA;CAAO,GAAG,IAAI,CAsBzF"}
1
+ {"version":3,"file":"loadEnvFiles.d.ts","sourceRoot":"","sources":["../../src/env/loadEnvFiles.ts"],"names":[],"mappings":"AAKA;;;;;;;;;;;;GAYG;AACH,wBAAgB,YAAY,CAAC,OAAO,EAAE,GAAG,EAAE,OAAO,GAAE;IAAE,YAAY,CAAC,EAAE,OAAO,CAAA;CAAO,GAAG,IAAI,CA6BzF"}
@@ -1,6 +1,7 @@
1
1
  import { readFileSync } from 'node:fs';
2
2
  import { fileURLToPath } from 'node:url';
3
3
  import { parseEnv } from 'node:util';
4
+ import { interpolate } from './interpolate.js';
4
5
  /**
5
6
  * Load `.env` files into `process.env` — the shared primitive behind both the
6
7
  * Ignitor (HTTP/console boot) and `Env.create()` (config/test flow), mirroring
@@ -30,10 +31,19 @@ export function loadEnvFiles(appRoot, options = {}) {
30
31
  catch {
31
32
  continue; // file absent — nothing to load
32
33
  }
33
- for (const [key, value] of Object.entries(parseEnv(contents))) {
34
- if (typeof value === 'string' && process.env[key] === undefined) {
35
- process.env[key] = value;
36
- }
34
+ const parsed = parseEnv(contents);
35
+ for (const [key, value] of Object.entries(parsed)) {
36
+ if (typeof value !== 'string' || process.env[key] !== undefined)
37
+ continue;
38
+ // Interpolate `$VAR`/`${VAR}` against process.env then this file's own
39
+ // (already-loaded) values, and apply any `identifier:` resolver.
40
+ process.env[key] = interpolate(value, (name) => {
41
+ const fromProcess = process.env[name];
42
+ if (fromProcess !== undefined)
43
+ return fromProcess;
44
+ const fromFile = parsed[name];
45
+ return typeof fromFile === 'string' ? fromFile : undefined;
46
+ });
37
47
  }
38
48
  }
39
49
  }
@@ -1 +1 @@
1
- {"version":3,"file":"loadEnvFiles.js","sourceRoot":"","sources":["../../src/env/loadEnvFiles.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,SAAS,CAAA;AACtC,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAA;AACxC,OAAO,EAAE,QAAQ,EAAE,MAAM,WAAW,CAAA;AAEpC;;;;;;;;;;;;GAYG;AACH,MAAM,UAAU,YAAY,CAAC,OAAY,EAAE,UAAsC,EAAE;IACjF,MAAM,OAAO,GAAG,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAA;IACpC,MAAM,KAAK,GAAG;QACZ,OAAO,CAAC,CAAC,CAAC,QAAQ,OAAO,QAAQ,CAAC,CAAC,CAAC,IAAI;QACxC,OAAO,CAAC,YAAY,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,YAAY;QAC1C,OAAO,CAAC,CAAC,CAAC,QAAQ,OAAO,EAAE,CAAC,CAAC,CAAC,IAAI;QAClC,MAAM;KACP,CAAC,MAAM,CAAC,CAAC,IAAI,EAAkB,EAAE,CAAC,IAAI,KAAK,IAAI,CAAC,CAAA;IAEjD,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;QACzB,IAAI,QAAgB,CAAA;QACpB,IAAI,CAAC;YACH,QAAQ,GAAG,YAAY,CAAC,aAAa,CAAC,IAAI,GAAG,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC,EAAE,MAAM,CAAC,CAAA;QACxE,CAAC;QAAC,MAAM,CAAC;YACP,SAAQ,CAAC,gCAAgC;QAC3C,CAAC;QACD,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC,EAAE,CAAC;YAC9D,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,KAAK,SAAS,EAAE,CAAC;gBAChE,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,KAAK,CAAA;YAC1B,CAAC;QACH,CAAC;IACH,CAAC;AACH,CAAC"}
1
+ {"version":3,"file":"loadEnvFiles.js","sourceRoot":"","sources":["../../src/env/loadEnvFiles.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,SAAS,CAAA;AACtC,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAA;AACxC,OAAO,EAAE,QAAQ,EAAE,MAAM,WAAW,CAAA;AACpC,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAA;AAE9C;;;;;;;;;;;;GAYG;AACH,MAAM,UAAU,YAAY,CAAC,OAAY,EAAE,UAAsC,EAAE;IACjF,MAAM,OAAO,GAAG,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAA;IACpC,MAAM,KAAK,GAAG;QACZ,OAAO,CAAC,CAAC,CAAC,QAAQ,OAAO,QAAQ,CAAC,CAAC,CAAC,IAAI;QACxC,OAAO,CAAC,YAAY,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,YAAY;QAC1C,OAAO,CAAC,CAAC,CAAC,QAAQ,OAAO,EAAE,CAAC,CAAC,CAAC,IAAI;QAClC,MAAM;KACP,CAAC,MAAM,CAAC,CAAC,IAAI,EAAkB,EAAE,CAAC,IAAI,KAAK,IAAI,CAAC,CAAA;IAEjD,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;QACzB,IAAI,QAAgB,CAAA;QACpB,IAAI,CAAC;YACH,QAAQ,GAAG,YAAY,CAAC,aAAa,CAAC,IAAI,GAAG,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC,EAAE,MAAM,CAAC,CAAA;QACxE,CAAC;QAAC,MAAM,CAAC;YACP,SAAQ,CAAC,gCAAgC;QAC3C,CAAC;QACD,MAAM,MAAM,GAAG,QAAQ,CAAC,QAAQ,CAAC,CAAA;QACjC,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC;YAClD,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,KAAK,SAAS;gBAAE,SAAQ;YACzE,uEAAuE;YACvE,iEAAiE;YACjE,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,WAAW,CAAC,KAAK,EAAE,CAAC,IAAI,EAAE,EAAE;gBAC7C,MAAM,WAAW,GAAG,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,CAAA;gBACrC,IAAI,WAAW,KAAK,SAAS;oBAAE,OAAO,WAAW,CAAA;gBACjD,MAAM,QAAQ,GAAG,MAAM,CAAC,IAAI,CAAC,CAAA;gBAC7B,OAAO,OAAO,QAAQ,KAAK,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,SAAS,CAAA;YAC5D,CAAC,CAAC,CAAA;QACJ,CAAC;IACH,CAAC;AACH,CAAC"}
@@ -12,6 +12,7 @@
12
12
  * value (or throws {@link EnvVarError}); `.optional()` accepts an absent/empty
13
13
  * value as `undefined`.
14
14
  */
15
+ import { Secret } from './Secret.js';
15
16
  /** A single failed-variable validation — collected by `Env.create`. */
16
17
  export declare class EnvVarError extends Error {
17
18
  constructor(message: string);
@@ -20,29 +21,45 @@ export declare class EnvVarError extends Error {
20
21
  export interface SchemaNode<T> {
21
22
  validate(name: string, value: string | undefined): T;
22
23
  }
23
- /** A required node that can be turned optional — `.optional()` widens `T` to `T | undefined`. */
24
+ /** Condition deciding whether a variable is optional (AdonisJS `optionalWhen`). */
25
+ export type OptionalCondition = boolean | ((name: string, value: string | undefined) => boolean);
26
+ /**
27
+ * A required node that can be turned optional — `.optional()` widens `T` to
28
+ * `T | undefined`; `.optionalWhen(cond)` does so only when `cond` holds.
29
+ */
24
30
  export interface RequiredNode<T> extends SchemaNode<T> {
25
31
  optional(): SchemaNode<T | undefined>;
32
+ optionalWhen(condition: OptionalCondition): SchemaNode<T | undefined>;
26
33
  }
27
- export interface StringOptions {
34
+ /** Options common to every schema function (AdonisJS `SchemaFnOptions`). */
35
+ export interface SchemaFnOptions {
36
+ /** Custom error message, replacing the default when validation fails. */
37
+ message?: string;
38
+ }
39
+ export interface StringOptions extends SchemaFnOptions {
28
40
  /** Validate the string against a known format. */
29
- format?: 'host' | 'url' | 'email';
41
+ format?: 'host' | 'url' | 'email' | 'uuid';
30
42
  /** For `format: 'url'` — require a TLD (default true). */
31
43
  tld?: boolean;
32
44
  /** For `format: 'url'` — require a protocol (default true). */
33
45
  protocol?: boolean;
34
46
  }
35
- declare function number(): RequiredNode<number>;
36
- declare function boolean(): RequiredNode<boolean>;
37
- declare function enumNode<V extends readonly string[]>(values: V): RequiredNode<V[number]>;
47
+ declare function number(options?: SchemaFnOptions): RequiredNode<number>;
48
+ declare function boolean(options?: SchemaFnOptions): RequiredNode<boolean>;
49
+ declare function enumNode<V extends readonly string[]>(values: V, options?: SchemaFnOptions): RequiredNode<V[number]>;
38
50
  /** The `Env.schema` surface. */
39
51
  export declare const schema: {
40
52
  string: ((options?: StringOptions) => RequiredNode<string>) & {
41
53
  optional(options?: StringOptions): SchemaNode<string | undefined>;
54
+ optionalWhen(condition: OptionalCondition, options?: StringOptions): SchemaNode<string | undefined>;
42
55
  };
43
56
  number: typeof number;
44
57
  boolean: typeof boolean;
45
58
  enum: typeof enumNode;
59
+ secret: ((options?: SchemaFnOptions) => RequiredNode<Secret<string>>) & {
60
+ optional(options?: SchemaFnOptions): SchemaNode<Secret<string> | undefined>;
61
+ optionalWhen(condition: OptionalCondition, options?: SchemaFnOptions): SchemaNode<Secret<string> | undefined>;
62
+ };
46
63
  };
47
64
  export {};
48
65
  //# sourceMappingURL=schema.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"schema.d.ts","sourceRoot":"","sources":["../../src/env/schema.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAEH,uEAAuE;AACvE,qBAAa,WAAY,SAAQ,KAAK;gBACxB,OAAO,EAAE,MAAM;CAI5B;AAED,6EAA6E;AAC7E,MAAM,WAAW,UAAU,CAAC,CAAC;IAC3B,QAAQ,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,SAAS,GAAG,CAAC,CAAA;CACrD;AAED,iGAAiG;AACjG,MAAM,WAAW,YAAY,CAAC,CAAC,CAAE,SAAQ,UAAU,CAAC,CAAC,CAAC;IACpD,QAAQ,IAAI,UAAU,CAAC,CAAC,GAAG,SAAS,CAAC,CAAA;CACtC;AAED,MAAM,WAAW,aAAa;IAC5B,kDAAkD;IAClD,MAAM,CAAC,EAAE,MAAM,GAAG,KAAK,GAAG,OAAO,CAAA;IACjC,0DAA0D;IAC1D,GAAG,CAAC,EAAE,OAAO,CAAA;IACb,+DAA+D;IAC/D,QAAQ,CAAC,EAAE,OAAO,CAAA;CACnB;AAoFD,iBAAS,MAAM,IAAI,YAAY,CAAC,MAAM,CAAC,CAQtC;AAED,iBAAS,OAAO,IAAI,YAAY,CAAC,OAAO,CAAC,CAQxC;AAED,iBAAS,QAAQ,CAAC,CAAC,SAAS,SAAS,MAAM,EAAE,EAAE,MAAM,EAAE,CAAC,GAAG,YAAY,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAUjF;AAED,gCAAgC;AAChC,eAAO,MAAM,MAAM;wBAvCO,aAAa,KAAK,YAAY,CAAC,MAAM,CAAC;2BAC3C,aAAa,GAAG,UAAU,CAAC,MAAM,GAAG,SAAS,CAAC;;;;;CA2ClE,CAAA"}
1
+ {"version":3,"file":"schema.d.ts","sourceRoot":"","sources":["../../src/env/schema.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAEH,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAA;AAEpC,uEAAuE;AACvE,qBAAa,WAAY,SAAQ,KAAK;gBACxB,OAAO,EAAE,MAAM;CAI5B;AAED,6EAA6E;AAC7E,MAAM,WAAW,UAAU,CAAC,CAAC;IAC3B,QAAQ,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,SAAS,GAAG,CAAC,CAAA;CACrD;AAED,mFAAmF;AACnF,MAAM,MAAM,iBAAiB,GAAG,OAAO,GAAG,CAAC,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,SAAS,KAAK,OAAO,CAAC,CAAA;AAEhG;;;GAGG;AACH,MAAM,WAAW,YAAY,CAAC,CAAC,CAAE,SAAQ,UAAU,CAAC,CAAC,CAAC;IACpD,QAAQ,IAAI,UAAU,CAAC,CAAC,GAAG,SAAS,CAAC,CAAA;IACrC,YAAY,CAAC,SAAS,EAAE,iBAAiB,GAAG,UAAU,CAAC,CAAC,GAAG,SAAS,CAAC,CAAA;CACtE;AAED,4EAA4E;AAC5E,MAAM,WAAW,eAAe;IAC9B,yEAAyE;IACzE,OAAO,CAAC,EAAE,MAAM,CAAA;CACjB;AAED,MAAM,WAAW,aAAc,SAAQ,eAAe;IACpD,kDAAkD;IAClD,MAAM,CAAC,EAAE,MAAM,GAAG,KAAK,GAAG,OAAO,GAAG,MAAM,CAAA;IAC1C,0DAA0D;IAC1D,GAAG,CAAC,EAAE,OAAO,CAAA;IACb,+DAA+D;IAC/D,QAAQ,CAAC,EAAE,OAAO,CAAA;CACnB;AAuHD,iBAAS,MAAM,CAAC,OAAO,CAAC,EAAE,eAAe,GAAG,YAAY,CAAC,MAAM,CAAC,CAE/D;AAaD,iBAAS,OAAO,CAAC,OAAO,CAAC,EAAE,eAAe,GAAG,YAAY,CAAC,OAAO,CAAC,CAEjE;AAED,iBAAS,QAAQ,CAAC,CAAC,SAAS,SAAS,MAAM,EAAE,EAC3C,MAAM,EAAE,CAAC,EACT,OAAO,CAAC,EAAE,eAAe,GACxB,YAAY,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAWzB;AAsBD,gCAAgC;AAChC,eAAO,MAAM,MAAM;wBAjFO,aAAa,KAAK,YAAY,CAAC,MAAM,CAAC;2BAC3C,aAAa,GAAG,UAAU,CAAC,MAAM,GAAG,SAAS,CAAC;gCAEpD,iBAAiB,YAClB,aAAa,GACtB,UAAU,CAAC,MAAM,GAAG,SAAS,CAAC;;;;;wBA2DT,eAAe,KAAK,YAAY,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;2BACrD,eAAe,GAAG,UAAU,CAAC,MAAM,CAAC,MAAM,CAAC,GAAG,SAAS,CAAC;gCAE9D,iBAAiB,YAClB,eAAe,GACxB,UAAU,CAAC,MAAM,CAAC,MAAM,CAAC,GAAG,SAAS,CAAC;;CAkB1C,CAAA"}
@@ -12,6 +12,7 @@
12
12
  * value (or throws {@link EnvVarError}); `.optional()` accepts an absent/empty
13
13
  * value as `undefined`.
14
14
  */
15
+ import { Secret } from './Secret.js';
15
16
  /** A single failed-variable validation — collected by `Env.create`. */
16
17
  export class EnvVarError extends Error {
17
18
  constructor(message) {
@@ -23,25 +24,31 @@ const TRUE_VALUES = new Set(['true', '1']);
23
24
  const FALSE_VALUES = new Set(['false', '0']);
24
25
  /**
25
26
  * Build a node from a `parse` that only ever sees a present, non-empty string.
26
- * Required `validate` throws on absent/empty; `.optional()` returns `undefined`.
27
+ * Required `validate` throws on absent/empty (using `message` when given);
28
+ * `.optional()` returns `undefined`; `.optionalWhen(cond)` is optional only
29
+ * when the condition holds.
27
30
  */
28
- function makeNode(parse) {
31
+ function makeNode(parse, message) {
32
+ const required = (name, value) => {
33
+ if (value === undefined || value === '') {
34
+ throw new EnvVarError(message ?? `Missing required environment variable "${name}"`);
35
+ }
36
+ return parse(name, value);
37
+ };
38
+ const optional = (name, value) => {
39
+ if (value === undefined || value === '')
40
+ return undefined;
41
+ return parse(name, value);
42
+ };
29
43
  return {
30
- validate(name, value) {
31
- if (value === undefined || value === '') {
32
- throw new EnvVarError(`Missing required environment variable "${name}"`);
33
- }
34
- return parse(name, value);
35
- },
36
- optional() {
37
- return {
38
- validate(name, value) {
39
- if (value === undefined || value === '')
40
- return undefined;
41
- return parse(name, value);
42
- },
43
- };
44
- },
44
+ validate: required,
45
+ optional: () => ({ validate: optional }),
46
+ optionalWhen: (condition) => ({
47
+ validate(name, value) {
48
+ const skip = typeof condition === 'function' ? condition(name, value) : condition;
49
+ return skip ? optional(name, value) : required(name, value);
50
+ },
51
+ }),
45
52
  };
46
53
  }
47
54
  function isHost(value) {
@@ -71,6 +78,9 @@ function isUrl(value, options) {
71
78
  function isEmail(value) {
72
79
  return /^[^\s@]+@[^\s@]+\.[^\s@]+$/.test(value);
73
80
  }
81
+ function isUuid(value) {
82
+ return /^[0-9a-f]{8}-[0-9a-f]{4}-[1-5][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$/i.test(value);
83
+ }
74
84
  function checkFormat(name, value, options) {
75
85
  if (!options?.format)
76
86
  return;
@@ -78,9 +88,12 @@ function checkFormat(name, value, options) {
78
88
  ? isHost(value)
79
89
  : options.format === 'url'
80
90
  ? isUrl(value, options)
81
- : isEmail(value);
91
+ : options.format === 'uuid'
92
+ ? isUuid(value)
93
+ : isEmail(value);
82
94
  if (!ok) {
83
- throw new EnvVarError(`Environment variable "${name}" must be a valid ${options.format}, got "${value}"`);
95
+ throw new EnvVarError(options.message ??
96
+ `Environment variable "${name}" must be a valid ${options.format}, got "${value}"`);
84
97
  }
85
98
  }
86
99
  function stringParse(options) {
@@ -89,42 +102,63 @@ function stringParse(options) {
89
102
  return raw;
90
103
  };
91
104
  }
92
- /** `string(opts?)` is callable AND exposes `.optional(opts?)` — both Adonis forms. */
93
- const string = Object.assign((options) => makeNode(stringParse(options)), {
94
- optional: (options) => makeNode(stringParse(options)).optional(),
105
+ /**
106
+ * `string(opts?)` is callable AND exposes `.optional(opts?)` / `.optionalWhen()`
107
+ * shortcuts — all AdonisJS forms.
108
+ */
109
+ const string = Object.assign((options) => makeNode(stringParse(options), options?.message), {
110
+ optional: (options) => makeNode(stringParse(options), options?.message).optional(),
111
+ optionalWhen: (condition, options) => makeNode(stringParse(options), options?.message).optionalWhen(condition),
95
112
  });
96
- function number() {
97
- return makeNode((name, raw) => {
113
+ function numberParse(options) {
114
+ return (name, raw) => {
98
115
  const parsed = Number(raw);
99
116
  if (Number.isNaN(parsed)) {
100
- throw new EnvVarError(`Environment variable "${name}" must be a number, got "${raw}"`);
117
+ throw new EnvVarError(options?.message ?? `Environment variable "${name}" must be a number, got "${raw}"`);
101
118
  }
102
119
  return parsed;
103
- });
120
+ };
104
121
  }
105
- function boolean() {
106
- return makeNode((name, raw) => {
122
+ function number(options) {
123
+ return makeNode(numberParse(options), options?.message);
124
+ }
125
+ function booleanParse(options) {
126
+ return (name, raw) => {
107
127
  if (TRUE_VALUES.has(raw))
108
128
  return true;
109
129
  if (FALSE_VALUES.has(raw))
110
130
  return false;
111
- throw new EnvVarError(`Environment variable "${name}" must be a boolean (true/false/1/0), got "${raw}"`);
112
- });
131
+ throw new EnvVarError(options?.message ??
132
+ `Environment variable "${name}" must be a boolean (true/false/1/0), got "${raw}"`);
133
+ };
113
134
  }
114
- function enumNode(values) {
135
+ function boolean(options) {
136
+ return makeNode(booleanParse(options), options?.message);
137
+ }
138
+ function enumNode(values, options) {
115
139
  return makeNode((name, raw) => {
116
140
  const match = values.find((candidate) => candidate === raw);
117
141
  if (match === undefined) {
118
- throw new EnvVarError(`Environment variable "${name}" must be one of [${values.join(', ')}], got "${raw}"`);
142
+ throw new EnvVarError(options?.message ??
143
+ `Environment variable "${name}" must be one of [${values.join(', ')}], got "${raw}"`);
119
144
  }
120
145
  return match;
121
- });
146
+ }, options?.message);
122
147
  }
148
+ /**
149
+ * `secret(opts?)` wraps the value in a {@link Secret} so it never leaks through
150
+ * logs/JSON (AdonisJS `Env.schema.secret`). Read it with `.release()`.
151
+ */
152
+ const secret = Object.assign((options) => makeNode((_name, raw) => new Secret(raw), options?.message), {
153
+ optional: (options) => makeNode((_name, raw) => new Secret(raw), options?.message).optional(),
154
+ optionalWhen: (condition, options) => makeNode((_name, raw) => new Secret(raw), options?.message).optionalWhen(condition),
155
+ });
123
156
  /** The `Env.schema` surface. */
124
157
  export const schema = {
125
158
  string,
126
159
  number,
127
160
  boolean,
128
161
  enum: enumNode,
162
+ secret,
129
163
  };
130
164
  //# sourceMappingURL=schema.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"schema.js","sourceRoot":"","sources":["../../src/env/schema.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"schema.js","sourceRoot":"","sources":["../../src/env/schema.ts"],"names":[],"mappings":"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"}
@@ -6,6 +6,31 @@
6
6
  *
7
7
  * @implements FR71, FR72, FR73, FR77
8
8
  */
9
+ /**
10
+ * Is this a Ream error, and one of these codes?
11
+ *
12
+ * The framework carries ONE error type with a `code`, because an error can be
13
+ * raised in Rust and rebuilt in TypeScript across the NAPI boundary — see
14
+ * {@link ReamError.fromNapi}. A class per code cannot cross that line, so the
15
+ * check that replaces `instanceof MyError` is this one.
16
+ *
17
+ * @example
18
+ * ```ts
19
+ * try {
20
+ * await consoleApp.exec('provision')
21
+ * } catch (error) {
22
+ * if (isReamError(error, 'E_CONSOLE_MISSING_FLAG', 'E_CONSOLE_MISSING_ARGUMENT')) {
23
+ * console.error(error.hint) // narrowed: `error` IS a ReamError here
24
+ * return
25
+ * }
26
+ * throw error
27
+ * }
28
+ * ```
29
+ */
30
+ export declare function isReamError(error: unknown): error is ReamError;
31
+ export declare function isReamError<const Code extends string>(error: unknown, ...codes: [Code, ...Code[]]): error is ReamError & {
32
+ code: Code;
33
+ };
9
34
  export declare class ReamError extends Error {
10
35
  /** Error code (e.g., "ATLAS_QUERY_ERROR", "CONTAINER_NOT_FOUND") */
11
36
  readonly code: string;
@@ -1 +1 @@
1
- {"version":3,"file":"ReamError.d.ts","sourceRoot":"","sources":["../../src/errors/ReamError.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,qBAAa,SAAU,SAAQ,KAAK;IAClC,oEAAoE;IACpE,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAA;IAErB,yCAAyC;IACzC,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;IAExC,wCAAwC;IACxC,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,CAAA;IAEtB,6CAA6C;IAC7C,QAAQ,CAAC,UAAU,CAAC,EAAE,MAAM,CAAA;IAE5B,qCAAqC;IACrC,QAAQ,CAAC,UAAU,CAAC,EAAE,MAAM,CAAA;IAE5B,0CAA0C;IAC1C,QAAQ,CAAC,OAAO,CAAC,EAAE,MAAM,CAAA;IAEzB,8DAA8D;IAC9D,QAAQ,CAAC,aAAa,CAAC,EAAE,MAAM,CAAA;gBAG7B,IAAI,EAAE,MAAM,EACZ,OAAO,EAAE,MAAM,EACf,OAAO,CAAC,EAAE;QACR,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;QAChC,IAAI,CAAC,EAAE,MAAM,CAAA;QACb,UAAU,CAAC,EAAE,MAAM,CAAA;QACnB,UAAU,CAAC,EAAE,MAAM,CAAA;QACnB,OAAO,CAAC,EAAE,MAAM,CAAA;QAChB,aAAa,CAAC,EAAE,MAAM,CAAA;KACvB;IAaH;;;OAGG;IACH,MAAM,CAAC,QAAQ,CAAC,KAAK,EAAE,KAAK,GAAG,SAAS;IAoBxC;;OAEG;IACH,WAAW,IAAI,MAAM;IA2CrB;;OAEG;IACH,YAAY,IAAI,MAAM;IAItB;;OAEG;IACH,iBAAiB,IAAI,MAAM;CAG5B"}
1
+ {"version":3,"file":"ReamError.d.ts","sourceRoot":"","sources":["../../src/errors/ReamError.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,wBAAgB,WAAW,CAAC,KAAK,EAAE,OAAO,GAAG,KAAK,IAAI,SAAS,CAAA;AAC/D,wBAAgB,WAAW,CAAC,KAAK,CAAC,IAAI,SAAS,MAAM,EACnD,KAAK,EAAE,OAAO,EACd,GAAG,KAAK,EAAE,CAAC,IAAI,EAAE,GAAG,IAAI,EAAE,CAAC,GAC1B,KAAK,IAAI,SAAS,GAAG;IAAE,IAAI,EAAE,IAAI,CAAA;CAAE,CAAA;AAMtC,qBAAa,SAAU,SAAQ,KAAK;IAClC,oEAAoE;IACpE,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAA;IAErB,yCAAyC;IACzC,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;IAExC,wCAAwC;IACxC,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,CAAA;IAEtB,6CAA6C;IAC7C,QAAQ,CAAC,UAAU,CAAC,EAAE,MAAM,CAAA;IAE5B,qCAAqC;IACrC,QAAQ,CAAC,UAAU,CAAC,EAAE,MAAM,CAAA;IAE5B,0CAA0C;IAC1C,QAAQ,CAAC,OAAO,CAAC,EAAE,MAAM,CAAA;IAEzB,8DAA8D;IAC9D,QAAQ,CAAC,aAAa,CAAC,EAAE,MAAM,CAAA;gBAG7B,IAAI,EAAE,MAAM,EACZ,OAAO,EAAE,MAAM,EACf,OAAO,CAAC,EAAE;QACR,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;QAChC,IAAI,CAAC,EAAE,MAAM,CAAA;QACb,UAAU,CAAC,EAAE,MAAM,CAAA;QACnB,UAAU,CAAC,EAAE,MAAM,CAAA;QACnB,OAAO,CAAC,EAAE,MAAM,CAAA;QAChB,aAAa,CAAC,EAAE,MAAM,CAAA;KACvB;IAaH;;;OAGG;IACH,MAAM,CAAC,QAAQ,CAAC,KAAK,EAAE,KAAK,GAAG,SAAS;IAoBxC;;OAEG;IACH,WAAW,IAAI,MAAM;IA2CrB;;OAEG;IACH,YAAY,IAAI,MAAM;IAItB;;OAEG;IACH,iBAAiB,IAAI,MAAM;CAG5B"}
@@ -6,6 +6,11 @@
6
6
  *
7
7
  * @implements FR71, FR72, FR73, FR77
8
8
  */
9
+ export function isReamError(error, ...codes) {
10
+ if (!(error instanceof ReamError))
11
+ return false;
12
+ return codes.length === 0 || codes.includes(error.code);
13
+ }
9
14
  export class ReamError extends Error {
10
15
  /** Error code (e.g., "ATLAS_QUERY_ERROR", "CONTAINER_NOT_FOUND") */
11
16
  code;
@@ -1 +1 @@
1
- {"version":3,"file":"ReamError.js","sourceRoot":"","sources":["../../src/errors/ReamError.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"ReamError.js","sourceRoot":"","sources":["../../src/errors/ReamError.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,9 @@
1
+ /**
2
+ * Render an error for a human reading a terminal (AdonisJS `prettyPrintError`).
3
+ *
4
+ * Its own module rather than a helper inside `Ignitor.ts`: the console kernel
5
+ * renders the failures of the command it ran, and reaching into the Ignitor for
6
+ * that would make the two import each other.
7
+ */
8
+ export declare function prettyPrintError(error: unknown): void;
9
+ //# sourceMappingURL=prettyPrintError.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"prettyPrintError.d.ts","sourceRoot":"","sources":["../../src/errors/prettyPrintError.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAIH,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,OAAO,GAAG,IAAI,CASrD"}
@@ -0,0 +1,22 @@
1
+ /**
2
+ * Render an error for a human reading a terminal (AdonisJS `prettyPrintError`).
3
+ *
4
+ * Its own module rather than a helper inside `Ignitor.ts`: the console kernel
5
+ * renders the failures of the command it ran, and reaching into the Ignitor for
6
+ * that would make the two import each other.
7
+ */
8
+ import { ReamError } from './ReamError.js';
9
+ export function prettyPrintError(error) {
10
+ if (error instanceof ReamError) {
11
+ console.error(error.toDevString());
12
+ }
13
+ else if (error instanceof Error) {
14
+ console.error(`\n ${error.message}\n`);
15
+ if (error.stack)
16
+ console.error(error.stack);
17
+ }
18
+ else {
19
+ console.error(error);
20
+ }
21
+ }
22
+ //# sourceMappingURL=prettyPrintError.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"prettyPrintError.js","sourceRoot":"","sources":["../../src/errors/prettyPrintError.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAA;AAE1C,MAAM,UAAU,gBAAgB,CAAC,KAAc;IAC7C,IAAI,KAAK,YAAY,SAAS,EAAE,CAAC;QAC/B,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,WAAW,EAAE,CAAC,CAAA;IACpC,CAAC;SAAM,IAAI,KAAK,YAAY,KAAK,EAAE,CAAC;QAClC,OAAO,CAAC,KAAK,CAAC,OAAO,KAAK,CAAC,OAAO,IAAI,CAAC,CAAA;QACvC,IAAI,KAAK,CAAC,KAAK;YAAE,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,CAAA;IAC7C,CAAC;SAAM,CAAC;QACN,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,CAAA;IACtB,CAAC;AACH,CAAC"}