@c9up/ream 0.1.24 → 0.1.26

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 (172) hide show
  1. package/dist/ConfigLoader.d.ts +46 -5
  2. package/dist/ConfigLoader.d.ts.map +1 -1
  3. package/dist/ConfigLoader.js +60 -9
  4. package/dist/ConfigLoader.js.map +1 -1
  5. package/dist/HttpKernel.d.ts.map +1 -1
  6. package/dist/HttpKernel.js +46 -6
  7. package/dist/HttpKernel.js.map +1 -1
  8. package/dist/Ignitor.d.ts.map +1 -1
  9. package/dist/Ignitor.js +21 -3
  10. package/dist/Ignitor.js.map +1 -1
  11. package/dist/container/Container.d.ts +23 -3
  12. package/dist/container/Container.d.ts.map +1 -1
  13. package/dist/container/Container.js +139 -60
  14. package/dist/container/Container.js.map +1 -1
  15. package/dist/env/Env.d.ts +29 -4
  16. package/dist/env/Env.d.ts.map +1 -1
  17. package/dist/env/Env.js +27 -4
  18. package/dist/env/Env.js.map +1 -1
  19. package/dist/env/Secret.d.ts +11 -0
  20. package/dist/env/Secret.d.ts.map +1 -0
  21. package/dist/env/Secret.js +36 -0
  22. package/dist/env/Secret.js.map +1 -0
  23. package/dist/env/interpolate.d.ts +26 -0
  24. package/dist/env/interpolate.d.ts.map +1 -0
  25. package/dist/env/interpolate.js +48 -0
  26. package/dist/env/interpolate.js.map +1 -0
  27. package/dist/env/loadEnvFiles.d.ts.map +1 -1
  28. package/dist/env/loadEnvFiles.js +14 -4
  29. package/dist/env/loadEnvFiles.js.map +1 -1
  30. package/dist/env/schema.d.ts +23 -6
  31. package/dist/env/schema.d.ts.map +1 -1
  32. package/dist/env/schema.js +67 -33
  33. package/dist/env/schema.js.map +1 -1
  34. package/dist/events/Emitter.d.ts +1 -1
  35. package/dist/events/Emitter.d.ts.map +1 -1
  36. package/dist/events/Emitter.js +1 -1
  37. package/dist/events/Emitter.js.map +1 -1
  38. package/dist/events/EventsProvider.d.ts +2 -2
  39. package/dist/events/EventsProvider.d.ts.map +1 -1
  40. package/dist/events/EventsProvider.js +3 -3
  41. package/dist/events/EventsProvider.js.map +1 -1
  42. package/dist/graphql/GraphQLEngine.d.ts +1 -1
  43. package/dist/graphql/GraphQLEngine.d.ts.map +1 -1
  44. package/dist/graphql/GraphQLEngine.js +2 -2
  45. package/dist/graphql/GraphQLEngine.js.map +1 -1
  46. package/dist/graphql/GraphQLProvider.d.ts.map +1 -1
  47. package/dist/graphql/GraphQLProvider.js +7 -3
  48. package/dist/graphql/GraphQLProvider.js.map +1 -1
  49. package/dist/http/Exception.d.ts +63 -1
  50. package/dist/http/Exception.d.ts.map +1 -1
  51. package/dist/http/Exception.js +185 -48
  52. package/dist/http/Exception.js.map +1 -1
  53. package/dist/http/HttpContext.d.ts +56 -9
  54. package/dist/http/HttpContext.d.ts.map +1 -1
  55. package/dist/http/HttpContext.js +56 -15
  56. package/dist/http/HttpContext.js.map +1 -1
  57. package/dist/http/RedirectBuilder.d.ts.map +1 -1
  58. package/dist/http/RedirectBuilder.js +4 -1
  59. package/dist/http/RedirectBuilder.js.map +1 -1
  60. package/dist/http/Request.d.ts +141 -10
  61. package/dist/http/Request.d.ts.map +1 -1
  62. package/dist/http/Request.js +244 -34
  63. package/dist/http/Request.js.map +1 -1
  64. package/dist/http/Response.d.ts +176 -9
  65. package/dist/http/Response.d.ts.map +1 -1
  66. package/dist/http/Response.js +431 -19
  67. package/dist/http/Response.js.map +1 -1
  68. package/dist/index.d.ts +5 -4
  69. package/dist/index.d.ts.map +1 -1
  70. package/dist/index.js +4 -3
  71. package/dist/index.js.map +1 -1
  72. package/dist/middleware/Pipeline.js +1 -1
  73. package/dist/middleware/Pipeline.js.map +1 -1
  74. package/dist/openapi/OpenApiProvider.js +4 -4
  75. package/dist/openapi/OpenApiProvider.js.map +1 -1
  76. package/dist/router/Router.d.ts +223 -31
  77. package/dist/router/Router.d.ts.map +1 -1
  78. package/dist/router/Router.js +520 -102
  79. package/dist/router/Router.js.map +1 -1
  80. package/dist/rpc/RpcProvider.d.ts +1 -0
  81. package/dist/rpc/RpcProvider.d.ts.map +1 -1
  82. package/dist/rpc/RpcProvider.js +7 -3
  83. package/dist/rpc/RpcProvider.js.map +1 -1
  84. package/dist/rpc/RpcRouter.d.ts +2 -2
  85. package/dist/rpc/RpcRouter.d.ts.map +1 -1
  86. package/dist/rpc/RpcRouter.js +5 -4
  87. package/dist/rpc/RpcRouter.js.map +1 -1
  88. package/dist/scheduler/ScheduleProvider.d.ts.map +1 -1
  89. package/dist/scheduler/ScheduleProvider.js +7 -15
  90. package/dist/scheduler/ScheduleProvider.js.map +1 -1
  91. package/dist/server/Server.d.ts +17 -4
  92. package/dist/server/Server.d.ts.map +1 -1
  93. package/dist/server/Server.js +41 -7
  94. package/dist/server/Server.js.map +1 -1
  95. package/dist/session/SessionMiddleware.js +3 -3
  96. package/dist/session/SessionMiddleware.js.map +1 -1
  97. package/dist/storage/StaticProvider.js +1 -1
  98. package/dist/storage/StaticProvider.js.map +1 -1
  99. package/dist/testing/RequestBuilder.d.ts +60 -0
  100. package/dist/testing/RequestBuilder.d.ts.map +1 -1
  101. package/dist/testing/RequestBuilder.js +180 -1
  102. package/dist/testing/RequestBuilder.js.map +1 -1
  103. package/dist/testing/TestClient.d.ts +22 -1
  104. package/dist/testing/TestClient.d.ts.map +1 -1
  105. package/dist/testing/TestClient.js +40 -0
  106. package/dist/testing/TestClient.js.map +1 -1
  107. package/dist/utils/Macroable.d.ts +30 -0
  108. package/dist/utils/Macroable.d.ts.map +1 -0
  109. package/dist/utils/Macroable.js +43 -0
  110. package/dist/utils/Macroable.js.map +1 -0
  111. package/dist/utils/inflect.d.ts +17 -0
  112. package/dist/utils/inflect.d.ts.map +1 -0
  113. package/dist/utils/inflect.js +32 -0
  114. package/dist/utils/inflect.js.map +1 -0
  115. package/dist/utils/objectPath.d.ts +57 -0
  116. package/dist/utils/objectPath.d.ts.map +1 -0
  117. package/dist/utils/objectPath.js +141 -0
  118. package/dist/utils/objectPath.js.map +1 -0
  119. package/events.darwin-arm64.node +0 -0
  120. package/events.darwin-x64.node +0 -0
  121. package/events.linux-arm64-gnu.node +0 -0
  122. package/events.linux-x64-gnu.node +0 -0
  123. package/events.win32-x64-msvc.node +0 -0
  124. package/index.darwin-arm64.node +0 -0
  125. package/index.darwin-x64.node +0 -0
  126. package/index.linux-arm64-gnu.node +0 -0
  127. package/index.linux-x64-gnu.node +0 -0
  128. package/index.win32-x64-msvc.node +0 -0
  129. package/package.json +6 -1
  130. package/scheduler.darwin-arm64.node +0 -0
  131. package/scheduler.darwin-x64.node +0 -0
  132. package/scheduler.linux-arm64-gnu.node +0 -0
  133. package/scheduler.linux-x64-gnu.node +0 -0
  134. package/scheduler.win32-x64-msvc.node +0 -0
  135. package/src/ConfigLoader.ts +72 -9
  136. package/src/HttpKernel.ts +53 -15
  137. package/src/Ignitor.ts +24 -3
  138. package/src/container/Container.ts +145 -61
  139. package/src/env/Env.ts +49 -5
  140. package/src/env/Secret.ts +41 -0
  141. package/src/env/interpolate.ts +54 -0
  142. package/src/env/loadEnvFiles.ts +12 -4
  143. package/src/env/schema.ts +109 -35
  144. package/src/events/Emitter.ts +2 -2
  145. package/src/events/EventsProvider.ts +5 -5
  146. package/src/graphql/GraphQLEngine.ts +4 -4
  147. package/src/graphql/GraphQLProvider.ts +7 -3
  148. package/src/http/Exception.ts +214 -37
  149. package/src/http/HttpContext.ts +93 -20
  150. package/src/http/RedirectBuilder.ts +4 -1
  151. package/src/http/Request.ts +264 -34
  152. package/src/http/Response.ts +504 -30
  153. package/src/index.ts +11 -2
  154. package/src/middleware/Pipeline.ts +1 -1
  155. package/src/openapi/OpenApiProvider.ts +4 -4
  156. package/src/router/Router.ts +631 -113
  157. package/src/rpc/RpcProvider.ts +6 -2
  158. package/src/rpc/RpcRouter.ts +7 -6
  159. package/src/scheduler/ScheduleProvider.ts +7 -15
  160. package/src/server/Server.ts +49 -10
  161. package/src/session/SessionMiddleware.ts +4 -4
  162. package/src/storage/StaticProvider.ts +1 -1
  163. package/src/testing/RequestBuilder.ts +218 -1
  164. package/src/testing/TestClient.ts +57 -1
  165. package/src/utils/Macroable.ts +54 -0
  166. package/src/utils/inflect.ts +29 -0
  167. package/src/utils/objectPath.ts +142 -0
  168. package/dist/decorators/Lazy.d.ts +0 -19
  169. package/dist/decorators/Lazy.d.ts.map +0 -1
  170. package/dist/decorators/Lazy.js +0 -53
  171. package/dist/decorators/Lazy.js.map +0 -1
  172. package/src/decorators/Lazy.ts +0 -57
