##// END OF EJS Templates
Merge with ts-plugin
cin -
r102:32db28d9ca07 merge v1.3.2 default
parent child
Show More
@@ -0,0 +1,17
1 <?xml version="1.0" encoding="UTF-8"?>
2 <projectDescription>
3 <name>core</name>
4 <comment>Project implabjs-core created by Buildship.</comment>
5 <projects>
6 </projects>
7 <buildSpec>
8 <buildCommand>
9 <name>org.eclipse.buildship.core.gradleprojectbuilder</name>
10 <arguments>
11 </arguments>
12 </buildCommand>
13 </buildSpec>
14 <natures>
15 <nature>org.eclipse.buildship.core.gradleprojectnature</nature>
16 </natures>
17 </projectDescription>
@@ -0,0 +1,14
1 {
2 "version": "0.2.0",
3 "configurations": [
4 {
5 "name": "Launch browser tests",
6 "type": "node",
7 "request": "launch",
8 "program": "${workspaceFolder}/build/test/tests/index.js",
9 "cwd": "${workspaceFolder}/build/test",
10 "sourceMaps": true,
11 "preLaunchTask": "Build browser test"
12 }
13 ]
14 } No newline at end of file
@@ -0,0 +1,15
1 {
2 "version": "2.0.0",
3 "command": "./gradlew",
4 "type": "shell",
5 "tasks": [
6 {
7 "label": "Build browser test",
8 "args": [
9 "assembleTest",
10 "-Psymbols=local",
11 "-Pflavour=browser"
12 ]
13 }
14 ]
15 } No newline at end of file
@@ -0,0 +1,32
1 package org.implab.gradle.hg;
2
3 import org.gradle.api.Plugin;
4 import org.gradle.api.Project;
5
6 public class MercurialPlugin implements Plugin<Project> {
7 public void apply(Project project) {
8 if (!project.version) {
9
10 def rev = ["hg", "log", "-r", ".", "--template", "{latesttag('re:^v') % '{tag}-{distance}'}"].execute().text.trim();
11
12 def tagVersion;
13 def tagDistance;
14
15 def match = (rev =~ /^v(\d+\.\d+\.\d+).*-(\d+)$/);
16
17 if (match.size()) {
18 tagVersion = match[0][1];
19 tagDistance = match[0][2].toInteger();
20 } else {
21 throw new Exception("A version must be specied");
22 }
23
24 project.version = tagVersion;
25
26 if (tagDistance > 0)
27 project.version++;
28 } else {
29 println "explicit version: $project.version";
30 }
31 }
32 } No newline at end of file
@@ -0,0 +1,1
1 implementation-class=org.implab.gradle.hg.MercurialPlugin No newline at end of file
@@ -0,0 +1,54
1 import { MockActivationController } from "../mock/MockActivationController";
2 import { SimpleActivatable } from "../mock/SimpleActivatable";
3 import { test } from "./TestTraits";
4
5 test("simple activation", async t => {
6
7 const a = new SimpleActivatable();
8 t.false(a.isActive());
9
10 await a.activate();
11 t.true(a.isActive());
12
13 await a.deactivate();
14 t.false(a.isActive());
15 });
16
17 test("controller activation", async t => {
18
19 const a = new SimpleActivatable();
20 const c = new MockActivationController();
21
22 t.false(a.isActive(), "the component is not active by default");
23 t.assert(c.getActive() == null, "the activation controller doesn't have an active component by default");
24 t.assert(a.getActivationController() == null, "the component doesn't have an activation controller by default");
25
26 t.comment("Active the component through the controller");
27 await c.activate(a);
28 t.true(a.isActive(), "The component should successfully activate");
29 t.equal(c.getActive(), a, "The controller should point to the activated component");
30 t.equal(a.getActivationController(), c, "The component should point to the controller");
31
32 t.comment("Deactive the component throug the controller");
33 await c.deactivate();
34
35 t.false(a.isActive(), "The component should successfully deactivate");
36 t.equal(c.getActive(), null, "The controller shouldn't point to any component");
37 t.equal(a.getActivationController(), c, "The componet should point to it's controller");
38 });
39
40 test("handle error in onActivating", async t => {
41 const a = new SimpleActivatable();
42
43 a.onActivating = async () => {
44 throw new Error("Should fail");
45 };
46
47 try {
48 await a.activate();
49 t.fail("activation should fail");
50 } catch {
51 }
52
53 t.false(a.isActive(), "the component should remain inactive");
54 });
@@ -0,0 +1,88
1 import { Cancellation } from "../Cancellation";
2 import { delay } from "../safe";
3 import { test } from "./TestTraits";
4
5 test("standalone cancellation", async t => {
6
7 let doCancel: (e) => void;
8
9 const ct = new Cancellation(cancel => {
10 doCancel = cancel;
11 });
12
13 let counter = 0;
14 const reason = "BILL";
15
16 t.true(ct.isSupported(), "Cancellation must be supported");
17 t.false(ct.isRequested(), "Cancellation shouldn't be requested");
18 ct.throwIfRequested();
19 t.pass("The exception shouldn't be thrown unless the cancellation is requested");
20
21 ct.register(() => counter++);
22 t.equals(counter, 0, "counter should be zero");
23
24 ct.register(() => counter++).destroy();
25
26 doCancel(reason);
27
28 t.true(ct.isRequested(), "Cancellation should be requested");
29 t.equals(counter, 1, "The registered callback should be triggered");
30
31 ct.register(() => counter++);
32 t.equals(counter, 2, "The callback should be triggered immediately");
33
34 let msg;
35 ct.register(e => msg = e);
36 t.equals(msg, reason, "The cancellation reason should be passed to callback");
37
38 try {
39 msg = null;
40 ct.throwIfRequested();
41 t.fail("The exception should be thrown");
42 } catch (e) {
43 msg = e;
44 }
45 t.equals(msg, reason, "The cancellation reason should be catched");
46 });
47
48 test("async cancellation", async t => {
49
50 const ct = new Cancellation(cancel => {
51 cancel("STOP!");
52 });
53
54 try {
55 await delay(0, ct);
56 t.fail("Should thow the exception");
57 } catch (e) {
58 t.equals(e, "STOP!", "Should throw the cancellation reason");
59 }
60 });
61
62 test("cancel with external event", async t => {
63 const ct = new Cancellation(cancel => {
64 setTimeout(x => cancel("STOP!"), 0);
65 });
66
67 try {
68 await delay(10000, ct);
69 t.fail("Should thow the exception");
70 } catch (e) {
71 t.equals(e, "STOP!", "Should throw the cancellation reason");
72 }
73 });
74
75 test("operation normal flow", async t => {
76
77 let htimeout;
78 const ct = new Cancellation(cancel => {
79 htimeout = setTimeout(() => cancel("STOP!"), 1000);
80 });
81
82 try {
83 await delay(0, ct);
84 t.pass("Should pass");
85 } finally {
86 clearTimeout(htimeout);
87 }
88 });
@@ -0,0 +1,93
1 import { test } from "./TestTraits";
2 import { Container } from "../di/Container";
3 import { ReferenceDescriptor } from "../di/ReferenceDescriptor";
4 import { AggregateDescriptor } from "../di/AggregateDescriptor";
5 import { ValueDescriptor } from "../di/ValueDescriptor";
6 import { Foo } from "../mock/Foo";
7 import { Bar } from "../mock/Bar";
8 import { isNull } from "../safe";
9
10 test("Container register/resolve tests", async t => {
11 const container = new Container();
12
13 const connection1 = "db://localhost";
14
15 t.throws(
16 () => container.register("bla-bla", "bla-bla"),
17 "Do not allow to register anything other than descriptors"
18 );
19
20 t.doesNotThrow(
21 () => container.register("connection", new ValueDescriptor(connection1)),
22 "register ValueDescriptor"
23 );
24
25 t.equals(container.resolve("connection"), connection1, "resolve string value");
26
27 t.doesNotThrow(
28 () => container.register(
29 "dbParams",
30 new AggregateDescriptor({
31 timeout: 10,
32 connection: new ReferenceDescriptor({ name: "connection" })
33 })
34 ),
35 "register AggregateDescriptor"
36 );
37
38 const dbParams = container.resolve("dbParams");
39 t.equals(dbParams.connection, connection1, "should get string value 'dbParams.connection'");
40 });
41
42 test("Container configure/resolve tests", async t => {
43
44 const container = new Container();
45
46 await container.configure({
47 foo: {
48 $type: Foo
49 },
50
51 box: {
52 $type: Bar,
53 params: {
54 $dependency: "foo"
55 }
56 },
57
58 bar: {
59 $type: Bar,
60 params: {
61 db: {
62 provider: {
63 $dependency: "db"
64 }
65 }
66 }
67 }
68 });
69 t.pass("should configure from js object");
70
71 const f1 = container.resolve("foo");
72
73 t.assert(!isNull(f1), "foo should be not null");
74
75 t.throws(() => container.resolve("bar"), "should not resolve dependency 'db'");
76
77 });
78
79 test("Load configuration from module", async t => {
80 const container = new Container();
81
82 await container.configure("../mock/config1", { contextRequire: require });
83 t.pass("The configuration should load");
84
85 const f1 = container.resolve("foo");
86
87 t.assert(!isNull(f1), "foo should be not null");
88
89 const b1 = container.resolve("bar") as Bar;
90
91 t.assert(!isNull(b1), "bar should not be null");
92 t.assert(!isNull(b1.foo), "bar.foo should not be null");
93 });
@@ -0,0 +1,69
1 import { TraceSource } from "../log/TraceSource";
2 import { Observable } from "../Observable";
3 import { IObservable } from "../interfaces";
4 import { delay } from "../safe";
5 import { test } from "./TestTraits";
6
7 const trace = TraceSource.get("ObservableTests");
8
9 test("events sequence example", async t => {
10
11 let events: IObservable<number>;
12
13 const done = new Promise<void>(resolve => {
14 events = new Observable<number>(async (notify, fail, finish) => {
15 for (let i = 0; i < 10; i++) {
16 await delay(0);
17 notify(i);
18 }
19 finish();
20 resolve();
21 });
22 });
23
24 let count = 0;
25 let complete = false;
26 events.on(x => count = count + x, null, () => complete = true);
27
28 const first = await events.next();
29
30 t.equals(first, 0, "the first event");
31 t.false(complete, "the sequence is not complete");
32
33 await done;
34
35 t.equals(count, 45, "the summ of the evetns");
36 t.true(complete, "the sequence is complete");
37 });
38
39 test("event sequence termination", async t => {
40 let events: IObservable<number>;
41
42 const done = new Promise<void>(resolve => {
43 events = new Observable<number>(async (notify, fail, complete) => {
44 await delay(0);
45 notify(1);
46 complete();
47 notify(2);
48 complete();
49 fail("Sequence terminated");
50 resolve();
51 });
52 });
53
54 let count = 0;
55 events.on(() => {}, e => count++, () => count++);
56
57 const first = await events.next();
58 t.equals(first, 1, "the first message");
59 try {
60 await events.next();
61 t.fail("shoud throw an exception");
62 } catch (e) {
63 t.pass("the sequence is terminated");
64 }
65
66 await done;
67
68 t.equals(count, 1, "the sequence must be terminated once");
69 });
@@ -0,0 +1,95
1 import { Cancellation } from "../Cancellation";
2 import { first, isPromise, firstWhere, delay, nowait } from "../safe";
3 import { test } from "./TestTraits";
4
5 test("await delay test", async t => {
6 // schedule delay
7 let resolved = false;
8 let res = delay(0).then(() => resolved = true);
9
10 t.false(resolved, "the delay should be async");
11
12 await res;
13 t.pass("await delay");
14
15 // create cancellation token
16 let cancel: (e?: any) => void;
17 const ct = new Cancellation(c => cancel = c);
18
19 // schedule delay
20 resolved = false;
21 res = delay(0, ct).then(() => resolved = true);
22
23 t.false(resolved, "created delay with ct");
24
25 // cancel
26 cancel();
27
28 try {
29 await res;
30 t.fail("the delay should fail when it is cancelled");
31 } catch {
32 t.pass("the delay is cancelled");
33 }
34
35 t.throws(() => {
36 // try schedule delay after the cancellation is requested
37 nowait(delay(0, ct));
38 }, "Should throw if cancelled before start");
39 });
40
41 test("sequemce test", async t => {
42 const sequence = ["a", "b", "c"];
43 const empty = [];
44
45 // synchronous tests
46 t.equals(first(sequence), "a", "Should return the first element");
47 t.equals(firstWhere(sequence, x => x === "b"), "b", "Should get the second element");
48
49 let v: string;
50 let e: Error;
51 first(sequence, x => v = x);
52 t.equal(v, "a", "The callback should be called for the first element");
53 firstWhere(sequence, x => x === "b", x => v = x);
54 t.equal(v, "b", "The callback should be called for the second element");
55
56 t.throws(() => {
57 first(empty);
58 }, "Should throw when the sequence is empty");
59
60 t.throws(() => {
61 firstWhere(empty, x => x === "b");
62 }, "Should throw when the sequence is empty");
63
64 t.throws(() => {
65 first(empty, x => v = x);
66 }, "Should throw when the sequence is empty");
67
68 t.throws(() => {
69 firstWhere(empty, x => x === "b", x => v = x);
70 }, "Should throw when the sequence is empty");
71
72 t.throws(() => {
73 firstWhere(sequence, x => x === "z");
74 }, "Should throw when the element isn't found");
75
76 t.throws(() => {
77 firstWhere(sequence, x => x === "z", x => v = x);
78 }, "Should throw when the element isn't found");
79
80 first(empty, null, x => e = x);
81 t.true(e, "The errorback should be called for the empty sequence");
82
83 // async tests
84 const asyncSequence = Promise.resolve(sequence);
85 const asyncEmptySequence = Promise.resolve(empty);
86
87 const promise = first(asyncSequence);
88 t.true(isPromise(promise), "Should return promise");
89
90 v = await promise;
91 t.equal(v, "a", "Should return the first element");
92
93 v = await new Promise(resolve => first(asyncSequence, resolve));
94 t.equal(v, "a", "The callback should be called for the first element");
95 });
@@ -0,0 +1,74
1 import { IObservable, ICancellation, IDestroyable } from "../interfaces";
2 import { Cancellation } from "../Cancellation";
3 import { TraceEvent, LogLevel, WarnLevel, DebugLevel, TraceSource } from "../log/TraceSource";
4 import * as tape from "tape";
5 import { argumentNotNull, destroy } from "../safe";
6
7 export class TapeWriter implements IDestroyable {
8 private readonly _tape: tape.Test;
9
10 private readonly _subscriptions = new Array<IDestroyable>();
11 private _destroyed;
12
13 constructor(t: tape.Test) {
14 argumentNotNull(t, "tape");
15 this._tape = t;
16 }
17
18 writeEvents(source: IObservable<TraceEvent>, ct: ICancellation = Cancellation.none) {
19 if (!this._destroyed) {
20 const subscription = source.on(this.writeEvent.bind(this));
21 if (ct.isSupported()) {
22 ct.register(subscription.destroy.bind(subscription));
23 }
24 this._subscriptions.push(subscription);
25 }
26 }
27
28 writeEvent(next: TraceEvent) {
29 if (next.level >= DebugLevel) {
30 this._tape.comment(`DEBUG ${next.source.id} ${next}`);
31 } else if (next.level >= LogLevel) {
32 this._tape.comment(`LOG ${next.source.id} ${next}`);
33 } else if (next.level >= WarnLevel) {
34 this._tape.comment(`WARN ${next.source.id} ${next}`);
35 } else {
36 this._tape.comment(`ERROR ${next.source.id} ${next}`);
37 }
38 }
39
40 destroy() {
41 this._subscriptions.forEach(destroy);
42 }
43 }
44
45 export function test(name: string, cb: (t: tape.Test, trace: TraceSource) => any) {
46 tape(name, async t => {
47 const writer = new TapeWriter(t);
48
49 // this trace is not announced through the TraceSource global registry
50 const trace = new TraceSource(name);
51 trace.level = DebugLevel;
52 writer.writeEvents(trace.events);
53
54 const h = TraceSource.on(ts => {
55 ts.level = DebugLevel;
56 writer.writeEvents(ts.events);
57 });
58
59 try {
60 await cb(t, trace);
61 } catch (e) {
62
63 // verbose error information
64 // tslint:disable-next-line
65 console.error(e);
66 t.fail(e);
67
68 } finally {
69 t.end();
70 destroy(writer);
71 destroy(h);
72 }
73 });
74 }
@@ -0,0 +1,86
1 import { StringBuilder } from "../text/StringBuilder";
2 import { test } from "./TestTraits";
3 import { MockConsole } from "../mock/MockConsole";
4 import { ConsoleWriter } from "../log/ConsoleWriter";
5
6 test("String builder", async t => {
7 const sb = new StringBuilder();
8
9 sb.write("hello");
10 t.equals(sb.toString(), "hello", "Write simple text");
11
12 sb.write(", ");
13 sb.write("world!");
14 t.equals(sb.toString(), "hello, world!", "Append text");
15
16 sb.clear();
17 t.equals(sb.toString(), "", "Clear");
18
19 sb.write(1);
20 t.equals(sb.toString(), "1", "Write number");
21
22 sb.clear();
23 sb.writeValue(0.123);
24 t.equals(sb.toString(), "0.123", "Format number");
25
26 sb.clear();
27 sb.writeValue(new Date("2019-01-02T00:00:00.000Z"));
28 t.equals(sb.toString(), "2019-01-02T00:00:00.000Z", "Format date (ISO)");
29
30 sb.clear();
31 sb.write("{0}", "hello");
32 t.equals(sb.toString(), "hello", "Simple format text");
33
34 sb.write(", {0}!", "world");
35 t.equals(sb.toString(), "hello, world!", "Append formatted text");
36
37 sb.clear();
38 sb.write("abc: {0:json}; {0.length}; {0.1} {{olo}}", ["a", "b", "c"]);
39 t.equals(sb.toString(), 'abc: [\n "a",\n "b",\n "c"\n]; 3; b {olo}', "Format string with spec");
40
41 sb.clear();
42 t.throws(() => sb.write("}", 0), "Should die on bad format: '}'");
43 t.throws(() => sb.write("{", 0), "Should die on bad format: '{'");
44 t.throws(() => sb.write("{}", 0), "Should die on bad format: '{}'");
45 t.throws(() => sb.write("{:}", 0), "Should die on bad format: '{:}'");
46 t.throws(() => sb.write("{{0}", 0), "Should die on bad format: '{{0}'");
47
48 });
49
50 test("ConsoleWriter", t => {
51 const mockConsole = new MockConsole();
52 const writer = new ConsoleWriter(mockConsole);
53
54 writer.setLogLevel("log");
55
56 writer.writeLine("Hello, world!");
57
58 t.equals(mockConsole.getBuffer().length, 1, "One line should be written");
59 t.equals(mockConsole.getBuffer()[0].level, "log", "LogLevel should be 'log'");
60 t.deepEqual(mockConsole.getBuffer()[0].data, ["Hello, world!"], "The buffer should contain single string");
61
62 mockConsole.clear();
63 writer.setLogLevel("debug");
64 writer.write("Bring ");
65 writer.write("the {0}!", "light");
66 t.equals(mockConsole.getBuffer().length, 0, "No line should be written");
67 writer.writeLine();
68
69 t.equals(mockConsole.getBuffer().length, 1, "One line should be written");
70 t.equals(mockConsole.getBuffer()[0].level, "debug", "LogLevel should be 'log'");
71 t.deepEqual(mockConsole.getBuffer()[0].data, ["Bring the light!"], "Should concatenate string parts together");
72
73 mockConsole.clear();
74 writer.writeLine("It's {0} o'clock, lets have some {1}!", { h: 5}, { title: "tee" });
75
76 t.deepEqual(mockConsole.getBuffer()[0].data, ["It's ", { h: 5}, " o'clock, lets have some ", { title: "tee" }, "!"], "Non string parts should be psassed as is");
77
78 mockConsole.clear();
79 writer.writeLine("{0} or {1} to {2}", {i: 25}, 6, 4);
80 t.deepEqual(mockConsole.getBuffer()[0].data, [{i: 25}, " or 6 to 4"], "25 or 6 to 4");
81
82 mockConsole.clear();
83 writer.writeLine("{0} or {1} to {2}! Let's have some {3}", 25, 6, 4, { product: "tee" } );
84 t.deepEqual(mockConsole.getBuffer()[0].data, ["25 or 6 to 4! Let's have some ", { product: "tee" }], "Should handle many text chunks and object at the end");
85
86 });
@@ -0,0 +1,89
1 import { TraceSource, DebugLevel } from "../log/TraceSource";
2 import * as tape from "tape";
3 import { TapeWriter, test } from "./TestTraits";
4 import { MockConsole } from "../mock/MockConsole";
5 import { ConsoleLogger } from "../log/writers/ConsoleLogger";
6 import { ConsoleWriter } from "../log/ConsoleWriter";
7
8 const sourceId = "test/TraceSourceTests";
9
10 tape("trace message", t => {
11 const trace = TraceSource.get(sourceId);
12
13 trace.level = DebugLevel;
14
15 const h = trace.events.on(ev => {
16 t.equal(ev.source, trace, "sender should be the current trace source");
17 t.equal(ev.level, DebugLevel, "level should be debug level");
18 t.equal(ev.toString(), "Hello, World!", "The message should be a formatted message");
19
20 t.end();
21 });
22
23 trace.debug("Hello, {0}!", "World");
24
25 h.destroy();
26 });
27
28 tape("trace event", t => {
29 const trace = TraceSource.get(sourceId);
30
31 trace.level = DebugLevel;
32
33 const event = {
34 name: "custom event"
35 };
36
37 const h = trace.events.on(ev => {
38 t.equal(ev.source, trace, "sender should be the current trace source");
39 t.equal(ev.level, DebugLevel, "level should be debug level");
40 t.equal(ev.message, event, "The message should be the specified object");
41
42 t.end();
43 });
44
45 trace.traceEvent(DebugLevel, event);
46
47 h.destroy();
48 });
49
50 tape("tape comment writer", async t => {
51 const writer = new TapeWriter(t);
52
53 TraceSource.on(ts => {
54 writer.writeEvents(ts.events);
55 });
56
57 const trace = TraceSource.get(sourceId);
58 trace.level = DebugLevel;
59
60 trace.log("Hello, {0}!", "World");
61 trace.log("Multi\n line");
62 trace.warn("Look at me!");
63 trace.error("DIE!");
64
65 writer.destroy();
66
67 trace.log("You shouldn't see it!");
68
69 t.comment("DONE");
70
71 t.end();
72 });
73
74 test("console writer", (t, trace) => {
75
76 const mockConsole = new MockConsole();
77 const writer = new ConsoleWriter(mockConsole);
78 const consoleLog = new ConsoleLogger(writer);
79 consoleLog.writeEvents(trace.events);
80
81 trace.log("Hello, world!");
82 t.deepEqual(mockConsole.getLine(0), ["console writer: Hello, world!"], "Log one string");
83
84 trace.log({ foo: "bar" });
85 t.deepEqual(mockConsole.getLine(1), ["console writer: ", { foo: "bar" }], "Log an object");
86
87 trace.log("json: {0:json}", { foo: "bar" });
88 t.deepEqual(mockConsole.getLine(2), ['console writer: json: {\n "foo": "bar"\n}'], "should convert to string substitutions with spec");
89 });
@@ -0,0 +1,13
1 import * as tape from "tape";
2 import { Uuid } from "../Uuid";
3
4 tape("simple", t => {
5 t.pass("sync assert");
6 setTimeout(() => {
7 t.pass("async assert");
8 t.comment(Uuid());
9 t.ok(Uuid() !== Uuid());
10 // end should be called after the last assertion
11 t.end();
12 }, 100);
13 });
@@ -0,0 +1,7
1 define(["tape", "../Uuid"], function(tape, Uuid) {
2 "use strict";
3 tape('uuid', function(t) {
4 t.notEqual(Uuid(),Uuid());
5 t.end();
6 });
7 }); No newline at end of file
@@ -0,0 +1,9
1 var rjs = require('requirejs');
2
3 rjs.config({
4 baseUrl: '.',
5 nodeRequire: require
6 });
7
8
9 rjs(['./tests/plan']); No newline at end of file
@@ -0,0 +1,10
1 define([
2 "./ActivatableTests",
3 "./trace-test",
4 "./TraceSourceTests",
5 "./CancellationTests",
6 "./ObservableTests",
7 "./ContainerTests",
8 "./SafeTests",
9 "./TextTests"
10 ]); No newline at end of file
@@ -0,0 +1,30
1 define(["require", "tape"], function(require, tape) {
2 "use strict";
3 var sourceId = '73a633f3-eab8-49b0-8601-07cae710f234';
4 var sourceId2 = '3ba9c7cd-ed77-437b-9a2f-1cbeb1226b5b';
5 tape('Load TraceSource for the module', function(t) {
6 require(["../log/trace!" + sourceId, "../log/TraceSource"], function(trace, TraceSource_1) {
7 var TraceSource = TraceSource_1.TraceSource;
8 t.equal(trace && trace.id, sourceId, "trace should be taken from the loader plugin parameter");
9
10 var count = 0;
11
12 var h = TraceSource.on(function(x) {
13 if(x.id == sourceId || x.id == sourceId2)
14 count++;
15 });
16
17 t.equal(count, 1, "should see created channel immediatelly");
18 t.equal(trace, TraceSource.get(sourceId), "should get same TraceSource from registry");
19 t.equal(count, 1);
20
21 TraceSource.get(sourceId2);
22
23 t.equal(count, 2);
24
25 h.destroy();
26
27 t.end();
28 });
29 });
30 }); No newline at end of file
@@ -0,0 +1,1
1 import "./plan";
@@ -0,0 +1,7
1 import "./ActivatableTests";
2 import "./TraceSourceTests";
3 import "./CancellationTests";
4 import "./ObservableTests";
5 import "./ContainerTests";
6 import "./SafeTests";
7 import "./TextTests";
@@ -1,27 +1,27
1 1 {
2 2 "env": {
3 3 "browser": true,
4 4 "commonjs": true,
5 5 "amd": true,
6 6 "node": true
7 7 },
8 8 "parserOptions": {
9 9 "ecmaFeatures": {
10 10 "jsx": true
11 11 },
12 "sourceType": "module"
12 "sourceType": "script"
13 13 },
14 14 "extends": "eslint:recommended",
15 15 "rules": {
16 16 "no-const-assign": "warn",
17 17 "no-this-before-super": "warn",
18 18 "no-undef": "error",
19 19 "no-unreachable": "warn",
20 20 "no-unused-vars": "warn",
21 21 "constructor-super": "warn",
22 22 "valid-typeof": "warn",
23 23 "semi" : "warn",
24 24 "no-invalid-this" : "error",
25 25 "no-console": "off"
26 26 }
27 27 } No newline at end of file
@@ -1,5 +1,6
1 1 syntax: glob
2 2 .gradle/
3 3 build/
4 4 node_modules/
5 5 src/typings/
6 ivy-repo/
@@ -1,15 +1,21
1 1 {
2 2 "java.configuration.updateBuildConfiguration": "disabled",
3 3 "search.exclude": {
4 4 "**/node_modules": true,
5 5 "**/bower_components": true,
6 6 "/build": true
7 7 },
8 8 "files.watcherExclude": {
9 9 "**/.git/objects/**": true,
10 10 "**/.git/subtree-cache/**": true,
11 11 "**/node_modules/**": true,
12 12 "/build": true
13 13 },
14 "editor.minimap.enabled": false
14 "editor.minimap.enabled": false,
15 "files.exclude": {
16 "**/.classpath": true,
17 "**/.project": true,
18 "**/.settings": true,
19 "**/.factorypath": true
20 }
15 21 } No newline at end of file
@@ -1,278 +1,244
1 // если версия явно не заданы вычисляем ее из тэга ревизии v.{num}***
2 // результатом будет версия '{num}.{distance}' где distance - расстояние от
3 // текущей ревизии до ревизии с тэгом
4 def tagDistance = 0;
5 def isRelease = false;
6
7 if (!version) {
8
9 def rev = ["hg", "log", "-r", ".", "--template", "{latesttag('re:^v') % '{tag}-{distance}'}"].execute().text.trim();
10
11 def tagVersion;
12
13 def match = (rev =~ /^v(\d+\.\d+\.\d+).*-(\d+)$/);
14
15 if (match.size()) {
16 tagVersion = match[0][1];
17 tagDistance = match[0][2].toInteger();
18 } else {
19 throw new Exception("A version must be specied");
20 }
21
22 version = tagVersion;
23
24 if (tagDistance > 0)
25 version++;
26 } else {
27 println "explicit version: $version";
1 plugins {
2 id "org.implab.gradle-typescript" version "1.1.1"
3 id "org.implab.gradle-hg"
4 id "ivy-publish"
28 5 }
29 6
30 if (hasProperty('versionSuffix') && versionSuffix) {
31 version += "-$versionSuffix"
32 }
7 if (!symbols in ['local', 'pack', 'none'])
8 throw new Exception("The symbols property value is invalid: $symbols");
33 9
34 if(!npmName)
35 npmName = name;
10 if (!flavour in ['browser', 'node'])
11 throw new Exception("The flavour property value is invalid: $flavour");
36 12
37 if (hasProperty('release')) {
38 isRelease = (release != 'false')
39 } else {
40 isRelease = (tagDistance == 0);
13 ext {
14 packageName = flavour == 'browser' ? "@$npmScope/$name-amd" : "@$npmScope/$name"
15 lint = project.hasProperty('lint') ? project.lint ?: true : false
41 16 }
42 17
43 if(!["amd", "commonjs", "system", "umd", "es6", "esnext"].contains(jsmodule))
44 throw new Exception("Invalid jsmodule specified: $jsmodule");
45 if(!["es3", "es5", "es6", "es2016", "es2017", "esnext"].contains(target))
46 throw new Exception("Invalid target specified: $target")
47
48 def targetLibs = [
49 "es3" : "es5,es2015.promise,es2015.symbol,dom,scripthost",
50 "es5" : "es5,es2015.promise,es2015.symbol,dom,scripthost"
51 ];
52
53 ext.packageName="@$npmScope/$npmName";
54
55 def srcDir = "$projectDir/src"
56 def typingsDir = "$srcDir/typings"
57 def distDir = "$buildDir/dist"
58 def testDir = "$buildDir/test"
59 def lib = targetLibs[target] ?: "${target},dom";
60
61 println "lib: $lib";
62
63 def sourceSets = ["main", "amd", "cjs"];
64 def testSets = ["test", "testAmd", "testCjs"];
65
66 task beforeBuild {
67 }
68
69 def createSoursetTasks = { String name, String outDir ->
70 def setName = name.capitalize();
71
72 def compileDir = "$buildDir/compile/$name"
73 def declDir = "$typingsDir/$name"
74 def setDir = "$projectDir/src/$name"
75 def jsDir = outDir;
76
77 def beforeBuildTask = task "beforeBuild$setName"(dependsOn: beforeBuild) {
18 sources {
19 amd {
20 typings {
21 srcDir main.output.typingsDir
22 }
78 23 }
79 24
80 def copyJsTask = task "copyJs$setName"(dependsOn: beforeBuildTask, type: Copy) {
81 from "$setDir/js"
82 into jsDir
25 cjs {
26 typings {
27 srcDir main.output.typingsDir
28 }
29 }
30
31 testAmd {
32 typings {
33 srcDir main.output.typingsDir
34 srcDir amd.output.typingsDir
35 srcDir test.output.typingsDir
36 }
83 37 }
84 38
85 def lintJsTask = task "lintJs$setName"(dependsOn: beforeBuildTask, type: Exec) {
86 inputs.dir("$setDir/js/").skipWhenEmpty();
87 commandLine "eslint", '--format', 'stylish', "$setDir/js/"
39 testCjs {
40 typings {
41 srcDir main.output.typingsDir
42 srcDir cjs.output.typingsDir
43 srcDir test.output.typingsDir
44 }
88 45 }
46 }
89 47
90 def compileTsTask = task "compileTs$setName"(dependsOn: beforeBuildTask, type: Exec) {
91 inputs.dir("$setDir/ts").skipWhenEmpty()
92 inputs.file("$srcDir/tsconfig.json")
93 inputs.file("$setDir/tsconfig.json")
94 outputs.dir(compileDir)
95 outputs.dir(declDir)
96
97 commandLine 'node_modules/.bin/tsc',
98 '-p', "$setDir/tsconfig.json",
99 '-t', target,
100 '-m', jsmodule,
101 '-d',
102 '--sourceMap',
103 '--sourceRoot', "file://$setDir/ts",
104 '--outDir', compileDir,
105 '--declarationDir', declDir
48 typescript {
49 compilerOptions {
50 types = []
51 declaration = true
52
53 if(symbols != 'none') {
54 sourceMap = true
55 sourceRoot = "_src"
56 }
106 57
107 if (lib)
108 args '--lib', lib
109 }
110
111 def copyTsOutputTask = task "copyTsOutput$setName"(dependsOn: compileTsTask, type: Copy) {
112 from compileDir
113 into jsDir
114 }
115
116 def copyTypingsTask = task "copyTypings$setName"(dependsOn: compileTsTask, type: Copy) {
117 from declDir
118 into jsDir
58 if (flavour == 'node') {
59 module = "commonjs"
60 target = "es2017"
61 lib = ["es2017", "dom", "scripthost"]
62 } else if (flavour == 'browser') {
63 module = "amd"
64 target = "es5"
65 lib = ["es5", "dom", "scripthost", "es2015.promise", "es2015.symbol", "es2015.iterable" ]
66 }
119 67 }
68 tscCmd = "$projectDir/node_modules/.bin/tsc"
69 tsLintCmd = "$projectDir/node_modules/.bin/tslint"
70 esLintCmd = "$projectDir/node_modules/.bin/eslint"
71 }
120 72
121 def copyResourcesTask = task "copyResources$setName"(dependsOn: beforeBuildTask, type: Copy) {
122 from "$setDir/resources"
123 into outDir
124 }
73 npm {
74 npmCmd = "npm"
75 }
125 76
126 task "build$setName" {
127 dependsOn copyTypingsTask,
128 copyTsOutputTask,
129 copyJsTask,
130 copyResourcesTask,
131 lintJsTask
77 tasks.matching{ it.name =~ /^lint/ }.configureEach {
78 onlyIf { lint }
79 }
80
81 if (symbols == 'local') {
82 tasks.matching{ it.name =~ /^configureTs/ }.configureEach {
83 compilerOptions {
84 sourceRoot = "file://" + it.rootDir
85 }
132 86 }
133 87 }
134 88
135 89 task printVersion {
136 90 doLast {
91 println "packageName: $packageName";
137 92 println "version: $version";
138 println "isRelease: $isRelease, tagDistance: $tagDistance";
139 println "packageName: $packageName";
140 println "bundle: ${pack.outputs.files.join(',')}";
141 println "target: $target";
142 println "module: $jsmodule";
93 println "flavour: $flavour";
94 println "target: $typescript.compilerOptions.target";
95 println "module: $typescript.compilerOptions.module";
96 println "lint: $lint";
97 println "symbols: $symbols";
143 98 }
144 99 }
145 100
146 101 task clean {
147 102 doLast {
148 103 delete buildDir
149 delete typingsDir
104 }
105 }
106
107 npmPackMeta {
108 meta {
109 name = packageName
110 }
111 }
112
113 configureTsCjs {
114 dependsOn sources.main.output
115 compilerOptions {
116 types += [ "node" ]
117 }
118 }
119
120 configureTsAmd {
121 dependsOn sources.main.output
122 compilerOptions {
123 types += [ "requirejs", "dojo-typings" ]
150 124 }
151 125 }
152 126
153 task _initBuild {
154 mustRunAfter clean
127 test {
128 workingDir layout.buildDirectory.dir("test");
129 commandLine "node", "tests/index.js"
130 }
155 131
156 def buildInfoFile = "$buildDir/platform";
157 inputs.property('target',target);
158 inputs.property('jsmodule',jsmodule);
159 outputs.file(buildInfoFile);
160
161 doLast {
162 delete buildDir
163 mkdir buildDir
164
165 def f = new File(buildInfoFile);
166 f << "$target-$jsmodule";
132 assemble {
133 if (flavour == 'browser') {
134 dependsOn sources.amd.output
135 from sources.amd.output.compiledDir
136 from sources.amd.resources
137 }
138 if (flavour == 'node') {
139 dependsOn sources.cjs.output
140 from sources.cjs.output.compiledDir
141 from sources.cjs.resources
167 142 }
168 143 }
169 144
170 task cleanNpm {
171 doLast {
172 delete 'node_modules'
145 assembleTest {
146 if (flavour == 'browser') {
147 dependsOn sources.amd.output, sources.testAmd.output
148
149 from sources.amd.output.compiledDir
150 from sources.testAmd.output.compiledDir
151 from sources.amd.resources
152 from sources.testAmd.resources
153 }
154 if (flavour == 'node') {
155 dependsOn sources.cjs.output, sources.testCjs.output
156
157 from sources.cjs.output.compiledDir
158 from sources.testCjs.output.compiledDir
159 from sources.cjs.resources
160 from sources.testCjs.resources
173 161 }
174 162 }
175 163
176 task _npmInstall() {
177 inputs.file("package.json")
178 outputs.dir("node_modules")
179 doLast {
180 exec {
181 commandLine 'npm', 'install'
182 }
164 typings {
165 if (flavour == 'browser') {
166 dependsOn sources.amd.output
167 from sources.amd.output.typingsDir
168 }
169 if (flavour == 'node') {
170 dependsOn sources.cjs.output
171 from sources.cjs.output.typingsDir
183 172 }
184 173 }
185 174
186 beforeBuild {
187 dependsOn _initBuild
188 dependsOn _npmInstall
189 }
190
191 sourceSets.each { createSoursetTasks(it, distDir) }
175 task npmPackTypings(type: Copy) {
176 npmPackContents.dependsOn it
177 dependsOn sources.main.output
178
179 from sources.main.output.typingsDir
192 180
193 testSets.each { createSoursetTasks(it, testDir) }
181 if (flavour == 'browser') {
182 dependsOn sources.amd.output
183 from sources.amd.output.typingsDir
184 }
185 if (flavour == 'node') {
186 dependsOn sources.cjs.output
187 from sources.cjs.output.typingsDir
188 }
194 189
195 compileTsAmd {
196 dependsOn compileTsMain
197 }
198
199 compileTsCjs {
200 dependsOn compileTsMain
190 into npm.packageDir
201 191 }
202 192
203 task build(dependsOn: buildMain) {
204 if (jsmodule == "amd")
205 dependsOn buildAmd
206 if (jsmodule == "commonjs")
207 dependsOn buildCjs
208 }
209
210 compileTsTest {
211 dependsOn build
212 }
213
214 compileTsTestAmd {
215 dependsOn compileTsTest
216 }
217
218 compileTsTestCjs {
219 dependsOn compileTsTest
220 }
221
222 task _installLocalCjsDependency(dependsOn: [buildTestCjs, "_packageMeta"], type: Exec) {
223 inputs.file("$distDir/package.json")
224 outputs.upToDateWhen {
225 new File("$testDir/$packageName").exists()
193 task npmPackSources(type: Copy) {
194 from sources.main.ts
195 if (symbols == 'pack') {
196 npmPackContents.dependsOn npmPackSources
197 }
198
199 if (flavour == 'browser') {
200 from sources.amd.ts
201 }
202 if (flavour == 'node') {
203 from sources.cjs.ts
226 204 }
227 205
228 workingDir testDir
229
230 commandLine 'npm', 'install', '--no-save', '--force', distDir
206 into npm.packageDir.dir("_src")
231 207 }
232 208
233 task test(dependsOn: [buildTest], type: Exec) {
234 if (jsmodule == "amd")
235 dependsOn buildTestAmd
236 if (jsmodule == "commonjs") {
237 dependsOn buildTestCjs
238 dependsOn _installLocalCjsDependency
209
210
211 task packJsTar(type: Tar) {
212 dependsOn assemble;
213
214 archiveBaseName = provider { packageName }
215
216 destinationDirectory = buildDir
217 archiveClassifier = provider { typescript.compilerOptions.module }
218 compression = Compression.GZIP
219
220 from(assemble.outputs)
221
222 doLast {
223 println archiveName;
239 224 }
240
241 commandLine 'node', "$testDir/run-tests.js"
242 225 }
243 226
244 task _packageMeta(type: Copy) {
245 mustRunAfter build
246
247 inputs.property("version", version)
248 from('.') {
249 include '.npmignore', 'readme.md', 'license', 'history.md'
250 }
251 from("$srcDir/package.${jsmodule}.tmpl.json") {
252 expand project.properties
253 rename { "package.json" }
254 }
255 into distDir
227 task packTypingsTar(type: Tar) {
256 228 }
257 229
258 task pack(dependsOn: [build, _packageMeta], type: Exec) {
259 workingDir distDir
260 outputs.file("$npmScope-$npmName-${version}.tgz")
261
262 commandLine 'npm', 'pack'
263 }
230 publishing {
231 publications {
232 local(IvyPublication) {
233 artifact(packJsTar) {
234 type = "js"
235 }
236 }
237 }
264 238
265 task publish(dependsOn: [build, _packageMeta], type: Exec) {
266 doFirst {
267 if (!isRelease)
268 throw new Exception("Can't publish an unreleased version");
239 repositories {
240 ivy {
241 url "ivy-repo"
242 }
269 243 }
270 workingDir distDir
271
272 commandLine 'npm', 'publish', '--access', 'public'
273 }
274
275 task markRelease(type: Exec) {
276 onlyIf { tagDistance > 1 }
277 commandLine "hg", "tag", "v$version";
278 244 } No newline at end of file
@@ -1,9 +1,9
1 group=org.implab
1 2 version=
2 3 author=Implab team
3 jsmodule=amd
4 target=es5
5 description=Dependency injection, logging, simple and fast text template engine
4 description=Dependency injection, logging, simple and fast text processing tools
6 5 license=BSD-2-Clause
7 6 repository=https://bitbucket.org/implab/implabjs-core
8 7 npmScope=implab
9 npmName=core-amd No newline at end of file
8 flavour=browser
9 symbols=pack No newline at end of file
@@ -1,5 +1,5
1 1 distributionBase=GRADLE_USER_HOME
2 2 distributionPath=wrapper/dists
3 distributionUrl=https\://services.gradle.org/distributions/gradle-4.7-bin.zip
3 distributionUrl=https\://services.gradle.org/distributions/gradle-5.6.2-bin.zip
4 4 zipStoreBase=GRADLE_USER_HOME
5 5 zipStorePath=wrapper/dists
This diff has been collapsed as it changes many lines, (1107 lines changed) Show them Hide them
@@ -1,471 +1,1314
1 1 {
2 2 "name": "@implab/core",
3 3 "version": "0.0.1-dev",
4 4 "lockfileVersion": 1,
5 5 "requires": true,
6 6 "dependencies": {
7 "@babel/code-frame": {
8 "version": "7.5.5",
9 "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.5.5.tgz",
10 "integrity": "sha512-27d4lZoomVyo51VegxI20xZPuSHusqbQag/ztrBC7wegWoQ1nLREPVSKSW8byhTlzTKyNE4ifaTA6lCp7JjpFw==",
11 "dev": true,
12 "requires": {
13 "@babel/highlight": "^7.0.0"
14 }
15 },
16 "@babel/highlight": {
17 "version": "7.5.0",
18 "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.5.0.tgz",
19 "integrity": "sha512-7dV4eu9gBxoM0dAnj/BCFDW9LFU0zvTrkq0ugM7pnHEgguOEeOz1so2ZghEdzviYzQEED0r4EAgpsBChKy1TRQ==",
20 "dev": true,
21 "requires": {
22 "chalk": "^2.0.0",
23 "esutils": "^2.0.2",
24 "js-tokens": "^4.0.0"
25 }
26 },
27 "@types/chai": {
28 "version": "4.2.3",
29 "resolved": "https://registry.npmjs.org/@types/chai/-/chai-4.2.3.tgz",
30 "integrity": "sha512-VRw2xEGbll3ZiTQ4J02/hUjNqZoue1bMhoo2dgM2LXjDdyaq4q80HgBDHwpI0/VKlo4Eg+BavyQMv/NYgTetzA==",
31 "dev": true
32 },
7 33 "@types/node": {
8 "version": "10.12.18",
9 "resolved": "https://registry.npmjs.org/@types/node/-/node-10.12.18.tgz",
10 "integrity": "sha512-fh+pAqt4xRzPfqA6eh3Z2y6fyZavRIumvjhaCL753+TVkGKGhpPeyrJG2JftD0T9q4GF00KjefsQ+PQNDdWQaQ==",
34 "version": "8.10.55",
35 "resolved": "https://registry.npmjs.org/@types/node/-/node-8.10.55.tgz",
36 "integrity": "sha512-iZeh1EgupfmAAOASk580R1SL5lWF3CsBVgVH0395qyNF8fhO16xy1UwAav2PdGxIIsYRn7RzJgMGjdsvam6YYg==",
11 37 "dev": true
12 38 },
13 39 "@types/requirejs": {
14 40 "version": "2.1.31",
15 41 "resolved": "https://registry.npmjs.org/@types/requirejs/-/requirejs-2.1.31.tgz",
16 42 "integrity": "sha512-b2soeyuU76rMbcRJ4e0hEl0tbMhFwZeTC0VZnfuWlfGlk6BwWNsev6kFu/twKABPX29wkX84wU2o+cEJoXsiTw==",
17 43 "dev": true
18 44 },
19 45 "@types/tape": {
20 46 "version": "4.2.33",
21 47 "resolved": "https://registry.npmjs.org/@types/tape/-/tape-4.2.33.tgz",
22 48 "integrity": "sha512-ltfyuY5BIkYlGuQfwqzTDT8f0q8Z5DGppvUnWGs39oqDmMd6/UWhNpX3ZMh/VYvfxs3rFGHMrLC/eGRdLiDGuw==",
23 49 "dev": true,
24 50 "requires": {
25 51 "@types/node": "*"
26 52 }
27 53 },
54 "acorn": {
55 "version": "7.1.0",
56 "resolved": "https://registry.npmjs.org/acorn/-/acorn-7.1.0.tgz",
57 "integrity": "sha512-kL5CuoXA/dgxlBbVrflsflzQ3PAas7RYZB52NOm/6839iVYJgKMJ3cQJD+t2i5+qFa8h3MDpEOJiS64E8JLnSQ==",
58 "dev": true
59 },
60 "acorn-jsx": {
61 "version": "5.1.0",
62 "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.1.0.tgz",
63 "integrity": "sha512-tMUqwBWfLFbJbizRmEcWSLw6HnFzfdJs2sOJEOwwtVPMoH/0Ay+E703oZz78VSXZiiDcZrQ5XKjPIUQixhmgVw==",
64 "dev": true
65 },
66 "ajv": {
67 "version": "6.10.2",
68 "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.10.2.tgz",
69 "integrity": "sha512-TXtUUEYHuaTEbLZWIKUr5pmBuhDLy+8KYtPYdcV8qC+pOZL+NKqYwvWSRrVXHn+ZmRRAu8vJTAznH7Oag6RVRw==",
70 "dev": true,
71 "requires": {
72 "fast-deep-equal": "^2.0.1",
73 "fast-json-stable-stringify": "^2.0.0",
74 "json-schema-traverse": "^0.4.1",
75 "uri-js": "^4.2.2"
76 }
77 },
78 "ansi-escapes": {
79 "version": "3.2.0",
80 "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-3.2.0.tgz",
81 "integrity": "sha512-cBhpre4ma+U0T1oM5fXg7Dy1Jw7zzwv7lt/GoCpr+hDQJoYnKVPLL4dCvSEFMmQurOQvSrwT7SL/DAlhBI97RQ==",
82 "dev": true
83 },
84 "ansi-regex": {
85 "version": "3.0.0",
86 "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz",
87 "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=",
88 "dev": true
89 },
90 "ansi-styles": {
91 "version": "3.2.1",
92 "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz",
93 "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==",
94 "dev": true,
95 "requires": {
96 "color-convert": "^1.9.0"
97 }
98 },
99 "argparse": {
100 "version": "1.0.10",
101 "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz",
102 "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==",
103 "dev": true,
104 "requires": {
105 "sprintf-js": "~1.0.2"
106 }
107 },
108 "astral-regex": {
109 "version": "1.0.0",
110 "resolved": "https://registry.npmjs.org/astral-regex/-/astral-regex-1.0.0.tgz",
111 "integrity": "sha512-+Ryf6g3BKoRc7jfp7ad8tM4TtMiaWvbF/1/sQcZPkkS7ag3D5nMBCe2UfOTONtAkaG0tO0ij3C5Lwmf1EiyjHg==",
112 "dev": true
113 },
28 114 "balanced-match": {
29 115 "version": "1.0.0",
30 116 "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz",
31 117 "integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c=",
32 118 "dev": true
33 119 },
34 120 "brace-expansion": {
35 121 "version": "1.1.11",
36 122 "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz",
37 123 "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==",
38 124 "dev": true,
39 125 "requires": {
40 126 "balanced-match": "^1.0.0",
41 127 "concat-map": "0.0.1"
42 128 }
43 129 },
130 "builtin-modules": {
131 "version": "1.1.1",
132 "resolved": "https://registry.npmjs.org/builtin-modules/-/builtin-modules-1.1.1.tgz",
133 "integrity": "sha1-Jw8HbFpywC9bZaR9+Uxf46J4iS8=",
134 "dev": true
135 },
136 "callsites": {
137 "version": "3.1.0",
138 "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz",
139 "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==",
140 "dev": true
141 },
142 "chalk": {
143 "version": "2.4.2",
144 "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz",
145 "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==",
146 "dev": true,
147 "requires": {
148 "ansi-styles": "^3.2.1",
149 "escape-string-regexp": "^1.0.5",
150 "supports-color": "^5.3.0"
151 }
152 },
153 "chardet": {
154 "version": "0.7.0",
155 "resolved": "https://registry.npmjs.org/chardet/-/chardet-0.7.0.tgz",
156 "integrity": "sha512-mT8iDcrh03qDGRRmoA2hmBJnxpllMR+0/0qlzjqZES6NdiWDcZkCNAk4rPFZ9Q85r27unkiNNg8ZOiwZXBHwcA==",
157 "dev": true
158 },
159 "cli-cursor": {
160 "version": "2.1.0",
161 "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-2.1.0.tgz",
162 "integrity": "sha1-s12sN2R5+sw+lHR9QdDQ9SOP/LU=",
163 "dev": true,
164 "requires": {
165 "restore-cursor": "^2.0.0"
166 }
167 },
168 "cli-width": {
169 "version": "2.2.0",
170 "resolved": "https://registry.npmjs.org/cli-width/-/cli-width-2.2.0.tgz",
171 "integrity": "sha1-/xnt6Kml5XkyQUewwR8PvLq+1jk=",
172 "dev": true
173 },
174 "color-convert": {
175 "version": "1.9.3",
176 "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz",
177 "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==",
178 "dev": true,
179 "requires": {
180 "color-name": "1.1.3"
181 }
182 },
183 "color-name": {
184 "version": "1.1.3",
185 "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz",
186 "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=",
187 "dev": true
188 },
189 "commander": {
190 "version": "2.20.3",
191 "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz",
192 "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==",
193 "dev": true
194 },
44 195 "concat-map": {
45 196 "version": "0.0.1",
46 197 "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz",
47 198 "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=",
48 199 "dev": true
49 200 },
50 "core-util-is": {
51 "version": "1.0.2",
52 "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz",
53 "integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=",
54 "dev": true
201 "cross-spawn": {
202 "version": "6.0.5",
203 "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-6.0.5.tgz",
204 "integrity": "sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ==",
205 "dev": true,
206 "requires": {
207 "nice-try": "^1.0.4",
208 "path-key": "^2.0.1",
209 "semver": "^5.5.0",
210 "shebang-command": "^1.2.0",
211 "which": "^1.2.9"
212 },
213 "dependencies": {
214 "semver": {
215 "version": "5.7.1",
216 "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz",
217 "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==",
218 "dev": true
219 }
220 }
55 221 },
56 "deep-equal": {
57 "version": "0.1.2",
58 "resolved": "https://registry.npmjs.org/deep-equal/-/deep-equal-0.1.2.tgz",
59 "integrity": "sha1-skbCuApXCkfBG+HZvRBw7IeLh84=",
222 "debug": {
223 "version": "4.1.1",
224 "resolved": "https://registry.npmjs.org/debug/-/debug-4.1.1.tgz",
225 "integrity": "sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw==",
226 "dev": true,
227 "requires": {
228 "ms": "^2.1.1"
229 }
230 },
231 "deep-is": {
232 "version": "0.1.3",
233 "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.3.tgz",
234 "integrity": "sha1-s2nW+128E+7PUk+RsHD+7cNXzzQ=",
60 235 "dev": true
61 236 },
62 237 "define-properties": {
63 238 "version": "1.1.3",
64 239 "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.1.3.tgz",
65 240 "integrity": "sha512-3MqfYKj2lLzdMSf8ZIZE/V+Zuy+BgD6f164e8K2w7dgnpKArBDerGYpM46IYYcjnkdPNMjPk9A6VFB8+3SKlXQ==",
66 241 "dev": true,
67 242 "requires": {
68 243 "object-keys": "^1.0.12"
69 244 },
70 245 "dependencies": {
71 246 "object-keys": {
72 "version": "1.0.12",
73 "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.0.12.tgz",
74 "integrity": "sha512-FTMyFUm2wBcGHnH2eXmz7tC6IwlqQZ6mVZ+6dm6vZ4IQIHjs6FdNsQBuKGPuUUUY6NfJw2PshC08Tn6LzLDOag==",
247 "version": "1.1.1",
248 "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz",
249 "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==",
75 250 "dev": true
76 251 }
77 252 }
78 253 },
79 "defined": {
80 "version": "0.0.0",
81 "resolved": "https://registry.npmjs.org/defined/-/defined-0.0.0.tgz",
82 "integrity": "sha1-817qfXBekzuvE7LwOz+D2SFAOz4=",
254 "diff": {
255 "version": "3.5.0",
256 "resolved": "https://registry.npmjs.org/diff/-/diff-3.5.0.tgz",
257 "integrity": "sha512-A46qtFgd+g7pDZinpnwiRJtxbC1hpgf0uzP3iG89scHk0AUC7A1TGxf5OiiOUv/JMZR8GOt8hL900hV0bOy5xA==",
83 258 "dev": true
84 259 },
260 "doctrine": {
261 "version": "3.0.0",
262 "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-3.0.0.tgz",
263 "integrity": "sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==",
264 "dev": true,
265 "requires": {
266 "esutils": "^2.0.2"
267 }
268 },
85 269 "dojo": {
86 "version": "1.14.2",
87 "resolved": "https://registry.npmjs.org/dojo/-/dojo-1.14.2.tgz",
88 "integrity": "sha512-TI+Ytgfh/VfmHWERp45Jte6NFMdoJTPsvUP/uzJUvAXET8FP2h442LePWWJ/q/xZ4V0V8OtdJhx8It/GB+Zbxg==",
270 "version": "1.10.10",
271 "resolved": "https://registry.npmjs.org/dojo/-/dojo-1.10.10.tgz",
272 "integrity": "sha512-kg79C8Yyd317cG3MgXGMH4AeQ8TgNr8H/PpA3BRms7DTfl0CJCRAgGE/C6d9Nw55s1ID/fEsfS+P3bj1s7dWgA==",
89 273 "dev": true
90 274 },
91 "duplexer": {
92 "version": "0.1.1",
93 "resolved": "https://registry.npmjs.org/duplexer/-/duplexer-0.1.1.tgz",
94 "integrity": "sha1-rOb/gIwc5mtX0ev5eXessCM0z8E=",
275 "dojo-typings": {
276 "version": "1.11.9",
277 "resolved": "https://registry.npmjs.org/dojo-typings/-/dojo-typings-1.11.9.tgz",
278 "integrity": "sha512-mh8w+Mau2Y1QfTEszEAdO7j6ycNhYxF/Ing6nAk1eUg6NxjeT0viVHjICMd9sU3U463vM2G+KfBBK5grk3/Mlw==",
279 "dev": true,
280 "requires": {
281 "@types/chai": "^4.0.4"
282 }
283 },
284 "emoji-regex": {
285 "version": "7.0.3",
286 "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-7.0.3.tgz",
287 "integrity": "sha512-CwBLREIQ7LvYFB0WyRvwhq5N5qPhc6PMjD6bYggFlI5YyDgl+0vxq5VHbMOFqLg7hfWzmu8T5Z1QofhmTIhItA==",
95 288 "dev": true
96 289 },
97 290 "es-abstract": {
98 "version": "1.13.0",
99 "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.13.0.tgz",
100 "integrity": "sha512-vDZfg/ykNxQVwup/8E1BZhVzFfBxs9NqMzGcvIJrqg5k2/5Za2bWo40dK2J1pgLngZ7c+Shh8lwYtLGyrwPutg==",
291 "version": "1.15.0",
292 "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.15.0.tgz",
293 "integrity": "sha512-bhkEqWJ2t2lMeaJDuk7okMkJWI/yqgH/EoGwpcvv0XW9RWQsRspI4wt6xuyuvMvvQE3gg/D9HXppgk21w78GyQ==",
101 294 "dev": true,
102 295 "requires": {
103 296 "es-to-primitive": "^1.2.0",
104 297 "function-bind": "^1.1.1",
105 298 "has": "^1.0.3",
299 "has-symbols": "^1.0.0",
106 300 "is-callable": "^1.1.4",
107 301 "is-regex": "^1.0.4",
108 "object-keys": "^1.0.12"
302 "object-inspect": "^1.6.0",
303 "object-keys": "^1.1.1",
304 "string.prototype.trimleft": "^2.1.0",
305 "string.prototype.trimright": "^2.1.0"
109 306 },
110 307 "dependencies": {
111 308 "object-keys": {
112 "version": "1.0.12",
113 "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.0.12.tgz",
114 "integrity": "sha512-FTMyFUm2wBcGHnH2eXmz7tC6IwlqQZ6mVZ+6dm6vZ4IQIHjs6FdNsQBuKGPuUUUY6NfJw2PshC08Tn6LzLDOag==",
309 "version": "1.1.1",
310 "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz",
311 "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==",
115 312 "dev": true
116 313 }
117 314 }
118 315 },
119 316 "es-to-primitive": {
120 317 "version": "1.2.0",
121 318 "resolved": "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.2.0.tgz",
122 319 "integrity": "sha512-qZryBOJjV//LaxLTV6UC//WewneB3LcXOL9NP++ozKVXsIIIpm/2c13UDiD9Jp2eThsecw9m3jPqDwTyobcdbg==",
123 320 "dev": true,
124 321 "requires": {
125 322 "is-callable": "^1.1.4",
126 323 "is-date-object": "^1.0.1",
127 324 "is-symbol": "^1.0.2"
128 325 }
129 326 },
130 "faucet": {
131 "version": "0.0.1",
132 "resolved": "https://registry.npmjs.org/faucet/-/faucet-0.0.1.tgz",
133 "integrity": "sha1-WX3PHSGJosBiMhtZHo8VHtIDnZw=",
327 "escape-string-regexp": {
328 "version": "1.0.5",
329 "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz",
330 "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=",
331 "dev": true
332 },
333 "eslint": {
334 "version": "6.1.0",
335 "resolved": "https://registry.npmjs.org/eslint/-/eslint-6.1.0.tgz",
336 "integrity": "sha512-QhrbdRD7ofuV09IuE2ySWBz0FyXCq0rriLTZXZqaWSI79CVtHVRdkFuFTViiqzZhkCgfOh9USpriuGN2gIpZDQ==",
337 "dev": true,
338 "requires": {
339 "@babel/code-frame": "^7.0.0",
340 "ajv": "^6.10.0",
341 "chalk": "^2.1.0",
342 "cross-spawn": "^6.0.5",
343 "debug": "^4.0.1",
344 "doctrine": "^3.0.0",
345 "eslint-scope": "^5.0.0",
346 "eslint-utils": "^1.3.1",
347 "eslint-visitor-keys": "^1.0.0",
348 "espree": "^6.0.0",
349 "esquery": "^1.0.1",
350 "esutils": "^2.0.2",
351 "file-entry-cache": "^5.0.1",
352 "functional-red-black-tree": "^1.0.1",
353 "glob-parent": "^5.0.0",
354 "globals": "^11.7.0",
355 "ignore": "^4.0.6",
356 "import-fresh": "^3.0.0",
357 "imurmurhash": "^0.1.4",
358 "inquirer": "^6.4.1",
359 "is-glob": "^4.0.0",
360 "js-yaml": "^3.13.1",
361 "json-stable-stringify-without-jsonify": "^1.0.1",
362 "levn": "^0.3.0",
363 "lodash": "^4.17.14",
364 "minimatch": "^3.0.4",
365 "mkdirp": "^0.5.1",
366 "natural-compare": "^1.4.0",
367 "optionator": "^0.8.2",
368 "progress": "^2.0.0",
369 "regexpp": "^2.0.1",
370 "semver": "^6.1.2",
371 "strip-ansi": "^5.2.0",
372 "strip-json-comments": "^3.0.1",
373 "table": "^5.2.3",
374 "text-table": "^0.2.0",
375 "v8-compile-cache": "^2.0.3"
376 }
377 },
378 "eslint-scope": {
379 "version": "5.0.0",
380 "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-5.0.0.tgz",
381 "integrity": "sha512-oYrhJW7S0bxAFDvWqzvMPRm6pcgcnWc4QnofCAqRTRfQC0JcwenzGglTtsLyIuuWFfkqDG9vz67cnttSd53djw==",
382 "dev": true,
383 "requires": {
384 "esrecurse": "^4.1.0",
385 "estraverse": "^4.1.1"
386 }
387 },
388 "eslint-utils": {
389 "version": "1.4.2",
390 "resolved": "https://registry.npmjs.org/eslint-utils/-/eslint-utils-1.4.2.tgz",
391 "integrity": "sha512-eAZS2sEUMlIeCjBeubdj45dmBHQwPHWyBcT1VSYB7o9x9WRRqKxyUoiXlRjyAwzN7YEzHJlYg0NmzDRWx6GP4Q==",
392 "dev": true,
393 "requires": {
394 "eslint-visitor-keys": "^1.0.0"
395 }
396 },
397 "eslint-visitor-keys": {
398 "version": "1.1.0",
399 "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-1.1.0.tgz",
400 "integrity": "sha512-8y9YjtM1JBJU/A9Kc+SbaOV4y29sSWckBwMHa+FGtVj5gN/sbnKDf6xJUl+8g7FAij9LVaP8C24DUiH/f/2Z9A==",
401 "dev": true
402 },
403 "espree": {
404 "version": "6.1.1",
405 "resolved": "https://registry.npmjs.org/espree/-/espree-6.1.1.tgz",
406 "integrity": "sha512-EYbr8XZUhWbYCqQRW0duU5LxzL5bETN6AjKBGy1302qqzPaCH10QbRg3Wvco79Z8x9WbiE8HYB4e75xl6qUYvQ==",
134 407 "dev": true,
135 408 "requires": {
136 "defined": "0.0.0",
137 "duplexer": "~0.1.1",
138 "minimist": "0.0.5",
139 "sprintf": "~0.1.3",
140 "tap-parser": "~0.4.0",
141 "tape": "~2.3.2",
142 "through2": "~0.2.3"
143 },
144 "dependencies": {
145 "tape": {
146 "version": "2.3.3",
147 "resolved": "https://registry.npmjs.org/tape/-/tape-2.3.3.tgz",
148 "integrity": "sha1-Lnzgox3wn41oUWZKcYQuDKUFevc=",
149 "dev": true,
150 "requires": {
151 "deep-equal": "~0.1.0",
152 "defined": "~0.0.0",
153 "inherits": "~2.0.1",
154 "jsonify": "~0.0.0",
155 "resumer": "~0.0.0",
156 "through": "~2.3.4"
157 }
158 }
409 "acorn": "^7.0.0",
410 "acorn-jsx": "^5.0.2",
411 "eslint-visitor-keys": "^1.1.0"
412 }
413 },
414 "esprima": {
415 "version": "4.0.1",
416 "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz",
417 "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==",
418 "dev": true
419 },
420 "esquery": {
421 "version": "1.0.1",
422 "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.0.1.tgz",
423 "integrity": "sha512-SmiyZ5zIWH9VM+SRUReLS5Q8a7GxtRdxEBVZpm98rJM7Sb+A9DVCndXfkeFUd3byderg+EbDkfnevfCwynWaNA==",
424 "dev": true,
425 "requires": {
426 "estraverse": "^4.0.0"
427 }
428 },
429 "esrecurse": {
430 "version": "4.2.1",
431 "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.2.1.tgz",
432 "integrity": "sha512-64RBB++fIOAXPw3P9cy89qfMlvZEXZkqqJkjqqXIvzP5ezRZjW+lPWjw35UX/3EhUPFYbg5ER4JYgDw4007/DQ==",
433 "dev": true,
434 "requires": {
435 "estraverse": "^4.1.0"
436 }
437 },
438 "estraverse": {
439 "version": "4.3.0",
440 "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz",
441 "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==",
442 "dev": true
443 },
444 "esutils": {
445 "version": "2.0.3",
446 "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz",
447 "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==",
448 "dev": true
449 },
450 "external-editor": {
451 "version": "3.1.0",
452 "resolved": "https://registry.npmjs.org/external-editor/-/external-editor-3.1.0.tgz",
453 "integrity": "sha512-hMQ4CX1p1izmuLYyZqLMO/qGNw10wSv9QDCPfzXfyFrOaCSSoRfqE1Kf1s5an66J5JZC62NewG+mK49jOCtQew==",
454 "dev": true,
455 "requires": {
456 "chardet": "^0.7.0",
457 "iconv-lite": "^0.4.24",
458 "tmp": "^0.0.33"
159 459 }
160 460 },
461 "fast-deep-equal": {
462 "version": "2.0.1",
463 "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-2.0.1.tgz",
464 "integrity": "sha1-ewUhjd+WZ79/Nwv3/bLLFf3Qqkk=",
465 "dev": true
466 },
467 "fast-json-stable-stringify": {
468 "version": "2.0.0",
469 "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.0.0.tgz",
470 "integrity": "sha1-1RQsDK7msRifh9OnYREGT4bIu/I=",
471 "dev": true
472 },
473 "fast-levenshtein": {
474 "version": "2.0.6",
475 "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz",
476 "integrity": "sha1-PYpcZog6FqMMqGQ+hR8Zuqd5eRc=",
477 "dev": true
478 },
479 "figures": {
480 "version": "2.0.0",
481 "resolved": "https://registry.npmjs.org/figures/-/figures-2.0.0.tgz",
482 "integrity": "sha1-OrGi0qYsi/tDGgyUy3l6L84nyWI=",
483 "dev": true,
484 "requires": {
485 "escape-string-regexp": "^1.0.5"
486 }
487 },
488 "file-entry-cache": {
489 "version": "5.0.1",
490 "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-5.0.1.tgz",
491 "integrity": "sha512-bCg29ictuBaKUwwArK4ouCaqDgLZcysCFLmM/Yn/FDoqndh/9vNuQfXRDvTuXKLxfD/JtZQGKFT8MGcJBK644g==",
492 "dev": true,
493 "requires": {
494 "flat-cache": "^2.0.1"
495 }
496 },
497 "flat-cache": {
498 "version": "2.0.1",
499 "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-2.0.1.tgz",
500 "integrity": "sha512-LoQe6yDuUMDzQAEH8sgmh4Md6oZnc/7PjtwjNFSzveXqSHt6ka9fPBuso7IGf9Rz4uqnSnWiFH2B/zj24a5ReA==",
501 "dev": true,
502 "requires": {
503 "flatted": "^2.0.0",
504 "rimraf": "2.6.3",
505 "write": "1.0.3"
506 }
507 },
508 "flatted": {
509 "version": "2.0.1",
510 "resolved": "https://registry.npmjs.org/flatted/-/flatted-2.0.1.tgz",
511 "integrity": "sha512-a1hQMktqW9Nmqr5aktAux3JMNqaucxGcjtjWnZLHX7yyPCmlSV3M54nGYbqT8K+0GhF3NBgmJCc3ma+WOgX8Jg==",
512 "dev": true
513 },
161 514 "for-each": {
162 515 "version": "0.3.3",
163 516 "resolved": "https://registry.npmjs.org/for-each/-/for-each-0.3.3.tgz",
164 517 "integrity": "sha512-jqYfLp7mo9vIyQf8ykW2v7A+2N4QjeCeI5+Dz9XraiO1ign81wjiH7Fb9vSOWvQfNtmSa4H2RoQTrrXivdUZmw==",
165 518 "dev": true,
166 519 "requires": {
167 520 "is-callable": "^1.1.3"
168 521 }
169 522 },
170 523 "fs.realpath": {
171 524 "version": "1.0.0",
172 525 "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz",
173 526 "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=",
174 527 "dev": true
175 528 },
176 529 "function-bind": {
177 530 "version": "1.1.1",
178 531 "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz",
179 532 "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==",
180 533 "dev": true
181 534 },
535 "functional-red-black-tree": {
536 "version": "1.0.1",
537 "resolved": "https://registry.npmjs.org/functional-red-black-tree/-/functional-red-black-tree-1.0.1.tgz",
538 "integrity": "sha1-GwqzvVU7Kg1jmdKcDj6gslIHgyc=",
539 "dev": true
540 },
182 541 "glob": {
183 "version": "7.1.3",
184 "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.3.tgz",
185 "integrity": "sha512-vcfuiIxogLV4DlGBHIUOwI0IbrJ8HWPc4MU7HzviGeNho/UJDfi6B5p3sHeWIQ0KGIU0Jpxi5ZHxemQfLkkAwQ==",
542 "version": "7.1.4",
543 "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.4.tgz",
544 "integrity": "sha512-hkLPepehmnKk41pUGm3sYxoFs/umurYfYJCerbXEyFIWcAzvpipAgVkBqqT9RBKMGjnq6kMuyYwha6csxbiM1A==",
186 545 "dev": true,
187 546 "requires": {
188 547 "fs.realpath": "^1.0.0",
189 548 "inflight": "^1.0.4",
190 549 "inherits": "2",
191 550 "minimatch": "^3.0.4",
192 551 "once": "^1.3.0",
193 552 "path-is-absolute": "^1.0.0"
194 553 }
195 554 },
555 "glob-parent": {
556 "version": "5.1.0",
557 "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.0.tgz",
558 "integrity": "sha512-qjtRgnIVmOfnKUE3NJAQEdk+lKrxfw8t5ke7SXtfMTHcjsBfOfWXCQfdb30zfDoZQ2IRSIiidmjtbHZPZ++Ihw==",
559 "dev": true,
560 "requires": {
561 "is-glob": "^4.0.1"
562 }
563 },
564 "globals": {
565 "version": "11.12.0",
566 "resolved": "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz",
567 "integrity": "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==",
568 "dev": true
569 },
196 570 "has": {
197 571 "version": "1.0.3",
198 572 "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz",
199 573 "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==",
200 574 "dev": true,
201 575 "requires": {
202 576 "function-bind": "^1.1.1"
203 577 }
204 578 },
579 "has-flag": {
580 "version": "3.0.0",
581 "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz",
582 "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=",
583 "dev": true
584 },
205 585 "has-symbols": {
206 586 "version": "1.0.0",
207 587 "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.0.tgz",
208 588 "integrity": "sha1-uhqPGvKg/DllD1yFA2dwQSIGO0Q=",
209 589 "dev": true
210 590 },
591 "iconv-lite": {
592 "version": "0.4.24",
593 "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz",
594 "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==",
595 "dev": true,
596 "requires": {
597 "safer-buffer": ">= 2.1.2 < 3"
598 }
599 },
600 "ignore": {
601 "version": "4.0.6",
602 "resolved": "https://registry.npmjs.org/ignore/-/ignore-4.0.6.tgz",
603 "integrity": "sha512-cyFDKrqc/YdcWFniJhzI42+AzS+gNwmUzOSFcRCQYwySuBBBy/KjuxWLZ/FHEH6Moq1NizMOBWyTcv8O4OZIMg==",
604 "dev": true
605 },
606 "import-fresh": {
607 "version": "3.1.0",
608 "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.1.0.tgz",
609 "integrity": "sha512-PpuksHKGt8rXfWEr9m9EHIpgyyaltBy8+eF6GJM0QCAxMgxCfucMF3mjecK2QsJr0amJW7gTqh5/wht0z2UhEQ==",
610 "dev": true,
611 "requires": {
612 "parent-module": "^1.0.0",
613 "resolve-from": "^4.0.0"
614 }
615 },
616 "imurmurhash": {
617 "version": "0.1.4",
618 "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz",
619 "integrity": "sha1-khi5srkoojixPcT7a21XbyMUU+o=",
620 "dev": true
621 },
211 622 "inflight": {
212 623 "version": "1.0.6",
213 624 "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz",
214 625 "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=",
215 626 "dev": true,
216 627 "requires": {
217 628 "once": "^1.3.0",
218 629 "wrappy": "1"
219 630 }
220 631 },
221 632 "inherits": {
222 633 "version": "2.0.3",
223 634 "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz",
224 635 "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=",
225 636 "dev": true
226 637 },
638 "inquirer": {
639 "version": "6.5.2",
640 "resolved": "https://registry.npmjs.org/inquirer/-/inquirer-6.5.2.tgz",
641 "integrity": "sha512-cntlB5ghuB0iuO65Ovoi8ogLHiWGs/5yNrtUcKjFhSSiVeAIVpD7koaSU9RM8mpXw5YDi9RdYXGQMaOURB7ycQ==",
642 "dev": true,
643 "requires": {
644 "ansi-escapes": "^3.2.0",
645 "chalk": "^2.4.2",
646 "cli-cursor": "^2.1.0",
647 "cli-width": "^2.0.0",
648 "external-editor": "^3.0.3",
649 "figures": "^2.0.0",
650 "lodash": "^4.17.12",
651 "mute-stream": "0.0.7",
652 "run-async": "^2.2.0",
653 "rxjs": "^6.4.0",
654 "string-width": "^2.1.0",
655 "strip-ansi": "^5.1.0",
656 "through": "^2.3.6"
657 }
658 },
227 659 "is-callable": {
228 660 "version": "1.1.4",
229 661 "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.1.4.tgz",
230 662 "integrity": "sha512-r5p9sxJjYnArLjObpjA4xu5EKI3CuKHkJXMhT7kwbpUyIFD1n5PMAsoPvWnvtZiNz7LjkYDRZhd7FlI0eMijEA==",
231 663 "dev": true
232 664 },
233 665 "is-date-object": {
234 666 "version": "1.0.1",
235 667 "resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.0.1.tgz",
236 668 "integrity": "sha1-mqIOtq7rv/d/vTPnTKAbM1gdOhY=",
237 669 "dev": true
238 670 },
671 "is-extglob": {
672 "version": "2.1.1",
673 "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz",
674 "integrity": "sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=",
675 "dev": true
676 },
677 "is-fullwidth-code-point": {
678 "version": "2.0.0",
679 "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz",
680 "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=",
681 "dev": true
682 },
683 "is-glob": {
684 "version": "4.0.1",
685 "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.1.tgz",
686 "integrity": "sha512-5G0tKtBTFImOqDnLB2hG6Bp2qcKEFduo4tZu9MT/H6NQv/ghhy30o55ufafxJ/LdH79LLs2Kfrn85TLKyA7BUg==",
687 "dev": true,
688 "requires": {
689 "is-extglob": "^2.1.1"
690 }
691 },
692 "is-promise": {
693 "version": "2.1.0",
694 "resolved": "https://registry.npmjs.org/is-promise/-/is-promise-2.1.0.tgz",
695 "integrity": "sha1-eaKp7OfwlugPNtKy87wWwf9L8/o=",
696 "dev": true
697 },
239 698 "is-regex": {
240 699 "version": "1.0.4",
241 700 "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.0.4.tgz",
242 701 "integrity": "sha1-VRdIm1RwkbCTDglWVM7SXul+lJE=",
243 702 "dev": true,
244 703 "requires": {
245 704 "has": "^1.0.1"
246 705 }
247 706 },
248 707 "is-symbol": {
249 708 "version": "1.0.2",
250 709 "resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.0.2.tgz",
251 710 "integrity": "sha512-HS8bZ9ox60yCJLH9snBpIwv9pYUAkcuLhSA1oero1UB5y9aiQpRA8y2ex945AOtCZL1lJDeIk3G5LthswI46Lw==",
252 711 "dev": true,
253 712 "requires": {
254 713 "has-symbols": "^1.0.0"
255 714 }
256 715 },
257 "isarray": {
258 "version": "0.0.1",
259 "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz",
260 "integrity": "sha1-ihis/Kmo9Bd+Cav8YDiTmwXR7t8=",
716 "isexe": {
717 "version": "2.0.0",
718 "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz",
719 "integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=",
720 "dev": true
721 },
722 "js-tokens": {
723 "version": "4.0.0",
724 "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz",
725 "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==",
261 726 "dev": true
262 727 },
263 "jsonify": {
264 "version": "0.0.0",
265 "resolved": "https://registry.npmjs.org/jsonify/-/jsonify-0.0.0.tgz",
266 "integrity": "sha1-LHS27kHZPKUbe1qu6PUDYx0lKnM=",
728 "js-yaml": {
729 "version": "3.13.1",
730 "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.13.1.tgz",
731 "integrity": "sha512-YfbcO7jXDdyj0DGxYVSlSeQNHbD7XPWvrVWeVUujrQEoZzWJIRrCPoyk6kL6IAjAG2IolMK4T0hNUe0HOUs5Jw==",
732 "dev": true,
733 "requires": {
734 "argparse": "^1.0.7",
735 "esprima": "^4.0.0"
736 }
737 },
738 "json-schema-traverse": {
739 "version": "0.4.1",
740 "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz",
741 "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==",
742 "dev": true
743 },
744 "json-stable-stringify-without-jsonify": {
745 "version": "1.0.1",
746 "resolved": "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz",
747 "integrity": "sha1-nbe1lJatPzz+8wp1FC0tkwrXJlE=",
748 "dev": true
749 },
750 "levn": {
751 "version": "0.3.0",
752 "resolved": "https://registry.npmjs.org/levn/-/levn-0.3.0.tgz",
753 "integrity": "sha1-OwmSTt+fCDwEkP3UwLxEIeBHZO4=",
754 "dev": true,
755 "requires": {
756 "prelude-ls": "~1.1.2",
757 "type-check": "~0.3.2"
758 }
759 },
760 "lodash": {
761 "version": "4.17.15",
762 "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.15.tgz",
763 "integrity": "sha512-8xOcRHvCjnocdS5cpwXQXVzmmh5e5+saE2QGoeQmbKmRS6J3VQppPOIt0MnmE+4xlZoumy0GPG0D0MVIQbNA1A==",
764 "dev": true
765 },
766 "mimic-fn": {
767 "version": "1.2.0",
768 "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-1.2.0.tgz",
769 "integrity": "sha512-jf84uxzwiuiIVKiOLpfYk7N46TSy8ubTonmneY9vrpHNAnp0QBt2BxWV9dO3/j+BoVAb+a5G6YDPW3M5HOdMWQ==",
267 770 "dev": true
268 771 },
269 772 "minimatch": {
270 773 "version": "3.0.4",
271 774 "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz",
272 775 "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==",
273 776 "dev": true,
274 777 "requires": {
275 778 "brace-expansion": "^1.1.7"
276 779 }
277 780 },
278 781 "minimist": {
279 "version": "0.0.5",
280 "resolved": "https://registry.npmjs.org/minimist/-/minimist-0.0.5.tgz",
281 "integrity": "sha1-16oye87PUY+RBqxrjwA/o7zqhWY=",
782 "version": "0.0.8",
783 "resolved": "https://registry.npmjs.org/minimist/-/minimist-0.0.8.tgz",
784 "integrity": "sha1-hX/Kv8M5fSYluCKCYuhqp6ARsF0=",
785 "dev": true
786 },
787 "mkdirp": {
788 "version": "0.5.1",
789 "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.1.tgz",
790 "integrity": "sha1-MAV0OOrGz3+MR2fzhkjWaX11yQM=",
791 "dev": true,
792 "requires": {
793 "minimist": "0.0.8"
794 }
795 },
796 "ms": {
797 "version": "2.1.2",
798 "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz",
799 "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==",
800 "dev": true
801 },
802 "mute-stream": {
803 "version": "0.0.7",
804 "resolved": "https://registry.npmjs.org/mute-stream/-/mute-stream-0.0.7.tgz",
805 "integrity": "sha1-MHXOk7whuPq0PhvE2n6BFe0ee6s=",
806 "dev": true
807 },
808 "natural-compare": {
809 "version": "1.4.0",
810 "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz",
811 "integrity": "sha1-Sr6/7tdUHywnrPspvbvRXI1bpPc=",
812 "dev": true
813 },
814 "nice-try": {
815 "version": "1.0.5",
816 "resolved": "https://registry.npmjs.org/nice-try/-/nice-try-1.0.5.tgz",
817 "integrity": "sha512-1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ==",
282 818 "dev": true
283 819 },
284 820 "object-inspect": {
285 821 "version": "1.6.0",
286 822 "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.6.0.tgz",
287 823 "integrity": "sha512-GJzfBZ6DgDAmnuaM3104jR4s1Myxr3Y3zfIyN4z3UdqN69oSRacNK8UhnobDdC+7J2AHCjGwxQubNJfE70SXXQ==",
288 824 "dev": true
289 825 },
290 "object-keys": {
291 "version": "0.4.0",
292 "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-0.4.0.tgz",
293 "integrity": "sha1-KKaq50KN0sOpLz2V8hM13SBOAzY=",
294 "dev": true
295 },
296 826 "once": {
297 827 "version": "1.4.0",
298 828 "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz",
299 829 "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=",
300 830 "dev": true,
301 831 "requires": {
302 832 "wrappy": "1"
303 833 }
304 834 },
835 "onetime": {
836 "version": "2.0.1",
837 "resolved": "https://registry.npmjs.org/onetime/-/onetime-2.0.1.tgz",
838 "integrity": "sha1-BnQoIw/WdEOyeUsiu6UotoZ5YtQ=",
839 "dev": true,
840 "requires": {
841 "mimic-fn": "^1.0.0"
842 }
843 },
844 "optionator": {
845 "version": "0.8.2",
846 "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.8.2.tgz",
847 "integrity": "sha1-NkxeQJ0/TWMB1sC0wFu6UBgK62Q=",
848 "dev": true,
849 "requires": {
850 "deep-is": "~0.1.3",
851 "fast-levenshtein": "~2.0.4",
852 "levn": "~0.3.0",
853 "prelude-ls": "~1.1.2",
854 "type-check": "~0.3.2",
855 "wordwrap": "~1.0.0"
856 }
857 },
858 "os-tmpdir": {
859 "version": "1.0.2",
860 "resolved": "https://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.2.tgz",
861 "integrity": "sha1-u+Z0BseaqFxc/sdm/lc0VV36EnQ=",
862 "dev": true
863 },
864 "parent-module": {
865 "version": "1.0.1",
866 "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz",
867 "integrity": "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==",
868 "dev": true,
869 "requires": {
870 "callsites": "^3.0.0"
871 }
872 },
305 873 "path-is-absolute": {
306 874 "version": "1.0.1",
307 875 "resolved": "http://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz",
308 876 "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=",
309 877 "dev": true
310 878 },
879 "path-key": {
880 "version": "2.0.1",
881 "resolved": "https://registry.npmjs.org/path-key/-/path-key-2.0.1.tgz",
882 "integrity": "sha1-QRyttXTFoUDTpLGRDUDYDMn0C0A=",
883 "dev": true
884 },
311 885 "path-parse": {
312 886 "version": "1.0.6",
313 887 "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.6.tgz",
314 888 "integrity": "sha512-GSmOT2EbHrINBf9SR7CDELwlJ8AENk3Qn7OikK4nFYAu3Ote2+JYNVvkpAEQm3/TLNEJFD/xZJjzyxg3KBWOzw==",
315 889 "dev": true
316 890 },
317 "readable-stream": {
318 "version": "1.1.14",
319 "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.1.14.tgz",
320 "integrity": "sha1-fPTFTvZI44EwhMY23SB54WbAgdk=",
321 "dev": true,
322 "requires": {
323 "core-util-is": "~1.0.0",
324 "inherits": "~2.0.1",
325 "isarray": "0.0.1",
326 "string_decoder": "~0.10.x"
327 }
891 "prelude-ls": {
892 "version": "1.1.2",
893 "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.1.2.tgz",
894 "integrity": "sha1-IZMqVJ9eUv/ZqCf1cOBL5iqX2lQ=",
895 "dev": true
896 },
897 "progress": {
898 "version": "2.0.3",
899 "resolved": "https://registry.npmjs.org/progress/-/progress-2.0.3.tgz",
900 "integrity": "sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA==",
901 "dev": true
902 },
903 "punycode": {
904 "version": "2.1.1",
905 "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz",
906 "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==",
907 "dev": true
908 },
909 "regexpp": {
910 "version": "2.0.1",
911 "resolved": "https://registry.npmjs.org/regexpp/-/regexpp-2.0.1.tgz",
912 "integrity": "sha512-lv0M6+TkDVniA3aD1Eg0DVpfU/booSu7Eev3TDO/mZKHBfVjgCGTV4t4buppESEYDtkArYFOxTJWv6S5C+iaNw==",
913 "dev": true
328 914 },
329 915 "requirejs": {
330 916 "version": "2.3.6",
331 917 "resolved": "https://registry.npmjs.org/requirejs/-/requirejs-2.3.6.tgz",
332 918 "integrity": "sha512-ipEzlWQe6RK3jkzikgCupiTbTvm4S0/CAU5GlgptkN5SO6F3u0UD0K18wy6ErDqiCyP4J4YYe1HuAShvsxePLg==",
333 919 "dev": true
334 920 },
335 921 "resolve": {
336 "version": "1.7.1",
337 "resolved": "http://registry.npmjs.org/resolve/-/resolve-1.7.1.tgz",
338 "integrity": "sha512-c7rwLofp8g1U+h1KNyHL/jicrKg1Ek4q+Lr33AL65uZTinUZHe30D5HlyN5V9NW0JX1D5dXQ4jqW5l7Sy/kGfw==",
922 "version": "1.11.1",
923 "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.11.1.tgz",
924 "integrity": "sha512-vIpgF6wfuJOZI7KKKSP+HmiKggadPQAdsp5HiC1mvqnfp0gF1vdwgBWZIdrVft9pgqoMFQN+R7BSWZiBxx+BBw==",
339 925 "dev": true,
340 926 "requires": {
341 "path-parse": "^1.0.5"
927 "path-parse": "^1.0.6"
928 }
929 },
930 "resolve-from": {
931 "version": "4.0.0",
932 "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz",
933 "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==",
934 "dev": true
935 },
936 "restore-cursor": {
937 "version": "2.0.0",
938 "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-2.0.0.tgz",
939 "integrity": "sha1-n37ih/gv0ybU/RYpI9YhKe7g368=",
940 "dev": true,
941 "requires": {
942 "onetime": "^2.0.0",
943 "signal-exit": "^3.0.2"
342 944 }
343 945 },
344 946 "resumer": {
345 947 "version": "0.0.0",
346 948 "resolved": "https://registry.npmjs.org/resumer/-/resumer-0.0.0.tgz",
347 949 "integrity": "sha1-8ej0YeQGS6Oegq883CqMiT0HZ1k=",
348 950 "dev": true,
349 951 "requires": {
350 952 "through": "~2.3.4"
351 953 }
352 954 },
353 "sprintf": {
354 "version": "0.1.5",
355 "resolved": "https://registry.npmjs.org/sprintf/-/sprintf-0.1.5.tgz",
356 "integrity": "sha1-j4PjmpMXwaUCy324BQ5Rxnn27c8=",
955 "rimraf": {
956 "version": "2.6.3",
957 "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.6.3.tgz",
958 "integrity": "sha512-mwqeW5XsA2qAejG46gYdENaxXjx9onRNCfn7L0duuP4hCuTIi/QO7PDK07KJfp1d+izWPrzEJDcSqBa0OZQriA==",
959 "dev": true,
960 "requires": {
961 "glob": "^7.1.3"
962 }
963 },
964 "run-async": {
965 "version": "2.3.0",
966 "resolved": "https://registry.npmjs.org/run-async/-/run-async-2.3.0.tgz",
967 "integrity": "sha1-A3GrSuC91yDUFm19/aZP96RFpsA=",
968 "dev": true,
969 "requires": {
970 "is-promise": "^2.1.0"
971 }
972 },
973 "rxjs": {
974 "version": "6.5.3",
975 "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-6.5.3.tgz",
976 "integrity": "sha512-wuYsAYYFdWTAnAaPoKGNhfpWwKZbJW+HgAJ+mImp+Epl7BG8oNWBCTyRM8gba9k4lk8BgWdoYm21Mo/RYhhbgA==",
977 "dev": true,
978 "requires": {
979 "tslib": "^1.9.0"
980 }
981 },
982 "safer-buffer": {
983 "version": "2.1.2",
984 "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz",
985 "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==",
986 "dev": true
987 },
988 "semver": {
989 "version": "6.3.0",
990 "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz",
991 "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==",
357 992 "dev": true
358 993 },
994 "shebang-command": {
995 "version": "1.2.0",
996 "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-1.2.0.tgz",
997 "integrity": "sha1-RKrGW2lbAzmJaMOfNj/uXer98eo=",
998 "dev": true,
999 "requires": {
1000 "shebang-regex": "^1.0.0"
1001 }
1002 },
1003 "shebang-regex": {
1004 "version": "1.0.0",
1005 "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-1.0.0.tgz",
1006 "integrity": "sha1-2kL0l0DAtC2yypcoVxyxkMmO/qM=",
1007 "dev": true
1008 },
1009 "signal-exit": {
1010 "version": "3.0.2",
1011 "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.2.tgz",
1012 "integrity": "sha1-tf3AjxKH6hF4Yo5BXiUTK3NkbG0=",
1013 "dev": true
1014 },
1015 "slice-ansi": {
1016 "version": "2.1.0",
1017 "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-2.1.0.tgz",
1018 "integrity": "sha512-Qu+VC3EwYLldKa1fCxuuvULvSJOKEgk9pi8dZeCVK7TqBfUNTH4sFkk4joj8afVSfAYgJoSOetjx9QWOJ5mYoQ==",
1019 "dev": true,
1020 "requires": {
1021 "ansi-styles": "^3.2.0",
1022 "astral-regex": "^1.0.0",
1023 "is-fullwidth-code-point": "^2.0.0"
1024 }
1025 },
1026 "sprintf-js": {
1027 "version": "1.0.3",
1028 "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz",
1029 "integrity": "sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw=",
1030 "dev": true
1031 },
1032 "string-width": {
1033 "version": "2.1.1",
1034 "resolved": "https://registry.npmjs.org/string-width/-/string-width-2.1.1.tgz",
1035 "integrity": "sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==",
1036 "dev": true,
1037 "requires": {
1038 "is-fullwidth-code-point": "^2.0.0",
1039 "strip-ansi": "^4.0.0"
1040 },
1041 "dependencies": {
1042 "strip-ansi": {
1043 "version": "4.0.0",
1044 "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz",
1045 "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=",
1046 "dev": true,
1047 "requires": {
1048 "ansi-regex": "^3.0.0"
1049 }
1050 }
1051 }
1052 },
359 1053 "string.prototype.trim": {
360 1054 "version": "1.1.2",
361 1055 "resolved": "https://registry.npmjs.org/string.prototype.trim/-/string.prototype.trim-1.1.2.tgz",
362 1056 "integrity": "sha1-0E3iyJ4Tf019IG8Ia17S+ua+jOo=",
363 1057 "dev": true,
364 1058 "requires": {
365 1059 "define-properties": "^1.1.2",
366 1060 "es-abstract": "^1.5.0",
367 1061 "function-bind": "^1.0.2"
368 1062 }
369 1063 },
370 "string_decoder": {
371 "version": "0.10.31",
372 "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz",
373 "integrity": "sha1-YuIDvEF2bGwoyfyEMB2rHFMQ+pQ=",
1064 "string.prototype.trimleft": {
1065 "version": "2.1.0",
1066 "resolved": "https://registry.npmjs.org/string.prototype.trimleft/-/string.prototype.trimleft-2.1.0.tgz",
1067 "integrity": "sha512-FJ6b7EgdKxxbDxc79cOlok6Afd++TTs5szo+zJTUyow3ycrRfJVE2pq3vcN53XexvKZu/DJMDfeI/qMiZTrjTw==",
1068 "dev": true,
1069 "requires": {
1070 "define-properties": "^1.1.3",
1071 "function-bind": "^1.1.1"
1072 }
1073 },
1074 "string.prototype.trimright": {
1075 "version": "2.1.0",
1076 "resolved": "https://registry.npmjs.org/string.prototype.trimright/-/string.prototype.trimright-2.1.0.tgz",
1077 "integrity": "sha512-fXZTSV55dNBwv16uw+hh5jkghxSnc5oHq+5K/gXgizHwAvMetdAJlHqqoFC1FSDVPYWLkAKl2cxpUT41sV7nSg==",
1078 "dev": true,
1079 "requires": {
1080 "define-properties": "^1.1.3",
1081 "function-bind": "^1.1.1"
1082 }
1083 },
1084 "strip-ansi": {
1085 "version": "5.2.0",
1086 "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz",
1087 "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==",
1088 "dev": true,
1089 "requires": {
1090 "ansi-regex": "^4.1.0"
1091 },
1092 "dependencies": {
1093 "ansi-regex": {
1094 "version": "4.1.0",
1095 "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.0.tgz",
1096 "integrity": "sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg==",
1097 "dev": true
1098 }
1099 }
1100 },
1101 "strip-json-comments": {
1102 "version": "3.0.1",
1103 "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.0.1.tgz",
1104 "integrity": "sha512-VTyMAUfdm047mwKl+u79WIdrZxtFtn+nBxHeb844XBQ9uMNTuTHdx2hc5RiAJYqwTj3wc/xe5HLSdJSkJ+WfZw==",
374 1105 "dev": true
375 1106 },
376 "tap-parser": {
377 "version": "0.4.3",
378 "resolved": "https://registry.npmjs.org/tap-parser/-/tap-parser-0.4.3.tgz",
379 "integrity": "sha1-pOrhkMENdsehEZIf84u+TVjwnuo=",
1107 "supports-color": {
1108 "version": "5.5.0",
1109 "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz",
1110 "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==",
1111 "dev": true,
1112 "requires": {
1113 "has-flag": "^3.0.0"
1114 }
1115 },
1116 "table": {
1117 "version": "5.4.6",
1118 "resolved": "https://registry.npmjs.org/table/-/table-5.4.6.tgz",
1119 "integrity": "sha512-wmEc8m4fjnob4gt5riFRtTu/6+4rSe12TpAELNSqHMfF3IqnA+CH37USM6/YR3qRZv7e56kAEAtd6nKZaxe0Ug==",
380 1120 "dev": true,
381 1121 "requires": {
382 "inherits": "~2.0.1",
383 "readable-stream": "~1.1.11"
1122 "ajv": "^6.10.2",
1123 "lodash": "^4.17.14",
1124 "slice-ansi": "^2.1.0",
1125 "string-width": "^3.0.0"
1126 },
1127 "dependencies": {
1128 "string-width": {
1129 "version": "3.1.0",
1130 "resolved": "https://registry.npmjs.org/string-width/-/string-width-3.1.0.tgz",
1131 "integrity": "sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w==",
1132 "dev": true,
1133 "requires": {
1134 "emoji-regex": "^7.0.1",
1135 "is-fullwidth-code-point": "^2.0.0",
1136 "strip-ansi": "^5.1.0"
1137 }
1138 }
384 1139 }
385 1140 },
386 1141 "tape": {
387 "version": "4.9.2",
388 "resolved": "https://registry.npmjs.org/tape/-/tape-4.9.2.tgz",
389 "integrity": "sha512-lPXKRKILZ1kZaUy5ynWKs8ATGSUO7HAFHCFnBam6FaGSqPdOwMWbxXHq4EXFLE8WRTleo/YOMXkaUTRmTB1Fiw==",
1142 "version": "4.11.0",
1143 "resolved": "https://registry.npmjs.org/tape/-/tape-4.11.0.tgz",
1144 "integrity": "sha512-yixvDMX7q7JIs/omJSzSZrqulOV51EC9dK8dM0TzImTIkHWfe2/kFyL5v+d9C+SrCMaICk59ujsqFAVidDqDaA==",
390 1145 "dev": true,
391 1146 "requires": {
392 1147 "deep-equal": "~1.0.1",
393 1148 "defined": "~1.0.0",
394 1149 "for-each": "~0.3.3",
395 1150 "function-bind": "~1.1.1",
396 "glob": "~7.1.2",
1151 "glob": "~7.1.4",
397 1152 "has": "~1.0.3",
398 "inherits": "~2.0.3",
1153 "inherits": "~2.0.4",
399 1154 "minimist": "~1.2.0",
400 1155 "object-inspect": "~1.6.0",
401 "resolve": "~1.7.1",
1156 "resolve": "~1.11.1",
402 1157 "resumer": "~0.0.0",
403 1158 "string.prototype.trim": "~1.1.2",
404 1159 "through": "~2.3.8"
405 1160 },
406 1161 "dependencies": {
407 1162 "deep-equal": {
408 1163 "version": "1.0.1",
409 1164 "resolved": "https://registry.npmjs.org/deep-equal/-/deep-equal-1.0.1.tgz",
410 1165 "integrity": "sha1-9dJgKStmDghO/0zbyfCK0yR0SLU=",
411 1166 "dev": true
412 1167 },
413 1168 "defined": {
414 1169 "version": "1.0.0",
415 1170 "resolved": "https://registry.npmjs.org/defined/-/defined-1.0.0.tgz",
416 1171 "integrity": "sha1-yY2bzvdWdBiOEQlpFRGZ45sfppM=",
417 1172 "dev": true
418 1173 },
1174 "inherits": {
1175 "version": "2.0.4",
1176 "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz",
1177 "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==",
1178 "dev": true
1179 },
419 1180 "minimist": {
420 1181 "version": "1.2.0",
421 1182 "resolved": "http://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz",
422 1183 "integrity": "sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ=",
423 1184 "dev": true
424 1185 }
425 1186 }
426 1187 },
1188 "text-table": {
1189 "version": "0.2.0",
1190 "resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz",
1191 "integrity": "sha1-f17oI66AUgfACvLfSoTsP8+lcLQ=",
1192 "dev": true
1193 },
427 1194 "through": {
428 1195 "version": "2.3.8",
429 1196 "resolved": "http://registry.npmjs.org/through/-/through-2.3.8.tgz",
430 1197 "integrity": "sha1-DdTJ/6q8NXlgsbckEV1+Doai4fU=",
431 1198 "dev": true
432 1199 },
433 "through2": {
434 "version": "0.2.3",
435 "resolved": "https://registry.npmjs.org/through2/-/through2-0.2.3.tgz",
436 "integrity": "sha1-6zKE2k6jEbbMis42U3SKUqvyWj8=",
1200 "tmp": {
1201 "version": "0.0.33",
1202 "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.0.33.tgz",
1203 "integrity": "sha512-jRCJlojKnZ3addtTOjdIqoRuPEKBvNXcGYqzO6zWZX8KfKEpnGY5jfggJQ3EjKuu8D4bJRr0y+cYJFmYbImXGw==",
437 1204 "dev": true,
438 1205 "requires": {
439 "readable-stream": "~1.1.9",
440 "xtend": "~2.1.1"
1206 "os-tmpdir": "~1.0.2"
441 1207 }
442 1208 },
443 1209 "tslib": {
444 "version": "1.9.3",
445 "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.9.3.tgz",
446 "integrity": "sha512-4krF8scpejhaOgqzBEcGM7yDIEfi0/8+8zDRZhNZZ2kjmHJ4hv3zCbQWxoJGz1iw5U0Jl0nma13xzHXcncMavQ==",
1210 "version": "1.10.0",
1211 "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.10.0.tgz",
1212 "integrity": "sha512-qOebF53frne81cf0S9B41ByenJ3/IuH8yJKngAX35CmiZySA0khhkovshKK+jGCaMnVomla7gVlIcc3EvKPbTQ==",
447 1213 "dev": true
448 1214 },
1215 "tslint": {
1216 "version": "5.18.0",
1217 "resolved": "https://registry.npmjs.org/tslint/-/tslint-5.18.0.tgz",
1218 "integrity": "sha512-Q3kXkuDEijQ37nXZZLKErssQVnwCV/+23gFEMROi8IlbaBG6tXqLPQJ5Wjcyt/yHPKBC+hD5SzuGaMora+ZS6w==",
1219 "dev": true,
1220 "requires": {
1221 "@babel/code-frame": "^7.0.0",
1222 "builtin-modules": "^1.1.1",
1223 "chalk": "^2.3.0",
1224 "commander": "^2.12.1",
1225 "diff": "^3.2.0",
1226 "glob": "^7.1.1",
1227 "js-yaml": "^3.13.1",
1228 "minimatch": "^3.0.4",
1229 "mkdirp": "^0.5.1",
1230 "resolve": "^1.3.2",
1231 "semver": "^5.3.0",
1232 "tslib": "^1.8.0",
1233 "tsutils": "^2.29.0"
1234 },
1235 "dependencies": {
1236 "semver": {
1237 "version": "5.7.1",
1238 "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz",
1239 "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==",
1240 "dev": true
1241 }
1242 }
1243 },
1244 "tsutils": {
1245 "version": "2.29.0",
1246 "resolved": "https://registry.npmjs.org/tsutils/-/tsutils-2.29.0.tgz",
1247 "integrity": "sha512-g5JVHCIJwzfISaXpXE1qvNalca5Jwob6FjI4AoPlqMusJ6ftFE7IkkFoMhVLRgK+4Kx3gkzb8UZK5t5yTTvEmA==",
1248 "dev": true,
1249 "requires": {
1250 "tslib": "^1.8.1"
1251 }
1252 },
1253 "type-check": {
1254 "version": "0.3.2",
1255 "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.3.2.tgz",
1256 "integrity": "sha1-WITKtRLPHTVeP7eE8wgEsrUg23I=",
1257 "dev": true,
1258 "requires": {
1259 "prelude-ls": "~1.1.2"
1260 }
1261 },
449 1262 "typescript": {
450 "version": "3.2.2",
451 "resolved": "https://registry.npmjs.org/typescript/-/typescript-3.2.2.tgz",
452 "integrity": "sha512-VCj5UiSyHBjwfYacmDuc/NOk4QQixbE+Wn7MFJuS0nRuPQbof132Pw4u53dm264O8LPc2MVsc7RJNml5szurkg==",
1263 "version": "3.6.4",
1264 "resolved": "https://registry.npmjs.org/typescript/-/typescript-3.6.4.tgz",
1265 "integrity": "sha512-unoCll1+l+YK4i4F8f22TaNVPRHcD9PA3yCuZ8g5e0qGqlVlJ/8FSateOLLSagn+Yg5+ZwuPkL8LFUc0Jcvksg==",
1266 "dev": true
1267 },
1268 "uri-js": {
1269 "version": "4.2.2",
1270 "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.2.2.tgz",
1271 "integrity": "sha512-KY9Frmirql91X2Qgjry0Wd4Y+YTdrdZheS8TFwvkbLWf/G5KNJDCh6pKL5OZctEW4+0Baa5idK2ZQuELRwPznQ==",
1272 "dev": true,
1273 "requires": {
1274 "punycode": "^2.1.0"
1275 }
1276 },
1277 "v8-compile-cache": {
1278 "version": "2.1.0",
1279 "resolved": "https://registry.npmjs.org/v8-compile-cache/-/v8-compile-cache-2.1.0.tgz",
1280 "integrity": "sha512-usZBT3PW+LOjM25wbqIlZwPeJV+3OSz3M1k1Ws8snlW39dZyYL9lOGC5FgPVHfk0jKmjiDV8Z0mIbVQPiwFs7g==",
1281 "dev": true
1282 },
1283 "which": {
1284 "version": "1.3.1",
1285 "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz",
1286 "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==",
1287 "dev": true,
1288 "requires": {
1289 "isexe": "^2.0.0"
1290 }
1291 },
1292 "wordwrap": {
1293 "version": "1.0.0",
1294 "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-1.0.0.tgz",
1295 "integrity": "sha1-J1hIEIkUVqQXHI0CJkQa3pDLyus=",
453 1296 "dev": true
454 1297 },
455 1298 "wrappy": {
456 1299 "version": "1.0.2",
457 1300 "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz",
458 1301 "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=",
459 1302 "dev": true
460 1303 },
461 "xtend": {
462 "version": "2.1.2",
463 "resolved": "https://registry.npmjs.org/xtend/-/xtend-2.1.2.tgz",
464 "integrity": "sha1-bv7MKk2tjmlixJAbM3znuoe10os=",
1304 "write": {
1305 "version": "1.0.3",
1306 "resolved": "https://registry.npmjs.org/write/-/write-1.0.3.tgz",
1307 "integrity": "sha512-/lg70HAjtkUgWPVZhZcm+T4hkL8Zbtp1nFNOn3lRrxnlv50SRBv7cR7RqR+GMsd3hUXy9hWBo4CHTbFTcOYwig==",
465 1308 "dev": true,
466 1309 "requires": {
467 "object-keys": "~0.4.0"
1310 "mkdirp": "^0.5.1"
468 1311 }
469 1312 }
470 1313 }
471 1314 }
@@ -1,35 +1,34
1 1 {
2 2 "name": "@implab/core",
3 3 "version": "0.0.1-dev",
4 4 "description": "Dependency injection, logging, simple and fast text template engine",
5 5 "main": "main.js",
6 6 "keywords": [
7 7 "di",
8 8 "ioc",
9 9 "logging",
10 10 "template engine",
11 11 "dependency injection"
12 12 ],
13 13 "author": "Implab team",
14 14 "license": "BSD-2-Clause",
15 15 "repository": "https://bitbucket.org/implab/implabjs",
16 16 "publishConfig": {
17 17 "access": "public"
18 18 },
19 19 "peerDependencies": {
20 "dojo": "^1.10.0",
21 "tslib": "latest"
20 "dojo": "^1.10.0"
22 21 },
23 22 "devDependencies": {
24 "@types/node": "latest",
25 "@types/requirejs": "latest",
26 "@types/tape": "latest",
27 "dojo": "^1.10.0",
28 "faucet": "latest",
23 "@types/node": "^8.0.0",
24 "@types/requirejs": "~2.1.31",
25 "@types/tape": "~4.2.33",
26 "dojo": "~1.10.0",
27 "dojo-typings": "^1.11.9",
29 28 "requirejs": "latest",
30 "tape": "^4.9.2",
31 "tslib": "latest",
32 "typescript": "latest"
33 },
34 "types": "main.d.ts"
29 "tape": "~4.11.0",
30 "typescript": "~3.6.4",
31 "eslint": "6.1.0",
32 "tslint": "5.18.0"
33 }
35 34 }
@@ -1,45 +1,45
1 1 import { Uuid } from "../Uuid";
2 2 import { argumentNotEmptyString, getGlobal } from "../safe";
3 3 import { TraceSource } from "../log/TraceSource";
4 4 import m = require("module");
5 5
6 6 const sandboxId = Uuid();
7 define(sandboxId, ["require"], r => r);
7 define(sandboxId, ["require"], (r: any) => r);
8 8
9 9 const globalRequire = getGlobal().require as Require || requirejs;
10 10
11 11 const trace = TraceSource.get(m.id);
12 12 trace.debug("globalRequire = {0}", globalRequire);
13 13
14 14 class ModuleResolver {
15 15 _base: string;
16 16 _require: Require;
17 17
18 18 constructor(req: Require, base?: string) {
19 19 this._base = base;
20 20 this._require = req;
21 21 }
22 22
23 23 resolve(moduleName: string) {
24 24 argumentNotEmptyString(moduleName, "moduleName");
25 25 const resolvedName = moduleName[0] === "." && this._base ? [this._base, moduleName].join("/") : moduleName;
26 26 trace.debug(`${moduleName} -> ${resolvedName}`);
27 27
28 28 const req = this._require;
29 29
30 30 return new Promise<any>((cb, eb) => {
31 31 req([resolvedName], cb, eb);
32 32 });
33 33 }
34 34 }
35 35
36 36 export function makeResolver(moduleName: string, contextRequire: Require) {
37 37 const base = moduleName && moduleName.split("/").slice(0, -1).join("/");
38 38
39 39 const req = contextRequire || globalRequire;
40 40 if (!req)
41 41 throw new Error("A global require isn't defined, the contextRequire parameter is mandatory");
42 42
43 43 const resolver = new ModuleResolver(req, base);
44 44 return (id: string) => resolver.resolve(id);
45 45 }
@@ -1,16 +1,14
1 1 {
2 2 "extends": "../tsconfig",
3 3 "compilerOptions": {
4 4 "types": [
5 "requirejs"
5 "requirejs",
6 "dojo-typings"
6 7 ],
7 8 "rootDir": "ts",
8 9 "rootDirs": [
9 10 "ts",
10 "../typings/main"
11 "../main/ts"
11 12 ]
12 },
13 "include": [
14 "ts/**/*.ts"
15 ]
13 }
16 14 } No newline at end of file
@@ -1,43 +1,43
1 import { IActivatable, ICancellation, IActivationController } from "@implab/core/interfaces";
2 import { Cancellation } from "@implab/core/Cancellation";
1 import { IActivatable, ICancellation, IActivationController } from "../interfaces";
2 import { Cancellation } from "../Cancellation";
3 3
4 4 export class MockActivationController implements IActivationController {
5 5
6 6 _active: IActivatable = null;
7 7
8 8 getActive(): IActivatable {
9 9 return this._active;
10 10 }
11 11
12 12 async deactivate() {
13 13 if (this._active)
14 14 await this._active.deactivate();
15 15 this._active = null;
16 16 }
17 17
18 18 async activate(component: IActivatable) {
19 19 if (!component || component.isActive())
20 20 return;
21 21 component.setActivationController(this);
22 22
23 23 await component.activate();
24 24 }
25 25
26 26 async activating(component: IActivatable, ct: ICancellation = Cancellation.none) {
27 27 if (component !== this._active)
28 28 await this.deactivate();
29 29 }
30 30
31 31 async activated(component: IActivatable, ct: ICancellation = Cancellation.none) {
32 32 this._active = component;
33 33 }
34 34
35 35 async deactivating(component: IActivatable, ct: ICancellation = Cancellation.none) {
36 36
37 37 }
38 38
39 39 async deactivated(component: IActivatable, ct: ICancellation = Cancellation.none) {
40 40 if (this._active === component)
41 41 this._active = null;
42 42 }
43 43 }
@@ -1,52 +1,52
1 import {NullConsole} from "@implab/core/log/NullConsole";
1 import {NullConsole} from "../log/NullConsole";
2 2
3 3 interface ConsoleLineData {
4 4 level: string;
5 5 data: any[];
6 6 }
7 7
8 8 export class MockConsole extends NullConsole {
9 9 _buffer: ConsoleLineData[] = [];
10 10
11 11 debug(...args: any[]) {
12 12 this._buffer.push({
13 13 level: "debug",
14 14 data: args
15 15 });
16 16 }
17 17
18 18 log(...args: any[]) {
19 19 this._buffer.push({
20 20 level: "log",
21 21 data: args
22 22 });
23 23 }
24 24
25 25 warn(...args: any[]) {
26 26 this._buffer.push({
27 27 level: "warn",
28 28 data: args
29 29 });
30 30 }
31 31
32 32 error(...args: any[]) {
33 33 this._buffer.push({
34 34 level: "error",
35 35 data: args
36 36 });
37 37 }
38 38
39 39 getBuffer() {
40 40 return this._buffer;
41 41 }
42 42
43 43 getLine(i: number) {
44 44 if (i >= this._buffer.length)
45 45 throw new Error(`Line number ${i} is out of range, buffer.length = ${this._buffer.length}`);
46 46 return this._buffer[i].data;
47 47 }
48 48
49 49 clear() {
50 50 this._buffer = [];
51 51 }
52 52 }
@@ -1,6 +1,6
1 import { AsyncComponent } from "@implab/core/components/AsyncComponent";
2 import { ActivatableMixin } from "@implab/core/components/ActivatableMixin";
1 import { AsyncComponent } from "../components/AsyncComponent";
2 import { ActivatableMixin } from "../components/ActivatableMixin";
3 3
4 4 export class SimpleActivatable extends ActivatableMixin(AsyncComponent) {
5 5
6 6 }
@@ -1,15 +1,14
1 1 {
2 2 "extends": "../tsconfig",
3 3 "compilerOptions": {
4 4 "rootDir": "ts",
5 5 "baseUrl": ".",
6 "paths": {
7 "@implab/core/*": [
8 "../../build/dist/*"
9 ]
10 }
6 "rootDirs": [
7 "ts",
8 "../main/ts"
9 ]
11 10 },
12 11 "include" : [
13 12 "ts/**/*.ts"
14 13 ]
15 14 } No newline at end of file
@@ -1,10 +1,9
1 1 {
2 2 "compilerOptions": {
3 3 "moduleResolution": "node",
4 4 "noEmitOnError": true,
5 5 "listFiles": true,
6 6 "types": [],
7 "lib": ["es5", "es2015.promise", "es2015.symbol", "dom", "scripthost"]
8 },
9 "files": []
7 "lib": ["es5", "es2015.promise", "es2015.symbol", "es2015.iterable", "dom", "scripthost"]
8 }
10 9 } No newline at end of file
@@ -1,42 +1,43
1 1 {
2 2 "extends": "tslint:recommended",
3 "defaultSeverity": "warn",
3 4 "rules": {
4 5 "align": [
5 6 true,
6 7 "parameters",
7 8 "statements"
8 9 ],
9 10 "interface-name": [false],
10 11 "max-line-length": [ true, 185 ],
11 12 "member-access": false,
12 13 "member-ordering": [
13 14 false,
14 15 "variables-before-functions"
15 16 ],
16 17 "no-bitwise": false,
17 18 "no-empty": false,
18 19 "no-namespace": false,
19 20 "ordered-imports": false,
20 21 "no-return-await": true,
21 22 "no-floating-promises": true,
22 23 "prefer-for-of": false,
23 24 "one-line": [
24 25 true,
25 26 "check-open-brace",
26 27 "check-catch",
27 28 "check-whitespace"
28 29 ],
29 30 "object-literal-sort-keys": false,
30 31 "trailing-comma": [
31 32 true,
32 33 {
33 34 "singleline": "never",
34 35 "multiline": "never"
35 36 }
36 37 ],
37 38 "variable-name": false,
38 39 "curly": false,
39 40 "array-type": false,
40 41 "arrow-parens": [true, "ban-single-arg-parens"]
41 42 }
42 43 } No newline at end of file
1 NO CONTENT: file was removed
1 NO CONTENT: file was removed
1 NO CONTENT: file was removed
1 NO CONTENT: file was removed
1 NO CONTENT: file was removed
1 NO CONTENT: file was removed
1 NO CONTENT: file was removed
1 NO CONTENT: file was removed
1 NO CONTENT: file was removed
1 NO CONTENT: file was removed
1 NO CONTENT: file was removed
1 NO CONTENT: file was removed
1 NO CONTENT: file was removed
1 NO CONTENT: file was removed
1 NO CONTENT: file was removed
1 NO CONTENT: file was removed
1 NO CONTENT: file was removed
General Comments 0
You need to be logged in to leave comments. Login now