@loopback/context 3.14.1 → 3.17.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.
@@ -50,35 +50,16 @@ class ResolutionSession {
50
50
  copy.stack.push(...session.stack);
51
51
  return copy;
52
52
  }
53
- /**
54
- * Start to resolve a binding within the session
55
- * @param binding - The current binding
56
- * @param session - The current resolution session
57
- */
58
- static enterBinding(binding, session) {
59
- session = session !== null && session !== void 0 ? session : new ResolutionSession();
60
- session.pushBinding(binding);
61
- return session;
62
- }
63
53
  /**
64
54
  * Run the given action with the given binding and session
65
55
  * @param action - A function to do some work with the resolution session
66
56
  * @param binding - The current binding
67
57
  * @param session - The current resolution session
68
58
  */
69
- static runWithBinding(action, binding, session) {
70
- const resolutionSession = ResolutionSession.enterBinding(binding, session);
71
- return value_promise_1.tryWithFinally(() => action(resolutionSession), () => resolutionSession.popBinding());
72
- }
73
- /**
74
- * Push an injection into the session
75
- * @param injection - The current injection
76
- * @param session - The current resolution session
77
- */
78
- static enterInjection(injection, session) {
79
- session = session !== null && session !== void 0 ? session : new ResolutionSession();
80
- session.pushInjection(injection);
81
- return session;
59
+ static runWithBinding(action, binding, session = new ResolutionSession()) {
60
+ // Start to resolve a binding within the session
61
+ session.pushBinding(binding);
62
+ return value_promise_1.tryWithFinally(() => action(session), () => session.popBinding());
82
63
  }
83
64
  /**
84
65
  * Run the given action with the given injection and session
@@ -86,9 +67,9 @@ class ResolutionSession {
86
67
  * @param binding - The current injection
87
68
  * @param session - The current resolution session
88
69
  */
89
- static runWithInjection(action, injection, session) {
90
- const resolutionSession = ResolutionSession.enterInjection(injection, session);
91
- return value_promise_1.tryWithFinally(() => action(resolutionSession), () => resolutionSession.popInjection());
70
+ static runWithInjection(action, injection, session = new ResolutionSession()) {
71
+ session.pushInjection(injection);
72
+ return value_promise_1.tryWithFinally(() => action(session), () => session.popInjection());
92
73
  }
93
74
  /**
94
75
  * Describe the injection for debugging purpose
@@ -208,7 +189,7 @@ class ResolutionSession {
208
189
  * Get the binding path as `bindingA --> bindingB --> bindingC`.
209
190
  */
210
191
  getBindingPath() {
211
- return this.bindingStack.map(b => b.key).join(' --> ');
192
+ return this.stack.filter(isBinding).map(describe).join(' --> ');
212
193
  }
213
194
  /**
214
195
  * Get the injection path as `injectionA --> injectionB --> injectionC`.
@@ -218,27 +199,27 @@ class ResolutionSession {
218
199
  .map(i => ResolutionSession.describeInjection(i).targetName)
219
200
  .join(' --> ');
220
201
  }
221
- static describe(e) {
222
- switch (e.type) {
223
- case 'injection':
224
- return '@' + ResolutionSession.describeInjection(e.value).targetName;
225
- case 'binding':
226
- return e.value.key;
227
- }
228
- }
229
202
  /**
230
203
  * Get the resolution path including bindings and injections, for example:
231
204
  * `bindingA --> @ClassA[0] --> bindingB --> @ClassB.prototype.prop1
232
205
  * --> bindingC`.
233
206
  */
234
207
  getResolutionPath() {
235
- return this.stack.map(i => ResolutionSession.describe(i)).join(' --> ');
208
+ return this.stack.map(describe).join(' --> ');
236
209
  }
237
210
  toString() {
238
211
  return this.getResolutionPath();
239
212
  }
240
213
  }
241
214
  exports.ResolutionSession = ResolutionSession;
215
+ function describe(e) {
216
+ switch (e.type) {
217
+ case 'injection':
218
+ return '@' + ResolutionSession.describeInjection(e.value).targetName;
219
+ case 'binding':
220
+ return e.value.key;
221
+ }
222
+ }
242
223
  /**
243
224
  * Normalize ResolutionOptionsOrSession to ResolutionOptions
244
225
  * @param optionsOrSession - resolution options or session
@@ -1 +1 @@
1
- {"version":3,"file":"resolution-session.js","sourceRoot":"","sources":["../src/resolution-session.ts"],"names":[],"mappings":";AAAA,sDAAsD;AACtD,iCAAiC;AACjC,+CAA+C;AAC/C,gEAAgE;;;;AAEhE,iDAAoD;AACpD,0DAAgC;AAKhC,mDAA2E;AAE3E,MAAM,YAAY,GAAG,eAAW,CAAC,mCAAmC,CAAC,CAAC;AACtE,MAAM,aAAa,GAAG,2BAAgB,CAAC,aAAa,CAAC;AAoCrD;;;GAGG;AACH,SAAS,SAAS,CAChB,OAAsC;IAEtC,OAAO,OAAO,IAAI,IAAI,IAAI,OAAO,CAAC,IAAI,KAAK,SAAS,CAAC;AACvD,CAAC;AAED;;;GAGG;AACH,SAAS,WAAW,CAClB,OAAsC;IAEtC,OAAO,OAAO,IAAI,IAAI,IAAI,OAAO,CAAC,IAAI,KAAK,WAAW,CAAC;AACzD,CAAC;AAED;;;GAGG;AACH,MAAa,iBAAiB;IAA9B;QACE;;;WAGG;QACM,UAAK,GAAwB,EAAE,CAAC;IA+P3C,CAAC;IA7PC;;;;;OAKG;IACH,MAAM,CAAC,IAAI,CAAC,OAA2B;QACrC,IAAI,OAAO,KAAK,SAAS;YAAE,OAAO,SAAS,CAAC;QAC5C,MAAM,IAAI,GAAG,IAAI,iBAAiB,EAAE,CAAC;QACrC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,OAAO,CAAC,KAAK,CAAC,CAAC;QAClC,OAAO,IAAI,CAAC;IACd,CAAC;IAED;;;;OAIG;IACK,MAAM,CAAC,YAAY,CACzB,OAA0B,EAC1B,OAA2B;QAE3B,OAAO,GAAG,OAAO,aAAP,OAAO,cAAP,OAAO,GAAI,IAAI,iBAAiB,EAAE,CAAC;QAC7C,OAAO,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC;QAC7B,OAAO,OAAO,CAAC;IACjB,CAAC;IAED;;;;;OAKG;IACH,MAAM,CAAC,cAAc,CACnB,MAAwB,EACxB,OAA0B,EAC1B,OAA2B;QAE3B,MAAM,iBAAiB,GAAG,iBAAiB,CAAC,YAAY,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;QAC3E,OAAO,8BAAc,CACnB,GAAG,EAAE,CAAC,MAAM,CAAC,iBAAiB,CAAC,EAC/B,GAAG,EAAE,CAAC,iBAAiB,CAAC,UAAU,EAAE,CACrC,CAAC;IACJ,CAAC;IAED;;;;OAIG;IACK,MAAM,CAAC,cAAc,CAC3B,SAA8B,EAC9B,OAA2B;QAE3B,OAAO,GAAG,OAAO,aAAP,OAAO,cAAP,OAAO,GAAI,IAAI,iBAAiB,EAAE,CAAC;QAC7C,OAAO,CAAC,aAAa,CAAC,SAAS,CAAC,CAAC;QACjC,OAAO,OAAO,CAAC;IACjB,CAAC;IAED;;;;;OAKG;IACH,MAAM,CAAC,gBAAgB,CACrB,MAAwB,EACxB,SAA8B,EAC9B,OAA2B;QAE3B,MAAM,iBAAiB,GAAG,iBAAiB,CAAC,cAAc,CACxD,SAAS,EACT,OAAO,CACR,CAAC;QACF,OAAO,8BAAc,CACnB,GAAG,EAAE,CAAC,MAAM,CAAC,iBAAiB,CAAC,EAC/B,GAAG,EAAE,CAAC,iBAAiB,CAAC,YAAY,EAAE,CACvC,CAAC;IACJ,CAAC;IAED;;;OAGG;IACH,MAAM,CAAC,iBAAiB,CACtB,SAA8B;QAE9B,MAAM,IAAI,GAAG,aAAa,CACxB,SAAS,CAAC,MAAM,EAChB,SAAS,CAAC,MAAM,EAChB,SAAS,CAAC,gCAAgC,CAC3C,CAAC;QACF,OAAO;YACL,UAAU,EAAE,IAAI;YAChB,eAAe,EAAE,SAAS,CAAC,eAAe;YAC1C,QAAQ,EAAE,SAAS,CAAC,QAAQ;SAC7B,CAAC;IACJ,CAAC;IAED;;;OAGG;IACH,aAAa,CAAC,SAA8B;QAC1C,wBAAwB;QACxB,IAAI,YAAY,CAAC,OAAO,EAAE;YACxB,YAAY,CACV,kBAAkB,EAClB,iBAAiB,CAAC,iBAAiB,CAAC,SAAS,CAAC,CAC/C,CAAC;SACH;QACD,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,EAAC,IAAI,EAAE,WAAW,EAAE,KAAK,EAAE,SAAS,EAAC,CAAC,CAAC;QACvD,wBAAwB;QACxB,IAAI,YAAY,CAAC,OAAO,EAAE;YACxB,YAAY,CAAC,kBAAkB,EAAE,IAAI,CAAC,iBAAiB,EAAE,CAAC,CAAC;SAC5D;IACH,CAAC;IAED;;OAEG;IACH,YAAY;QACV,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC;QAC7B,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,EAAE;YACrB,MAAM,IAAI,KAAK,CAAC,sCAAsC,CAAC,CAAC;SACzD;QAED,MAAM,SAAS,GAAG,GAAG,CAAC,KAAK,CAAC;QAC5B,wBAAwB;QACxB,IAAI,YAAY,CAAC,OAAO,EAAE;YACxB,YAAY,CACV,iBAAiB,EACjB,iBAAiB,CAAC,iBAAiB,CAAC,SAAS,CAAC,CAC/C,CAAC;YACF,YAAY,CAAC,kBAAkB,EAAE,IAAI,CAAC,iBAAiB,EAAE,IAAI,SAAS,CAAC,CAAC;SACzE;QACD,OAAO,SAAS,CAAC;IACnB,CAAC;IAED;;OAEG;IACH,IAAI,gBAAgB;QAClB,KAAK,IAAI,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,EAAE;YAC/C,MAAM,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;YAC9B,IAAI,WAAW,CAAC,OAAO,CAAC;gBAAE,OAAO,OAAO,CAAC,KAAK,CAAC;SAChD;QACD,OAAO,SAAS,CAAC;IACnB,CAAC;IAED;;OAEG;IACH,IAAI,cAAc;QAChB,KAAK,IAAI,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,EAAE;YAC/C,MAAM,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;YAC9B,IAAI,SAAS,CAAC,OAAO,CAAC;gBAAE,OAAO,OAAO,CAAC,KAAK,CAAC;SAC9C;QACD,OAAO,SAAS,CAAC;IACnB,CAAC;IAED;;;OAGG;IACH,WAAW,CAAC,OAA0B;QACpC,wBAAwB;QACxB,IAAI,YAAY,CAAC,OAAO,EAAE;YACxB,YAAY,CAAC,gBAAgB,EAAE,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC;SAClD;QAED,IAAI,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,KAAK,KAAK,OAAO,CAAC,EAAE;YAC7D,MAAM,GAAG,GACP,gCAAgC;gBAChC,GAAG,IAAI,CAAC,iBAAiB,EAAE,QAAQ,OAAO,CAAC,GAAG,EAAE,CAAC;YACnD,YAAY,CAAC,GAAG,CAAC,CAAC;YAClB,MAAM,IAAI,KAAK,CAAC,GAAG,CAAC,CAAC;SACtB;QACD,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,EAAC,IAAI,EAAE,SAAS,EAAE,KAAK,EAAE,OAAO,EAAC,CAAC,CAAC;QACnD,wBAAwB;QACxB,IAAI,YAAY,CAAC,OAAO,EAAE;YACxB,YAAY,CAAC,kBAAkB,EAAE,IAAI,CAAC,iBAAiB,EAAE,CAAC,CAAC;SAC5D;IACH,CAAC;IAED;;OAEG;IACH,UAAU;QACR,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC;QAC7B,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,EAAE;YACnB,MAAM,IAAI,KAAK,CAAC,mCAAmC,CAAC,CAAC;SACtD;QACD,MAAM,OAAO,GAAG,GAAG,CAAC,KAAK,CAAC;QAC1B,wBAAwB;QACxB,IAAI,YAAY,CAAC,OAAO,EAAE;YACxB,YAAY,CAAC,eAAe,EAAE,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,MAAM,GAAG,CAAC;YACjD,YAAY,CAAC,kBAAkB,EAAE,IAAI,CAAC,iBAAiB,EAAE,IAAI,SAAS,CAAC,CAAC;SACzE;QACD,OAAO,OAAO,CAAC;IACjB,CAAC;IAED;;OAEG;IACH,IAAI,YAAY;QACd,OAAO,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC;IACxD,CAAC;IAED;;OAEG;IACH,IAAI,cAAc;QAChB,OAAO,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC;IAC1D,CAAC;IAED;;OAEG;IACH,cAAc;QACZ,OAAO,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;IACzD,CAAC;IAED;;OAEG;IACH,gBAAgB;QACd,OAAO,IAAI,CAAC,cAAc;aACvB,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,iBAAiB,CAAC,iBAAiB,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC;aAC3D,IAAI,CAAC,OAAO,CAAC,CAAC;IACnB,CAAC;IAEO,MAAM,CAAC,QAAQ,CAAC,CAAoB;QAC1C,QAAQ,CAAC,CAAC,IAAI,EAAE;YACd,KAAK,WAAW;gBACd,OAAO,GAAG,GAAG,iBAAiB,CAAC,iBAAiB,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,UAAU,CAAC;YACvE,KAAK,SAAS;gBACZ,OAAO,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC;SACtB;IACH,CAAC;IAED;;;;OAIG;IACH,iBAAiB;QACf,OAAO,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,iBAAiB,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;IAC1E,CAAC;IAED,QAAQ;QACN,OAAO,IAAI,CAAC,iBAAiB,EAAE,CAAC;IAClC,CAAC;CACF;AApQD,8CAoQC;AA+BD;;;GAGG;AACH,SAAgB,mBAAmB,CACjC,gBAA6C;IAE7C,0BAA0B;IAC1B,IAAI,gBAAgB,YAAY,iBAAiB,EAAE;QACjD,OAAO,EAAC,OAAO,EAAE,gBAAgB,EAAC,CAAC;KACpC;IACD,OAAO,gBAAgB,aAAhB,gBAAgB,cAAhB,gBAAgB,GAAI,EAAE,CAAC;AAChC,CAAC;AARD,kDAQC;AAoBD;;GAEG;AACH,MAAa,eAAgB,SAAQ,KAAK;IACxC,YACE,OAAe,EACN,aAAyC;QAElD,KAAK,CAAC,eAAe,CAAC,YAAY,CAAC,OAAO,EAAE,aAAa,CAAC,CAAC,CAAC;QAFnD,kBAAa,GAAb,aAAa,CAA4B;QAGlD,IAAI,CAAC,IAAI,GAAG,eAAe,CAAC,IAAI,CAAC;IACnC,CAAC;IAEO,MAAM,CAAC,YAAY,CAAC,aAAyC;;QACnE,OAAO;YACL,OAAO,cAAE,aAAa,CAAC,OAAO,0CAAE,IAAI,mCAAI,EAAE;YAC1C,OAAO,cAAE,aAAa,CAAC,OAAO,0CAAE,GAAG,mCAAI,EAAE;YACzC,cAAc,oBAAE,aAAa,CAAC,OAAO,0CAAE,OAAO,0CAAE,iBAAiB,qCAAM,EAAE;SAC1E,CAAC;IACJ,CAAC;IAED;;;;OAIG;IACK,MAAM,CAAC,YAAY,CACzB,MAAc,EACd,aAAyC;QAEzC,MAAM,IAAI,GAAG,IAAI,CAAC,yBAAyB,CAAC,aAAa,CAAC,CAAC;QAC3D,MAAM,OAAO,GAAG,GAAG,MAAM,KAAK,IAAI,GAAG,CAAC;QACtC,OAAO,OAAO,CAAC;IACjB,CAAC;IAEO,MAAM,CAAC,yBAAyB,CACtC,aAAyC;QAEzC,MAAM,OAAO,GAAG,eAAe,CAAC,YAAY,CAAC,aAAa,CAAC,CAAC;QAC5D,MAAM,KAAK,GAAa,EAAE,CAAC;QAC3B,KAAK,MAAM,CAAC,IAAI,EAAE,GAAG,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE;YACjD,IAAI,GAAG,KAAK,EAAE,EAAE;gBACd,KAAK,CAAC,IAAI,CAAC,GAAG,IAAI,KAAK,GAAG,EAAE,CAAC,CAAC;aAC/B;SACF;QACD,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAC1B,CAAC;CACF;AA3CD,0CA2CC"}
1
+ {"version":3,"file":"resolution-session.js","sourceRoot":"","sources":["../src/resolution-session.ts"],"names":[],"mappings":";AAAA,sDAAsD;AACtD,iCAAiC;AACjC,+CAA+C;AAC/C,gEAAgE;;;;AAEhE,iDAAoD;AACpD,0DAAgC;AAKhC,mDAA2E;AAE3E,MAAM,YAAY,GAAG,eAAW,CAAC,mCAAmC,CAAC,CAAC;AACtE,MAAM,aAAa,GAAG,2BAAgB,CAAC,aAAa,CAAC;AAoCrD;;;GAGG;AACH,SAAS,SAAS,CAChB,OAAsC;IAEtC,OAAO,OAAO,IAAI,IAAI,IAAI,OAAO,CAAC,IAAI,KAAK,SAAS,CAAC;AACvD,CAAC;AAED;;;GAGG;AACH,SAAS,WAAW,CAClB,OAAsC;IAEtC,OAAO,OAAO,IAAI,IAAI,IAAI,OAAO,CAAC,IAAI,KAAK,WAAW,CAAC;AACzD,CAAC;AAED;;;GAGG;AACH,MAAa,iBAAiB;IAA9B;QACE;;;WAGG;QACM,UAAK,GAAwB,EAAE,CAAC;IAwN3C,CAAC;IAtNC;;;;;OAKG;IACH,MAAM,CAAC,IAAI,CAAC,OAA2B;QACrC,IAAI,OAAO,KAAK,SAAS;YAAE,OAAO,SAAS,CAAC;QAC5C,MAAM,IAAI,GAAG,IAAI,iBAAiB,EAAE,CAAC;QACrC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,OAAO,CAAC,KAAK,CAAC,CAAC;QAClC,OAAO,IAAI,CAAC;IACd,CAAC;IAED;;;;;OAKG;IACH,MAAM,CAAC,cAAc,CACnB,MAAwB,EACxB,OAA0B,EAC1B,OAAO,GAAG,IAAI,iBAAiB,EAAE;QAEjC,gDAAgD;QAChD,OAAO,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC;QAC7B,OAAO,8BAAc,CACnB,GAAG,EAAE,CAAC,MAAM,CAAC,OAAO,CAAC,EACrB,GAAG,EAAE,CAAC,OAAO,CAAC,UAAU,EAAE,CAC3B,CAAC;IACJ,CAAC;IAED;;;;;OAKG;IACH,MAAM,CAAC,gBAAgB,CACrB,MAAwB,EACxB,SAA8B,EAC9B,OAAO,GAAG,IAAI,iBAAiB,EAAE;QAEjC,OAAO,CAAC,aAAa,CAAC,SAAS,CAAC,CAAC;QACjC,OAAO,8BAAc,CACnB,GAAG,EAAE,CAAC,MAAM,CAAC,OAAO,CAAC,EACrB,GAAG,EAAE,CAAC,OAAO,CAAC,YAAY,EAAE,CAC7B,CAAC;IACJ,CAAC;IAED;;;OAGG;IACH,MAAM,CAAC,iBAAiB,CACtB,SAA8B;QAE9B,MAAM,IAAI,GAAG,aAAa,CACxB,SAAS,CAAC,MAAM,EAChB,SAAS,CAAC,MAAM,EAChB,SAAS,CAAC,gCAAgC,CAC3C,CAAC;QACF,OAAO;YACL,UAAU,EAAE,IAAI;YAChB,eAAe,EAAE,SAAS,CAAC,eAAe;YAC1C,QAAQ,EAAE,SAAS,CAAC,QAAQ;SAC7B,CAAC;IACJ,CAAC;IAED;;;OAGG;IACH,aAAa,CAAC,SAA8B;QAC1C,wBAAwB;QACxB,IAAI,YAAY,CAAC,OAAO,EAAE;YACxB,YAAY,CACV,kBAAkB,EAClB,iBAAiB,CAAC,iBAAiB,CAAC,SAAS,CAAC,CAC/C,CAAC;SACH;QACD,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,EAAC,IAAI,EAAE,WAAW,EAAE,KAAK,EAAE,SAAS,EAAC,CAAC,CAAC;QACvD,wBAAwB;QACxB,IAAI,YAAY,CAAC,OAAO,EAAE;YACxB,YAAY,CAAC,kBAAkB,EAAE,IAAI,CAAC,iBAAiB,EAAE,CAAC,CAAC;SAC5D;IACH,CAAC;IAED;;OAEG;IACH,YAAY;QACV,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC;QAC7B,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,EAAE;YACrB,MAAM,IAAI,KAAK,CAAC,sCAAsC,CAAC,CAAC;SACzD;QAED,MAAM,SAAS,GAAG,GAAG,CAAC,KAAK,CAAC;QAC5B,wBAAwB;QACxB,IAAI,YAAY,CAAC,OAAO,EAAE;YACxB,YAAY,CACV,iBAAiB,EACjB,iBAAiB,CAAC,iBAAiB,CAAC,SAAS,CAAC,CAC/C,CAAC;YACF,YAAY,CAAC,kBAAkB,EAAE,IAAI,CAAC,iBAAiB,EAAE,IAAI,SAAS,CAAC,CAAC;SACzE;QACD,OAAO,SAAS,CAAC;IACnB,CAAC;IAED;;OAEG;IACH,IAAI,gBAAgB;QAClB,KAAK,IAAI,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,EAAE;YAC/C,MAAM,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;YAC9B,IAAI,WAAW,CAAC,OAAO,CAAC;gBAAE,OAAO,OAAO,CAAC,KAAK,CAAC;SAChD;QACD,OAAO,SAAS,CAAC;IACnB,CAAC;IAED;;OAEG;IACH,IAAI,cAAc;QAChB,KAAK,IAAI,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,EAAE;YAC/C,MAAM,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;YAC9B,IAAI,SAAS,CAAC,OAAO,CAAC;gBAAE,OAAO,OAAO,CAAC,KAAK,CAAC;SAC9C;QACD,OAAO,SAAS,CAAC;IACnB,CAAC;IAED;;;OAGG;IACH,WAAW,CAAC,OAA0B;QACpC,wBAAwB;QACxB,IAAI,YAAY,CAAC,OAAO,EAAE;YACxB,YAAY,CAAC,gBAAgB,EAAE,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC;SAClD;QAED,IAAI,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,KAAK,KAAK,OAAO,CAAC,EAAE;YAC7D,MAAM,GAAG,GACP,gCAAgC;gBAChC,GAAG,IAAI,CAAC,iBAAiB,EAAE,QAAQ,OAAO,CAAC,GAAG,EAAE,CAAC;YACnD,YAAY,CAAC,GAAG,CAAC,CAAC;YAClB,MAAM,IAAI,KAAK,CAAC,GAAG,CAAC,CAAC;SACtB;QACD,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,EAAC,IAAI,EAAE,SAAS,EAAE,KAAK,EAAE,OAAO,EAAC,CAAC,CAAC;QACnD,wBAAwB;QACxB,IAAI,YAAY,CAAC,OAAO,EAAE;YACxB,YAAY,CAAC,kBAAkB,EAAE,IAAI,CAAC,iBAAiB,EAAE,CAAC,CAAC;SAC5D;IACH,CAAC;IAED;;OAEG;IACH,UAAU;QACR,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC;QAC7B,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,EAAE;YACnB,MAAM,IAAI,KAAK,CAAC,mCAAmC,CAAC,CAAC;SACtD;QACD,MAAM,OAAO,GAAG,GAAG,CAAC,KAAK,CAAC;QAC1B,wBAAwB;QACxB,IAAI,YAAY,CAAC,OAAO,EAAE;YACxB,YAAY,CAAC,eAAe,EAAE,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,MAAM,EAAE,CAAC,CAAC;YACjD,YAAY,CAAC,kBAAkB,EAAE,IAAI,CAAC,iBAAiB,EAAE,IAAI,SAAS,CAAC,CAAC;SACzE;QACD,OAAO,OAAO,CAAC;IACjB,CAAC;IAED;;OAEG;IACH,IAAI,YAAY;QACd,OAAO,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC;IACxD,CAAC;IAED;;OAEG;IACH,IAAI,cAAc;QAChB,OAAO,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC;IAC1D,CAAC;IAED;;OAEG;IACH,cAAc;QACZ,OAAO,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;IAClE,CAAC;IAED;;OAEG;IACH,gBAAgB;QACd,OAAO,IAAI,CAAC,cAAc;aACvB,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,iBAAiB,CAAC,iBAAiB,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC;aAC3D,IAAI,CAAC,OAAO,CAAC,CAAC;IACnB,CAAC;IAED;;;;OAIG;IACH,iBAAiB;QACf,OAAO,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;IAChD,CAAC;IAED,QAAQ;QACN,OAAO,IAAI,CAAC,iBAAiB,EAAE,CAAC;IAClC,CAAC;CACF;AA7ND,8CA6NC;AAED,SAAS,QAAQ,CAAC,CAAoB;IACpC,QAAQ,CAAC,CAAC,IAAI,EAAE;QACd,KAAK,WAAW;YACd,OAAO,GAAG,GAAG,iBAAiB,CAAC,iBAAiB,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,UAAU,CAAC;QACvE,KAAK,SAAS;YACZ,OAAO,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC;KACtB;AACH,CAAC;AA+BD;;;GAGG;AACH,SAAgB,mBAAmB,CACjC,gBAA6C;IAE7C,0BAA0B;IAC1B,IAAI,gBAAgB,YAAY,iBAAiB,EAAE;QACjD,OAAO,EAAC,OAAO,EAAE,gBAAgB,EAAC,CAAC;KACpC;IACD,OAAO,gBAAgB,aAAhB,gBAAgB,cAAhB,gBAAgB,GAAI,EAAE,CAAC;AAChC,CAAC;AARD,kDAQC;AAoBD;;GAEG;AACH,MAAa,eAAgB,SAAQ,KAAK;IACxC,YACE,OAAe,EACN,aAAyC;QAElD,KAAK,CAAC,eAAe,CAAC,YAAY,CAAC,OAAO,EAAE,aAAa,CAAC,CAAC,CAAC;QAFnD,kBAAa,GAAb,aAAa,CAA4B;QAGlD,IAAI,CAAC,IAAI,GAAG,eAAe,CAAC,IAAI,CAAC;IACnC,CAAC;IAEO,MAAM,CAAC,YAAY,CAAC,aAAyC;;QACnE,OAAO;YACL,OAAO,EAAE,MAAA,MAAA,aAAa,CAAC,OAAO,0CAAE,IAAI,mCAAI,EAAE;YAC1C,OAAO,EAAE,MAAA,MAAA,aAAa,CAAC,OAAO,0CAAE,GAAG,mCAAI,EAAE;YACzC,cAAc,EAAE,MAAA,MAAA,MAAA,aAAa,CAAC,OAAO,0CAAE,OAAO,0CAAE,iBAAiB,EAAE,mCAAI,EAAE;SAC1E,CAAC;IACJ,CAAC;IAED;;;;OAIG;IACK,MAAM,CAAC,YAAY,CACzB,MAAc,EACd,aAAyC;QAEzC,MAAM,IAAI,GAAG,IAAI,CAAC,yBAAyB,CAAC,aAAa,CAAC,CAAC;QAC3D,MAAM,OAAO,GAAG,GAAG,MAAM,KAAK,IAAI,GAAG,CAAC;QACtC,OAAO,OAAO,CAAC;IACjB,CAAC;IAEO,MAAM,CAAC,yBAAyB,CACtC,aAAyC;QAEzC,MAAM,OAAO,GAAG,eAAe,CAAC,YAAY,CAAC,aAAa,CAAC,CAAC;QAC5D,MAAM,KAAK,GAAa,EAAE,CAAC;QAC3B,KAAK,MAAM,CAAC,IAAI,EAAE,GAAG,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE;YACjD,IAAI,GAAG,KAAK,EAAE,EAAE;gBACd,KAAK,CAAC,IAAI,CAAC,GAAG,IAAI,KAAK,GAAG,EAAE,CAAC,CAAC;aAC/B;SACF;QACD,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAC1B,CAAC;CACF;AA3CD,0CA2CC"}
@@ -1 +1 @@
1
- {"version":3,"file":"value-promise.js","sourceRoot":"","sources":["../src/value-promise.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"value-promise.js","sourceRoot":"","sources":["../src/value-promise.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,11 +1,28 @@
1
1
  {
2
2
  "name": "@loopback/context",
3
- "version": "3.14.1",
4
3
  "description": "Facilities to manage artifacts and their dependencies in your Node.js applications. The module exposes TypeScript/JavaScript APIs and decorators to register artifacts, declare dependencies, and resolve artifacts by keys. It also serves as an IoC container to support dependency injection",
4
+ "version": "3.17.0",
5
+ "keywords": [
6
+ "LoopBack",
7
+ "IoC",
8
+ "Inversion",
9
+ "Control",
10
+ "Container",
11
+ "Decorators",
12
+ "Context"
13
+ ],
14
+ "license": "MIT",
5
15
  "main": "dist/index.js",
6
16
  "types": "dist/index.d.ts",
17
+ "author": "IBM Corp.",
18
+ "copyright.owner": "IBM Corp.",
19
+ "repository": {
20
+ "type": "git",
21
+ "url": "https://github.com/strongloop/loopback-next.git",
22
+ "directory": "packages/context"
23
+ },
7
24
  "engines": {
8
- "node": "^10.16 || 12 || 14 || 15"
25
+ "node": "^10.16 || 12 || 14 || 16"
9
26
  },
10
27
  "scripts": {
11
28
  "acceptance": "lb-mocha \"dist/__tests__/acceptance/**/*.js\"",
@@ -16,49 +33,32 @@
16
33
  "unit": "lb-mocha \"dist/__tests__/unit/**/*.js\"",
17
34
  "verify": "npm pack && tar xf loopback-context*.tgz && tree package && npm run clean"
18
35
  },
