@c9up/ream 0.1.32 → 0.1.33
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.
- package/dist/Application.d.ts +27 -0
- package/dist/Application.d.ts.map +1 -1
- package/dist/Application.js +29 -0
- package/dist/Application.js.map +1 -1
- package/dist/ErrorBoundary.d.ts.map +1 -1
- package/dist/ErrorBoundary.js +13 -1
- package/dist/ErrorBoundary.js.map +1 -1
- package/dist/HttpKernel.d.ts +8 -0
- package/dist/HttpKernel.d.ts.map +1 -1
- package/dist/HttpKernel.js +35 -12
- package/dist/HttpKernel.js.map +1 -1
- package/dist/Ignitor.d.ts +8 -0
- package/dist/Ignitor.d.ts.map +1 -1
- package/dist/Ignitor.js +39 -0
- package/dist/Ignitor.js.map +1 -1
- package/dist/bodyparser/BodyParserMiddleware.d.ts +11 -4
- package/dist/bodyparser/BodyParserMiddleware.d.ts.map +1 -1
- package/dist/bodyparser/BodyParserMiddleware.js +55 -43
- package/dist/bodyparser/BodyParserMiddleware.js.map +1 -1
- package/dist/bodyparser/qsParse.d.ts +52 -0
- package/dist/bodyparser/qsParse.d.ts.map +1 -0
- package/dist/bodyparser/qsParse.js +161 -0
- package/dist/bodyparser/qsParse.js.map +1 -0
- package/dist/bootstrap/hyper-server.d.ts.map +1 -1
- package/dist/bootstrap/hyper-server.js +2 -8
- package/dist/bootstrap/hyper-server.js.map +1 -1
- package/dist/container/Container.d.ts +41 -0
- package/dist/container/Container.d.ts.map +1 -1
- package/dist/container/Container.js +193 -26
- package/dist/container/Container.js.map +1 -1
- package/dist/container/ContainerResolver.d.ts +46 -0
- package/dist/container/ContainerResolver.d.ts.map +1 -0
- package/dist/container/ContainerResolver.js +60 -0
- package/dist/container/ContainerResolver.js.map +1 -0
- package/dist/container/ContextualBindingsBuilder.d.ts +20 -0
- package/dist/container/ContextualBindingsBuilder.d.ts.map +1 -0
- package/dist/container/ContextualBindingsBuilder.js +31 -0
- package/dist/container/ContextualBindingsBuilder.js.map +1 -0
- package/dist/container/types.d.ts +9 -6
- package/dist/container/types.d.ts.map +1 -1
- package/dist/decorators/Service.d.ts +1 -5
- package/dist/decorators/Service.d.ts.map +1 -1
- package/dist/decorators/Service.js +10 -1
- package/dist/decorators/Service.js.map +1 -1
- package/dist/events/Emitter.d.ts +66 -6
- package/dist/events/Emitter.d.ts.map +1 -1
- package/dist/events/Emitter.js +165 -28
- package/dist/events/Emitter.js.map +1 -1
- package/dist/graphql/GraphQLEngine.d.ts.map +1 -1
- package/dist/graphql/GraphQLEngine.js +5 -5
- package/dist/graphql/GraphQLEngine.js.map +1 -1
- package/dist/helpers/duration.d.ts +32 -0
- package/dist/helpers/duration.d.ts.map +1 -0
- package/dist/helpers/duration.js +74 -0
- package/dist/helpers/duration.js.map +1 -0
- package/dist/helpers/napi-loader.d.ts +10 -1
- package/dist/helpers/napi-loader.d.ts.map +1 -1
- package/dist/helpers/napi-loader.js +18 -3
- package/dist/helpers/napi-loader.js.map +1 -1
- package/dist/helpers/types.d.ts +1 -1
- package/dist/helpers/types.d.ts.map +1 -1
- package/dist/http/Exception.d.ts.map +1 -1
- package/dist/http/Exception.js +17 -5
- package/dist/http/Exception.js.map +1 -1
- package/dist/http/HttpContext.d.ts +16 -5
- package/dist/http/HttpContext.d.ts.map +1 -1
- package/dist/http/HttpContext.js +4 -2
- package/dist/http/HttpContext.js.map +1 -1
- package/dist/http/RedirectBuilder.d.ts +48 -2
- package/dist/http/RedirectBuilder.d.ts.map +1 -1
- package/dist/http/RedirectBuilder.js +95 -14
- package/dist/http/RedirectBuilder.js.map +1 -1
- package/dist/http/Request.d.ts +128 -8
- package/dist/http/Request.d.ts.map +1 -1
- package/dist/http/Request.js +259 -8
- package/dist/http/Request.js.map +1 -1
- package/dist/http/Response.d.ts +74 -3
- package/dist/http/Response.d.ts.map +1 -1
- package/dist/http/Response.js +177 -4
- package/dist/http/Response.js.map +1 -1
- package/dist/index.d.ts +9 -3
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +5 -1
- package/dist/index.js.map +1 -1
- package/dist/router/Router.d.ts +36 -7
- package/dist/router/Router.d.ts.map +1 -1
- package/dist/router/Router.js +66 -22
- package/dist/router/Router.js.map +1 -1
- package/dist/security/CookieSigner.d.ts +35 -4
- package/dist/security/CookieSigner.d.ts.map +1 -1
- package/dist/security/CookieSigner.js +99 -10
- package/dist/security/CookieSigner.js.map +1 -1
- package/dist/server/Server.d.ts +2 -3
- package/dist/server/Server.d.ts.map +1 -1
- package/dist/server/Server.js +30 -13
- package/dist/server/Server.js.map +1 -1
- package/dist/session/ReadOnlyValuesStore.d.ts +24 -0
- package/dist/session/ReadOnlyValuesStore.d.ts.map +1 -0
- package/dist/session/ReadOnlyValuesStore.js +45 -0
- package/dist/session/ReadOnlyValuesStore.js.map +1 -0
- package/dist/session/Session.d.ts +181 -9
- package/dist/session/Session.d.ts.map +1 -1
- package/dist/session/Session.js +284 -33
- package/dist/session/Session.js.map +1 -1
- package/dist/session/SessionMiddleware.d.ts.map +1 -1
- package/dist/session/SessionMiddleware.js +87 -33
- package/dist/session/SessionMiddleware.js.map +1 -1
- package/dist/session/drivers/DatabaseDriver.d.ts +66 -0
- package/dist/session/drivers/DatabaseDriver.d.ts.map +1 -0
- package/dist/session/drivers/DatabaseDriver.js +132 -0
- package/dist/session/drivers/DatabaseDriver.js.map +1 -0
- package/dist/session/drivers/FileDriver.d.ts +22 -0
- package/dist/session/drivers/FileDriver.d.ts.map +1 -0
- package/dist/session/drivers/FileDriver.js +66 -0
- package/dist/session/drivers/FileDriver.js.map +1 -0
- package/dist/session/drivers/MemoryDriver.d.ts +10 -2
- package/dist/session/drivers/MemoryDriver.d.ts.map +1 -1
- package/dist/session/drivers/MemoryDriver.js +70 -0
- package/dist/session/drivers/MemoryDriver.js.map +1 -1
- package/dist/session/drivers/RedisDriver.d.ts +10 -2
- package/dist/session/drivers/RedisDriver.d.ts.map +1 -1
- package/dist/session/drivers/RedisDriver.js +58 -0
- package/dist/session/drivers/RedisDriver.js.map +1 -1
- package/dist/session/templateTags.d.ts +42 -0
- package/dist/session/templateTags.d.ts.map +1 -0
- package/dist/session/templateTags.js +101 -0
- package/dist/session/templateTags.js.map +1 -0
- package/dist/testing/RequestBuilder.d.ts +38 -1
- package/dist/testing/RequestBuilder.d.ts.map +1 -1
- package/dist/testing/RequestBuilder.js +40 -1
- package/dist/testing/RequestBuilder.js.map +1 -1
- package/dist/testing/TestClient.d.ts +3 -1
- package/dist/testing/TestClient.d.ts.map +1 -1
- package/dist/testing/TestClient.js +3 -1
- package/dist/testing/TestClient.js.map +1 -1
- package/dist/types/helpers.d.ts +1 -1
- package/dist/types/helpers.d.ts.map +1 -1
- package/dist/utils/Macroable.d.ts +14 -5
- package/dist/utils/Macroable.d.ts.map +1 -1
- package/dist/utils/Macroable.js +20 -18
- package/dist/utils/Macroable.js.map +1 -1
- package/events.win32-x64-msvc.node +0 -0
- package/index.win32-x64-msvc.node +0 -0
- package/package.json +1 -1
- package/scheduler.win32-x64-msvc.node +0 -0
- package/src/Application.ts +39 -0
- package/src/ErrorBoundary.ts +13 -1
- package/src/HttpKernel.ts +45 -19
- package/src/Ignitor.ts +39 -0
- package/src/bodyparser/BodyParserMiddleware.ts +66 -44
- package/src/bodyparser/qsParse.ts +179 -0
- package/src/bootstrap/hyper-server.ts +2 -9
- package/src/container/Container.ts +265 -25
- package/src/container/ContainerResolver.ts +84 -0
- package/src/container/ContextualBindingsBuilder.ts +41 -0
- package/src/container/types.ts +11 -7
- package/src/decorators/Service.ts +16 -3
- package/src/events/Emitter.ts +200 -25
- package/src/graphql/GraphQLEngine.ts +7 -8
- package/src/helpers/duration.ts +71 -0
- package/src/helpers/napi-loader.ts +19 -3
- package/src/helpers/types.ts +4 -1
- package/src/http/Exception.ts +17 -5
- package/src/http/HttpContext.ts +20 -5
- package/src/http/RedirectBuilder.ts +126 -11
- package/src/http/Request.ts +283 -13
- package/src/http/Response.ts +213 -6
- package/src/index.ts +17 -3
- package/src/router/Router.ts +98 -33
- package/src/security/CookieSigner.ts +102 -10
- package/src/server/Server.ts +36 -16
- package/src/session/ReadOnlyValuesStore.ts +52 -0
- package/src/session/Session.ts +364 -37
- package/src/session/SessionMiddleware.ts +93 -30
- package/src/session/drivers/DatabaseDriver.ts +184 -0
- package/src/session/drivers/FileDriver.ts +82 -0
- package/src/session/drivers/MemoryDriver.ts +75 -2
- package/src/session/drivers/RedisDriver.ts +77 -2
- package/src/session/templateTags.ts +124 -0
- package/src/testing/RequestBuilder.ts +76 -0
- package/src/testing/TestClient.ts +10 -2
- package/src/types/helpers.ts +4 -1
- package/src/utils/Macroable.ts +23 -8
- package/dist/utils/inflect.d.ts +0 -17
- package/dist/utils/inflect.d.ts.map +0 -1
- package/dist/utils/inflect.js +0 -32
- package/dist/utils/inflect.js.map +0 -1
- package/src/utils/inflect.ts +0 -29
|
@@ -13,6 +13,8 @@ import { AsyncLocalStorage } from 'node:async_hooks';
|
|
|
13
13
|
import { getInjectTokens, getMethodInjectTokens, getServiceMetadata, getServiceRegistry, } from '../decorators/Service.js';
|
|
14
14
|
import { didYouMean } from '../errors/FuzzyMatcher.js';
|
|
15
15
|
import { ReamError } from '../errors/ReamError.js';
|
|
16
|
+
import { ContainerResolver } from './ContainerResolver.js';
|
|
17
|
+
import { ContextualBindingsBuilder } from './ContextualBindingsBuilder.js';
|
|
16
18
|
/**
|
|
17
19
|
* Symbol descriptions that would collide with object-prototype keys if used
|
|
18
20
|
* as raw map keys. We reject them on registration so tokens cannot be used
|
|
@@ -22,6 +24,15 @@ const RESERVED_TOKEN_NAMES = new Set(['__proto__', 'constructor', 'prototype']);
|
|
|
22
24
|
export class Container {
|
|
23
25
|
#bindings = new Map();
|
|
24
26
|
#singletons = new Map();
|
|
27
|
+
/**
|
|
28
|
+
* Singletons currently being built, by key.
|
|
29
|
+
*
|
|
30
|
+
* The factory is async, so two resolves at cold start both get past the
|
|
31
|
+
* cache check and both run it — producing two instances where the whole
|
|
32
|
+
* point is one, and silently discarding the first (a second connection
|
|
33
|
+
* pool, a second scheduler). Concurrent callers await the same promise.
|
|
34
|
+
*/
|
|
35
|
+
#pendingSingletons = new Map();
|
|
25
36
|
#overrides = new Map();
|
|
26
37
|
/**
|
|
27
38
|
* Snapshot of singletons taken when `swap`/`override` shadows a previously
|
|
@@ -32,6 +43,8 @@ export class Container {
|
|
|
32
43
|
#singletonBackup = new Map();
|
|
33
44
|
/** Alias key → the token it forwards to (AdonisJS `container.alias`). */
|
|
34
45
|
#aliases = new Map();
|
|
46
|
+
/** parent class → (binding key → the factory that class gets instead). */
|
|
47
|
+
#contextualBindings = new Map();
|
|
35
48
|
/** token key → post-resolution callbacks (AdonisJS `container.resolving`). */
|
|
36
49
|
#resolvingHooks = new Map();
|
|
37
50
|
/**
|
|
@@ -61,6 +74,27 @@ export class Container {
|
|
|
61
74
|
this.#singletons.set(key, value);
|
|
62
75
|
this.#bindings.set(key, { token, factory: () => value, scope: 'singleton', dependencies: [] });
|
|
63
76
|
}
|
|
77
|
+
/**
|
|
78
|
+
* Give ONE class a different implementation of a dependency (AdonisJS
|
|
79
|
+
* `container.contextualBinding`).
|
|
80
|
+
*
|
|
81
|
+
* `contextualBinding(UsersController, Hash, () => new Argon2())` — everyone
|
|
82
|
+
* else asking for `Hash` still gets the container's binding. See
|
|
83
|
+
* {@link when} for the fluent spelling.
|
|
84
|
+
*/
|
|
85
|
+
contextualBinding(parent, binding, factory) {
|
|
86
|
+
const forParent = this.#contextualBindings.get(parent) ?? new Map();
|
|
87
|
+
forParent.set(this.#tokenToKey(binding), factory);
|
|
88
|
+
this.#contextualBindings.set(parent, forParent);
|
|
89
|
+
}
|
|
90
|
+
/**
|
|
91
|
+
* Fluent contextual binding (AdonisJS `container.when`):
|
|
92
|
+
*
|
|
93
|
+
* container.when(UsersController).asksFor(Hash).provide(() => new Argon2())
|
|
94
|
+
*/
|
|
95
|
+
when(parent) {
|
|
96
|
+
return new ContextualBindingsBuilder(this, parent);
|
|
97
|
+
}
|
|
64
98
|
/**
|
|
65
99
|
* Register an alias — resolving `alias` forwards to `target` (AdonisJS
|
|
66
100
|
* `container.alias('db', Database)`). The target may be a class, string, or
|
|
@@ -150,11 +184,26 @@ export class Container {
|
|
|
150
184
|
* res])`); only the `undefined` slots are container-resolved, top-level only.
|
|
151
185
|
*/
|
|
152
186
|
async resolve(token, runtimeValues) {
|
|
153
|
-
// Dereference
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
187
|
+
// Dereference aliases to the final target before anything else. Walked in
|
|
188
|
+
// a LOOP with its own seen-set: recursing into `resolve()` re-entered
|
|
189
|
+
// before the cycle guard below was armed, so `alias('a','b')` +
|
|
190
|
+
// `alias('b','a')` overflowed the stack instead of naming the cycle.
|
|
191
|
+
let resolvedToken = token;
|
|
192
|
+
let key = this.#tokenToKey(resolvedToken);
|
|
193
|
+
const seenAliases = new Set([key]);
|
|
194
|
+
for (let target = this.#aliases.get(key); target !== undefined; target = this.#aliases.get(key)) {
|
|
195
|
+
resolvedToken = target;
|
|
196
|
+
key = this.#tokenToKey(target);
|
|
197
|
+
if (seenAliases.has(key)) {
|
|
198
|
+
const cycle = [...seenAliases, key].join(' → ');
|
|
199
|
+
throw new ReamError('CIRCULAR_DEPENDENCY', `Circular alias detected: ${cycle}`, {
|
|
200
|
+
hint: 'An alias chain must end at a real binding — remove one of the aliases.',
|
|
201
|
+
context: { chain: cycle },
|
|
202
|
+
});
|
|
203
|
+
}
|
|
204
|
+
seenAliases.add(key);
|
|
205
|
+
}
|
|
206
|
+
token = resolvedToken;
|
|
158
207
|
// Top of a chain: open one, so everything this resolution triggers shares
|
|
159
208
|
// it and nothing outside it does.
|
|
160
209
|
const chain = this.#chain.getStore();
|
|
@@ -187,6 +236,17 @@ export class Container {
|
|
|
187
236
|
// `Object.getPrototypeOf` is typed `any` in lib.dom, so the assignment
|
|
188
237
|
// narrows it back to a typed constructor without a cast expression.
|
|
189
238
|
const target = Object.getPrototypeOf(instance).constructor;
|
|
239
|
+
// A method's dependencies are dependencies of the class declaring it, so a
|
|
240
|
+
// contextual binding applies to `call()` exactly as to a constructor. There
|
|
241
|
+
// is usually no chain open here — `call()` is an entry point — so one is
|
|
242
|
+
// opened to carry the parent, rather than each `resolve()` below opening
|
|
243
|
+
// its own with nobody in it.
|
|
244
|
+
const chain = this.#chain.getStore();
|
|
245
|
+
if (chain === undefined) {
|
|
246
|
+
return this.#chain.run({ stack: [], set: new Set(), parent: target }, () => this.call(instance, method, runtimeValues));
|
|
247
|
+
}
|
|
248
|
+
const outerParent = chain.parent;
|
|
249
|
+
chain.parent = target;
|
|
190
250
|
const paramTypes = Reflect.getMetadata('design:paramtypes', target.prototype, method) ?? [];
|
|
191
251
|
// `@Inject('token')` on a method parameter — a named binding the reflected
|
|
192
252
|
// type cannot express (an interface, or a class registered under a name).
|
|
@@ -213,12 +273,49 @@ export class Container {
|
|
|
213
273
|
const type = paramTypes[index];
|
|
214
274
|
args.push(isInjectableClass(type) ? await this.resolve(type) : undefined);
|
|
215
275
|
}
|
|
276
|
+
chain.parent = outerParent;
|
|
216
277
|
const member = instance[method];
|
|
217
278
|
if (!isCallable(member)) {
|
|
218
279
|
throw new Error(`Container.call: '${method}' is not a callable method`);
|
|
219
280
|
}
|
|
220
281
|
return member.apply(instance, args);
|
|
221
282
|
}
|
|
283
|
+
/**
|
|
284
|
+
* A resolver whose {@link ContainerResolver.bindValue} values are isolated
|
|
285
|
+
* from this container (AdonisJS `container.createResolver()`).
|
|
286
|
+
*
|
|
287
|
+
* Anything the resolver builds — and everything that build depends on — sees
|
|
288
|
+
* those values; nothing outside it does. This is how a request binds its own
|
|
289
|
+
* `HttpContext` without every other request seeing it.
|
|
290
|
+
*/
|
|
291
|
+
createResolver() {
|
|
292
|
+
return new ContainerResolver(this);
|
|
293
|
+
}
|
|
294
|
+
/**
|
|
295
|
+
* @internal Run `fn` with `values` layered onto the resolution chain.
|
|
296
|
+
*
|
|
297
|
+
* Reuses an open chain rather than starting a second one, so cycle detection
|
|
298
|
+
* still spans the whole resolution when a resolver is used inside a factory.
|
|
299
|
+
*/
|
|
300
|
+
runWithScopedValues(values, fn) {
|
|
301
|
+
const chain = this.#chain.getStore();
|
|
302
|
+
return this.#chain.run(chain === undefined ? { stack: [], set: new Set(), values } : { ...chain, values }, fn);
|
|
303
|
+
}
|
|
304
|
+
/** @internal Normalise a token the way the container keys it. */
|
|
305
|
+
keyFor(token) {
|
|
306
|
+
return this.#tokenToKey(token);
|
|
307
|
+
}
|
|
308
|
+
/**
|
|
309
|
+
* Resolve `token` as if `parent` had asked for it, so `parent`'s contextual
|
|
310
|
+
* bindings apply (AdonisJS `resolveFor`). `parent: null` means nobody asked —
|
|
311
|
+
* identical to {@link make}.
|
|
312
|
+
*/
|
|
313
|
+
async resolveFor(parent, token, runtimeValues) {
|
|
314
|
+
if (parent === null)
|
|
315
|
+
return this.make(token, runtimeValues);
|
|
316
|
+
const chain = this.#chain.getStore();
|
|
317
|
+
return this.#chain.run(chain === undefined ? { stack: [], set: new Set(), parent } : { ...chain, parent }, () => this.make(token, runtimeValues));
|
|
318
|
+
}
|
|
222
319
|
// ─── Introspection ────────────────────────────────────────
|
|
223
320
|
/** Check if a token is registered or resolvable. */
|
|
224
321
|
has(token) {
|
|
@@ -258,28 +355,68 @@ export class Container {
|
|
|
258
355
|
const swapped = await this.#overrides.get(key)?.(this);
|
|
259
356
|
return swapped;
|
|
260
357
|
}
|
|
261
|
-
// 2.
|
|
358
|
+
// 2. A contextual binding for the class currently being built — "when
|
|
359
|
+
// UsersController asks for Hash, give it Argon2". Before the resolver's
|
|
360
|
+
// values and the container's, after swaps: @adonisjs/fold's order.
|
|
361
|
+
const store = this.#chain.getStore();
|
|
362
|
+
const contextual = store?.parent === undefined ? undefined : this.#contextualBindings.get(store.parent)?.get(key);
|
|
363
|
+
if (contextual !== undefined) {
|
|
364
|
+
const instance = await contextual(this);
|
|
365
|
+
await this.#runResolvingHooks(key, instance);
|
|
366
|
+
return instance;
|
|
367
|
+
}
|
|
368
|
+
// 3. A value bound on the resolver that opened this chain. Before the
|
|
369
|
+
// container's own values, after swaps — the order @adonisjs/fold
|
|
370
|
+
// resolves in (`resolveFor`: swaps, resolver values, container values).
|
|
371
|
+
// No `resolving` hooks: the value was not constructed here.
|
|
372
|
+
if (store?.values?.has(key)) {
|
|
373
|
+
store.scopedReads = (store.scopedReads ?? 0) + 1;
|
|
374
|
+
return store.values.get(key);
|
|
375
|
+
}
|
|
376
|
+
// 4. Check cached singletons
|
|
262
377
|
if (this.#singletons.has(key)) {
|
|
263
378
|
return this.#singletons.get(key);
|
|
264
379
|
}
|
|
265
|
-
//
|
|
380
|
+
// 5. Check explicit bindings — the factory may be async.
|
|
266
381
|
const binding = this.#bindings.get(key);
|
|
267
382
|
if (binding) {
|
|
268
|
-
|
|
269
|
-
|
|
270
|
-
this.#
|
|
383
|
+
if (binding.scope !== 'singleton') {
|
|
384
|
+
const instance = binding.factory ? await binding.factory(this) : undefined;
|
|
385
|
+
await this.#runResolvingHooks(key, instance);
|
|
386
|
+
// Boundary cast from `unknown` — the caller brands the resolved type via T.
|
|
387
|
+
return instance;
|
|
388
|
+
}
|
|
389
|
+
// A build already under way: join it rather than start a second one.
|
|
390
|
+
const inFlight = this.#pendingSingletons.get(key);
|
|
391
|
+
if (inFlight)
|
|
392
|
+
return (await inFlight);
|
|
393
|
+
const readsBefore = store?.scopedReads ?? 0;
|
|
394
|
+
const building = (async () => {
|
|
395
|
+
const instance = binding.factory ? await binding.factory(this) : undefined;
|
|
396
|
+
// See `ResolutionChain.scopedReads`: a build that consumed a
|
|
397
|
+
// request-scoped value is that request's, not the application's.
|
|
398
|
+
this.#cacheIfAppWide('singleton', key, instance, store, readsBefore);
|
|
399
|
+
// Inside the promise, so the hooks run exactly once per instance no
|
|
400
|
+
// matter how many callers were waiting.
|
|
401
|
+
await this.#runResolvingHooks(key, instance);
|
|
402
|
+
return instance;
|
|
403
|
+
})();
|
|
404
|
+
this.#pendingSingletons.set(key, building);
|
|
405
|
+
try {
|
|
406
|
+
return (await building);
|
|
407
|
+
}
|
|
408
|
+
finally {
|
|
409
|
+
// Cleared either way: a failed build must not poison later attempts.
|
|
410
|
+
this.#pendingSingletons.delete(key);
|
|
271
411
|
}
|
|
272
|
-
await this.#runResolvingHooks(key, instance);
|
|
273
|
-
// Boundary cast from `unknown` — the caller brands the resolved type via T.
|
|
274
|
-
return instance;
|
|
275
412
|
}
|
|
276
|
-
//
|
|
413
|
+
// 6. Auto-construct if it's a class
|
|
277
414
|
if (typeof token === 'function') {
|
|
278
415
|
const instance = (await this.#autoConstruct(token, runtimeValues));
|
|
279
416
|
await this.#runResolvingHooks(key, instance);
|
|
280
417
|
return instance;
|
|
281
418
|
}
|
|
282
|
-
//
|
|
419
|
+
// 7. Not found
|
|
283
420
|
const allKeys = [...this.#bindings.keys(), ...this.#overrides.keys()];
|
|
284
421
|
const suggestion = didYouMean(key, allKeys);
|
|
285
422
|
throw new ReamError('CONTAINER_NOT_FOUND', `No binding found for '${key}'.${suggestion ? ` ${suggestion}` : ''}`, {
|
|
@@ -295,12 +432,31 @@ export class Container {
|
|
|
295
432
|
* 3. No params → plain `new Class()`
|
|
296
433
|
*/
|
|
297
434
|
async #autoConstruct(target, runtimeValues) {
|
|
435
|
+
// Everything resolved inside is a dependency OF `target`, which is what a
|
|
436
|
+
// contextual binding keys on. Restored on EVERY exit — the construction has
|
|
437
|
+
// three returns and can throw — so `target`'s own parent is back in place.
|
|
438
|
+
const store = this.#chain.getStore();
|
|
439
|
+
const outerParent = store?.parent;
|
|
440
|
+
if (store !== undefined)
|
|
441
|
+
store.parent = target;
|
|
442
|
+
try {
|
|
443
|
+
return await this.#constructWithDeps(target, runtimeValues);
|
|
444
|
+
}
|
|
445
|
+
finally {
|
|
446
|
+
if (store !== undefined)
|
|
447
|
+
store.parent = outerParent;
|
|
448
|
+
}
|
|
449
|
+
}
|
|
450
|
+
async #constructWithDeps(target, runtimeValues) {
|
|
298
451
|
const metadata = getServiceMetadata(target);
|
|
299
452
|
const scope = metadata?.scope ?? 'transient';
|
|
300
453
|
const key = metadata?.as ?? target.name;
|
|
301
454
|
if (scope === 'singleton' && this.#singletons.has(key)) {
|
|
302
455
|
return this.#singletons.get(key);
|
|
303
456
|
}
|
|
457
|
+
// Same rule as the explicit singleton bindings: see `scopedReads`.
|
|
458
|
+
const store = this.#chain.getStore();
|
|
459
|
+
const readsBefore = store?.scopedReads ?? 0;
|
|
304
460
|
// A runtime value at this index (from `make(Class, [req, res])`) wins over
|
|
305
461
|
// container resolution for that constructor slot.
|
|
306
462
|
const runtimeAt = (index) => runtimeValues?.[index];
|
|
@@ -330,9 +486,8 @@ export class Container {
|
|
|
330
486
|
const depToken = injectTokens.get(index);
|
|
331
487
|
deps.push(depToken ? await this.resolve(depToken) : undefined);
|
|
332
488
|
}
|
|
333
|
-
const instance =
|
|
334
|
-
|
|
335
|
-
this.#singletons.set(key, instance);
|
|
489
|
+
const instance = Reflect.construct(target, deps);
|
|
490
|
+
this.#cacheIfAppWide(scope, key, instance, store, readsBefore);
|
|
336
491
|
return instance;
|
|
337
492
|
}
|
|
338
493
|
// (b) No @Inject/metadata, but the caller supplied runtime values — build
|
|
@@ -340,9 +495,8 @@ export class Container {
|
|
|
340
495
|
// constructor). Slots beyond the runtime values stay undefined.
|
|
341
496
|
if (target.length > 0 && (runtimeValues?.length ?? 0) > 0) {
|
|
342
497
|
const deps = Array.from({ length: target.length }, (_value, index) => runtimeAt(index));
|
|
343
|
-
const instance =
|
|
344
|
-
|
|
345
|
-
this.#singletons.set(key, instance);
|
|
498
|
+
const instance = Reflect.construct(target, deps);
|
|
499
|
+
this.#cacheIfAppWide(scope, key, instance, store, readsBefore);
|
|
346
500
|
return instance;
|
|
347
501
|
}
|
|
348
502
|
// (c) The constructor declares parameters but we have no way to resolve
|
|
@@ -355,8 +509,7 @@ export class Container {
|
|
|
355
509
|
}
|
|
356
510
|
// (d) Genuine zero-argument class.
|
|
357
511
|
const instance = new target();
|
|
358
|
-
|
|
359
|
-
this.#singletons.set(key, instance);
|
|
512
|
+
this.#cacheIfAppWide(scope, key, instance, store, readsBefore);
|
|
360
513
|
return instance;
|
|
361
514
|
}
|
|
362
515
|
// Resolve constructor deps SEQUENTIALLY (the cycle-detection stack is
|
|
@@ -375,11 +528,25 @@ export class Container {
|
|
|
375
528
|
const depToken = namedToken ?? (isInjectableClass(type) ? type : undefined);
|
|
376
529
|
deps.push(depToken ? await this.resolve(depToken) : undefined);
|
|
377
530
|
}
|
|
378
|
-
const instance =
|
|
379
|
-
|
|
380
|
-
this.#singletons.set(key, instance);
|
|
531
|
+
const instance = Reflect.construct(target, deps);
|
|
532
|
+
this.#cacheIfAppWide(scope, key, instance, store, readsBefore);
|
|
381
533
|
return instance;
|
|
382
534
|
}
|
|
535
|
+
/**
|
|
536
|
+
* Cache a singleton — unless it read a request-scoped value while building.
|
|
537
|
+
*
|
|
538
|
+
* See `ResolutionChain.scopedReads`: an instance that captured one belongs to
|
|
539
|
+
* that request, and caching it hands the first request's state to every
|
|
540
|
+
* later one. AdonisJS does not guard this; it is the kind of silent
|
|
541
|
+
* cross-request leak worth refusing.
|
|
542
|
+
*/
|
|
543
|
+
#cacheIfAppWide(scope, key, instance, store, readsBefore) {
|
|
544
|
+
if (scope !== 'singleton')
|
|
545
|
+
return;
|
|
546
|
+
if ((store?.scopedReads ?? 0) !== readsBefore)
|
|
547
|
+
return;
|
|
548
|
+
this.#singletons.set(key, instance);
|
|
549
|
+
}
|
|
383
550
|
#tokenToKey(token) {
|
|
384
551
|
if (typeof token === 'string') {
|
|
385
552
|
this.#assertNotReserved(token, 'string');
|
|
@@ -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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"}
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Per-request view of the {@link Container} — AdonisJS Fold's
|
|
3
|
+
* `ContainerResolver`.
|
|
4
|
+
*
|
|
5
|
+
* A resolver resolves exactly what the container resolves, plus the values
|
|
6
|
+
* bound on it with {@link ContainerResolver.bindValue}. Those values are
|
|
7
|
+
* ISOLATED: they are visible to everything this resolver builds, including the
|
|
8
|
+
* constructor dependencies of what it builds, and to nothing else. That is what
|
|
9
|
+
* makes it safe for the HTTP kernel to bind one request's `HttpContext` — on
|
|
10
|
+
* the container itself, the binding would leak into every other request.
|
|
11
|
+
*
|
|
12
|
+
* const resolver = container.createResolver()
|
|
13
|
+
* resolver.bindValue(HttpContext, ctx)
|
|
14
|
+
* await resolver.make(UsersController) // gets this request's ctx
|
|
15
|
+
*/
|
|
16
|
+
import type { Container } from './Container.js';
|
|
17
|
+
import type { ServiceToken } from './types.js';
|
|
18
|
+
export declare class ContainerResolver {
|
|
19
|
+
#private;
|
|
20
|
+
constructor(container: Container);
|
|
21
|
+
/**
|
|
22
|
+
* Bind a resolved value for this resolver only (AdonisJS
|
|
23
|
+
* `resolver.bindValue`). Rebinding the same token replaces it.
|
|
24
|
+
*/
|
|
25
|
+
bindValue<T>(token: ServiceToken, value: T): void;
|
|
26
|
+
/**
|
|
27
|
+
* Resolve a token, seeing this resolver's values first (AdonisJS
|
|
28
|
+
* `resolver.make`).
|
|
29
|
+
*/
|
|
30
|
+
make<T>(token: ServiceToken, runtimeValues?: unknown[]): Promise<T>;
|
|
31
|
+
/**
|
|
32
|
+
* Call a method with its dependencies injected, seeing this resolver's
|
|
33
|
+
* values (AdonisJS `resolver.call`).
|
|
34
|
+
*/
|
|
35
|
+
call<T, K extends string & keyof T>(instance: T, method: K, runtimeValues?: unknown[]): Promise<unknown>;
|
|
36
|
+
/**
|
|
37
|
+
* Resolve as if `parent` had asked, so `parent`'s contextual bindings apply
|
|
38
|
+
* (AdonisJS `resolver.resolveFor`). `null` means nobody asked.
|
|
39
|
+
*/
|
|
40
|
+
resolveFor<T>(parent: (new (...args: never[]) => unknown) | null, token: ServiceToken, runtimeValues?: unknown[]): Promise<T>;
|
|
41
|
+
/** Whether the token resolves — here or on the container (AdonisJS `hasBinding`). */
|
|
42
|
+
hasBinding(token: ServiceToken): boolean;
|
|
43
|
+
/** Whether every token resolves (AdonisJS `hasAllBindings`). */
|
|
44
|
+
hasAllBindings(tokens: ServiceToken[]): boolean;
|
|
45
|
+
}
|
|
46
|
+
//# sourceMappingURL=ContainerResolver.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ContainerResolver.d.ts","sourceRoot":"","sources":["../../src/container/ContainerResolver.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAA;AAC/C,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,YAAY,CAAA;AAE9C,qBAAa,iBAAiB;;gBAKhB,SAAS,EAAE,SAAS;IAIhC;;;OAGG;IACH,SAAS,CAAC,CAAC,EAAE,KAAK,EAAE,YAAY,EAAE,KAAK,EAAE,CAAC,GAAG,IAAI;IAIjD;;;OAGG;IACH,IAAI,CAAC,CAAC,EAAE,KAAK,EAAE,YAAY,EAAE,aAAa,CAAC,EAAE,OAAO,EAAE,GAAG,OAAO,CAAC,CAAC,CAAC;IAMnE;;;OAGG;IACH,IAAI,CAAC,CAAC,EAAE,CAAC,SAAS,MAAM,GAAG,MAAM,CAAC,EAChC,QAAQ,EAAE,CAAC,EACX,MAAM,EAAE,CAAC,EACT,aAAa,CAAC,EAAE,OAAO,EAAE,GACxB,OAAO,CAAC,OAAO,CAAC;IAMnB;;;OAGG;IACH,UAAU,CAAC,CAAC,EACV,MAAM,EAAE,CAAC,KAAK,GAAG,IAAI,EAAE,KAAK,EAAE,KAAK,OAAO,CAAC,GAAG,IAAI,EAClD,KAAK,EAAE,YAAY,EACnB,aAAa,CAAC,EAAE,OAAO,EAAE,GACxB,OAAO,CAAC,CAAC,CAAC;IAMb,qFAAqF;IACrF,UAAU,CAAC,KAAK,EAAE,YAAY,GAAG,OAAO;IAIxC,gEAAgE;IAChE,cAAc,CAAC,MAAM,EAAE,YAAY,EAAE,GAAG,OAAO;CAGhD"}
|
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Per-request view of the {@link Container} — AdonisJS Fold's
|
|
3
|
+
* `ContainerResolver`.
|
|
4
|
+
*
|
|
5
|
+
* A resolver resolves exactly what the container resolves, plus the values
|
|
6
|
+
* bound on it with {@link ContainerResolver.bindValue}. Those values are
|
|
7
|
+
* ISOLATED: they are visible to everything this resolver builds, including the
|
|
8
|
+
* constructor dependencies of what it builds, and to nothing else. That is what
|
|
9
|
+
* makes it safe for the HTTP kernel to bind one request's `HttpContext` — on
|
|
10
|
+
* the container itself, the binding would leak into every other request.
|
|
11
|
+
*
|
|
12
|
+
* const resolver = container.createResolver()
|
|
13
|
+
* resolver.bindValue(HttpContext, ctx)
|
|
14
|
+
* await resolver.make(UsersController) // gets this request's ctx
|
|
15
|
+
*/
|
|
16
|
+
export class ContainerResolver {
|
|
17
|
+
#container;
|
|
18
|
+
/** Values bound here, keyed the way the container keys its tokens. */
|
|
19
|
+
#values = new Map();
|
|
20
|
+
constructor(container) {
|
|
21
|
+
this.#container = container;
|
|
22
|
+
}
|
|
23
|
+
/**
|
|
24
|
+
* Bind a resolved value for this resolver only (AdonisJS
|
|
25
|
+
* `resolver.bindValue`). Rebinding the same token replaces it.
|
|
26
|
+
*/
|
|
27
|
+
bindValue(token, value) {
|
|
28
|
+
this.#values.set(this.#container.keyFor(token), value);
|
|
29
|
+
}
|
|
30
|
+
/**
|
|
31
|
+
* Resolve a token, seeing this resolver's values first (AdonisJS
|
|
32
|
+
* `resolver.make`).
|
|
33
|
+
*/
|
|
34
|
+
make(token, runtimeValues) {
|
|
35
|
+
return this.#container.runWithScopedValues(this.#values, () => this.#container.make(token, runtimeValues));
|
|
36
|
+
}
|
|
37
|
+
/**
|
|
38
|
+
* Call a method with its dependencies injected, seeing this resolver's
|
|
39
|
+
* values (AdonisJS `resolver.call`).
|
|
40
|
+
*/
|
|
41
|
+
call(instance, method, runtimeValues) {
|
|
42
|
+
return this.#container.runWithScopedValues(this.#values, () => this.#container.call(instance, method, runtimeValues));
|
|
43
|
+
}
|
|
44
|
+
/**
|
|
45
|
+
* Resolve as if `parent` had asked, so `parent`'s contextual bindings apply
|
|
46
|
+
* (AdonisJS `resolver.resolveFor`). `null` means nobody asked.
|
|
47
|
+
*/
|
|
48
|
+
resolveFor(parent, token, runtimeValues) {
|
|
49
|
+
return this.#container.runWithScopedValues(this.#values, () => this.#container.resolveFor(parent, token, runtimeValues));
|
|
50
|
+
}
|
|
51
|
+
/** Whether the token resolves — here or on the container (AdonisJS `hasBinding`). */
|
|
52
|
+
hasBinding(token) {
|
|
53
|
+
return this.#values.has(this.#container.keyFor(token)) || this.#container.has(token);
|
|
54
|
+
}
|
|
55
|
+
/** Whether every token resolves (AdonisJS `hasAllBindings`). */
|
|
56
|
+
hasAllBindings(tokens) {
|
|
57
|
+
return tokens.every((token) => this.hasBinding(token));
|
|
58
|
+
}
|
|
59
|
+
}
|
|
60
|
+
//# sourceMappingURL=ContainerResolver.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ContainerResolver.js","sourceRoot":"","sources":["../../src/container/ContainerResolver.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAKH,MAAM,OAAO,iBAAiB;IACnB,UAAU,CAAW;IAC9B,sEAAsE;IAC7D,OAAO,GAAG,IAAI,GAAG,EAAmB,CAAA;IAE7C,YAAY,SAAoB;QAC9B,IAAI,CAAC,UAAU,GAAG,SAAS,CAAA;IAC7B,CAAC;IAED;;;OAGG;IACH,SAAS,CAAI,KAAmB,EAAE,KAAQ;QACxC,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,KAAK,CAAC,CAAA;IACxD,CAAC;IAED;;;OAGG;IACH,IAAI,CAAI,KAAmB,EAAE,aAAyB;QACpD,OAAO,IAAI,CAAC,UAAU,CAAC,mBAAmB,CAAC,IAAI,CAAC,OAAO,EAAE,GAAG,EAAE,CAC5D,IAAI,CAAC,UAAU,CAAC,IAAI,CAAI,KAAK,EAAE,aAAa,CAAC,CAC9C,CAAA;IACH,CAAC;IAED;;;OAGG;IACH,IAAI,CACF,QAAW,EACX,MAAS,EACT,aAAyB;QAEzB,OAAO,IAAI,CAAC,UAAU,CAAC,mBAAmB,CAAC,IAAI,CAAC,OAAO,EAAE,GAAG,EAAE,CAC5D,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,QAAQ,EAAE,MAAM,EAAE,aAAa,CAAC,CACtD,CAAA;IACH,CAAC;IAED;;;OAGG;IACH,UAAU,CACR,MAAkD,EAClD,KAAmB,EACnB,aAAyB;QAEzB,OAAO,IAAI,CAAC,UAAU,CAAC,mBAAmB,CAAC,IAAI,CAAC,OAAO,EAAE,GAAG,EAAE,CAC5D,IAAI,CAAC,UAAU,CAAC,UAAU,CAAI,MAAM,EAAE,KAAK,EAAE,aAAa,CAAC,CAC5D,CAAA;IACH,CAAC;IAED,qFAAqF;IACrF,UAAU,CAAC,KAAmB;QAC5B,OAAO,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,IAAI,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,KAAK,CAAC,CAAA;IACtF,CAAC;IAED,gEAAgE;IAChE,cAAc,CAAC,MAAsB;QACnC,OAAO,MAAM,CAAC,KAAK,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC,CAAA;IACxD,CAAC;CACF"}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The fluent form of a contextual binding — AdonisJS `container.when()`.
|
|
3
|
+
*
|
|
4
|
+
* container.when(UsersController).asksFor(Hash).provide(() => new Argon2())
|
|
5
|
+
*
|
|
6
|
+
* Reads as the sentence it is: when THIS class asks for THAT, give it this.
|
|
7
|
+
* `container.contextualBinding(parent, binding, factory)` is the same thing in
|
|
8
|
+
* one call.
|
|
9
|
+
*/
|
|
10
|
+
import type { Container } from './Container.js';
|
|
11
|
+
import type { ServiceFactory, ServiceToken } from './types.js';
|
|
12
|
+
export declare class ContextualBindingsBuilder {
|
|
13
|
+
#private;
|
|
14
|
+
constructor(container: Container, parent: new (...args: never[]) => unknown);
|
|
15
|
+
/** The dependency this class asks for. */
|
|
16
|
+
asksFor(binding: ServiceToken): this;
|
|
17
|
+
/** What it gets instead. */
|
|
18
|
+
provide(factory: ServiceFactory): void;
|
|
19
|
+
}
|
|
20
|
+
//# sourceMappingURL=ContextualBindingsBuilder.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ContextualBindingsBuilder.d.ts","sourceRoot":"","sources":["../../src/container/ContextualBindingsBuilder.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAA;AAC/C,OAAO,KAAK,EAAE,cAAc,EAAE,YAAY,EAAE,MAAM,YAAY,CAAA;AAE9D,qBAAa,yBAAyB;;gBAOxB,SAAS,EAAE,SAAS,EAAE,MAAM,EAAE,KAAK,GAAG,IAAI,EAAE,KAAK,EAAE,KAAK,OAAO;IAK3E,0CAA0C;IAC1C,OAAO,CAAC,OAAO,EAAE,YAAY,GAAG,IAAI;IAKpC,4BAA4B;IAC5B,OAAO,CAAC,OAAO,EAAE,cAAc,GAAG,IAAI;CAQvC"}
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The fluent form of a contextual binding — AdonisJS `container.when()`.
|
|
3
|
+
*
|
|
4
|
+
* container.when(UsersController).asksFor(Hash).provide(() => new Argon2())
|
|
5
|
+
*
|
|
6
|
+
* Reads as the sentence it is: when THIS class asks for THAT, give it this.
|
|
7
|
+
* `container.contextualBinding(parent, binding, factory)` is the same thing in
|
|
8
|
+
* one call.
|
|
9
|
+
*/
|
|
10
|
+
export class ContextualBindingsBuilder {
|
|
11
|
+
#container;
|
|
12
|
+
#parent;
|
|
13
|
+
#binding;
|
|
14
|
+
constructor(container, parent) {
|
|
15
|
+
this.#container = container;
|
|
16
|
+
this.#parent = parent;
|
|
17
|
+
}
|
|
18
|
+
/** The dependency this class asks for. */
|
|
19
|
+
asksFor(binding) {
|
|
20
|
+
this.#binding = binding;
|
|
21
|
+
return this;
|
|
22
|
+
}
|
|
23
|
+
/** What it gets instead. */
|
|
24
|
+
provide(factory) {
|
|
25
|
+
if (this.#binding === undefined) {
|
|
26
|
+
throw new Error('Container.when(): call asksFor(binding) before provide() — a contextual binding needs to know which dependency it replaces.');
|
|
27
|
+
}
|
|
28
|
+
this.#container.contextualBinding(this.#parent, this.#binding, factory);
|
|
29
|
+
}
|
|
30
|
+
}
|
|
31
|
+
//# sourceMappingURL=ContextualBindingsBuilder.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ContextualBindingsBuilder.js","sourceRoot":"","sources":["../../src/container/ContextualBindingsBuilder.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAKH,MAAM,OAAO,yBAAyB;IAC3B,UAAU,CAAW;IACrB,OAAO,CAEJ;IACZ,QAAQ,CAA0B;IAElC,YAAY,SAAoB,EAAE,MAAyC;QACzE,IAAI,CAAC,UAAU,GAAG,SAAS,CAAA;QAC3B,IAAI,CAAC,OAAO,GAAG,MAAM,CAAA;IACvB,CAAC;IAED,0CAA0C;IAC1C,OAAO,CAAC,OAAqB;QAC3B,IAAI,CAAC,QAAQ,GAAG,OAAO,CAAA;QACvB,OAAO,IAAI,CAAA;IACb,CAAC;IAED,4BAA4B;IAC5B,OAAO,CAAC,OAAuB;QAC7B,IAAI,IAAI,CAAC,QAAQ,KAAK,SAAS,EAAE,CAAC;YAChC,MAAM,IAAI,KAAK,CACb,6HAA6H,CAC9H,CAAA;QACH,CAAC;QACD,IAAI,CAAC,UAAU,CAAC,iBAAiB,CAAC,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAA;IACzE,CAAC;CACF"}
|
|
@@ -11,21 +11,24 @@ export interface ServiceMetadata {
|
|
|
11
11
|
as?: string;
|
|
12
12
|
}
|
|
13
13
|
/** Token used to resolve a service — class constructor, string name, or registered symbol. */
|
|
14
|
-
export type ServiceToken = (new (...args:
|
|
14
|
+
export type ServiceToken = (new (...args: never[]) => unknown) | string | symbol;
|
|
15
15
|
/**
|
|
16
|
-
*
|
|
16
|
+
* What a binding factory is handed so it can resolve its own dependencies
|
|
17
17
|
* (AdonisJS parity: `container.singleton(token, async (resolver) =>
|
|
18
|
-
* await resolver.make(Dep))`).
|
|
18
|
+
* await resolver.make(Dep))`).
|
|
19
|
+
*
|
|
20
|
+
* Narrow on purpose: both the `Container` and a per-request `ContainerResolver`
|
|
21
|
+
* satisfy it, so a factory works the same whichever one is resolving.
|
|
19
22
|
*/
|
|
20
|
-
export interface
|
|
23
|
+
export interface FactoryResolver {
|
|
21
24
|
make<T>(token: ServiceToken, runtimeValues?: unknown[]): Promise<T>;
|
|
22
25
|
}
|
|
23
26
|
/**
|
|
24
27
|
* Factory function for creating service instances. Receives a {@link
|
|
25
|
-
*
|
|
28
|
+
* FactoryResolver} (AdonisJS parity) — the async container means a factory
|
|
26
29
|
* that needs another binding must `await resolver.make(Dep)`.
|
|
27
30
|
*/
|
|
28
|
-
export type ServiceFactory = (resolver:
|
|
31
|
+
export type ServiceFactory = (resolver: FactoryResolver) => unknown;
|
|
29
32
|
/** Binding entry in the container. */
|
|
30
33
|
export interface Binding {
|
|
31
34
|
token: ServiceToken;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/container/types.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,mDAAmD;AACnD,MAAM,MAAM,YAAY,GAAG,WAAW,GAAG,WAAW,GAAG,SAAS,CAAA;AAEhE,uDAAuD;AACvD,MAAM,WAAW,eAAe;IAC9B,KAAK,EAAE,YAAY,CAAA;IACnB,yEAAyE;IACzE,EAAE,CAAC,EAAE,MAAM,CAAA;CACZ;AAED,8FAA8F;
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/container/types.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,mDAAmD;AACnD,MAAM,MAAM,YAAY,GAAG,WAAW,GAAG,WAAW,GAAG,SAAS,CAAA;AAEhE,uDAAuD;AACvD,MAAM,WAAW,eAAe;IAC9B,KAAK,EAAE,YAAY,CAAA;IACnB,yEAAyE;IACzE,EAAE,CAAC,EAAE,MAAM,CAAA;CACZ;AAED,8FAA8F;AAG9F,MAAM,MAAM,YAAY,GAAG,CAAC,KAAK,GAAG,IAAI,EAAE,KAAK,EAAE,KAAK,OAAO,CAAC,GAAG,MAAM,GAAG,MAAM,CAAA;AAEhF;;;;;;;GAOG;AACH,MAAM,WAAW,eAAe;IAC9B,IAAI,CAAC,CAAC,EAAE,KAAK,EAAE,YAAY,EAAE,aAAa,CAAC,EAAE,OAAO,EAAE,GAAG,OAAO,CAAC,CAAC,CAAC,CAAA;CACpE;AAED;;;;GAIG;AACH,MAAM,MAAM,cAAc,GAAG,CAAC,QAAQ,EAAE,eAAe,KAAK,OAAO,CAAA;AAEnE,sCAAsC;AACtC,MAAM,WAAW,OAAO;IACtB,KAAK,EAAE,YAAY,CAAA;IACnB,OAAO,CAAC,EAAE,cAAc,CAAA;IACxB,QAAQ,CAAC,EAAE,OAAO,CAAA;IAClB,KAAK,EAAE,YAAY,CAAA;IACnB,YAAY,EAAE,YAAY,EAAE,CAAA;CAC7B"}
|