@@ -9,7 +9,6 @@
9
9
  * @implements FR11, FR12, FR14, FR16
10
10
  */
11
11
  import 'reflect-metadata';
12
- import { createLazyProxy, getLazyParams } from '../decorators/Lazy.js';
13
12
  import { getInjectTokens, getServiceMetadata, getServiceRegistry } from '../decorators/Service.js';
14
13
  import { didYouMean } from '../errors/FuzzyMatcher.js';
15
14
  import { ReamError } from '../errors/ReamError.js';
@@ -30,6 +29,10 @@ export class Container {
30
29
  * pointing at the same object after the test ends.
31
30
  */
32
31
  #singletonBackup = new Map();
32
+ /** Alias key → the token it forwards to (AdonisJS `container.alias`). */
33
+ #aliases = new Map();
34
+ /** token key → post-resolution callbacks (AdonisJS `container.resolving`). */
35
+ #resolvingHooks = new Map();
33
36
  #resolutionStack = [];
34
37
  #resolutionSet = new Set();
35
38
  // ─── Explicit bindings ────────────────────────────────────
@@ -49,6 +52,34 @@ export class Container {
49
52
  this.#singletons.set(key, value);
50
53
  this.#bindings.set(key, { token, factory: () => value, scope: 'singleton', dependencies: [] });
51
54
  }
55
+ /**
56
+ * Register an alias — resolving `alias` forwards to `target` (AdonisJS
57
+ * `container.alias('db', Database)`). The target may be a class, string, or
58
+ * symbol that itself resolves to a binding or an auto-constructable class.
59
+ */
60
+ alias(alias, target) {
61
+ this.#aliases.set(this.#tokenToKey(alias), target);
62
+ }
63
+ /**
64
+ * Register a callback that runs each time `token` is constructed (AdonisJS
65
+ * `container.resolving`) — for lazy init (`db.connect()`) or decorating the
66
+ * resolved instance. Runs after construction of a binding/auto-constructed
67
+ * class; NOT for raw `bindValue` values or an already-cached singleton.
68
+ */
69
+ resolving(token, callback) {
70
+ const key = this.#tokenToKey(token);
71
+ const hooks = this.#resolvingHooks.get(key);
72
+ if (hooks)
73
+ hooks.push(callback);
74
+ else
75
+ this.#resolvingHooks.set(key, [callback]);
76
+ }
77
+ async #runResolvingHooks(key, value) {
78
+ const hooks = this.#resolvingHooks.get(key);
79
+ if (hooks)
80
+ for (const hook of hooks)
81
+ await hook(value);
82
+ }
52
83
  // ─── Testing ──────────────────────────────────────────────