19
- "author": "IBM Corp.",
20
- "copyright.owner": "IBM Corp.",
21
- "license": "MIT",
22
36
  "publishConfig": {
23
37
  "access": "public"
24
38
  },
39
+ "files": [
40
+ "README.md",
41
+ "dist",
42
+ "src",
43
+ "!*/__tests__"
44
+ ],
25
45
  "dependencies": {
26
- "@loopback/metadata": "^3.1.1",
46
+ "@loopback/metadata": "^3.3.1",
27
47
  "@types/debug": "^4.1.5",
28
48
  "debug": "^4.3.1",
29
49
  "hyperid": "^2.1.0",
30
50
  "p-event": "^4.2.0",
31
- "tslib": "^2.1.0",
51
+ "tslib": "^2.2.0",
32
52
  "uuid": "^8.3.2"
33
53
  },
34
54
  "devDependencies": {
35
- "@loopback/build": "^6.2.9",
36
- "@loopback/eslint-config": "^10.0.5",
37
- "@loopback/testlab": "^3.2.12",
38
- "@types/bluebird": "^3.5.33",
39
- "@types/node": "^10.17.35",
55
+ "@loopback/build": "^6.4.1",
56
+ "@loopback/eslint-config": "^10.2.1",
57
+ "@loopback/testlab": "^3.4.1",
58
+ "@types/bluebird": "^3.5.35",
59
+ "@types/node": "^10.17.60",
40
60
  "@types/uuid": "^8.3.0",
41
61
  "bluebird": "^3.7.2"
42
62
  },
