awilix 12.1.0 → 13.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -34,6 +34,8 @@ Awilix enables you to write **composable, testable software** using dependency i
34
34
  - [The `awilix` object](#the-awilix-object)
35
35
  - [Resolver options](#resolver-options)
36
36
  - [`createContainer()`](#createcontainer)
37
+ - [`InferCradleFromResolvers`](#infercradlefromresolvers)
38
+ - [`InferCradleFromContainer`](#infercradlefromcontainer)
37
39
  - [`asFunction()`](#asfunction)
38
40
  - [`asClass()`](#asclass)
39
41
  - [`asValue()`](#asvalue)
@@ -58,6 +60,7 @@ Awilix enables you to write **composable, testable software** using dependency i
58
60
  - [Contributing](#contributing)
59
61
  - [What's in a name?](#whats-in-a-name)
60
62
  - [Author](#author)
63
+ - [Migrating from older versions](#migrating-from-older-versions)
61
64
 
62
65
  # Installation
63
66
 
@@ -821,6 +824,9 @@ When importing `awilix`, you get the following top-level API:
821
824
  - `aliasTo`
822
825
  - `Lifetime` - documented above.
823
826
  - `InjectionMode` - documented above.
827
+ - `InferCradleFromResolvers` (TypeScript utility type)
828
+ - `InferCradleFromContainer` (TypeScript utility type)
829
+ - `InferResolverType` (TypeScript utility type)
824
830
 
825
831
  These are documented below.
826
832
 
@@ -874,6 +880,68 @@ Args:
874
880
  class constructor as `repo`.
875
881
  - `options.strict`: Enables [strict mode](#strict-mode). Defaults to `false`.
876
882
 
883
+ ## `InferCradleFromResolvers`
884
+
885
+ A TypeScript utility type that extracts the cradle type from an object of
886
+ resolvers. Useful when you want to type a module's dependencies from a resolvers
887
+ object without having access to the container itself — for example, when the
888
+ container is assembled in one module but consumed in another:
889
+
890
+ ```typescript
891
+ import { type InferCradleFromResolvers, asClass, asValue } from 'awilix'
892
+
893
+ const resolvers = {
894
+ userService: asClass(UserService),
895
+ logger: asValue(new Logger()),
896
+ }
897
+
898
+ type MyCradle = InferCradleFromResolvers<typeof resolvers>
899
+ // => { userService: UserService; logger: Logger }
900
+ ```
901
+
902
+ `InferResolverType` is also exported for extracting the resolved type from a
903
+ single resolver:
904
+
905
+ ```typescript
906
+ import { type InferResolverType, asClass } from 'awilix'
907
+
908
+ const resolver = asClass(UserService).singleton()
909
+ type T = InferResolverType<typeof resolver>
910
+ // => UserService
911
+ ```
912
+
913
+ ## `InferCradleFromContainer`
914
+
915
+ A TypeScript utility type that extracts the Cradle type from an
916
+ `AwilixContainer` type. This is useful when you need to reference the cradle type
917
+ of an existing container without manually redeclaring it.
918
+
919
+ > **Important:** One of the core principles of Awilix is that it should be
920
+ > transparent to your application code. The recommended approach is to define
921
+ > standalone options types for your services (e.g. `MyServiceOptions`) that
922
+ > declare only the dependencies they need, without any reference to Awilix or
923
+ > the container's cradle type. This keeps your application code fully
924
+ > decoupled from the DI container and preserves true inversion of control.
925
+ >
926
+ > That said, if you want a fully type-safe container and are aware of the
927
+ > trade-offs involved (coupling to a "god type", losing transparency, and
928
+ > difficulty mixing singleton and scoped registrations), the inference
929
+ > utilities below make that possible.
930
+
931
+ ```typescript
932
+ import { createContainer, type InferCradleFromContainer, asClass, asValue } from 'awilix'
933
+
934
+ const container = createContainer()
935
+ .register({
936
+ userService: asClass(UserService),
937
+ logger: asValue(new Logger()),
938
+ })
939
+
940
+ // Extract the cradle type from the container
941
+ type MyCradle = InferCradleFromContainer<typeof container>
942
+ // => { userService: UserService; logger: Logger }
943
+ ```
944
+
877
945
  ## `asFunction()`
878
946
 
879
947
  Used with `container.register({ userService: asFunction(makeUserService) })`.
@@ -1038,8 +1106,23 @@ The optional `resolveOpts` has the following fields:
1038
1106
 
1039
1107
  **Signatures**
1040
1108
 
1041
- - `register(name: string, resolver: Resolver): AwilixContainer`
1042
- - `register(nameAndResolverPair: NameAndResolverPair): AwilixContainer`
1109
+ - `register(name: string | symbol, resolver: Resolver): this`
1110
+ - `register(nameAndResolverPair): AwilixContainer<Cradle & InferCradleFromResolvers<R>>`
1111
+
1112
+ The object overload returns a container whose cradle type includes the newly
1113
+ registered types. This means **the cradle type accumulates automatically** when
1114
+ you chain `.register()` calls — no manual interface needed:
1115
+
1116
+ ```typescript
1117
+ const container = createContainer()
1118
+ .register({
1119
+ userService: asClass(UserService),
1120
+ logger: asValue(new Logger()),
1121
+ })
1122
+
1123
+ container.cradle.userService // => UserService ✓
1124
+ container.cradle.logger // => Logger ✓
1125
+ ```
1043
1126
 
1044
1127
  Awilix needs to know how to resolve the modules, so let's pull out the resolver
1045
1128
  functions:
@@ -1058,7 +1141,7 @@ Now we need to use them. There are multiple syntaxes for the `register`
1058
1141
  function, pick the one you like the most - or use all of them, I don't really
1059
1142
  care! :sunglasses:
1060
1143
 
1061
- **Both styles supports chaining! `register` returns the container!**
1144
+ **Both styles support chaining! `register` returns the container!**
1062
1145
 
1063
1146
  ```js
1064
1147
  // name-resolver
@@ -511,18 +511,6 @@ fn) {
511
511
  function isFunction(val) {
512
512
  return typeof val === 'function';
513
513
  }
514
- /**
515
- * Returns the unique items in the array.
516
- *
517
- * @param {Array<T>}
518
- * The array to remove dupes from.
519
- *
520
- * @return {Array<T>}
521
- * The deduped array.
522
- */
523
- function uniq(arr) {
524
- return Array.from(new Set(arr));
525
- }
526
514
 
527
515
  /*
528
516
  * Parses the parameter list of a function string, including ES6 class constructors.
@@ -884,10 +872,16 @@ function wrapWithLocals(container, locals) {
884
872
  */
885
873
  function createInjectorProxy(container, injector) {
886
874
  const locals = injector(container);
887
- const allKeys = uniq([
888
- ...Reflect.ownKeys(container.cradle),
889
- ...Reflect.ownKeys(locals),
890
- ]);
875
+ const keySet = new Set(Object.keys(container.registrations));
876
+ for (const s of Object.getOwnPropertySymbols(container.registrations)) {
877
+ keySet.add(s);
878
+ }
879
+ for (const k of Object.keys(locals)) {
880
+ keySet.add(k);
881
+ }
882
+ for (const s of Object.getOwnPropertySymbols(locals)) {
883
+ keySet.add(s);
884
+ }
891
885
  // TODO: Lots of duplication here from the container proxy.
892
886
  // Need to refactor.
893
887
  const proxy = new Proxy({}, {
@@ -914,13 +908,13 @@ function createInjectorProxy(container, injector) {
914
908
  * Used for `Object.keys`.
915
909
  */
916
910
  ownKeys() {
917
- return allKeys;
911
+ return [...keySet];
918
912
  },
919
913
  /**
920
914
  * Used for `Object.keys`.
921
915
  */
922
- getOwnPropertyDescriptor(target, key) {
923
- if (allKeys.indexOf(key) > -1) {
916
+ getOwnPropertyDescriptor(_target, key) {
917
+ if (keySet.has(key)) {
924
918
  return {
925
919
  enumerable: true,
926
920
  configurable: true,
@@ -1227,8 +1221,11 @@ function createContainerInternal(options, parentContainer, parentResolutionStack
1227
1221
  try {
1228
1222
  // Grab the registration by name.
1229
1223
  const resolver = getRegistration(name);
1230
- if (resolutionStack.some(({ name: parentName }) => parentName === name)) {
1231
- throw new AwilixResolutionError(name, resolutionStack, 'Cyclic dependencies detected.');
1224
+ // Cycle detection: scan the resolution stack.
1225
+ for (let i = 0; i < resolutionStack.length; i++) {
1226
+ if (resolutionStack[i].name === name) {
1227
+ throw new AwilixResolutionError(name, resolutionStack, 'Cyclic dependencies detected.');
1228
+ }
1232
1229
  }
1233
1230
  // Used in JSON.stringify.
1234
1231
  if (name === 'toJSON') {
@@ -1263,57 +1260,54 @@ function createContainerInternal(options, parentContainer, parentResolutionStack
1263
1260
  throw new AwilixResolutionError(name, resolutionStack);
1264
1261
  }
1265
1262
  const lifetime = resolver.lifetime || Lifetime.TRANSIENT;
1266
- // if we are running in strict mode, this resolver is not explicitly marked leak-safe, and any
1267
- // of the parents have a shorter lifetime than the one requested, throw an error.
1268
- if (options.strict && !resolver.isLeakSafe) {
1269
- const maybeLongerLifetimeParentIndex = resolutionStack.findIndex(({ lifetime: parentLifetime }) => isLifetimeLonger(parentLifetime, lifetime));
1270
- if (maybeLongerLifetimeParentIndex > -1) {
1271
- throw new AwilixResolutionError(name, resolutionStack, `Dependency '${name.toString()}' has a shorter lifetime than its ancestor: '${resolutionStack[maybeLongerLifetimeParentIndex].name.toString()}'`);
1263
+ // Throws if a shorter-lived dependency is resolved through a longer-lived ancestor.
1264
+ function throwIfLifetimeLeakage(depName, depLifetime, dep) {
1265
+ if (!options.strict || dep.isLeakSafe)
1266
+ return;
1267
+ for (let i = 0; i < resolutionStack.length; i++) {
1268
+ if (isLifetimeLonger(resolutionStack[i].lifetime, depLifetime)) {
1269
+ throw new AwilixResolutionError(depName, resolutionStack, `Dependency '${depName.toString()}' has a shorter lifetime than its ancestor: '${resolutionStack[i].name.toString()}'`);
1270
+ }
1271
+ }
1272
+ }
1273
+ // Fast path: cached singletons can always be returned immediately
1274
+ // since nothing has a longer lifetime.
1275
+ if (lifetime === Lifetime.SINGLETON) {
1276
+ const cached = rootContainer.cache.get(name);
1277
+ if (cached) {
1278
+ return cached.value;
1279
+ }
1280
+ }
1281
+ // Fast path: cached scoped values can be returned immediately,
1282
+ // but in strict mode we still need to verify lifetime constraints.
1283
+ if (lifetime === Lifetime.SCOPED) {
1284
+ const cached = container.cache.get(name);
1285
+ if (cached !== undefined) {
1286
+ throwIfLifetimeLeakage(name, lifetime, resolver);
1287
+ return cached.value;
1272
1288
  }
1273
1289
  }
1274
- // Pushes the currently-resolving module information onto the stack
1290
+ // Slow path: need to invoke the factory.
1291
+ throwIfLifetimeLeakage(name, lifetime, resolver);
1275
1292
  resolutionStack.push({ name, lifetime });
1276
- // Do the thing
1277
- let cached;
1278
1293
  let resolved;
1279
1294
  switch (lifetime) {
1280
1295
  case Lifetime.TRANSIENT:
1281
- // Transient lifetime means resolve every time.
1282
1296
  resolved = resolver.resolve(container);
1283
1297
  break;
1284
1298
  case Lifetime.SINGLETON:
1285
- // Singleton lifetime means cache at all times, regardless of scope.
1286
- cached = rootContainer.cache.get(name);
1287
- if (!cached) {
1288
- // if we are running in strict mode, perform singleton resolution using the root
1289
- // container only.
1290
- resolved = resolver.resolve(options.strict ? rootContainer : container);
1291
- rootContainer.cache.set(name, { resolver, value: resolved });
1292
- }
1293
- else {
1294
- resolved = cached.value;
1295
- }
1299
+ // Cache was already checked above, so this is always a miss.
1300
+ resolved = resolver.resolve(options.strict ? rootContainer : container);
1301
+ rootContainer.cache.set(name, { resolver, value: resolved });
1296
1302
  break;
1297
1303
  case Lifetime.SCOPED:
1298
- // Scoped lifetime means that the container
1299
- // that resolves the registration also caches it.
1300
- // If this container cache does not have it,
1301
- // resolve and cache it rather than using the parent
1302
- // container's cache.
1303
- cached = container.cache.get(name);
1304
- if (cached !== undefined) {
1305
- // We found one!
1306
- resolved = cached.value;
1307
- break;
1308
- }
1309
- // If we still have not found one, we need to resolve and cache it.
1304
+ // Cache was already checked above, so this is always a miss.
1310
1305
  resolved = resolver.resolve(container);
1311
1306
  container.cache.set(name, { resolver, value: resolved });
1312
1307
  break;
1313
1308
  default:
1314
1309
  throw new AwilixResolutionError(name, resolutionStack, `Unknown lifetime "${resolver.lifetime}"`);
1315
1310
  }
1316
- // Pop it from the stack again, ready for the next resolution
1317
1311
  resolutionStack.pop();
1318
1312
  return resolved;
1319
1313
  }
package/lib/awilix.d.ts CHANGED
@@ -1,4 +1,4 @@
1
- export { type AwilixContainer, type ContainerOptions, type CacheEntry, type ClassOrFunctionReturning, type FunctionReturning, type NameAndRegistrationPair, type RegistrationHash, type ResolveOptions, createContainer, } from './container';
1
+ export { type AwilixContainer, type ContainerOptions, type CacheEntry, type ClassOrFunctionReturning, type FunctionReturning, type InferCradleFromContainer, type InferCradleFromResolvers, type InferResolverType, type NameAndRegistrationPair, type RegistrationHash, type ResolveOptions, createContainer, } from './container';
2
2
  export { AwilixError, AwilixRegistrationError, AwilixResolutionError, AwilixTypeError, } from './errors';
3
3
  export { InjectionMode, type InjectionModeType } from './injection-mode';
4
4
  export { Lifetime, type LifetimeType } from './lifetime';
package/lib/awilix.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"awilix.js","sourceRoot":"","sources":["../src/awilix.ts"],"names":[],"mappings":";;;AAAA,yCAUoB;AADlB,4GAAA,eAAe,OAAA;AAEjB,mCAKiB;AAJf,qGAAA,WAAW,OAAA;AACX,iHAAA,uBAAuB,OAAA;AACvB,+GAAA,qBAAqB,OAAA;AACrB,yGAAA,eAAe,OAAA;AAEjB,mDAAwE;AAA/D,+GAAA,aAAa,OAAA;AACtB,uCAAwD;AAA/C,oGAAA,QAAQ,OAAA;AACjB,+CAKuB;AADrB,2GAAA,WAAW,OAAA;AAEb,yCAiBoB;AAPlB,qGAAA,QAAQ,OAAA;AACR,oGAAA,OAAO,OAAA;AACP,oGAAA,OAAO,OAAA;AACP,uGAAA,UAAU,OAAA;AACV,oGAAA,OAAO,OAAA;AACP,gHAAA,mBAAmB,OAAA;AACnB,qHAAA,wBAAwB,OAAA;AAE1B,iCAA6C;AAApC,gGAAA,OAAO,OAAA;AAAE,mGAAA,UAAU,OAAA"}
1
+ {"version":3,"file":"awilix.js","sourceRoot":"","sources":["../src/awilix.ts"],"names":[],"mappings":";;;AAAA,yCAaoB;AADlB,4GAAA,eAAe,OAAA;AAEjB,mCAKiB;AAJf,qGAAA,WAAW,OAAA;AACX,iHAAA,uBAAuB,OAAA;AACvB,+GAAA,qBAAqB,OAAA;AACrB,yGAAA,eAAe,OAAA;AAEjB,mDAAwE;AAA/D,+GAAA,aAAa,OAAA;AACtB,uCAAwD;AAA/C,oGAAA,QAAQ,OAAA;AACjB,+CAKuB;AADrB,2GAAA,WAAW,OAAA;AAEb,yCAiBoB;AAPlB,qGAAA,QAAQ,OAAA;AACR,oGAAA,OAAO,OAAA;AACP,oGAAA,OAAO,OAAA;AACP,uGAAA,UAAU,OAAA;AACV,oGAAA,OAAO,OAAA;AACP,gHAAA,mBAAmB,OAAA;AACnB,qHAAA,wBAAwB,OAAA;AAE1B,iCAA6C;AAApC,gGAAA,OAAO,OAAA;AAAE,mGAAA,UAAU,OAAA"}
@@ -535,18 +535,6 @@ fn) {
535
535
  function isFunction(val) {
536
536
  return typeof val === 'function';
537
537
  }
538
- /**
539
- * Returns the unique items in the array.
540
- *
541
- * @param {Array<T>}
542
- * The array to remove dupes from.
543
- *
544
- * @return {Array<T>}
545
- * The deduped array.
546
- */
547
- function uniq(arr) {
548
- return Array.from(new Set(arr));
549
- }
550
538
 
551
539
  // Regex to extract the module name.
552
540
  const nameExpr = /(.*)\..*/i;
@@ -618,8 +606,9 @@ function listModules(globPatterns, opts) {
618
606
  */
619
607
  function camelCase(input) {
620
608
  const len = input.length;
621
- if (len === 0)
609
+ if (len === 0) {
622
610
  return '';
611
+ }
623
612
  let result = '';
624
613
  let wordIdx = 0;
625
614
  let wordPos = 0;
@@ -1051,10 +1040,16 @@ function wrapWithLocals(container, locals) {
1051
1040
  */
1052
1041
  function createInjectorProxy(container, injector) {
1053
1042
  const locals = injector(container);
1054
- const allKeys = uniq([
1055
- ...Reflect.ownKeys(container.cradle),
1056
- ...Reflect.ownKeys(locals),
1057
- ]);
1043
+ const keySet = new Set(Object.keys(container.registrations));
1044
+ for (const s of Object.getOwnPropertySymbols(container.registrations)) {
1045
+ keySet.add(s);
1046
+ }
1047
+ for (const k of Object.keys(locals)) {
1048
+ keySet.add(k);
1049
+ }
1050
+ for (const s of Object.getOwnPropertySymbols(locals)) {
1051
+ keySet.add(s);
1052
+ }
1058
1053
  // TODO: Lots of duplication here from the container proxy.
1059
1054
  // Need to refactor.
1060
1055
  const proxy = new Proxy({}, {
@@ -1081,13 +1076,13 @@ function createInjectorProxy(container, injector) {
1081
1076
  * Used for `Object.keys`.
1082
1077
  */
1083
1078
  ownKeys() {
1084
- return allKeys;
1079
+ return [...keySet];
1085
1080
  },
1086
1081
  /**
1087
1082
  * Used for `Object.keys`.
1088
1083
  */
1089
- getOwnPropertyDescriptor(target, key) {
1090
- if (allKeys.indexOf(key) > -1) {
1084
+ getOwnPropertyDescriptor(_target, key) {
1085
+ if (keySet.has(key)) {
1091
1086
  return {
1092
1087
  enumerable: true,
1093
1088
  configurable: true,
@@ -1580,8 +1575,11 @@ function createContainerInternal(options, parentContainer, parentResolutionStack
1580
1575
  try {
1581
1576
  // Grab the registration by name.
1582
1577
  const resolver = getRegistration(name);
1583
- if (resolutionStack.some(({ name: parentName }) => parentName === name)) {
1584
- throw new AwilixResolutionError(name, resolutionStack, 'Cyclic dependencies detected.');
1578
+ // Cycle detection: scan the resolution stack.
1579
+ for (let i = 0; i < resolutionStack.length; i++) {
1580
+ if (resolutionStack[i].name === name) {
1581
+ throw new AwilixResolutionError(name, resolutionStack, 'Cyclic dependencies detected.');
1582
+ }
1585
1583
  }
1586
1584
  // Used in JSON.stringify.
1587
1585
  if (name === 'toJSON') {
@@ -1617,57 +1615,54 @@ function createContainerInternal(options, parentContainer, parentResolutionStack
1617
1615
  throw new AwilixResolutionError(name, resolutionStack);
1618
1616
  }
1619
1617
  const lifetime = resolver.lifetime || Lifetime.TRANSIENT;
1620
- // if we are running in strict mode, this resolver is not explicitly marked leak-safe, and any
1621
- // of the parents have a shorter lifetime than the one requested, throw an error.
1622
- if (options.strict && !resolver.isLeakSafe) {
1623
- const maybeLongerLifetimeParentIndex = resolutionStack.findIndex(({ lifetime: parentLifetime }) => isLifetimeLonger(parentLifetime, lifetime));
1624
- if (maybeLongerLifetimeParentIndex > -1) {
1625
- throw new AwilixResolutionError(name, resolutionStack, `Dependency '${name.toString()}' has a shorter lifetime than its ancestor: '${resolutionStack[maybeLongerLifetimeParentIndex].name.toString()}'`);
1618
+ // Throws if a shorter-lived dependency is resolved through a longer-lived ancestor.
1619
+ function throwIfLifetimeLeakage(depName, depLifetime, dep) {
1620
+ if (!options.strict || dep.isLeakSafe)
1621
+ return;
1622
+ for (let i = 0; i < resolutionStack.length; i++) {
1623
+ if (isLifetimeLonger(resolutionStack[i].lifetime, depLifetime)) {
1624
+ throw new AwilixResolutionError(depName, resolutionStack, `Dependency '${depName.toString()}' has a shorter lifetime than its ancestor: '${resolutionStack[i].name.toString()}'`);
1625
+ }
1626
+ }
1627
+ }
1628
+ // Fast path: cached singletons can always be returned immediately
1629
+ // since nothing has a longer lifetime.
1630
+ if (lifetime === Lifetime.SINGLETON) {
1631
+ const cached = rootContainer.cache.get(name);
1632
+ if (cached) {
1633
+ return cached.value;
1634
+ }
1635
+ }
1636
+ // Fast path: cached scoped values can be returned immediately,
1637
+ // but in strict mode we still need to verify lifetime constraints.
1638
+ if (lifetime === Lifetime.SCOPED) {
1639
+ const cached = container.cache.get(name);
1640
+ if (cached !== undefined) {
1641
+ throwIfLifetimeLeakage(name, lifetime, resolver);
1642
+ return cached.value;
1626
1643
  }
1627
1644
  }
1628
- // Pushes the currently-resolving module information onto the stack
1645
+ // Slow path: need to invoke the factory.
1646
+ throwIfLifetimeLeakage(name, lifetime, resolver);
1629
1647
  resolutionStack.push({ name, lifetime });
1630
- // Do the thing
1631
- let cached;
1632
1648
  let resolved;
1633
1649
  switch (lifetime) {
1634
1650
  case Lifetime.TRANSIENT:
1635
- // Transient lifetime means resolve every time.
1636
1651
  resolved = resolver.resolve(container);
1637
1652
  break;
1638
1653
  case Lifetime.SINGLETON:
1639
- // Singleton lifetime means cache at all times, regardless of scope.
1640
- cached = rootContainer.cache.get(name);
1641
- if (!cached) {
1642
- // if we are running in strict mode, perform singleton resolution using the root
1643
- // container only.
1644
- resolved = resolver.resolve(options.strict ? rootContainer : container);
1645
- rootContainer.cache.set(name, { resolver, value: resolved });
1646
- }
1647
- else {
1648
- resolved = cached.value;
1649
- }
1654
+ // Cache was already checked above, so this is always a miss.
1655
+ resolved = resolver.resolve(options.strict ? rootContainer : container);
1656
+ rootContainer.cache.set(name, { resolver, value: resolved });
1650
1657
  break;
1651
1658
  case Lifetime.SCOPED:
1652
- // Scoped lifetime means that the container
1653
- // that resolves the registration also caches it.
1654
- // If this container cache does not have it,
1655
- // resolve and cache it rather than using the parent
1656
- // container's cache.
1657
- cached = container.cache.get(name);
1658
- if (cached !== undefined) {
1659
- // We found one!
1660
- resolved = cached.value;
1661
- break;
1662
- }
1663
- // If we still have not found one, we need to resolve and cache it.
1659
+ // Cache was already checked above, so this is always a miss.
1664
1660
  resolved = resolver.resolve(container);
1665
1661
  container.cache.set(name, { resolver, value: resolved });
1666
1662
  break;
1667
1663
  default:
1668
1664
  throw new AwilixResolutionError(name, resolutionStack, `Unknown lifetime "${resolver.lifetime}"`);
1669
1665
  }
1670
- // Pop it from the stack again, ready for the next resolution
1671
1666
  resolutionStack.pop();
1672
1667
  return resolved;
1673
1668
  }
package/lib/awilix.umd.js CHANGED
@@ -517,18 +517,6 @@
517
517
  function isFunction(val) {
518
518
  return typeof val === 'function';
519
519
  }
520
- /**
521
- * Returns the unique items in the array.
522
- *
523
- * @param {Array<T>}
524
- * The array to remove dupes from.
525
- *
526
- * @return {Array<T>}
527
- * The deduped array.
528
- */
529
- function uniq(arr) {
530
- return Array.from(new Set(arr));
531
- }
532
520
 
533
521
  /*
534
522
  * Parses the parameter list of a function string, including ES6 class constructors.
@@ -890,10 +878,16 @@
890
878
  */
891
879
  function createInjectorProxy(container, injector) {
892
880
  const locals = injector(container);
893
- const allKeys = uniq([
894
- ...Reflect.ownKeys(container.cradle),
895
- ...Reflect.ownKeys(locals),
896
- ]);
881
+ const keySet = new Set(Object.keys(container.registrations));
882
+ for (const s of Object.getOwnPropertySymbols(container.registrations)) {
883
+ keySet.add(s);
884
+ }
885
+ for (const k of Object.keys(locals)) {
886
+ keySet.add(k);
887
+ }
888
+ for (const s of Object.getOwnPropertySymbols(locals)) {
889
+ keySet.add(s);
890
+ }
897
891
  // TODO: Lots of duplication here from the container proxy.
898
892
  // Need to refactor.
899
893
  const proxy = new Proxy({}, {
@@ -920,13 +914,13 @@
920
914
  * Used for `Object.keys`.
921
915
  */
922
916
  ownKeys() {
923
- return allKeys;
917
+ return [...keySet];
924
918
  },
925
919
  /**
926
920
  * Used for `Object.keys`.
927
921
  */
928
- getOwnPropertyDescriptor(target, key) {
929
- if (allKeys.indexOf(key) > -1) {
922
+ getOwnPropertyDescriptor(_target, key) {
923
+ if (keySet.has(key)) {
930
924
  return {
931
925
  enumerable: true,
932
926
  configurable: true,
@@ -1233,8 +1227,11 @@
1233
1227
  try {
1234
1228
  // Grab the registration by name.
1235
1229
  const resolver = getRegistration(name);
1236
- if (resolutionStack.some(({ name: parentName }) => parentName === name)) {
1237
- throw new AwilixResolutionError(name, resolutionStack, 'Cyclic dependencies detected.');
1230
+ // Cycle detection: scan the resolution stack.
1231
+ for (let i = 0; i < resolutionStack.length; i++) {
1232
+ if (resolutionStack[i].name === name) {
1233
+ throw new AwilixResolutionError(name, resolutionStack, 'Cyclic dependencies detected.');
1234
+ }
1238
1235
  }
1239
1236
  // Used in JSON.stringify.
1240
1237
  if (name === 'toJSON') {
@@ -1269,57 +1266,54 @@
1269
1266
  throw new AwilixResolutionError(name, resolutionStack);
1270
1267
  }
1271
1268
  const lifetime = resolver.lifetime || Lifetime.TRANSIENT;
1272
- // if we are running in strict mode, this resolver is not explicitly marked leak-safe, and any
1273
- // of the parents have a shorter lifetime than the one requested, throw an error.
1274
- if (options.strict && !resolver.isLeakSafe) {
1275
- const maybeLongerLifetimeParentIndex = resolutionStack.findIndex(({ lifetime: parentLifetime }) => isLifetimeLonger(parentLifetime, lifetime));
1276
- if (maybeLongerLifetimeParentIndex > -1) {
1277
- throw new AwilixResolutionError(name, resolutionStack, `Dependency '${name.toString()}' has a shorter lifetime than its ancestor: '${resolutionStack[maybeLongerLifetimeParentIndex].name.toString()}'`);
1269
+ // Throws if a shorter-lived dependency is resolved through a longer-lived ancestor.
1270
+ function throwIfLifetimeLeakage(depName, depLifetime, dep) {
1271
+ if (!options.strict || dep.isLeakSafe)
1272
+ return;
1273
+ for (let i = 0; i < resolutionStack.length; i++) {
1274
+ if (isLifetimeLonger(resolutionStack[i].lifetime, depLifetime)) {
1275
+ throw new AwilixResolutionError(depName, resolutionStack, `Dependency '${depName.toString()}' has a shorter lifetime than its ancestor: '${resolutionStack[i].name.toString()}'`);
1276
+ }
1277
+ }
1278
+ }
1279
+ // Fast path: cached singletons can always be returned immediately
1280
+ // since nothing has a longer lifetime.
1281
+ if (lifetime === Lifetime.SINGLETON) {
1282
+ const cached = rootContainer.cache.get(name);
1283
+ if (cached) {
1284
+ return cached.value;
1285
+ }
1286
+ }
1287
+ // Fast path: cached scoped values can be returned immediately,
1288
+ // but in strict mode we still need to verify lifetime constraints.
1289
+ if (lifetime === Lifetime.SCOPED) {
1290
+ const cached = container.cache.get(name);
1291
+ if (cached !== undefined) {
1292
+ throwIfLifetimeLeakage(name, lifetime, resolver);
1293
+ return cached.value;
1278
1294
  }
1279
1295
  }
1280
- // Pushes the currently-resolving module information onto the stack
1296
+ // Slow path: need to invoke the factory.
1297
+ throwIfLifetimeLeakage(name, lifetime, resolver);
1281
1298
  resolutionStack.push({ name, lifetime });
1282
- // Do the thing
1283
- let cached;
1284
1299
  let resolved;
1285
1300
  switch (lifetime) {
1286
1301
  case Lifetime.TRANSIENT:
1287
- // Transient lifetime means resolve every time.
1288
1302
  resolved = resolver.resolve(container);
1289
1303
  break;
1290
1304
  case Lifetime.SINGLETON:
1291
- // Singleton lifetime means cache at all times, regardless of scope.
1292
- cached = rootContainer.cache.get(name);
1293
- if (!cached) {
1294
- // if we are running in strict mode, perform singleton resolution using the root
1295
- // container only.
1296
- resolved = resolver.resolve(options.strict ? rootContainer : container);
1297
- rootContainer.cache.set(name, { resolver, value: resolved });
1298
- }
1299
- else {
1300
- resolved = cached.value;
1301
- }
1305
+ // Cache was already checked above, so this is always a miss.
1306
+ resolved = resolver.resolve(options.strict ? rootContainer : container);
1307
+ rootContainer.cache.set(name, { resolver, value: resolved });
1302
1308
  break;
1303
1309
  case Lifetime.SCOPED:
1304
- // Scoped lifetime means that the container
1305
- // that resolves the registration also caches it.
1306
- // If this container cache does not have it,
1307
- // resolve and cache it rather than using the parent
1308
- // container's cache.
1309
- cached = container.cache.get(name);
1310
- if (cached !== undefined) {
1311
- // We found one!
1312
- resolved = cached.value;
1313
- break;
1314
- }
1315
- // If we still have not found one, we need to resolve and cache it.
1310
+ // Cache was already checked above, so this is always a miss.
1316
1311
  resolved = resolver.resolve(container);
1317
1312
  container.cache.set(name, { resolver, value: resolved });
1318
1313
  break;
1319
1314
  default:
1320
1315
  throw new AwilixResolutionError(name, resolutionStack, `Unknown lifetime "${resolver.lifetime}"`);
1321
1316
  }
1322
- // Pop it from the stack again, ready for the next resolution
1323
1317
  resolutionStack.pop();
1324
1318
  return resolved;
1325
1319
  }
package/lib/camel-case.js CHANGED
@@ -15,8 +15,9 @@ exports.camelCase = camelCase;
15
15
  */
16
16
  function camelCase(input) {
17
17
  const len = input.length;
18
- if (len === 0)
18
+ if (len === 0) {
19
19
  return '';
20
+ }
20
21
  let result = '';
21
22
  let wordIdx = 0;
22
23
  let wordPos = 0;
@@ -1 +1 @@
1
- {"version":3,"file":"camel-case.js","sourceRoot":"","sources":["../src/camel-case.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"camel-case.js","sourceRoot":"","sources":["../src/camel-case.ts"],"names":[],"mappings":"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"}
@@ -1,13 +1,13 @@
1
- import { InjectionModeType } from './injection-mode';
2
- import { LifetimeType } from './lifetime';
3
- import { GlobWithOptions } from './list-modules';
4
- import { LoadModulesOptions } from './load-modules';
5
- import { BuildResolverOptions, Constructor, Resolver } from './resolvers';
1
+ import { type InjectionModeType } from './injection-mode';
2
+ import { type LifetimeType } from './lifetime';
3
+ import { type GlobWithOptions } from './list-modules';
4
+ import { type LoadModulesOptions } from './load-modules';
5
+ import { type BuildResolverOptions, type Constructor, type Resolver } from './resolvers';
6
6
  /**
7
7
  * The container returned from createContainer has some methods and properties.
8
8
  * @interface AwilixContainer
9
9
  */
10
- export interface AwilixContainer<Cradle extends object = any> {
10
+ export interface AwilixContainer<Cradle extends object = {}> {
11
11
  /**
12
12
  * Options the container was configured with.
13
13
  */
@@ -46,11 +46,14 @@ export interface AwilixContainer<Cradle extends object = any> {
46
46
  /**
47
47
  * Adds a single registration that using a pre-constructed resolver.
48
48
  */
49
- register<T>(name: string | symbol, registration: Resolver<T>): this;
49
+ register<N extends string | symbol, T>(name: N, registration: Resolver<T>): AwilixContainer<Cradle & Record<N, T>>;
50
50
  /**
51
51
  * Pairs resolvers to registration names and registers them.
52
+ * Mutates and returns the same container, but with an expanded type
53
+ * that includes the newly registered types, enabling incremental
54
+ * type building via chaining.
52
55
  */
53
- register(nameAndRegistrationPair: NameAndRegistrationPair<Cradle>): this;
56
+ register<R extends Record<string, Resolver<any>>>(nameAndRegistrationPair: R): AwilixContainer<Cradle & InferCradleFromResolvers<R>>;
54
57
  /**
55
58
  * Resolves the registration with the given name.
56
59
  *
@@ -141,6 +144,38 @@ export interface CacheEntry<T = any> {
141
144
  export type NameAndRegistrationPair<T> = {
142
145
  [U in keyof T]?: Resolver<T[U]>;
143
146
  };
147
+ /**
148
+ * Extracts the resolved type from a Resolver.
149
+ */
150
+ export type InferResolverType<T> = T extends Resolver<infer U> ? U : never;
151
+ /**
152
+ * Extracts the Cradle type from an AwilixContainer type.
153
+ *
154
+ * @example
155
+ * const container = createContainer()
156
+ * .register({
157
+ * userService: asClass(UserService),
158
+ * logger: asValue(new Logger()),
159
+ * })
160
+ * type MyCradle = InferCradleFromContainer<typeof container>
161
+ * // => { userService: UserService; logger: Logger }
162
+ */
163
+ export type InferCradleFromContainer<T extends AwilixContainer<any>> = T extends AwilixContainer<infer C> ? C : never;
164
+ /**
165
+ * Given an object whose values are Resolvers, produces the corresponding
166
+ * cradle type by extracting the resolved type from each resolver.
167
+ *
168
+ * @example
169
+ * const resolvers = {
170
+ * userService: asClass(UserService),
171
+ * logger: asValue(new Logger()),
172
+ * }
173
+ * type MyCradle = InferCradleFromResolvers<typeof resolvers>
174
+ * // => { userService: UserService; logger: Logger }
175
+ */
176
+ export type InferCradleFromResolvers<T extends Record<string, Resolver<any>>> = {
177
+ [K in keyof T]: InferResolverType<T[K]>;
178
+ };
144
179
  /**
145
180
  * Function that returns T.
146
181
  */
@@ -178,4 +213,4 @@ export type ResolutionStack = Array<{
178
213
  *
179
214
  * @return {AwilixContainer<T>} The container.
180
215
  */
181
- export declare function createContainer<T extends object = any>(options?: ContainerOptions): AwilixContainer<T>;
216
+ export declare function createContainer<T extends object = {}>(options?: ContainerOptions): AwilixContainer<T>;
package/lib/container.js CHANGED
@@ -265,8 +265,11 @@ function createContainerInternal(options, parentContainer, parentResolutionStack
265
265
  try {
266
266
  // Grab the registration by name.
267
267
  const resolver = getRegistration(name);
268
- if (resolutionStack.some(({ name: parentName }) => parentName === name)) {
269
- throw new errors_1.AwilixResolutionError(name, resolutionStack, 'Cyclic dependencies detected.');
268
+ // Cycle detection: scan the resolution stack.
269
+ for (let i = 0; i < resolutionStack.length; i++) {
270
+ if (resolutionStack[i].name === name) {
271
+ throw new errors_1.AwilixResolutionError(name, resolutionStack, 'Cyclic dependencies detected.');
272
+ }
270
273
  }
271
274
  // Used in JSON.stringify.
272
275
  if (name === 'toJSON') {
@@ -302,57 +305,54 @@ function createContainerInternal(options, parentContainer, parentResolutionStack
302
305
  throw new errors_1.AwilixResolutionError(name, resolutionStack);
303
306
  }
304
307
  const lifetime = resolver.lifetime || lifetime_1.Lifetime.TRANSIENT;
305
- // if we are running in strict mode, this resolver is not explicitly marked leak-safe, and any
306
- // of the parents have a shorter lifetime than the one requested, throw an error.
307
- if (options.strict && !resolver.isLeakSafe) {
308
- const maybeLongerLifetimeParentIndex = resolutionStack.findIndex(({ lifetime: parentLifetime }) => (0, lifetime_1.isLifetimeLonger)(parentLifetime, lifetime));
309
- if (maybeLongerLifetimeParentIndex > -1) {
310
- throw new errors_1.AwilixResolutionError(name, resolutionStack, `Dependency '${name.toString()}' has a shorter lifetime than its ancestor: '${resolutionStack[maybeLongerLifetimeParentIndex].name.toString()}'`);
308
+ // Throws if a shorter-lived dependency is resolved through a longer-lived ancestor.
309
+ function throwIfLifetimeLeakage(depName, depLifetime, dep) {
310
+ if (!options.strict || dep.isLeakSafe)
311
+ return;
312
+ for (let i = 0; i < resolutionStack.length; i++) {
313
+ if ((0, lifetime_1.isLifetimeLonger)(resolutionStack[i].lifetime, depLifetime)) {
314
+ throw new errors_1.AwilixResolutionError(depName, resolutionStack, `Dependency '${depName.toString()}' has a shorter lifetime than its ancestor: '${resolutionStack[i].name.toString()}'`);
315
+ }
311
316
  }
312
317
  }
313
- // Pushes the currently-resolving module information onto the stack
318
+ // Fast path: cached singletons can always be returned immediately
319
+ // since nothing has a longer lifetime.
320
+ if (lifetime === lifetime_1.Lifetime.SINGLETON) {
321
+ const cached = rootContainer.cache.get(name);
322
+ if (cached) {
323
+ return cached.value;
324
+ }
325
+ }
326
+ // Fast path: cached scoped values can be returned immediately,
327
+ // but in strict mode we still need to verify lifetime constraints.
328
+ if (lifetime === lifetime_1.Lifetime.SCOPED) {
329
+ const cached = container.cache.get(name);
330
+ if (cached !== undefined) {
331
+ throwIfLifetimeLeakage(name, lifetime, resolver);
332
+ return cached.value;
333
+ }
334
+ }
335
+ // Slow path: need to invoke the factory.
336
+ throwIfLifetimeLeakage(name, lifetime, resolver);
314
337
  resolutionStack.push({ name, lifetime });
315
- // Do the thing
316
- let cached;
317
338
  let resolved;
318
339
  switch (lifetime) {
319
340
  case lifetime_1.Lifetime.TRANSIENT:
320
- // Transient lifetime means resolve every time.
321
341
  resolved = resolver.resolve(container);
322
342
  break;
323
343
  case lifetime_1.Lifetime.SINGLETON:
324
- // Singleton lifetime means cache at all times, regardless of scope.
325
- cached = rootContainer.cache.get(name);
326
- if (!cached) {
327
- // if we are running in strict mode, perform singleton resolution using the root
328
- // container only.
329
- resolved = resolver.resolve(options.strict ? rootContainer : container);
330
- rootContainer.cache.set(name, { resolver, value: resolved });
331
- }
332
- else {
333
- resolved = cached.value;
334
- }
344
+ // Cache was already checked above, so this is always a miss.
345
+ resolved = resolver.resolve(options.strict ? rootContainer : container);
346
+ rootContainer.cache.set(name, { resolver, value: resolved });
335
347
  break;
336
348
  case lifetime_1.Lifetime.SCOPED:
337
- // Scoped lifetime means that the container
338
- // that resolves the registration also caches it.
339
- // If this container cache does not have it,
340
- // resolve and cache it rather than using the parent
341
- // container's cache.
342
- cached = container.cache.get(name);
343
- if (cached !== undefined) {
344
- // We found one!
345
- resolved = cached.value;
346
- break;
347
- }
348
- // If we still have not found one, we need to resolve and cache it.
349
+ // Cache was already checked above, so this is always a miss.
349
350
  resolved = resolver.resolve(container);
350
351
  container.cache.set(name, { resolver, value: resolved });
351
352
  break;
352
353
  default:
353
354
  throw new errors_1.AwilixResolutionError(name, resolutionStack, `Unknown lifetime "${resolver.lifetime}"`);
354
355
  }
355
- // Pop it from the stack again, ready for the next resolution
356
356
  resolutionStack.pop();
357
357
  return resolved;
358
358
  }
@@ -1 +1 @@
1
- {"version":3,"file":"container.js","sourceRoot":"","sources":["../src/container.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"container.js","sourceRoot":"","sources":["../src/container.ts"],"names":[],"mappings":"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"}
package/lib/errors.d.ts CHANGED
@@ -1,4 +1,4 @@
1
- import { ResolutionStack } from './container';
1
+ import type { ResolutionStack } from './container';
2
2
  /**
3
3
  * An extendable error class.
4
4
  * @author https://github.com/bjyoungblood/es6-error/
@@ -1,6 +1,6 @@
1
1
  import glob from 'fast-glob';
2
- import { BuildResolverOptions } from './resolvers';
3
- import { LifetimeType } from './awilix';
2
+ import type { BuildResolverOptions } from './resolvers';
3
+ import type { LifetimeType } from './awilix';
4
4
  /**
5
5
  * The options when invoking listModules().
6
6
  * @interface ListModulesOptions
@@ -1,6 +1,6 @@
1
- import { AwilixContainer } from './container';
2
- import { GlobWithOptions, ModuleDescriptor, listModules } from './list-modules';
3
- import { BuildResolverOptions } from './resolvers';
1
+ import type { AwilixContainer } from './container';
2
+ import type { GlobWithOptions, ModuleDescriptor, listModules } from './list-modules';
3
+ import type { BuildResolverOptions } from './resolvers';
4
4
  /**
5
5
  * Metadata of the module as well as the loaded module itself.
6
6
  * @interface LoadedModuleDescriptor
@@ -1 +1 @@
1
- {"version":3,"file":"load-modules.js","sourceRoot":"","sources":["../src/load-modules.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"load-modules.js","sourceRoot":"","sources":["../src/load-modules.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"param-parser.js","sourceRoot":"","sources":["../src/param-parser.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"param-parser.js","sourceRoot":"","sources":["../src/param-parser.ts"],"names":[],"mappings":";;AA8BA,gDAmJC;AAjLD,6DAI6B;AAgB7B;;;;;;;;;GASG;AACH,SAAgB,kBAAkB,CAAC,MAAc;IAC/C,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,GAAG,IAAA,oCAAe,EAAC,MAAM,CAAC,CAAA;IACrD,MAAM,MAAM,GAAqB,EAAE,CAAA;IAEnC,IAAI,CAAC,GAAU,IAAK,CAAA;IACpB,SAAS,EAAE,CAAA;IACX,OAAO,CAAC,IAAI,EAAE,EAAE,CAAC;QACf,QAAQ,CAAC,CAAC,IAAI,EAAE,CAAC;YACf,KAAK,OAAO,CAAC,CAAC,CAAC;gBACb,MAAM,gBAAgB,GAAG,oBAAoB,EAAE,CAAA;gBAC/C,iEAAiE;gBACjE,4CAA4C;gBAC5C,IAAI,CAAC,gBAAgB,EAAE,CAAC;oBACtB,OAAO,IAAI,CAAA;gBACb,CAAC;gBAED,MAAK;YACP,CAAC;YACD,KAAK,UAAU,CAAC,CAAC,CAAC;gBAChB,MAAM,IAAI,GAAG,SAAS,EAAE,CAAA;gBACxB,IAAI,IAAI,CAAC,IAAI,KAAK,OAAO,IAAI,IAAI,CAAC,IAAI,KAAK,GAAG,EAAE,CAAC;oBAC/C,0DAA0D;oBAC1D,SAAS,EAAE,CAAA;gBACb,CAAC;gBACD,MAAK;YACP,CAAC;YACD,KAAK,GAAG;gBACN,iCAAiC;gBACjC,WAAW,EAAE,CAAA;gBACb,MAAK;YACP,KAAK,GAAG;gBACN,uCAAuC;gBACvC,OAAO,MAAM,CAAA;YAEf,8CAA8C;YAC9C,4DAA4D;YAC5D,8CAA8C;YAC9C,oEAAoE;YACpE,KAAK,OAAO,CAAC,CAAC,CAAC;gBACb,qCAAqC;gBACrC,kCAAkC;gBAClC,MAAM,KAAK,GAAG,EAAE,IAAI,EAAE,CAAC,CAAC,KAAM,EAAE,QAAQ,EAAE,KAAK,EAAE,CAAA;gBACjD,IAAI,CAAC,CAAC,KAAK,KAAK,OAAO,EAAE,CAAC;oBACxB,yEAAyE;oBACzE,8EAA8E;oBAC9E,sCAAsC;oBACtC,MAAM,IAAI,GAAG,SAAS,EAAE,CAAA;oBACxB,IAAI,IAAI,IAAI,IAAI,CAAC,IAAI,KAAK,GAAG,EAAE,CAAC;wBAC9B,MAAK;oBACP,CAAC;gBACH,CAAC;gBACD,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAA;gBAClB,OAAO,MAAM,CAAA;YACf,CAAC;YACD,0BAA0B;YAC1B;gBACE,MAAM,UAAU,EAAE,CAAA;QACtB,CAAC;IACH,CAAC;IAED,OAAO,MAAM,CAAA;IAEb;;;OAGG;IACH,SAAS,WAAW;QAClB,gCAAgC;QAChC,IAAI,KAAK,GAAc,EAAE,IAAI,EAAE,EAAE,EAAE,QAAQ,EAAE,KAAK,EAAE,CAAA;QACpD,OAAO,CAAC,IAAI,EAAE,EAAE,CAAC;YACf,SAAS,EAAE,CAAA;YACX,QAAQ,CAAC,CAAC,IAAI,EAAE,CAAC;gBACf,KAAK,OAAO;oBACV,KAAK,CAAC,IAAI,GAAG,CAAC,CAAC,KAAM,CAAA;oBACrB,MAAK;gBACP,KAAK,GAAG;oBACN,KAAK,CAAC,QAAQ,GAAG,IAAI,CAAA;oBACrB,MAAK;gBACP,KAAK,GAAG;oBACN,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAA;oBAClB,KAAK,GAAG,EAAE,IAAI,EAAE,EAAE,EAAE,QAAQ,EAAE,KAAK,EAAE,CAAA;oBACrC,MAAK;gBACP,KAAK,GAAG;oBACN,IAAI,KAAK,CAAC,IAAI,EAAE,CAAC;wBACf,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAA;oBACpB,CAAC;oBACD,OAAM;gBACR,0BAA0B;gBAC1B;oBACE,MAAM,UAAU,EAAE,CAAA;YACtB,CAAC;QACH,CAAC;IACH,CAAC;IAED;;;;;OAKG;IACH,SAAS,oBAAoB;QAC3B,OAAO,CAAC,IAAI,EAAE,EAAE,CAAC;YACf,IAAI,kBAAkB,EAAE,EAAE,CAAC;gBACzB,oBAAoB;gBACpB,SAAS,6BAAqB,CAAA;gBAE9B,kEAAkE;gBAClE,eAAe;gBACf,IAAI,CAAC,CAAC,IAAI,KAAK,GAAG,EAAE,CAAC;oBACnB,SAAQ;gBACV,CAAC;gBAED,OAAO,IAAI,CAAA;YACb,CAAC;YACD,SAAS,6BAAqB,CAAA;QAChC,CAAC;QAED,OAAO,KAAK,CAAA;IACd,CAAC;IAED;;;OAGG;IACH,SAAS,kBAAkB;QACzB,OAAO,CAAC,CAAC,IAAI,KAAK,OAAO,IAAI,CAAC,CAAC,KAAK,KAAK,aAAa,CAAA;IACxD,CAAC;IAED;;OAEG;IACH,SAAS,SAAS,CAAC,KAAK,8BAAsB;QAC5C,CAAC,GAAG,KAAK,CAAC,KAAK,CAAC,CAAA;QAChB,OAAO,CAAC,CAAA;IACV,CAAC;IAED;;OAEG;IACH,0BAA0B;IAC1B,SAAS,UAAU;QACjB,OAAO,IAAI,WAAW,CACpB,0CAA0C,CAAC,CAAC,IAAI,SAC9C,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC,EAC9B,EAAE,CACH,CAAA;IACH,CAAC;AACH,CAAC"}
@@ -1,6 +1,6 @@
1
- import { AwilixContainer, FunctionReturning } from './container';
2
- import { InjectionModeType } from './injection-mode';
3
- import { LifetimeType } from './lifetime';
1
+ import type { AwilixContainer, FunctionReturning } from './container';
2
+ import { type InjectionModeType } from './injection-mode';
3
+ import { type LifetimeType } from './lifetime';
4
4
  /**
5
5
  * RESOLVER symbol can be used by modules loaded by
6
6
  * `loadModules` to configure their lifetime, injection mode, etc.
@@ -109,7 +109,7 @@ export type Constructor<T> = {
109
109
  *
110
110
  * @return {object} The resolver.
111
111
  */
112
- export declare function asValue<T>(value: T): Resolver<T>;
112
+ export declare function asValue<const T>(value: T): Resolver<T>;
113
113
  /**
114
114
  * Creates a factory resolver, where the given factory function
115
115
  * will be invoked with `new` when requested.
package/lib/resolvers.js CHANGED
@@ -229,10 +229,16 @@ function wrapWithLocals(container, locals) {
229
229
  */
230
230
  function createInjectorProxy(container, injector) {
231
231
  const locals = injector(container);
232
- const allKeys = (0, utils_1.uniq)([
233
- ...Reflect.ownKeys(container.cradle),
234
- ...Reflect.ownKeys(locals),
235
- ]);
232
+ const keySet = new Set(Object.keys(container.registrations));
233
+ for (const s of Object.getOwnPropertySymbols(container.registrations)) {
234
+ keySet.add(s);
235
+ }
236
+ for (const k of Object.keys(locals)) {
237
+ keySet.add(k);
238
+ }
239
+ for (const s of Object.getOwnPropertySymbols(locals)) {
240
+ keySet.add(s);
241
+ }
236
242
  // TODO: Lots of duplication here from the container proxy.
237
243
  // Need to refactor.
238
244
  const proxy = new Proxy({}, {
@@ -259,13 +265,13 @@ function createInjectorProxy(container, injector) {
259
265
  * Used for `Object.keys`.
260
266
  */
261
267
  ownKeys() {
262
- return allKeys;
268
+ return [...keySet];
263
269
  },
264
270
  /**
265
271
  * Used for `Object.keys`.
266
272
  */
267
- getOwnPropertyDescriptor(target, key) {
268
- if (allKeys.indexOf(key) > -1) {
273
+ getOwnPropertyDescriptor(_target, key) {
274
+ if (keySet.has(key)) {
269
275
  return {
270
276
  enumerable: true,
271
277
  configurable: true,
@@ -1 +1 @@
1
- {"version":3,"file":"resolvers.js","sourceRoot":"","sources":["../src/resolvers.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"resolvers.js","sourceRoot":"","sources":["../src/resolvers.ts"],"names":[],"mappings":";;;AAwIA,0BAKC;AAkBD,gCAqBC;AAiBD,0BA0BC;AAMD,0BASC;AAYD,kDAkCC;AAOD,4DAaC;AA3SD,qCAA0C;AAC1C,qDAAwE;AACxE,yCAAwD;AACxD,iDAAmE;AACnE,mCAAoC;AAEpC,kFAAkF;AAClF,+DAA+D;AAE/D;;;GAGG;AACU,QAAA,QAAQ,GAAG,MAAM,CAAC,wBAAwB,CAAC,CAAA;AA2GxD;;;;;;;;;;GAUG;AACH,SAAgB,OAAO,CAAU,KAAQ;IACvC,OAAO;QACL,OAAO,EAAE,GAAG,EAAE,CAAC,KAAK;QACpB,UAAU,EAAE,IAAI;KACjB,CAAA;AACH,CAAC;AAED;;;;;;;;;;;;;;;GAeG;AACH,SAAgB,UAAU,CACxB,EAAwB,EACxB,IAA8B;IAE9B,IAAI,CAAC,IAAA,kBAAU,EAAC,EAAE,CAAC,EAAE,CAAC;QACpB,MAAM,IAAI,wBAAe,CAAC,YAAY,EAAE,IAAI,EAAE,UAAU,EAAE,EAAE,CAAC,CAAA;IAC/D,CAAC;IAED,MAAM,QAAQ,GAAG;QACf,QAAQ,EAAE,mBAAQ,CAAC,SAAS;KAC7B,CAAA;IAED,IAAI,GAAG,WAAW,CAAC,QAAQ,EAAE,IAAI,EAAG,EAAU,CAAC,gBAAQ,CAAC,CAAC,CAAA;IAEzD,MAAM,OAAO,GAAG,eAAe,CAAC,EAAE,CAAC,CAAA;IACnC,MAAM,MAAM,GAAG;QACb,OAAO;QACP,GAAG,IAAI;KACR,CAAA;IAED,OAAO,wBAAwB,CAAC,mBAAmB,CAAC,MAAM,CAAC,CAAC,CAAA;AAC9D,CAAC;AAED;;;;;;;;;;;;;;GAcG;AACH,SAAgB,OAAO,CACrB,IAAoB,EACpB,IAA8B;IAE9B,IAAI,CAAC,IAAA,kBAAU,EAAC,IAAI,CAAC,EAAE,CAAC;QACtB,MAAM,IAAI,wBAAe,CAAC,SAAS,EAAE,MAAM,EAAE,OAAO,EAAE,IAAI,CAAC,CAAA;IAC7D,CAAC;IAED,MAAM,QAAQ,GAAG;QACf,QAAQ,EAAE,mBAAQ,CAAC,SAAS;KAC7B,CAAA;IAED,IAAI,GAAG,WAAW,CAAC,QAAQ,EAAE,IAAI,EAAG,IAAY,CAAC,gBAAQ,CAAC,CAAC,CAAA;IAE3D,gGAAgG;IAChG,MAAM,QAAQ,GAAG,SAAS,QAAQ,CAAC,GAAG,IAAe;QACnD,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,EAAE,IAAI,CAAC,CAAA;IACtC,CAAC,CAAA;IAED,MAAM,OAAO,GAAG,eAAe,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAA;IAC/C,OAAO,wBAAwB,CAC7B,mBAAmB,CAAC;QAClB,GAAG,IAAI;QACP,OAAO;KACR,CAAC,CACH,CAAA;AACH,CAAC;AAED;;;GAGG;AACH,SAAgB,OAAO,CACrB,IAA+C;IAE/C,OAAO;QACL,OAAO,CAAC,SAAS;YACf,OAAO,SAAS,CAAC,OAAO,CAAC,IAAI,CAAC,CAAA;QAChC,CAAC;QACD,UAAU,EAAE,IAAI;KACjB,CAAA;AACH,CAAC;AAED;;;;;;;;;GASG;AACH,SAAgB,mBAAmB,CACjC,GAAM;IAEN,SAAS,WAAW,CAAY,KAAmB;QACjD,OAAO,mBAAmB,CAAC;YACzB,GAAG,IAAI;YACP,QAAQ,EAAE,KAAK;SAChB,CAAC,CAAA;IACJ,CAAC;IAED,SAAS,gBAAgB,CAAY,KAAwB;QAC3D,OAAO,mBAAmB,CAAC;YACzB,GAAG,IAAI;YACP,aAAa,EAAE,KAAK;SACrB,CAAC,CAAA;IACJ,CAAC;IAED,SAAS,MAAM,CAAY,QAA0B;QACnD,OAAO,mBAAmB,CAAC;YACzB,GAAG,IAAI;YACP,QAAQ;SACT,CAAC,CAAA;IACJ,CAAC;IAED,OAAO,cAAc,CAAC,GAAG,EAAE;QACzB,WAAW;QACX,MAAM;QACN,SAAS,EAAE,OAAO,CAAC,WAAW,EAAE,mBAAQ,CAAC,SAAS,CAAC;QACnD,MAAM,EAAE,OAAO,CAAC,WAAW,EAAE,mBAAQ,CAAC,MAAM,CAAC;QAC7C,SAAS,EAAE,OAAO,CAAC,WAAW,EAAE,mBAAQ,CAAC,SAAS,CAAC;QACnD,gBAAgB;QAChB,KAAK,EAAE,OAAO,CAAC,gBAAgB,EAAE,8BAAa,CAAC,KAAK,CAAC;QACrD,OAAO,EAAE,OAAO,CAAC,gBAAgB,EAAE,8BAAa,CAAC,OAAO,CAAC;KAC1D,CAAC,CAAA;AACJ,CAAC;AAED;;;;GAIG;AACH,SAAgB,wBAAwB,CACtC,GAAM;IAEN,SAAS,QAAQ,CAAY,OAAoB;QAC/C,OAAO,wBAAwB,CAAC;YAC9B,GAAG,IAAI;YACP,OAAO;SACR,CAAC,CAAA;IACJ,CAAC;IAED,OAAO,cAAc,CAAC,GAAG,EAAE;QACzB,QAAQ;KACT,CAAC,CAAA;AACJ,CAAC;AAED;;GAEG;AACH,SAAS,OAAO,CAAQ,EAAmB,EAAE,IAAQ;IACnD,OAAO,SAAS,gBAAgB;QAC9B,OAAO,EAAE,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,CAAA;IAC5B,CAAC,CAAA;AACH,CAAC;AAED;;;;;;;;;;GAUG;AACH,SAAS,WAAW,CAAO,QAAW,EAAE,GAAG,IAA0B;IACnE,OAAO,MAAM,CAAC,MAAM,CAAC,EAAE,EAAE,QAAQ,EAAE,GAAG,IAAI,CAAU,CAAA;AACtD,CAAC;AAED;;;;;GAKG;AACH,SAAS,cAAc,CACrB,MAAS,EACT,MAAS;IAET,MAAM,MAAM,GAAG;QACb,GAAI,MAAc;QAClB,GAAI,MAAc;KACnB,CAAA;IACD,OAAO,MAAM,CAAA;AACf,CAAC;AAED;;;;;;;GAOG;AACH,SAAS,cAAc,CACrB,SAA6B,EAC7B,MAAW;IAEX,OAAO,SAAS,cAAc,CAAC,IAAY,EAAE,WAA2B;QACtE,IAAI,IAAI,IAAI,MAAM,EAAE,CAAC;YACnB,OAAO,MAAM,CAAC,IAAI,CAAC,CAAA;QACrB,CAAC;QAED,OAAO,SAAS,CAAC,OAAO,CAAC,IAAI,EAAE,WAAW,CAAC,CAAA;IAC7C,CAAC,CAAA;AACH,CAAC;AAED;;;;;;;GAOG;AACH,SAAS,mBAAmB,CAC1B,SAA6B,EAC7B,QAA0B;IAE1B,MAAM,MAAM,GAAG,QAAQ,CAAC,SAAS,CAAQ,CAAA;IACzC,MAAM,MAAM,GAAG,IAAI,GAAG,CAAkB,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,aAAa,CAAC,CAAC,CAAA;IAC7E,KAAK,MAAM,CAAC,IAAI,MAAM,CAAC,qBAAqB,CAAC,SAAS,CAAC,aAAa,CAAC,EAAE,CAAC;QACtE,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAA;IACf,CAAC;IACD,KAAK,MAAM,CAAC,IAAI,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC;QACpC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAA;IACf,CAAC;IACD,KAAK,MAAM,CAAC,IAAI,MAAM,CAAC,qBAAqB,CAAC,MAAM,CAAC,EAAE,CAAC;QACrD,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAA;IACf,CAAC;IACD,2DAA2D;IAC3D,oBAAoB;IACpB,MAAM,KAAK,GAAG,IAAI,KAAK,CACrB,EAAE,EACF;QACE;;WAEG;QACH,GAAG,CAAC,MAAW,EAAE,IAAqB;YACpC,IAAI,IAAI,KAAK,MAAM,CAAC,QAAQ,EAAE,CAAC;gBAC7B,OAAO,QAAQ,CAAC,CAAC,6BAA6B;oBAC5C,KAAK,MAAM,IAAI,IAAI,SAAS,CAAC,MAAM,EAAE,CAAC;wBACpC,MAAM,IAAI,CAAA;oBACZ,CAAC;oBACD,KAAK,MAAM,IAAI,IAAI,MAAM,EAAE,CAAC;wBAC1B,MAAM,IAAI,CAAA;oBACZ,CAAC;gBACH,CAAC,CAAA;YACH,CAAC;YACD,IAAI,IAAI,IAAI,MAAM,EAAE,CAAC;gBACnB,OAAO,MAAM,CAAC,IAAI,CAAC,CAAA;YACrB,CAAC;YACD,OAAO,SAAS,CAAC,OAAO,CAAC,IAAc,CAAC,CAAA;QAC1C,CAAC;QAED;;WAEG;QACH,OAAO;YACL,OAAO,CAAC,GAAG,MAAM,CAAC,CAAA;QACpB,CAAC;QAED;;WAEG;QACH,wBAAwB,CAAC,OAAY,EAAE,GAAoB;YACzD,IAAI,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC;gBACpB,OAAO;oBACL,UAAU,EAAE,IAAI;oBAChB,YAAY,EAAE,IAAI;iBACnB,CAAA;YACH,CAAC;YAED,OAAO,SAAS,CAAA;QAClB,CAAC;KACF,CACF,CAAA;IAED,OAAO,KAAK,CAAA;AACd,CAAC;AAED;;;;;;;;;;;;;;;;;GAiBG;AACH,SAAS,eAAe,CAAC,EAAY,EAAE,qBAAgC;IACrE,kFAAkF;IAClF,IAAI,CAAC,qBAAqB,EAAE,CAAC;QAC3B,qBAAqB,GAAG,EAAE,CAAA;IAC5B,CAAC;IAED,6BAA6B;IAC7B,+DAA+D;IAC/D,sEAAsE;IACtE,2BAA2B;IAC3B,MAAM,YAAY,GAAG,iBAAiB,CAAC,qBAAqB,CAAC,CAAA;IAE7D,6FAA6F;IAC7F,OAAO,SAAS,OAAO,CAErB,SAA6B;QAE7B,gHAAgH;QAChH,yCAAyC;QACzC,MAAM,aAAa,GACjB,IAAI,CAAC,aAAa;YAClB,SAAS,CAAC,OAAO,CAAC,aAAa;YAC/B,8BAAa,CAAC,KAAK,CAAA;QAErB,IAAI,aAAa,KAAK,8BAAa,CAAC,OAAO,EAAE,CAAC;YAC5C,4DAA4D;YAC5D,MAAM,MAAM,GAAG,IAAI,CAAC,QAAQ;gBAC1B,CAAC,CAAC,mBAAmB,CAAC,SAAS,EAAE,IAAI,CAAC,QAAQ,CAAC;gBAC/C,CAAC,CAAC,SAAS,CAAC,MAAM,CAAA;YAEpB,6CAA6C;YAC7C,OAAO,EAAE,CAAC,MAAM,CAAC,CAAA;QACnB,CAAC;QAED,2DAA2D;QAC3D,IAAI,YAAY,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAC5B,MAAM,OAAO,GAAG,IAAI,CAAC,QAAQ;gBAC3B,CAAC,CAAC,cAAc,CAAC,SAAS,EAAE,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC;gBACrD,CAAC,CAAC,SAAS,CAAC,OAAO,CAAA;YAErB,MAAM,QAAQ,GAAG,YAAY,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CACtC,OAAO,CAAC,CAAC,CAAC,IAAI,EAAE,EAAE,iBAAiB,EAAE,CAAC,CAAC,QAAQ,EAAE,CAAC,CACnD,CAAA;YACD,OAAO,EAAE,CAAC,GAAG,QAAQ,CAAC,CAAA;QACxB,CAAC;QAED,OAAO,EAAE,EAAE,CAAA;IACb,CAAC,CAAA;AACH,CAAC;AAED;;;;GAIG;AACH,SAAS,iBAAiB,CAAC,EAAY;IACrC,MAAM,MAAM,GAAG,IAAA,iCAAkB,EAAC,EAAE,CAAC,QAAQ,EAAE,CAAC,CAAA;IAChD,IAAI,CAAC,MAAM,EAAE,CAAC;QACZ,iEAAiE;QACjE,gBAAgB;QAChB,MAAM,MAAM,GAAG,MAAM,CAAC,cAAc,CAAC,EAAE,CAAC,CAAA;QACxC,IAAI,OAAO,MAAM,KAAK,UAAU,IAAI,MAAM,KAAK,QAAQ,CAAC,SAAS,EAAE,CAAC;YAClE,0BAA0B;YAC1B,OAAO,iBAAiB,CAAC,MAAM,CAAC,CAAA;QAClC,CAAC;QACD,OAAO,EAAE,CAAA;IACX,CAAC;IAED,OAAO,MAAM,CAAA;AACf,CAAC"}
package/lib/utils.d.ts CHANGED
@@ -1,4 +1,4 @@
1
- import { Constructor } from './resolvers';
1
+ import type { Constructor } from './resolvers';
2
2
  /**
3
3
  * Quick flatten utility to flatten a 2-dimensional array.
4
4
  *
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "awilix",
3
- "version": "12.1.0",
3
+ "version": "13.0.0",
4
4
  "description": "Extremely powerful dependency injection container.",
5
5
  "main": "lib/awilix.js",
6
6
  "module": "lib/awilix.module.mjs",
@@ -44,6 +44,7 @@
44
44
  "check": "tsc -p tsconfig.json --noEmit --pretty",
45
45
  "test": "npm run check && jest",
46
46
  "lint": "npm run check && eslint --fix \"{src,examples}/**/*.ts\" && prettier --write \"{src,examples}/**/*.{ts,js}\"",
47
+ "bench": "npx tsx benchmarks/run-all.ts",
47
48
  "cover": "npm run test -- --coverage",
48
49
  "publish:pre": "npm run lint && npm run build && npm run cover",
49
50
  "publish:post": "npm publish && git push --follow-tags",
@@ -95,6 +96,7 @@
95
96
  "rollup-plugin-copy": "^3.5.0",
96
97
  "rollup-plugin-typescript2": "^0.36.0",
97
98
  "smid": "^0.1.1",
99
+ "tinybench": "^6.0.0",
98
100
  "ts-jest": "^29.2.6",
99
101
  "tslib": "^2.8.1",
100
102
  "typescript": "^5.8.2",