53
84
  /**
54
85
  * Replace a binding's factory for testing (AdonisJS-compatible swap).
@@ -100,23 +131,32 @@ export class Container {
100
131
  * 4. Auto-construct if class has @inject() or @Service()
101
132
  * 5. Auto-construct any class (plain `new Class()`) as fallback
102
133
  */
103
- make(token) {
104
- return this.resolve(token);
134
+ make(token, runtimeValues) {
135
+ return this.resolve(token, runtimeValues);
105
136
  }
106
- /** Alias for make() — backward compatible. */
107
- resolve(token) {
137
+ /**
138
+ * Resolve/construct a class or binding (AdonisJS `container.make` — async, so
139
+ * factories, providers and `resolving` hooks may be async). `runtimeValues`
140
+ * fill the resolved class's constructor slots by index (`make(Class, [req,
141
+ * res])`); only the `undefined` slots are container-resolved, top-level only.
142
+ */
143
+ async resolve(token, runtimeValues) {
144
+ // Dereference an alias to its target before anything else.
145
+ const aliasTarget = this.#aliases.get(this.#tokenToKey(token));
146
+ if (aliasTarget !== undefined)
147
+ return this.resolve(aliasTarget, runtimeValues);
108
148
  const key = this.#tokenToKey(token);
109
149
  if (this.#resolutionSet.has(key)) {
110
150
  const cycle = [...this.#resolutionStack, key].join(' → ');
111
151
  throw new ReamError('CIRCULAR_DEPENDENCY', `Circular dependency detected: ${cycle}`, {
112
- hint: 'Use @Lazy() on one of the constructor parameters to break the cycle.',
152
+ hint: 'Break the cycle by resolving one dependency lazily inside a method (`await container.make(Dep)`) instead of injecting it in the constructor.',
113
153
  context: { chain: cycle },
114
154
  });
115
155
  }
116
156
  this.#resolutionStack.push(key);
117
157
  this.#resolutionSet.add(key);
118
158
  try {
119
- return this.#resolveInner(key, token);
159
+ return await this.#resolveInner(key, token, runtimeValues);
120
160
  }
121
161
  finally {
122
162
  this.#resolutionStack.pop();
@@ -134,15 +174,17 @@ export class Container {
134
174
  const target = Object.getPrototypeOf(instance).constructor;
135
175
  const paramTypes = Reflect.getMetadata('design:paramtypes', target.prototype, method) ?? [];
136
176
  const len = Math.max(paramTypes.length, runtimeValues?.length ?? 0);
137
- const args = Array.from({ length: len }, (_, index) => {
138
- // Runtime values take precedence (and fill slots beyond paramTypes)
139
- if (runtimeValues && index < runtimeValues.length)
140
- return runtimeValues[index];
177
+ // Sequential resolution keeps the shared cycle-detection stack consistent.
178
+ const args = [];
179
+ for (let index = 0; index < len; index += 1) {
180
+ // Runtime values take precedence (and fill slots beyond paramTypes).
181
+ if (runtimeValues && index < runtimeValues.length) {
182
+ args.push(runtimeValues[index]);
183
+ continue;
184
+ }
141
185
  const type = paramTypes[index];
142
- if (isClassConstructor(type))
143
- return this.resolve(type);
144
- return undefined;
145
- });
186
+ args.push(isInjectableClass(type) ? await this.resolve(type) : undefined);
187
+ }
146
188
  const member = instance[method];
147
189
  if (!isCallable(member)) {
148
190
  throw new Error(`Container.call: '${method}' is not a callable method`);
@@ -156,8 +198,13 @@ export class Container {
156
198
  return (this.#bindings.has(key) ||
157
199
  this.#overrides.has(key) ||
158
200
  this.#singletons.has(key) ||
201
+ this.#aliases.has(key) ||
159
202
  (typeof token === 'function' && getServiceMetadata(token) !== undefined));
160
203
  }
204
+ /** True only when EVERY token is registered/resolvable (AdonisJS `hasAllBindings`). */
205
+ hasAllBindings(tokens) {
206
+ return tokens.every((token) => this.has(token));
207
+ }
161
208
  get size() {
162
209
  return this.#bindings.size;
163
210
  }
@@ -177,31 +224,32 @@ export class Container {
177
224
  }
178
225
  }
179
226
  // ─── Internal resolution ──────────────────────────────────
180
- #resolveInner(key, token) {
181
- // 1. Check swaps (test overrides)
227
+ async #resolveInner(key, token, runtimeValues) {
228
+ // 1. Check swaps (test overrides) — a swap factory may be async.
182
229
  if (this.#overrides.has(key)) {
183
- // biome-ignore lint/suspicious/noExplicitAny: IoC container factory returns unknown; caller brands via T
184
- return this.#overrides.get(key)?.();
230
+ const swapped = await this.#overrides.get(key)?.();
231
+ return swapped;
185
232
  }
186
233
  // 2. Check cached singletons
187
234
  if (this.#singletons.has(key)) {
188
- // biome-ignore lint/suspicious/noExplicitAny: IoC singleton stored as unknown; caller brands via T
189
235
  return this.#singletons.get(key);
190
236
  }
191
- // 3. Check explicit bindings
237
+ // 3. Check explicit bindings — the factory may be async.
192
238
  const binding = this.#bindings.get(key);
193
239
  if (binding) {
194
- const instance = binding.factory ? binding.factory() : undefined;
240
+ const instance = binding.factory ? await binding.factory() : undefined;
195
241
  if (binding.scope === 'singleton') {
196
242
  this.#singletons.set(key, instance);
197
243
  }
198
- // biome-ignore lint/suspicious/noExplicitAny: IoC binding factory returns unknown; caller brands via T
244
+ await this.#runResolvingHooks(key, instance);
245
+ // Boundary cast from `unknown` — the caller brands the resolved type via T.
199
246
  return instance;
200
247
  }
201
248
  // 4. Auto-construct if it's a class
202
249
  if (typeof token === 'function') {
203
- // biome-ignore lint/suspicious/noExplicitAny: IoC auto-construct returns unknown; caller brands via T
204
- return this.#autoConstruct(token);
250
+ const instance = (await this.#autoConstruct(token, runtimeValues));
251
+ await this.#runResolvingHooks(key, instance);
252
+ return instance;
205
253
  }
206
254
  // 5. Not found
207
255
  const allKeys = [...this.#bindings.keys(), ...this.#overrides.keys()];
@@ -218,46 +266,58 @@ export class Container {
218
266
  * 2. Reflect.getMetadata('design:paramtypes') — decorator metadata (requires SWC/tsc)
219
267
  * 3. No params → plain `new Class()`
220
268
  */
221
- #autoConstruct(target) {
269
+ async #autoConstruct(target, runtimeValues) {
222
270
  const metadata = getServiceMetadata(target);
223
271
  const scope = metadata?.scope ?? 'transient';
224
272
  const key = metadata?.as ?? target.name;
225
273
  if (scope === 'singleton' && this.#singletons.has(key)) {
226
274
  return this.#singletons.get(key);
227
275
  }
276
+ // A runtime value at this index (from `make(Class, [req, res])`) wins over
277
+ // container resolution for that constructor slot.
278
+ const runtimeAt = (index) => runtimeValues?.[index];
228
279
  // 1. Check static containerInjections (AdonisJS Fold-compatible, works
229
- // without emitDecoratorMetadata). The `in` operator narrows the optional
230
- // field to `unknown`, then `readContainerInjectionDeps` validates the
231
- // shape at runtime — no type-level cast required.
280
+ // without emitDecoratorMetadata).
232
281
  const explicitDeps = readContainerInjectionDeps(target);
233
282
  // 2. Fallback to reflect-metadata
234
283
  const paramTypes = explicitDeps ?? Reflect.getMetadata('design:paramtypes', target) ?? [];
235
284
  const injectTokens = getInjectTokens(target);
236
- const lazyIndices = getLazyParams(target);
237
285
  // No `design:paramtypes` (a dev transpiler may not emit decorator metadata —
238
286
  // esbuild / tsx don't). Recover what we can, and NEVER construct with
239
287
  // silently-undefined deps (that masked a whole DI outage in dev):
240
288
  if (paramTypes.length === 0) {
241
289
  // (a) `@Inject(token)` records its tokens INDEPENDENTLY of decorator
242
290
  // metadata, so even without `design:paramtypes` we can resolve the
243
- // constructor from that map alone.
291
+ // constructor from that map alone. Deps resolve SEQUENTIALLY so the
292
+ // shared cycle-detection stack stays consistent.
244
293
  if (injectTokens.size > 0) {
245
- const maxIndex = Math.max(...injectTokens.keys());
246
- const deps = Array.from({ length: maxIndex + 1 }, (_value, index) => {
247
- const depToken = injectTokens.get(index);
248
- if (!depToken)
249
- return undefined;
250
- if (lazyIndices.includes(index)) {
251
- return createLazyProxy(() => this.resolve(depToken));
294
+ const maxIndex = Math.max(...injectTokens.keys(), (runtimeValues?.length ?? 0) - 1);
295
+ const deps = [];
296
+ for (let index = 0; index <= maxIndex; index += 1) {
297
+ const rt = runtimeAt(index);
298
+ if (rt !== undefined) {
299
+ deps.push(rt);
300
+ continue;
252
301
  }
253
- return this.resolve(depToken);
254
- });
302
+ const depToken = injectTokens.get(index);
303
+ deps.push(depToken ? await this.resolve(depToken) : undefined);
304
+ }
305
+ const instance = new target(...deps);
306
+ if (scope === 'singleton')
307
+ this.#singletons.set(key, instance);
308
+ return instance;
309
+ }
310
+ // (b) No @Inject/metadata, but the caller supplied runtime values — build
311
+ // from those (the `make(Controller, [req, res])` pattern with a plain
312
+ // constructor). Slots beyond the runtime values stay undefined.
313
+ if (target.length > 0 && (runtimeValues?.length ?? 0) > 0) {
314
+ const deps = Array.from({ length: target.length }, (_value, index) => runtimeAt(index));
255
315
  const instance = new target(...deps);
256
316
  if (scope === 'singleton')
257
317
  this.#singletons.set(key, instance);
258
318
  return instance;
259
319
  }
260
- // (b) The constructor declares parameters but we have no way to resolve
320
+ // (c) The constructor declares parameters but we have no way to resolve
261
321
  // them (no metadata, no @Inject, no containerInjections). Fail LOUDLY
262
322
  // instead of `new target()` with undefined deps.
263
323
  if (target.length > 0) {
@@ -265,26 +325,28 @@ export class Container {
265
325
  hint: 'Enable decorator metadata (swc/tsc emitDecoratorMetadata), annotate constructor params with @Inject(token), or declare static containerInjections.',
266
326
  });
267
327
  }
268
- // (c) Genuine zero-argument class.
328
+ // (d) Genuine zero-argument class.
269
329
  const instance = new target();
270
330
  if (scope === 'singleton')
271
331
  this.#singletons.set(key, instance);
272
332
  return instance;
273
333
  }
274
- const deps = paramTypes.map((type, index) => {
275
- const namedToken = injectTokens.get(index);
276
- // After the typeof check, type is a constructor function and valid as ServiceToken
277
- const depToken = namedToken ??
278
- // biome-ignore lint/suspicious/noExplicitAny: reflect-metadata returns unknown; constructor functions are valid ServiceTokens
279
- (typeof type === 'function' && type !== Object ? type : undefined);
280
- if (!depToken)
281
- return undefined;
282
- if (lazyIndices.includes(index)) {
283
- // biome-ignore lint/suspicious/noExplicitAny: lazy proxy target must be object; IoC resolution returns unknown
284
- return createLazyProxy(() => this.resolve(depToken));
334
+ // Resolve constructor deps SEQUENTIALLY (the cycle-detection stack is
335
+ // instance-shared, so parallel Promise.all would interleave and corrupt it).
336
+ const deps = [];
337
+ for (let index = 0; index < paramTypes.length; index += 1) {
338
+ const rt = runtimeAt(index);
339
+ if (rt !== undefined) {
340
+ deps.push(rt);
341
+ continue;
285
342
  }
286
- return this.resolve(depToken);
287
- });
343
+ const namedToken = injectTokens.get(index);
344
+ const type = paramTypes[index];
345
+ // A native primitive constructor (String/Number/Boolean/…) is NOT
346
+ // injectable — leave the slot undefined so a constructor default can fill it.
347
+ const depToken = namedToken ?? (isInjectableClass(type) ? type : undefined);
348
+ deps.push(depToken ? await this.resolve(depToken) : undefined);
349
+ }
288
350
  const instance = new target(...deps);
289
351
  if (scope === 'singleton')
290
352
  this.#singletons.set(key, instance);
@@ -320,11 +382,28 @@ export class Container {
320
382
  }
321
383
  }
322
384
  }
323
- // `design:paramtypes` returns `unknown[]` per our annotation; we narrow each
324
- // entry before treating it as a class token. `Object` slips through because
325
- // emitDecoratorMetadata uses it for `any`/`unknown` parameters.
326
- function isClassConstructor(value) {
327
- return typeof value === 'function' && value !== Object;
385
+ /**
386
+ * Native constructors emitDecoratorMetadata uses for primitive / `any` /
387
+ * `unknown` parameters. They are NOT injectable — resolving them would try to
388
+ * auto-construct `String`/`Number`/… (or silently inject `undefined`), so we
389
+ * skip them and let a constructor default fill the slot instead.
390
+ */
391
+ const NON_INJECTABLE_CONSTRUCTORS = new Set([
392
+ Object,
393
+ String,
394
+ Number,
395
+ Boolean,
396
+ Array,
397
+ Function,
398
+ Symbol,
399
+ Date,
400
+ RegExp,
401
+ Promise,
402
+ Error,
403
+ ]);
404
+ /** True for a real, injectable class token (excludes native primitive constructors). */
405
+ function isInjectableClass(value) {
406
+ return typeof value === 'function' && !NON_INJECTABLE_CONSTRUCTORS.has(value);
328
407
  }
329
408
  function isCallable(value) {
330
409
  return typeof value === 'function';
@@ -1 +1 @@
1
- {"version":3,"file":"Container.js","sourceRoot":"","sources":["../../src/container/Container.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"Container.js","sourceRoot":"","sources":["../../src/container/Container.ts"],"names":[],"mappings":"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"}
package/dist/env/Env.d.ts CHANGED
@@ -1,3 +1,4 @@
1
+ import { type IdentifierResolver } from './interpolate.js';
1
2
  import { type SchemaNode } from './schema.js';
2
3
  /**
3
4
  * Type-safe environment access — mirrors `@adonisjs/core/env`:
@@ -37,11 +38,22 @@ export declare class Env<Values extends Record<string, unknown>> {
37
38
  static readonly schema: {
38
39
  string: ((options?: import("./schema.js").StringOptions) => import("./schema.js").RequiredNode<string>) & {
39
40
  optional(options?: import("./schema.js").StringOptions): SchemaNode<string | undefined>;
41
+ optionalWhen(condition: import("./schema.js").OptionalCondition, options?: import("./schema.js").StringOptions): SchemaNode<string | undefined>;
42
+ };
43
+ number: (options?: import("./schema.js").SchemaFnOptions) => import("./schema.js").RequiredNode<number>;
44
+ boolean: (options?: import("./schema.js").SchemaFnOptions) => import("./schema.js").RequiredNode<boolean>;
45
+ enum: <V extends readonly string[]>(values: V, options?: import("./schema.js").SchemaFnOptions) => import("./schema.js").RequiredNode<V[number]>;
46
+ secret: ((options?: import("./schema.js").SchemaFnOptions) => import("./schema.js").RequiredNode<import("./Secret.js").Secret<string>>) & {
47
+ optional(options?: import("./schema.js").SchemaFnOptions): SchemaNode<import("./Secret.js").Secret<string> | undefined>;
48
+ optionalWhen(condition: import("./schema.js").OptionalCondition, options?: import("./schema.js").SchemaFnOptions): SchemaNode<import("./Secret.js").Secret<string> | undefined>;
40
49
  };
41
- number: () => import("./schema.js").RequiredNode<number>;
42
- boolean: () => import("./schema.js").RequiredNode<boolean>;
43
- enum: <V extends readonly string[]>(values: V) => import("./schema.js").RequiredNode<V[number]>;
44
50
  };
51
+ /** Register an interpolation identifier (AdonisJS `Env.defineIdentifier`). */
52
+ static defineIdentifier(name: string, resolver: IdentifierResolver): void;
53
+ /** Register an identifier only if the name is free (AdonisJS `defineIdentifierIfMissing`). */
54
+ static defineIdentifierIfMissing(name: string, resolver: IdentifierResolver): void;
55
+ /** Remove a registered interpolation identifier (AdonisJS `Env.removeIdentifier`). */
56
+ static removeIdentifier(name: string): void;
45
57
  private constructor();
46
58
  /**
47
59
  * Load `.env*` files, validate `process.env` against `schema`, and return a
@@ -49,9 +61,22 @@ export declare class Env<Values extends Record<string, unknown>> {
49
61
  * failure) if validation fails.
50
62
  */
51
63
  static create<S extends Record<string, SchemaNode<unknown>>>(appRoot: URL, schema: S): Promise<Env<EnvRecord<S>>>;
52
- /** Read a validated variable. Required keys are always present; optional keys may be `undefined`. */
64
+ /**
65
+ * Read a variable. Validated keys are typed; for any other key the raw
66
+ * `process.env` value is returned as a fallback (AdonisJS `env.get`
67
+ * semantics). Required keys are always present; optional keys may be
68
+ * `undefined`. The second argument is the default when nothing is found.
69
+ */
53
70
  get<K extends keyof Values>(key: K): Values[K];
54
71
  get<K extends keyof Values>(key: K, fallback: Values[K]): Values[K];
72
+ get(key: string): string | undefined;
73
+ get(key: string, fallback: string): string;
74
+ /**
75
+ * Set/override a variable at runtime (AdonisJS `env.set`). Updates the cache
76
+ * AND `process.env`. The value is NOT re-validated — pass the correct type.
77
+ */
78
+ set<K extends keyof Values>(key: K, value: Values[K]): void;
79
+ set(key: string, value: string): void;
55
80
  }
56
81
  export {};
57
82
  //# sourceMappingURL=Env.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"Env.d.ts","sourceRoot":"","sources":["../../src/env/Env.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,KAAK,UAAU,EAAU,MAAM,aAAa,CAAA;AAErD;;;;;;;;;;;;;;;;;;;GAmBG;AAEH,yDAAyD;AACzD,KAAK,SAAS,CAAC,CAAC,IAAI,CAAC,SAAS,UAAU,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,GAAG,KAAK,CAAA;AAE7D,kEAAkE;AAClE,KAAK,SAAS,CAAC,CAAC,SAAS,MAAM,CAAC,MAAM,EAAE,UAAU,CAAC,OAAO,CAAC,CAAC,IAAI;KAC7D,CAAC,IAAI,MAAM,CAAC,GAAG,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;CAChC,CAAA;AAED,qEAAqE;AACrE,qBAAa,sBAAuB,SAAQ,KAAK;IAC/C,sFAAsF;IACtF,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAA;gBACT,QAAQ,EAAE,MAAM,EAAE;CAK/B;AAED,qBAAa,GAAG,CAAC,MAAM,SAAS,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;;IACrD,4EAA4E;IAC5E,MAAM,CAAC,QAAQ,CAAC,MAAM;;;;;;;MAAS;IAI/B,OAAO;IAIP;;;;OAIG;WACU,MAAM,CAAC,CAAC,SAAS,MAAM,CAAC,MAAM,EAAE,UAAU,CAAC,OAAO,CAAC,CAAC,EAC/D,OAAO,EAAE,GAAG,EACZ,MAAM,EAAE,CAAC,GACR,OAAO,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC;IAqB7B,qGAAqG;IACrG,GAAG,CAAC,CAAC,SAAS,MAAM,MAAM,EAAE,GAAG,EAAE,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC;IAC9C,GAAG,CAAC,CAAC,SAAS,MAAM,MAAM,EAAE,GAAG,EAAE,CAAC,EAAE,QAAQ,EAAE,MAAM,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC;CAMpE"}
1
+ {"version":3,"file":"Env.d.ts","sourceRoot":"","sources":["../../src/env/Env.ts"],"names":[],"mappings":"AAAA,OAAO,EAGL,KAAK,kBAAkB,EAExB,MAAM,kBAAkB,CAAA;AAEzB,OAAO,EAAE,KAAK,UAAU,EAAU,MAAM,aAAa,CAAA;AAErD;;;;;;;;;;;;;;;;;;;GAmBG;AAEH,yDAAyD;AACzD,KAAK,SAAS,CAAC,CAAC,IAAI,CAAC,SAAS,UAAU,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,GAAG,KAAK,CAAA;AAE7D,kEAAkE;AAClE,KAAK,SAAS,CAAC,CAAC,SAAS,MAAM,CAAC,MAAM,EAAE,UAAU,CAAC,OAAO,CAAC,CAAC,IAAI;KAC7D,CAAC,IAAI,MAAM,CAAC,GAAG,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;CAChC,CAAA;AAED,qEAAqE;AACrE,qBAAa,sBAAuB,SAAQ,KAAK;IAC/C,sFAAsF;IACtF,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAA;gBACT,QAAQ,EAAE,MAAM,EAAE;CAK/B;AAED,qBAAa,GAAG,CAAC,MAAM,SAAS,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;;IACrD,4EAA4E;IAC5E,MAAM,CAAC,QAAQ,CAAC,MAAM;;;;;;;;;;;;MAAS;IAE/B,8EAA8E;IAC9E,MAAM,CAAC,gBAAgB,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,kBAAkB,GAAG,IAAI;IAIzE,8FAA8F;IAC9F,MAAM,CAAC,yBAAyB,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,kBAAkB,GAAG,IAAI;IAIlF,sFAAsF;IACtF,MAAM,CAAC,gBAAgB,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI;IAM3C,OAAO;IAIP;;;;OAIG;WACU,MAAM,CAAC,CAAC,SAAS,MAAM,CAAC,MAAM,EAAE,UAAU,CAAC,OAAO,CAAC,CAAC,EAC/D,OAAO,EAAE,GAAG,EACZ,MAAM,EAAE,CAAC,GACR,OAAO,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC;IAqB7B;;;;;OAKG;IACH,GAAG,CAAC,CAAC,SAAS,MAAM,MAAM,EAAE,GAAG,EAAE,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC;IAC9C,GAAG,CAAC,CAAC,SAAS,MAAM,MAAM,EAAE,GAAG,EAAE,CAAC,EAAE,QAAQ,EAAE,MAAM,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC;IACnE,GAAG,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS;IACpC,GAAG,CAAC,GAAG,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,MAAM;IAU1C;;;OAGG;IACH,GAAG,CAAC,CAAC,SAAS,MAAM,MAAM,EAAE,GAAG,EAAE,CAAC,EAAE,KAAK,EAAE,MAAM,CAAC,CAAC,CAAC,GAAG,IAAI;IAC3D,GAAG,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,IAAI;CAOtC"}
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"}