43
- "keywords": [
44
- "LoopBack",
45
- "IoC",
46
- "Inversion",
47
- "Control",
48
- "Container",
49
- "Decorators",
50
- "Context"
51
- ],
52
- "files": [
53
- "README.md",
54
- "dist",
55
- "src",
56
- "!*/__tests__"
57
- ],
58
- "repository": {
59
- "type": "git",
60
- "url": "https://github.com/strongloop/loopback-next.git",
61
- "directory": "packages/context"
62
- },
63
- "gitHead": "0fcf97fa1e87457de85f8f1b6b5cbf9f4f0bd640"
63
+ "gitHead": "2a3b684ec76fa299d80b099abbf101358538cb75"
64
64
  }
package/src/binding.ts CHANGED
@@ -508,11 +508,21 @@ export class Binding<T = BoundValue> extends EventEmitter {
508
508
  const options = asResolutionOptions(optionsOrSession);
509
509
  const resolutionCtx = this.getResolutionContext(ctx, options);
510
510
  if (resolutionCtx == null) return undefined;
511
+
512
+ // Keep a snapshot for proxy
513
+ const savedSession =
514
+ ResolutionSession.fork(options.session) ?? new ResolutionSession();
515
+
511
516
  // First check cached value for non-transient
512
517
  if (this._cache) {
513
518
  if (this.scope !== BindingScope.TRANSIENT) {
514
519
  if (resolutionCtx && this._cache.has(resolutionCtx)) {
515
- return this._cache.get(resolutionCtx)!;
520
+ const value = this._cache.get(resolutionCtx)!;
521
+ return this.getValueOrProxy(
522
+ resolutionCtx,
523
+ {...options, session: savedSession},
524
+ value,
525
+ );
516
526
  }
517
527
  }
518
528
  }
@@ -524,7 +534,12 @@ export class Binding<T = BoundValue> extends EventEmitter {
524
534
  if (typeof this._getValue === 'function') {
525
535
  const result = ResolutionSession.runWithBinding(
526
536
  s => {
527
- const optionsWithSession = {...options, session: s};
537
+ const optionsWithSession = {
538
+ ...options,
539
+ session: s,
540
+ // Force to be the non-proxy version
541
+ asProxyWithInterceptors: false,
542
+ };
528
543
  // We already test `this._getValue` is a function. It's safe to assert
529
544
  // that `this._getValue` is not undefined.
530
545
  return this._getValue!({
@@ -535,7 +550,12 @@ export class Binding<T = BoundValue> extends EventEmitter {
535
550
  this,
536
551
  options.session,
537
552
  );
538
- return this._cacheValue(resolutionCtx!, result);
553
+ const value = this._cacheValue(resolutionCtx!, result);
554
+ return this.getValueOrProxy(
555
+ resolutionCtx,
556
+ {...options, session: savedSession},
557
+ value,
558
+ );
539
559
  }
540
560
  // `@inject.binding` adds a binding without _getValue
541
561
  if (options.optional) return undefined;
@@ -547,6 +567,23 @@ export class Binding<T = BoundValue> extends EventEmitter {
547
567
  );
548
568
  }
549
569
 
570
+ private getValueOrProxy(
571
+ resolutionCtx: Context,
572
+ options: ResolutionOptions,
573
+ value: ValueOrPromise<T>,
574
+ ): ValueOrPromise<T> {
575
+ const session = options.session!;
576
+ session.pushBinding(this);
577
+ return Binding.valueOrProxy(
578
+ {
579
+ context: resolutionCtx,
580
+ binding: this,
581
+ options,
582
+ },
583
+ value,
584
+ );
585
+ }
586
+
550
587
  /**
551
588
  * Locate and validate the resolution context
552
589
  * @param ctx - Current context
@@ -1060,11 +1097,11 @@ function createInterceptionProxyFromInstance<T>(
1060
1097
  ) {
1061
1098
  return transformValueOrPromise(instOrPromise, inst => {
1062
1099
  if (typeof inst !== 'object' || inst == null) return inst;
1063
- return (createProxyWithInterceptors(
1100
+ return createProxyWithInterceptors(
1064
1101
  // Cast inst from `T` to `object`
1065
- (inst as unknown) as object,
1102
+ inst as unknown as object,
1066
1103
  context,
1067
1104
  session,
1068
- ) as unknown) as T;
1105
+ ) as unknown as T;
1069
1106
  });
1070
1107
  }
@@ -16,10 +16,8 @@ export class ContextTagIndexer {
16
16
  /**
17
17
  * Index for bindings by tag names
18
18
  */
19
- readonly bindingsIndexedByTag: Map<
20
- string,
21
- Set<Readonly<Binding<unknown>>>
22
- > = new Map();
19
+ readonly bindingsIndexedByTag: Map<string, Set<Readonly<Binding<unknown>>>> =
20
+ new Map();
23
21
 
24
22
  /**
25
23
  * A listener for binding events
@@ -47,7 +47,8 @@ export interface ContextViewEvent<T> extends ContextEvent {
47
47
  */
48
48
  export class ContextView<T = unknown>
49
49
  extends EventEmitter
50
- implements ContextObserver {
50
+ implements ContextObserver
51
+ {
51
52
  /**
52
53
  * An array of cached bindings that matches the binding filter
53
54
  */
package/src/inject.ts CHANGED
@@ -152,20 +152,21 @@ export function inject(
152
152
  if (typeof methodDescriptorOrParameterIndex === 'number') {
153
153
  // The decorator is applied to a method parameter
154
154
  // Please note propertyKey is `undefined` for constructor
155
- const paramDecorator: ParameterDecorator = ParameterDecoratorFactory.createDecorator<Injection>(
156
- INJECT_PARAMETERS_KEY,
157
- {
158
- target,
159
- member,
160
- methodDescriptorOrParameterIndex,
161
- bindingSelector,
162
- metadata: injectionMetadata,
163
- resolve,
164
- },
165
- // Do not deep clone the spec as only metadata is mutable and it's
166
- // shallowly cloned
167
- {cloneInputSpec: false, decoratorName: injectionMetadata.decorator},
168
- );
155
+ const paramDecorator: ParameterDecorator =
156
+ ParameterDecoratorFactory.createDecorator<Injection>(
157
+ INJECT_PARAMETERS_KEY,
158
+ {
159
+ target,
160
+ member,
161
+ methodDescriptorOrParameterIndex,
162
+ bindingSelector,
163
+ metadata: injectionMetadata,
164
+ resolve,
165
+ },
166
+ // Do not deep clone the spec as only metadata is mutable and it's
167
+ // shallowly cloned
168
+ {cloneInputSpec: false, decoratorName: injectionMetadata.decorator},
169
+ );
169
170
  paramDecorator(target, member!, methodDescriptorOrParameterIndex);
170
171
  } else if (member) {
171
172
  // Property or method
@@ -186,20 +187,21 @@ export function inject(
186
187
  ),
187
188
  );
188
189
  }
189
- const propDecorator: PropertyDecorator = PropertyDecoratorFactory.createDecorator<Injection>(
190
- INJECT_PROPERTIES_KEY,
191
- {
192
- target,
193
- member,
194
- methodDescriptorOrParameterIndex,
195
- bindingSelector,
196
- metadata: injectionMetadata,
197
- resolve,
198
- },
199
- // Do not deep clone the spec as only metadata is mutable and it's
200
- // shallowly cloned
201
- {cloneInputSpec: false, decoratorName: injectionMetadata.decorator},
202
- );
190
+ const propDecorator: PropertyDecorator =
191
+ PropertyDecoratorFactory.createDecorator<Injection>(
192
+ INJECT_PROPERTIES_KEY,
193
+ {
194
+ target,
195
+ member,
196
+ methodDescriptorOrParameterIndex,
197
+ bindingSelector,
198
+ metadata: injectionMetadata,
199
+ resolve,
200
+ },
201
+ // Do not deep clone the spec as only metadata is mutable and it's
202
+ // shallowly cloned
203
+ {cloneInputSpec: false, decoratorName: injectionMetadata.decorator},
204
+ );
203
205
  propDecorator(target, member!);
204
206
  } else {
205
207
  // It won't happen here as `@inject` is not compatible with ClassDecorator
@@ -24,7 +24,7 @@ export type AsValueOrPromise<T> = T extends Promise<unknown>
24
24
  export type AsInterceptedFunction<T> = T extends (
25
25
  ...args: InvocationArgs
26
26
  ) => infer R
27
- ? (...args: InvocationArgs) => AsValueOrPromise<R>
27
+ ? (...args: Parameters<T>) => AsValueOrPromise<R>
28
28
  : T;
29
29
 
30
30
  /**
@@ -242,7 +242,7 @@ export class GenericInterceptorChain<C extends Context = Context> {
242
242
  */
243
243
  export function invokeInterceptors<
244
244
  C extends Context = Context,
245
- T = InvocationResult
245
+ T = InvocationResult,
246
246
  >(
247
247
  context: C,
248
248
  interceptors: GenericInterceptorOrKey<C>[],
package/src/keys.ts CHANGED
@@ -71,9 +71,10 @@ export namespace ContextBindings {
71
71
  /**
72
72
  * Binding key for ConfigurationResolver
73
73
  */
74
- export const CONFIGURATION_RESOLVER = BindingKey.create<ConfigurationResolver>(
75
- `${BindingKey.CONFIG_NAMESPACE}.resolver`,
76
- );
74
+ export const CONFIGURATION_RESOLVER =
75
+ BindingKey.create<ConfigurationResolver>(
76
+ `${BindingKey.CONFIG_NAMESPACE}.resolver`,
77
+ );
77
78
 
78
79
  /**
79
80
  * Binding key for ordered groups of global interceptors
@@ -92,20 +92,6 @@ export class ResolutionSession {
92
92
  return copy;
93
93
  }
94
94
 
95
- /**
96
- * Start to resolve a binding within the session
97
- * @param binding - The current binding
98
- * @param session - The current resolution session
99
- */
100
- private static enterBinding(
101
- binding: Readonly<Binding>,
102
- session?: ResolutionSession,
103
- ): ResolutionSession {
104
- session = session ?? new ResolutionSession();
105
- session.pushBinding(binding);
106
- return session;
107
- }
108
-
109
95
  /**
110
96
  * Run the given action with the given binding and session
111
97
  * @param action - A function to do some work with the resolution session
@@ -115,29 +101,16 @@ export class ResolutionSession {
115
101
  static runWithBinding(
116
102
  action: ResolutionAction,
117
103
  binding: Readonly<Binding>,
118
- session?: ResolutionSession,
104
+ session = new ResolutionSession(),
119
105
  ) {
120
- const resolutionSession = ResolutionSession.enterBinding(binding, session);
106
+ // Start to resolve a binding within the session
107
+ session.pushBinding(binding);
121
108
  return tryWithFinally(
122
- () => action(resolutionSession),
123
- () => resolutionSession.popBinding(),
109
+ () => action(session),
110
+ () => session.popBinding(),
124
111
  );
125
112
  }
126
113
 
127
- /**
128
- * Push an injection into the session
129
- * @param injection - The current injection
130
- * @param session - The current resolution session
131
- */
132
- private static enterInjection(
133
- injection: Readonly<Injection>,
134
- session?: ResolutionSession,
135
- ): ResolutionSession {
136
- session = session ?? new ResolutionSession();
137
- session.pushInjection(injection);
138
- return session;
139
- }
140
-
141
114
  /**
142
115
  * Run the given action with the given injection and session
143
116
  * @param action - A function to do some work with the resolution session
@@ -147,15 +120,12 @@ export class ResolutionSession {
147
120
  static runWithInjection(
148
121
  action: ResolutionAction,
149
122
  injection: Readonly<Injection>,
150
- session?: ResolutionSession,
123
+ session = new ResolutionSession(),
151
124
  ) {
152
- const resolutionSession = ResolutionSession.enterInjection(
153
- injection,
154
- session,
155
- );
125
+ session.pushInjection(injection);
156
126
  return tryWithFinally(
157
- () => action(resolutionSession),
158
- () => resolutionSession.popInjection(),
127
+ () => action(session),
128
+ () => session.popInjection(),
159
129
  );
160
130
  }
161
131
 
@@ -299,7 +269,7 @@ export class ResolutionSession {
299
269
  * Get the binding path as `bindingA --> bindingB --> bindingC`.
300
270
  */
301
271
  getBindingPath() {
302
- return this.bindingStack.map(b => b.key).join(' --> ');
272
+ return this.stack.filter(isBinding).map(describe).join(' --> ');
303
273
  }
304
274
 
305
275
  /**
@@ -311,22 +281,13 @@ export class ResolutionSession {
311
281
  .join(' --> ');
312
282
  }
313
283
 
314
- private static describe(e: ResolutionElement) {
315
- switch (e.type) {
316
- case 'injection':
317
- return '@' + ResolutionSession.describeInjection(e.value).targetName;
318
- case 'binding':
319
- return e.value.key;
320
- }
321
- }
322
-
323
284
  /**
324
285
  * Get the resolution path including bindings and injections, for example:
325
286
  * `bindingA --> @ClassA[0] --> bindingB --> @ClassB.prototype.prop1
326
287
  * --> bindingC`.
327
288
  */
328
289
  getResolutionPath() {
329
- return this.stack.map(i => ResolutionSession.describe(i)).join(' --> ');
290
+ return this.stack.map(describe).join(' --> ');
330
291
  }
331
292
 
332
293
  toString() {
@@ -334,6 +295,15 @@ export class ResolutionSession {
334
295
  }
335
296
  }
336
297
 
298
+ function describe(e: ResolutionElement) {
299
+ switch (e.type) {
300
+ case 'injection':
301
+ return '@' + ResolutionSession.describeInjection(e.value).targetName;
302
+ case 'binding':
303
+ return e.value.key;
304
+ }
305
+ }
306
+
337
307
  /**
338
308
  * Options for binding/dependency resolution
339
309
  */
@@ -314,4 +314,5 @@ export function uuid() {
314
314
  * @deprecated This pattern is an internal helper used by unit-tests, we are no
315
315
  * longer using it.
316
316
  */
317
- export const UUID_PATTERN = /[0-9A-F]{8}-[0-9A-F]{4}-[4][0-9A-F]{3}-[89AB][0-9A-F]{3}-[0-9A-F]{12}/i;
317
+ export const UUID_PATTERN =
318
+ /[0-9A-F]{8}-[0-9A-F]{4}-[4][0-9A-F]{3}-[89AB][0-9A-F]{3}-[0-9A-F]{12}/i;