Skip to content

Commit 77d13c2

Browse files
committed
Release 1.2.0-beta.6
Added injector.clearCache().
1 parent 59c027d commit 77d13c2

File tree

4 files changed

+28
-5
lines changed

4 files changed

+28
-5
lines changed

CHANGELOG.md

+8-1
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,12 @@
1+
<a name="1.2.0-beta.6"></a>
2+
# [1.2.0-beta.6](https://github.com/ts-stack/di/releases/tag/1.2.0-beta.6) (2021-11-10)
3+
4+
### Features
5+
6+
- Added `injector.clearCache()`.
7+
18
<a name="1.2.0-beta.5"></a>
2-
# [1.2.0-beta.5](https://github.com/ts-stack/di/releases/tag/1.2.0-beta.5) (2021-11-10)
9+
## [1.2.0-beta.5](https://github.com/ts-stack/di/releases/tag/1.2.0-beta.5) (2021-11-10)
310

411
### Breaking Changes
512

package.json

+1-1
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22
"name": "@ts-stack/di",
33
"description": "Dependency injection library for JavaScript and TypeScript",
44
"author": "Костя Третяк <ktretiak.in.ua@gmail.com>",
5-
"version": "1.2.0-beta.5",
5+
"version": "1.2.0-beta.6",
66
"main": "dist/index",
77
"typings": "src/index",
88
"directories": {

src/di/reflective_injector.ts

+8-3
Original file line numberDiff line numberDiff line change
@@ -281,11 +281,12 @@ injector.addSibling(externalInjector2, [token4, token5, token6]);
281281
```
282282
*/
283283
abstract addSibling(externalInjector: ReflectiveInjector, tokens: any[]): void;
284+
abstract clearCache(): void;
284285
}
285286

286287
export class ReflectiveInjector_ implements ReflectiveInjector {
287288
/** @internal */
288-
_constructionCounter = 0;
289+
_constructionCounter: number;
289290
/** @internal */
290291
public _providers: ResolvedReflectiveProvider[];
291292
/** @internal */
@@ -304,13 +305,17 @@ export class ReflectiveInjector_ implements ReflectiveInjector {
304305
this._providers = _providers;
305306
this._parent = _parent || null;
306307

307-
const len = _providers.length;
308+
this.clearCache();
309+
}
308310

311+
clearCache() {
312+
this._constructionCounter = 0;
313+
const len = this._providers.length;
309314
this.keyIds = new Array(len);
310315
this.objs = new Array(len);
311316

312317
for (let i = 0; i < len; i++) {
313-
this.keyIds[i] = _providers[i].key.id;
318+
this.keyIds[i] = this._providers[i].key.id;
314319
this.objs[i] = UNDEFINED;
315320
}
316321
}

test/reflective_injector.spec.ts

+11
Original file line numberDiff line numberDiff line change
@@ -583,3 +583,14 @@ describe(`child.parent = parent`, () => {
583583
expect(() => child.get(CarWithDashboard)).not.toThrow();
584584
});
585585
});
586+
587+
describe(`injector.clearCache()`, () => {
588+
it('should clear cache', () => {
589+
const injector = ReflectiveInjector.resolveAndCreate([Engine]);
590+
591+
const engine = injector.get(Engine);
592+
expect(engine).toBe(injector.get(Engine));
593+
injector.clearCache();
594+
expect(engine).not.toBe(injector.get(Engine));
595+
});
596+
});

0 commit comments

Comments
 (0)