diff --git a/src/ts/components/ActivatableMixin.ts b/src/ts/components/ActivatableMixin.ts --- a/src/ts/components/ActivatableMixin.ts +++ b/src/ts/components/ActivatableMixin.ts @@ -3,10 +3,12 @@ import { IActivatable } from './IActivat import { AsyncComponent } from './AsyncComponent'; import { ICancellation } from '../ICancellation'; import { EmptyCancellation } from '../EmptyCancellation'; -import * as log from '@implab/core/log/trace!'; +import * as TraceSource from '../log/TraceSource'; type Constructor = new (...args: any[]) => T; +const log = TraceSource.get('@implab/core/components/ActivatableMixin'); + function ActivatableMixin>(Base: TBase) { return class extends Base implements IActivatable { _controller: IActivationController; diff --git a/src/ts/log/TraceSource.ts b/src/ts/log/TraceSource.ts --- a/src/ts/log/TraceSource.ts +++ b/src/ts/log/TraceSource.ts @@ -152,7 +152,7 @@ class TraceSource { } static on(handler: TraceSourceHandler) { - Registry.instance.on(handler); + return Registry.instance.on(handler); } static get(id: any) { diff --git a/src/ts/log/trace.ts b/src/ts/log/trace.ts deleted file mode 100644 --- a/src/ts/log/trace.ts +++ /dev/null @@ -1,12 +0,0 @@ -declare interface ILog { - debug(...args: any[]): void; - log(...args: any[]): void; - warn(...args: any[]): void; - error(...args: any[]): void; -} - -declare module "@implab/core/log/trace!*" { - const channel: ILog; - - export = channel; -} \ No newline at end of file diff --git a/test/js/plan.js b/test/js/plan.js --- a/test/js/plan.js +++ b/test/js/plan.js @@ -1,1 +1,1 @@ -define(["./dummy", "./example", "./ActivatableTests"]); \ No newline at end of file +define(["./ActivatableTests", "./trace-test"]); \ No newline at end of file diff --git a/test/js/trace-test.js b/test/js/trace-test.js new file mode 100644 --- /dev/null +++ b/test/js/trace-test.js @@ -0,0 +1,29 @@ +define(["tape"], function(tape) { + "use strict"; + var sourceId = '73a633f3-eab8-49b0-8601-07cae710f234'; + var sourceId2 = '3ba9c7cd-ed77-437b-9a2f-1cbeb1226b5b'; + tape('Load TraceSource for the module', function(t) { + require(["core/log/trace!" + sourceId, "core/log/TraceSource"], function(trace, TraceSource) { + t.equal(trace && trace.id, sourceId, "trace should be taken from the loader plugin parameter"); + + var count = 0; + + var h = TraceSource.on(function(x) { + if(x.id == sourceId || x.id == sourceId2) + count++; + }); + + t.equal(count, 1, "should see created channel immediatelly"); + t.equal(trace, TraceSource.get(sourceId), "should get same TraceSource from registry"); + t.equal(count, 1); + + TraceSource.get(sourceId2); + + t.equal(count, 2); + + h.destroy(); + + t.end(); + }); + }); +}); \ No newline at end of file diff --git a/test/ts/TraceSourceTests.ts b/test/ts/TraceSourceTests.ts new file mode 100644 --- /dev/null +++ b/test/ts/TraceSourceTests.ts @@ -0,0 +1,14 @@ +import * as TraceSource from '@implab/core/log/TraceSource' +import * as tape from 'tape'; + +const sourceId = 'test/TraceSourceTests'; + +tape('', t => { + let trace = TraceSource.get(sourceId); + + let h = trace.on((sender,level,msg) => { + + }); + + h.destroy(); +}); \ No newline at end of file