##// END OF EJS Templates
corrected code to support ts strict mode...
corrected code to support ts strict mode safe.ts - more tight typings - added notImplemented stub function - added fork funtion - added keys function (like Object.keys but extracts keys type) - added isKeyof typeguard - added 'primitive' union type added EventProvider for the observable

File last commit:

r115:691199f665e0 ioc ts support
r115:691199f665e0 ioc ts support
Show More
Registry.ts
55 lines | 1.4 KiB | video/mp2t | TypeScriptLexer
cin
minor refactoring of TraceSource, code linting
r53 import { TraceSource } from "./TraceSource";
import { argumentNotNull } from "../safe";
cin
corrected code to support ts strict mode...
r115 import { IDestroyable, MapOf } from "../interfaces";
cin
minor refactoring of TraceSource, code linting
r53
export class Registry {
static readonly instance = new Registry();
cin
corrected code to support ts strict mode...
r115 private _registry: MapOf<TraceSource> = {};
private _listeners: MapOf<(source: TraceSource) => void> = {};
cin
minor refactoring of TraceSource, code linting
r53 private _nextCookie: number = 1;
cin
corrected code to support ts strict mode...
r115 get(id: string): TraceSource {
cin
minor refactoring of TraceSource, code linting
r53 argumentNotNull(id, "id");
if (this._registry[id])
return this._registry[id];
const source = new TraceSource(id);
this._registry[id] = source;
this._onNewSource(source);
return source;
}
add(id: any, source: TraceSource) {
argumentNotNull(id, "id");
argumentNotNull(source, "source");
this._registry[id] = source;
this._onNewSource(source);
}
_onNewSource(source: TraceSource) {
for (const i in this._listeners)
this._listeners[i].call(null, source);
}
on(handler: (source: TraceSource) => void): IDestroyable {
argumentNotNull(handler, "handler");
const me = this;
const cookie = this._nextCookie++;
this._listeners[cookie] = handler;
for (const i in this._registry)
handler(this._registry[i]);
return {
destroy() {
delete me._listeners[cookie];
}
};
}
}