├── .eslintignore
├── src
├── noop.js
├── identity.js
├── constant.js
├── rethrow.js
├── array.js
├── generatorish.js
├── index.js
├── errors.js
├── load.js
├── module.js
├── variable.js
└── runtime.js
├── .gitignore
├── test
├── .eslintrc.json
├── variable
│ ├── valueof.js
│ ├── delete-test.js
│ ├── derive-test.js
│ ├── import-test.js
│ └── define-test.js
├── require.html
├── dispose.html
├── dom.html
├── hello-world.html
├── module
│ ├── builtin-test.js
│ ├── redefine-test.js
│ └── value-test.js
├── tape.js
├── runtime
│ └── builtins-test.js
└── load-test.js
├── .eslintrc.json
├── runtime.sublime-project
├── .github
└── workflows
│ └── nodejs.yml
├── LICENSE
├── rollup.config.js
├── package.json
├── README.md
└── yarn.lock
/.eslintignore:
--------------------------------------------------------------------------------
1 | dist/
2 |
--------------------------------------------------------------------------------
/src/noop.js:
--------------------------------------------------------------------------------
1 | export default function() {}
2 |
--------------------------------------------------------------------------------
/src/identity.js:
--------------------------------------------------------------------------------
1 | export default function(x) {
2 | return x;
3 | }
4 |
--------------------------------------------------------------------------------
/src/constant.js:
--------------------------------------------------------------------------------
1 | export default function(x) {
2 | return function() {
3 | return x;
4 | };
5 | }
6 |
--------------------------------------------------------------------------------
/src/rethrow.js:
--------------------------------------------------------------------------------
1 | export default function(e) {
2 | return function() {
3 | throw e;
4 | };
5 | }
6 |
--------------------------------------------------------------------------------
/.gitignore:
--------------------------------------------------------------------------------
1 | *.sublime-workspace
2 | .DS_Store
3 | .esm-cache/
4 | dist/
5 | node_modules
6 | npm-debug.log
7 |
--------------------------------------------------------------------------------
/test/.eslintrc.json:
--------------------------------------------------------------------------------
1 | {
2 | "extends": "../.eslintrc.json",
3 | "rules": {
4 | "no-unreachable": 0
5 | }
6 | }
7 |
--------------------------------------------------------------------------------
/src/array.js:
--------------------------------------------------------------------------------
1 | var prototype = Array.prototype;
2 | export var map = prototype.map;
3 | export var forEach = prototype.forEach;
4 |
--------------------------------------------------------------------------------
/src/generatorish.js:
--------------------------------------------------------------------------------
1 | export default function generatorish(value) {
2 | return value
3 | && typeof value.next === "function"
4 | && typeof value.return === "function";
5 | }
6 |
--------------------------------------------------------------------------------
/test/variable/valueof.js:
--------------------------------------------------------------------------------
1 | export default async function valueof(variable) {
2 | await variable._module._runtime._compute();
3 | try { return {value: await variable._promise}; }
4 | catch (error) { return {error: error.toString()}; }
5 | }
6 |
--------------------------------------------------------------------------------
/src/index.js:
--------------------------------------------------------------------------------
1 | import {Inspector} from "@observablehq/inspector";
2 | import {Library} from "@observablehq/stdlib";
3 | import {RuntimeError} from "./errors";
4 | import Runtime from "./runtime";
5 |
6 | export {Inspector, Library, Runtime, RuntimeError};
7 |
--------------------------------------------------------------------------------
/src/errors.js:
--------------------------------------------------------------------------------
1 | export function RuntimeError(message, input) {
2 | this.message = message + "";
3 | this.input = input;
4 | }
5 |
6 | RuntimeError.prototype = Object.create(Error.prototype);
7 | RuntimeError.prototype.name = "RuntimeError";
8 | RuntimeError.prototype.constructor = RuntimeError;
9 |
--------------------------------------------------------------------------------
/.eslintrc.json:
--------------------------------------------------------------------------------
1 | {
2 | "extends": "eslint:recommended",
3 | "parserOptions": {
4 | "sourceType": "module",
5 | "ecmaVersion": 8
6 | },
7 | "env": {
8 | "browser": true,
9 | "es6": true,
10 | "node": true
11 | },
12 | "rules": {
13 | "semi": 2,
14 | "no-process-env": 2,
15 | "no-cond-assign": 0,
16 | "no-redeclare": 0
17 | }
18 | }
19 |
--------------------------------------------------------------------------------
/runtime.sublime-project:
--------------------------------------------------------------------------------
1 | {
2 | "folders": [
3 | {
4 | "path": ".",
5 | "file_exclude_patterns": ["*.sublime-workspace"],
6 | "folder_exclude_patterns": [".esm-cache", "dist"]
7 | }
8 | ],
9 | "build_systems": [
10 | {
11 | "name": "yarn test",
12 | "cmd": ["yarn", "test"],
13 | "file_regex": "\\((...*?):([0-9]*):([0-9]*)\\)",
14 | "working_dir": "$project_path"
15 | }
16 | ]
17 | }
18 |
--------------------------------------------------------------------------------
/test/require.html:
--------------------------------------------------------------------------------
1 |
2 |
3 | `
155 | }
156 | ]
157 | }
158 | ]
159 | }, null, ({name}) => {
160 | if (name === "foo") return {fulfilled};
161 | });
162 | test.equals((await value).outerHTML, '
');
163 | });
164 |
--------------------------------------------------------------------------------
/src/module.js:
--------------------------------------------------------------------------------
1 | import {forEach} from "./array";
2 | import constant from "./constant";
3 | import {RuntimeError} from "./errors";
4 | import identity from "./identity";
5 | import rethrow from "./rethrow";
6 | import {variable_invalidation, variable_visibility} from "./runtime";
7 | import Variable, {TYPE_DUPLICATE, TYPE_IMPLICIT, TYPE_NORMAL, no_observer} from "./variable";
8 |
9 | export default function Module(runtime, builtins = []) {
10 | Object.defineProperties(this, {
11 | _runtime: {value: runtime},
12 | _scope: {value: new Map},
13 | _builtins: {value: new Map([
14 | ["invalidation", variable_invalidation],
15 | ["visibility", variable_visibility],
16 | ...builtins
17 | ])},
18 | _source: {value: null, writable: true}
19 | });
20 | }
21 |
22 | Object.defineProperties(Module.prototype, {
23 | _copy: {value: module_copy, writable: true, configurable: true},
24 | _resolve: {value: module_resolve, writable: true, configurable: true},
25 | redefine: {value: module_redefine, writable: true, configurable: true},
26 | define: {value: module_define, writable: true, configurable: true},
27 | derive: {value: module_derive, writable: true, configurable: true},
28 | import: {value: module_import, writable: true, configurable: true},
29 | value: {value: module_value, writable: true, configurable: true},
30 | variable: {value: module_variable, writable: true, configurable: true},
31 | builtin: {value: module_builtin, writable: true, configurable: true}
32 | });
33 |
34 | function module_redefine(name) {
35 | var v = this._scope.get(name);
36 | if (!v) throw new RuntimeError(name + " is not defined");
37 | if (v._type === TYPE_DUPLICATE) throw new RuntimeError(name + " is defined more than once");
38 | return v.define.apply(v, arguments);
39 | }
40 |
41 | function module_define() {
42 | var v = new Variable(TYPE_NORMAL, this);
43 | return v.define.apply(v, arguments);
44 | }
45 |
46 | function module_import() {
47 | var v = new Variable(TYPE_NORMAL, this);
48 | return v.import.apply(v, arguments);
49 | }
50 |
51 | function module_variable(observer) {
52 | return new Variable(TYPE_NORMAL, this, observer);
53 | }
54 |
55 | async function module_value(name) {
56 | var v = this._scope.get(name);
57 | if (!v) throw new RuntimeError(name + " is not defined");
58 | if (v._observer === no_observer) {
59 | v._observer = true;
60 | this._runtime._dirty.add(v);
61 | }
62 | await this._runtime._compute();
63 | return v._promise;
64 | }
65 |
66 | function module_derive(injects, injectModule) {
67 | var copy = new Module(this._runtime, this._builtins);
68 | copy._source = this;
69 | forEach.call(injects, function(inject) {
70 | if (typeof inject !== "object") inject = {name: inject + ""};
71 | if (inject.alias == null) inject.alias = inject.name;
72 | copy.import(inject.name, inject.alias, injectModule);
73 | });
74 | Promise.resolve().then(() => {
75 | const modules = new Set([this]);
76 | for (const module of modules) {
77 | for (const variable of module._scope.values()) {
78 | if (variable._definition === identity) { // import
79 | const module = variable._inputs[0]._module;
80 | const source = module._source || module;
81 | if (source === this) { // circular import-with!
82 | console.warn("circular module definition; ignoring"); // eslint-disable-line no-console
83 | return;
84 | }
85 | modules.add(source);
86 | }
87 | }
88 | }
89 | this._copy(copy, new Map);
90 | });
91 | return copy;
92 | }
93 |
94 | function module_copy(copy, map) {
95 | copy._source = this;
96 | map.set(this, copy);
97 | for (const [name, source] of this._scope) {
98 | var target = copy._scope.get(name);
99 | if (target && target._type === TYPE_NORMAL) continue; // injection
100 | if (source._definition === identity) { // import
101 | var sourceInput = source._inputs[0],
102 | sourceModule = sourceInput._module;
103 | copy.import(sourceInput._name, name, map.get(sourceModule)
104 | || (sourceModule._source
105 | ? sourceModule._copy(new Module(copy._runtime, copy._builtins), map) // import-with
106 | : sourceModule));
107 | } else {
108 | copy.define(name, source._inputs.map(variable_name), source._definition);
109 | }
110 | }
111 | return copy;
112 | }
113 |
114 | function module_resolve(name) {
115 | var variable = this._scope.get(name), value;
116 | if (!variable) {
117 | variable = new Variable(TYPE_IMPLICIT, this);
118 | if (this._builtins.has(name)) {
119 | variable.define(name, constant(this._builtins.get(name)));
120 | } else if (this._runtime._builtin._scope.has(name)) {
121 | variable.import(name, this._runtime._builtin);
122 | } else {
123 | try {
124 | value = this._runtime._global(name);
125 | } catch (error) {
126 | return variable.define(name, rethrow(error));
127 | }
128 | if (value === undefined) {
129 | this._scope.set(variable._name = name, variable);
130 | } else {
131 | variable.define(name, constant(value));
132 | }
133 | }
134 | }
135 | return variable;
136 | }
137 |
138 | function module_builtin(name, value) {
139 | this._builtins.set(name, value);
140 | }
141 |
142 | function variable_name(variable) {
143 | return variable._name;
144 | }
145 |
--------------------------------------------------------------------------------
/test/variable/import-test.js:
--------------------------------------------------------------------------------
1 | import {Runtime} from "../../src/";
2 | import tape from "../tape";
3 | import valueof from "./valueof";
4 |
5 | tape("variable.import(name, module) imports a variable from another module", async test => {
6 | const runtime = new Runtime();
7 | const main = runtime.module();
8 | const module = runtime.module();
9 | module.define("foo", [], () => 42);
10 | main.import("foo", module);
11 | const bar = main.variable(true).define("bar", ["foo"], foo => `bar-${foo}`);
12 | test.deepEqual(await valueof(bar), {value: "bar-42"});
13 | });
14 |
15 | tape("variable.import(name, alias, module) imports a variable from another module under an alias", async test => {
16 | const runtime = new Runtime();
17 | const main = runtime.module();
18 | const module = runtime.module();
19 | module.define("foo", [], () => 42);
20 | main.import("foo", "baz", module);
21 | const bar = main.variable(true).define("bar", ["baz"], baz => `bar-${baz}`);
22 | test.deepEqual(await valueof(bar), {value: "bar-42"});
23 | });
24 |
25 | tape("variable.import(name, module) does not compute the imported variable unless referenced", async test => {
26 | const runtime = new Runtime();
27 | const main = runtime.module();
28 | const module = runtime.module();
29 | const foo = module.define("foo", [], () => test.fail());
30 | main.import("foo", module);
31 | await runtime._computing;
32 | test.equal(foo._reachable, false);
33 | });
34 |
35 | tape("variable.import(name, module) can import a variable that depends on a mutable from another module", async test => {
36 | const runtime = new Runtime();
37 | const main = runtime.module();
38 | const module = runtime.module();
39 | module.define("mutable foo", [], () => 13);
40 | module.define("bar", ["mutable foo"], (foo) => foo);
41 | main.import("bar", module);
42 | const baz = main.variable(true).define("baz", ["bar"], bar => `baz-${bar}`);
43 | test.deepEqual(await valueof(baz), {value: "baz-13"});
44 | });
45 |
46 | tape("variable.import() allows non-circular imported values from circular imports", async test => {
47 | const runtime = new Runtime();
48 | const a = runtime.module();
49 | const b = runtime.module();
50 | a.define("foo", [], () => "foo");
51 | b.define("bar", [], () => "bar");
52 | a.import("bar", b);
53 | b.import("foo", a);
54 | const afoobar = a.variable(true).define("foobar", ["foo", "bar"], (foo, bar) => 'a' + foo + bar);
55 | const bfoobar = b.variable(true).define("foobar", ["foo", "bar"], (foo, bar) => 'b' + foo + bar);
56 | test.deepEqual(await valueof(afoobar), {value: "afoobar"});
57 | test.deepEqual(await valueof(bfoobar), {value: "bfoobar"});
58 | });
59 |
60 | tape("variable.import() fails when importing creates a circular reference", async test => {
61 | const runtime = new Runtime();
62 | const a = runtime.module();
63 | const b = runtime.module();
64 | a.import("bar", b);
65 | a.define("foo", ["bar"], (bar) => `foo${bar}`);
66 | b.import("foo", a);
67 | b.define("bar", ["foo"], (foo) => `${foo}bar`);
68 | const afoobar = a.variable(true).define("foobar", ["foo", "bar"], (foo, bar) => 'a' + foo + bar);
69 | const bbarfoo = b.variable(true).define("barfoo", ["bar", "foo"], (bar, foo) => 'b' + bar + foo);
70 | test.deepEqual(await valueof(afoobar), {error: "RuntimeError: foo could not be resolved"});
71 | test.deepEqual(await valueof(bbarfoo), {error: "RuntimeError: bar could not be resolved"});
72 | });
73 |
74 | tape(
75 | "variable.import() fails to resolve variables derived from a direct circular import with",
76 | async test => {
77 | const runtime = new Runtime();
78 | let a1, b1, a2, b2;
79 |
80 | function define1() {
81 | const main = runtime.module();
82 | a1 = main.variable(true).define("a", function() {
83 | return 1;
84 | });
85 | b1 = main.variable(true).define(["b"], function(b) {
86 | return b;
87 | });
88 | const child1 = runtime.module(define2).derive(["a"], main);
89 | main.import("b", child1);
90 | return main;
91 | }
92 |
93 | function define2() {
94 | const main = runtime.module();
95 | b2 = main.variable(true).define("b", function() {
96 | return 2;
97 | });
98 | a2 = main.variable(true).define(["a"], function(a) {
99 | return a;
100 | });
101 | const child1 = runtime.module(define1).derive(["b"], main);
102 | main.import("a", child1);
103 | return main;
104 | }
105 | define1();
106 |
107 | test.deepEqual(await valueof(a1), {value: 1});
108 | test.deepEqual(await valueof(b1), {error: 'RuntimeError: b could not be resolved'});
109 | test.deepEqual(await valueof(a2), {error: 'RuntimeError: a could not be resolved'});
110 | test.deepEqual(await valueof(b2), {value: 2});
111 | }
112 | );
113 |
114 | tape(
115 | "variable.import() also fails to resolve variables derived from an indirectly circular import with",
116 | async test => {
117 | const runtime = new Runtime();
118 | let a, b, c, importA, importB, importC;
119 |
120 | function define1() {
121 | const main = runtime.module();
122 | a = main.variable(true).define("a", function() {
123 | return 1;
124 | });
125 | importC = main.variable(true).define(["c"], function(c) {
126 | return c;
127 | });
128 | const child3 = runtime.module(define3).derive(["a"], main);
129 | main.import("c", child3);
130 | return main;
131 | }
132 |
133 | function define2() {
134 | const main = runtime.module();
135 | b = main.variable(true).define("b", function() {
136 | return 2;
137 | });
138 | importA = main.variable(true).define(["a"], function(a) {
139 | return a;
140 | });
141 | const child1 = runtime.module(define1).derive(["b"], main);
142 | main.import("a", child1);
143 | return main;
144 | }
145 |
146 | function define3() {
147 | const main = runtime.module();
148 | c = main.variable(true).define("c", function() {
149 | return 3;
150 | });
151 | importB = main.variable(true).define(["b"], function(b) {
152 | return b;
153 | });
154 | const child2 = runtime.module(define2).derive(["c"], main);
155 | main.import("b", child2);
156 | return main;
157 | }
158 |
159 | define1();
160 |
161 | test.deepEqual(await valueof(a), {value: 1});
162 | test.deepEqual(await valueof(b), {value: 2});
163 | test.deepEqual(await valueof(c), {value: 3});
164 | test.deepEqual(await valueof(importA), {error: 'RuntimeError: a could not be resolved'});
165 | test.deepEqual(await valueof(importB), {error: 'RuntimeError: b could not be resolved'});
166 | test.deepEqual(await valueof(importC), {error: 'RuntimeError: c could not be resolved'});
167 | }
168 | );
169 |
--------------------------------------------------------------------------------
/src/variable.js:
--------------------------------------------------------------------------------
1 | import {map} from "./array";
2 | import constant from "./constant";
3 | import {RuntimeError} from "./errors";
4 | import identity from "./identity";
5 | import noop from "./noop";
6 |
7 | export var TYPE_NORMAL = 1; // a normal variable
8 | export var TYPE_IMPLICIT = 2; // created on reference
9 | export var TYPE_DUPLICATE = 3; // created on duplicate definition
10 |
11 | export var no_observer = {};
12 |
13 | export default function Variable(type, module, observer) {
14 | if (observer == null) observer = no_observer;
15 | Object.defineProperties(this, {
16 | _observer: {value: observer, writable: true},
17 | _definition: {value: variable_undefined, writable: true},
18 | _duplicate: {value: undefined, writable: true},
19 | _duplicates: {value: undefined, writable: true},
20 | _indegree: {value: NaN, writable: true}, // The number of computing inputs.
21 | _inputs: {value: [], writable: true},
22 | _invalidate: {value: noop, writable: true},
23 | _module: {value: module},
24 | _name: {value: null, writable: true},
25 | _outputs: {value: new Set, writable: true},
26 | _promise: {value: Promise.resolve(undefined), writable: true},
27 | _reachable: {value: observer !== no_observer, writable: true}, // Is this variable transitively visible?
28 | _rejector: {value: variable_rejector(this)},
29 | _type: {value: type},
30 | _value: {value: undefined, writable: true},
31 | _version: {value: 0, writable: true}
32 | });
33 | }
34 |
35 | Object.defineProperties(Variable.prototype, {
36 | _pending: {value: variable_pending, writable: true, configurable: true},
37 | _fulfilled: {value: variable_fulfilled, writable: true, configurable: true},
38 | _rejected: {value: variable_rejected, writable: true, configurable: true},
39 | define: {value: variable_define, writable: true, configurable: true},
40 | delete: {value: variable_delete, writable: true, configurable: true},
41 | import: {value: variable_import, writable: true, configurable: true}
42 | });
43 |
44 | function variable_attach(variable) {
45 | variable._module._runtime._dirty.add(variable);
46 | variable._outputs.add(this);
47 | }
48 |
49 | function variable_detach(variable) {
50 | variable._module._runtime._dirty.add(variable);
51 | variable._outputs.delete(this);
52 | }
53 |
54 | function variable_undefined() {
55 | throw variable_undefined;
56 | }
57 |
58 | function variable_rejector(variable) {
59 | return function(error) {
60 | if (error === variable_undefined) throw new RuntimeError(variable._name + " is not defined", variable._name);
61 | throw new RuntimeError(variable._name + " could not be resolved", variable._name);
62 | };
63 | }
64 |
65 | function variable_duplicate(name) {
66 | return function() {
67 | throw new RuntimeError(name + " is defined more than once");
68 | };
69 | }
70 |
71 | function variable_define(name, inputs, definition) {
72 | switch (arguments.length) {
73 | case 1: {
74 | definition = name, name = inputs = null;
75 | break;
76 | }
77 | case 2: {
78 | definition = inputs;
79 | if (typeof name === "string") inputs = null;
80 | else inputs = name, name = null;
81 | break;
82 | }
83 | }
84 | return variable_defineImpl.call(this,
85 | name == null ? null : name + "",
86 | inputs == null ? [] : map.call(inputs, this._module._resolve, this._module),
87 | typeof definition === "function" ? definition : constant(definition)
88 | );
89 | }
90 |
91 | function variable_defineImpl(name, inputs, definition) {
92 | var scope = this._module._scope, runtime = this._module._runtime;
93 |
94 | this._inputs.forEach(variable_detach, this);
95 | inputs.forEach(variable_attach, this);
96 | this._inputs = inputs;
97 | this._definition = definition;
98 | this._value = undefined;
99 |
100 | // Is this an active variable (that may require disposal)?
101 | if (definition === noop) runtime._variables.delete(this);
102 | else runtime._variables.add(this);
103 |
104 | // Did the variable’s name change? Time to patch references!
105 | if (name == this._name && scope.get(name) === this) {
106 | this._outputs.forEach(runtime._updates.add, runtime._updates);
107 | } else {
108 | var error, found;
109 |
110 | if (this._name) { // Did this variable previously have a name?
111 | if (this._outputs.size) { // And did other variables reference this variable?
112 | scope.delete(this._name);
113 | found = this._module._resolve(this._name);
114 | found._outputs = this._outputs, this._outputs = new Set;
115 | found._outputs.forEach(function(output) { output._inputs[output._inputs.indexOf(this)] = found; }, this);
116 | found._outputs.forEach(runtime._updates.add, runtime._updates);
117 | runtime._dirty.add(found).add(this);
118 | scope.set(this._name, found);
119 | } else if ((found = scope.get(this._name)) === this) { // Do no other variables reference this variable?
120 | scope.delete(this._name); // It’s safe to delete!
121 | } else if (found._type === TYPE_DUPLICATE) { // Do other variables assign this name?
122 | found._duplicates.delete(this); // This variable no longer assigns this name.
123 | this._duplicate = undefined;
124 | if (found._duplicates.size === 1) { // Is there now only one variable assigning this name?
125 | found = found._duplicates.keys().next().value; // Any references are now fixed!
126 | error = scope.get(this._name);
127 | found._outputs = error._outputs, error._outputs = new Set;
128 | found._outputs.forEach(function(output) { output._inputs[output._inputs.indexOf(error)] = found; });
129 | found._definition = found._duplicate, found._duplicate = undefined;
130 | runtime._dirty.add(error).add(found);
131 | runtime._updates.add(found);
132 | scope.set(this._name, found);
133 | }
134 | } else {
135 | throw new Error;
136 | }
137 | }
138 |
139 | if (this._outputs.size) throw new Error;
140 |
141 | if (name) { // Does this variable have a new name?
142 | if (found = scope.get(name)) { // Do other variables reference or assign this name?
143 | if (found._type === TYPE_DUPLICATE) { // Do multiple other variables already define this name?
144 | this._definition = variable_duplicate(name), this._duplicate = definition;
145 | found._duplicates.add(this);
146 | } else if (found._type === TYPE_IMPLICIT) { // Are the variable references broken?
147 | this._outputs = found._outputs, found._outputs = new Set; // Now they’re fixed!
148 | this._outputs.forEach(function(output) { output._inputs[output._inputs.indexOf(found)] = this; }, this);
149 | runtime._dirty.add(found).add(this);
150 | scope.set(name, this);
151 | } else { // Does another variable define this name?
152 | found._duplicate = found._definition, this._duplicate = definition; // Now they’re duplicates.
153 | error = new Variable(TYPE_DUPLICATE, this._module);
154 | error._name = name;
155 | error._definition = this._definition = found._definition = variable_duplicate(name);
156 | error._outputs = found._outputs, found._outputs = new Set;
157 | error._outputs.forEach(function(output) { output._inputs[output._inputs.indexOf(found)] = error; });
158 | error._duplicates = new Set([this, found]);
159 | runtime._dirty.add(found).add(error);
160 | runtime._updates.add(found).add(error);
161 | scope.set(name, error);
162 | }
163 | } else {
164 | scope.set(name, this);
165 | }
166 | }
167 |
168 | this._name = name;
169 | }
170 |
171 | runtime._updates.add(this);
172 | runtime._compute();
173 | return this;
174 | }
175 |
176 | function variable_import(remote, name, module) {
177 | if (arguments.length < 3) module = name, name = remote;
178 | return variable_defineImpl.call(this, name + "", [module._resolve(remote + "")], identity);
179 | }
180 |
181 | function variable_delete() {
182 | return variable_defineImpl.call(this, null, [], noop);
183 | }
184 |
185 | function variable_pending() {
186 | if (this._observer.pending) this._observer.pending();
187 | }
188 |
189 | function variable_fulfilled(value) {
190 | if (this._observer.fulfilled) this._observer.fulfilled(value, this._name);
191 | }
192 |
193 | function variable_rejected(error) {
194 | if (this._observer.rejected) this._observer.rejected(error, this._name);
195 | }
196 |
--------------------------------------------------------------------------------
/src/runtime.js:
--------------------------------------------------------------------------------
1 | import {Library, FileAttachments} from "@observablehq/stdlib";
2 | import {RuntimeError} from "./errors";
3 | import generatorish from "./generatorish";
4 | import load from "./load";
5 | import Module from "./module";
6 | import noop from "./noop";
7 | import Variable, {TYPE_IMPLICIT, no_observer} from "./variable";
8 |
9 | const frame = typeof requestAnimationFrame === "function" ? requestAnimationFrame : setImmediate;
10 |
11 | export var variable_invalidation = {};
12 | export var variable_visibility = {};
13 |
14 | export default function Runtime(builtins = new Library, global = window_global) {
15 | var builtin = this.module();
16 | Object.defineProperties(this, {
17 | _dirty: {value: new Set},
18 | _updates: {value: new Set},
19 | _computing: {value: null, writable: true},
20 | _init: {value: null, writable: true},
21 | _modules: {value: new Map},
22 | _variables: {value: new Set},
23 | _disposed: {value: false, writable: true},
24 | _builtin: {value: builtin},
25 | _global: {value: global}
26 | });
27 | if (builtins) for (var name in builtins) {
28 | (new Variable(TYPE_IMPLICIT, builtin)).define(name, [], builtins[name]);
29 | }
30 | }
31 |
32 | Object.defineProperties(Runtime, {
33 | load: {value: load, writable: true, configurable: true}
34 | });
35 |
36 | Object.defineProperties(Runtime.prototype, {
37 | _compute: {value: runtime_compute, writable: true, configurable: true},
38 | _computeSoon: {value: runtime_computeSoon, writable: true, configurable: true},
39 | _computeNow: {value: runtime_computeNow, writable: true, configurable: true},
40 | dispose: {value: runtime_dispose, writable: true, configurable: true},
41 | module: {value: runtime_module, writable: true, configurable: true},
42 | fileAttachments: {value: FileAttachments, writable: true, configurable: true}
43 | });
44 |
45 | function runtime_dispose() {
46 | this._computing = Promise.resolve();
47 | this._disposed = true;
48 | this._variables.forEach(v => {
49 | v._invalidate();
50 | v._version = NaN;
51 | });
52 | }
53 |
54 | function runtime_module(define, observer = noop) {
55 | let module;
56 | if (define === undefined) {
57 | if (module = this._init) {
58 | this._init = null;
59 | return module;
60 | }
61 | return new Module(this);
62 | }
63 | module = this._modules.get(define);
64 | if (module) return module;
65 | this._init = module = new Module(this);
66 | this._modules.set(define, module);
67 | try {
68 | define(this, observer);
69 | } finally {
70 | this._init = null;
71 | }
72 | return module;
73 | }
74 |
75 | function runtime_compute() {
76 | return this._computing || (this._computing = this._computeSoon());
77 | }
78 |
79 | function runtime_computeSoon() {
80 | var runtime = this;
81 | return new Promise(function(resolve) {
82 | frame(function() {
83 | resolve();
84 | runtime._disposed || runtime._computeNow();
85 | });
86 | });
87 | }
88 |
89 | function runtime_computeNow() {
90 | var queue = [],
91 | variables,
92 | variable;
93 |
94 | // Compute the reachability of the transitive closure of dirty variables.
95 | // Any newly-reachable variable must also be recomputed.
96 | // Any no-longer-reachable variable must be terminated.
97 | variables = new Set(this._dirty);
98 | variables.forEach(function(variable) {
99 | variable._inputs.forEach(variables.add, variables);
100 | const reachable = variable_reachable(variable);
101 | if (reachable > variable._reachable) {
102 | this._updates.add(variable);
103 | } else if (reachable < variable._reachable) {
104 | variable._invalidate();
105 | }
106 | variable._reachable = reachable;
107 | }, this);
108 |
109 | // Compute the transitive closure of updating, reachable variables.
110 | variables = new Set(this._updates);
111 | variables.forEach(function(variable) {
112 | if (variable._reachable) {
113 | variable._indegree = 0;
114 | variable._outputs.forEach(variables.add, variables);
115 | } else {
116 | variable._indegree = NaN;
117 | variables.delete(variable);
118 | }
119 | });
120 |
121 | this._computing = null;
122 | this._updates.clear();
123 | this._dirty.clear();
124 |
125 | // Compute the indegree of updating variables.
126 | variables.forEach(function(variable) {
127 | variable._outputs.forEach(variable_increment);
128 | });
129 |
130 | do {
131 | // Identify the root variables (those with no updating inputs).
132 | variables.forEach(function(variable) {
133 | if (variable._indegree === 0) {
134 | queue.push(variable);
135 | }
136 | });
137 |
138 | // Compute the variables in topological order.
139 | while (variable = queue.pop()) {
140 | variable_compute(variable);
141 | variable._outputs.forEach(postqueue);
142 | variables.delete(variable);
143 | }
144 |
145 | // Any remaining variables are circular, or depend on them.
146 | variables.forEach(function(variable) {
147 | if (variable_circular(variable)) {
148 | variable_error(variable, new RuntimeError("circular definition"));
149 | variable._outputs.forEach(variable_decrement);
150 | variables.delete(variable);
151 | }
152 | });
153 | } while (variables.size);
154 |
155 | function postqueue(variable) {
156 | if (--variable._indegree === 0) {
157 | queue.push(variable);
158 | }
159 | }
160 | }
161 |
162 | function variable_circular(variable) {
163 | const inputs = new Set(variable._inputs);
164 | for (const i of inputs) {
165 | if (i === variable) return true;
166 | i._inputs.forEach(inputs.add, inputs);
167 | }
168 | return false;
169 | }
170 |
171 | function variable_increment(variable) {
172 | ++variable._indegree;
173 | }
174 |
175 | function variable_decrement(variable) {
176 | --variable._indegree;
177 | }
178 |
179 | function variable_value(variable) {
180 | return variable._promise.catch(variable._rejector);
181 | }
182 |
183 | function variable_invalidator(variable) {
184 | return new Promise(function(resolve) {
185 | variable._invalidate = resolve;
186 | });
187 | }
188 |
189 | function variable_intersector(invalidation, variable) {
190 | let node = typeof IntersectionObserver === "function" && variable._observer && variable._observer._node;
191 | let visible = !node, resolve = noop, reject = noop, promise, observer;
192 | if (node) {
193 | observer = new IntersectionObserver(([entry]) => (visible = entry.isIntersecting) && (promise = null, resolve()));
194 | observer.observe(node);
195 | invalidation.then(() => (observer.disconnect(), observer = null, reject()));
196 | }
197 | return function(value) {
198 | if (visible) return Promise.resolve(value);
199 | if (!observer) return Promise.reject();
200 | if (!promise) promise = new Promise((y, n) => (resolve = y, reject = n));
201 | return promise.then(() => value);
202 | };
203 | }
204 |
205 | function variable_compute(variable) {
206 | variable._invalidate();
207 | variable._invalidate = noop;
208 | variable._pending();
209 | var value0 = variable._value,
210 | version = ++variable._version,
211 | invalidation = null,
212 | promise = variable._promise = Promise.all(variable._inputs.map(variable_value)).then(function(inputs) {
213 | if (variable._version !== version) return;
214 |
215 | // Replace any reference to invalidation with the promise, lazily.
216 | for (var i = 0, n = inputs.length; i < n; ++i) {
217 | switch (inputs[i]) {
218 | case variable_invalidation: {
219 | inputs[i] = invalidation = variable_invalidator(variable);
220 | break;
221 | }
222 | case variable_visibility: {
223 | if (!invalidation) invalidation = variable_invalidator(variable);
224 | inputs[i] = variable_intersector(invalidation, variable);
225 | break;
226 | }
227 | }
228 | }
229 |
230 | // Compute the initial value of the variable.
231 | return variable._definition.apply(value0, inputs);
232 | }).then(function(value) {
233 | // If the value is a generator, then retrieve its first value,
234 | // and dispose of the generator if the variable is invalidated.
235 | // Note that the cell may already have been invalidated here,
236 | // in which case we need to terminate the generator immediately!
237 | if (generatorish(value)) {
238 | if (variable._version !== version) return void value.return();
239 | (invalidation || variable_invalidator(variable)).then(variable_return(value));
240 | return variable_precompute(variable, version, promise, value);
241 | }
242 | return value;
243 | });
244 | promise.then(function(value) {
245 | if (variable._version !== version) return;
246 | variable._value = value;
247 | variable._fulfilled(value);
248 | }, function(error) {
249 | if (variable._version !== version) return;
250 | variable._value = undefined;
251 | variable._rejected(error);
252 | });
253 | }
254 |
255 | function variable_precompute(variable, version, promise, generator) {
256 | function recompute() {
257 | var promise = new Promise(function(resolve) {
258 | resolve(generator.next());
259 | }).then(function(next) {
260 | return next.done ? undefined : Promise.resolve(next.value).then(function(value) {
261 | if (variable._version !== version) return;
262 | variable_postrecompute(variable, value, promise).then(recompute);
263 | variable._fulfilled(value);
264 | return value;
265 | });
266 | });
267 | promise.catch(function(error) {
268 | if (variable._version !== version) return;
269 | variable_postrecompute(variable, undefined, promise);
270 | variable._rejected(error);
271 | });
272 | }
273 | return new Promise(function(resolve) {
274 | resolve(generator.next());
275 | }).then(function(next) {
276 | if (next.done) return;
277 | promise.then(recompute);
278 | return next.value;
279 | });
280 | }
281 |
282 | function variable_postrecompute(variable, value, promise) {
283 | var runtime = variable._module._runtime;
284 | variable._value = value;
285 | variable._promise = promise;
286 | variable._outputs.forEach(runtime._updates.add, runtime._updates); // TODO Cleaner?
287 | return runtime._compute();
288 | }
289 |
290 | function variable_error(variable, error) {
291 | variable._invalidate();
292 | variable._invalidate = noop;
293 | variable._pending();
294 | ++variable._version;
295 | variable._indegree = NaN;
296 | (variable._promise = Promise.reject(error)).catch(noop);
297 | variable._value = undefined;
298 | variable._rejected(error);
299 | }
300 |
301 | function variable_return(generator) {
302 | return function() {
303 | generator.return();
304 | };
305 | }
306 |
307 | function variable_reachable(variable) {
308 | if (variable._observer !== no_observer) return true; // Directly reachable.
309 | var outputs = new Set(variable._outputs);
310 | for (const output of outputs) {
311 | if (output._observer !== no_observer) return true;
312 | output._outputs.forEach(outputs.add, outputs);
313 | }
314 | return false;
315 | }
316 |
317 | function window_global(name) {
318 | return window[name];
319 | }
320 |
--------------------------------------------------------------------------------
/README.md:
--------------------------------------------------------------------------------
1 | # @observablehq/runtime
2 |
3 | [](https://github.com/observablehq/runtime/actions?workflow=Node+CI) [](https://greenkeeper.io/)
4 |
5 | The [Observable runtime](https://observablehq.com/@observablehq/how-observable-runs) lets you run Observable notebooks as true reactive programs [in any JavaScript environment](https://observablehq.com/@observablehq/downloading-and-embedding-notebooks): on your personal website, integrated into your web application or interactive dashboard. Take your notebook to any distant shore the web platform reaches.
6 |
7 | For example, to render the “hello” cell from the [“Hello World” notebook](https://observablehq.com/@tmcw/hello-world):
8 |
9 | ```html
10 |
11 |
12 |
13 |
14 |
27 | ```
28 |
29 | To render the entire notebook into the body, use [Inspector.into](https://github.com/observablehq/inspector/blob/master/README.md#Inspector_into):
30 |
31 | ```js
32 | const runtime = new Runtime();
33 | const main = runtime.module(define, Inspector.into(document.body));
34 | ```
35 |
36 | For more control, implement a [custom observer](#observers) in place of the standard inspector. The returned object may implement [*observer*.pending](#observer_pending), [*observer*.fulfilled](#observer_fulfilled) and [*observer*.rejected](#observer_rejected) methods to be notified when the corresponding *variable* changes state. For example:
37 |
38 | ```js
39 | const runtime = new Runtime();
40 | const main = runtime.module(define, name => {
41 | const node = document.getElementById(name);
42 | return {
43 | pending() {
44 | node.classList.add("running")
45 | },
46 | fulfilled(value) {
47 | node.classList.remove("running");
48 | node.innerText = value;
49 | },
50 | rejected(error) {
51 | node.classList.remove("running");
52 | node.classList.add("error");
53 | node.textContent = error.message;
54 | }
55 | };
56 | });
57 | ```
58 |
59 | Variables which are not associated with an *observer*, or aren’t indirectly depended on by a variable that is associated with an *observer*, will not be evaluated. To force a variable to be evaluated, return true. See [*module*.variable](#module_variable).
60 |
61 | ## API Reference
62 |
63 | ### Runtimes
64 |
65 |
# new
Runtime(
builtins = new Library[,
global]) [<>](https://github.com/observablehq/runtime/blob/master/src/runtime.js "Source")
66 |
67 | Returns a new [runtime](#runtimes). If *builtins* is specified, each property on the *builtins* object defines a builtin variable for the runtime. These builtins are available as named inputs to any [defined variables](#variable_define) on any [module](#modules) associated with this runtime. If *builtins* is not specified, it defaults to the [standard library](https://github.com/observablehq/stdlib/blob/master/README.md). If a *global* function is specified, it will be invoked with the name of any unresolved reference, and must return the corresponding value or undefined (to trigger a ReferenceError); if *global* is not specified, unresolved values will be resolved from the global window.
68 |
69 | Many Observable notebooks rely on the [standard library](https://github.com/observablehq/stdlib) builtins. To instead specify a custom set of builtins:
70 |
71 | ```js
72 | const runtime = new Runtime({color: "red"});
73 | ```
74 |
75 | Or to define a new builtin, or override an existing one:
76 |
77 | ```js
78 | const runtime = new Runtime(Object.assign(new Library, {color: "red"}));
79 | ```
80 |
81 | To refer to the `color` builtin from a variable:
82 |
83 | ```js
84 | const module = runtime.module();
85 | const inspector = new Inspector(document.querySelector("#hello"));
86 | module.variable(inspector).define(["color"], color => `Hello, ${color}.`);
87 | ```
88 |
89 | This would produce the following output:
90 |
91 | > Hello, red.
92 |
93 | Builtins must have constant values; unlike [variables](#variables), they cannot be defined as functions. However, a builtin *may* be defined as a promise, in which case any referencing variables will be evaluated only after the promise is resolved.
94 |
95 |
# runtime.
module([
define][,
observer]) [<>](https://github.com/observablehq/runtime/blob/master/src/runtime.js "Source")
96 |
97 | Returns a new [module](#modules) for this [runtime](#runtimes).
98 |
99 | If *define* is specified, it is a function which defines the new module’s [variables](#variables) by calling *runtime*.module (with no arguments) and then calling [*module*.variable](#module_variable) on the returned module as desired. If this runtime already has a module for the specified *define* function, the existing module is returned; otherwise, a new module is created, and the *define* function is called, being passed this runtime and the specified *observer* factory function. If *define* is not specified, a new module is created and returned.
100 |
101 | If an *observer* factory function is specified, it is called for each named variable in the returned module, being passed the variable’s name. The [standard inspector](#inspector) is available as a ready-made observer: it displays DOM elements “as-is” and renders interactive displays for other arbitrary values such as numbers and objects.
102 |
103 |
# runtime.
dispose() [<>](https://github.com/observablehq/runtime/blob/master/src/runtime.js "Source")
104 |
105 | Disposes this runtime, invalidating all active variables and disabling future computation.
106 |
107 | ### Modules
108 |
109 | A module is a namespace for [variables](#variables); within a module, variables should typically have unique names. [Imports](#variable_import) allow variables to be referenced across modules.
110 |
111 |
# module.
variable([
observer]) [<>](https://github.com/observablehq/runtime/blob/master/src/module.js "Source")
112 |
113 | Returns a new [variable](#variables) for this [module](#modules). The variable is initially undefined.
114 |
115 | If *observer* is specified, the specified [observer](#observer) will be notified when the returned variable changes state, via the [observer.*pending*](#observer_pending), [observer.*fulfilled*](#observer_fulfilled) and [observer.*rejected*](#observer_rejected) methods. See the [standard inspector](https://github.com/observablehq/inspector/blob/master/README.md) for a convenient default observer implementation.
116 |
117 | A variable without an associated *observer* is only computed if any transitive output of the variable has an *observer*; variables are computed on an as-needed basis for display. This is particularly useful when the runtime has multiple modules (as with [imports](#variable_import)): only the needed variables from imported modules are computed.
118 |
119 |
# module.
derive(
specifiers,
source) [<>](https://github.com/observablehq/runtime/blob/master/src/module.js "Source")
120 |
121 | Returns a derived copy of this [module](#modules), where each variable in *specifiers* is replaced by an [import](#variable_import) from the specified *source* module. The *specifiers* are specified as an array of objects with the following properties:
122 |
123 | * *specifier*.name - the name of the variable to import from *source*.
124 | * *specifier*.alias - the name of the variable to redefine in this module.
125 |
126 | If *specifier*.alias is not specified, it defaults to *specifier*.name. A *specifier* may also be specified as a string, in which case the string is treated as both the name and the alias. For example, consider the following module which defines two constants *a* and *b*, and a variable *c* that represents their sum:
127 |
128 | ```js
129 | const module0 = runtime.module();
130 | module0.variable().define("a", 1);
131 | module0.variable().define("b", 2);
132 | module0.variable().define("c", ["a", "b"], (a, b) => a + b);
133 | ```
134 |
135 | To derive a new module that redefines *b*:
136 |
137 | ```js
138 | const module1 = runtime.module();
139 | const module1_0 = module0.derive(["b"], module1);
140 | module1.variable().define("b", 3);
141 | module1.variable().import("c", module1_0);
142 | ```
143 |
144 | The value of *c* in the derived module is now 1 + 3 = 4, whereas the value of *c* in the original module remains 1 + 2 = 3.
145 |
146 |
# module.
define(\[
name, \]\[
inputs, \]
definition) [<>](https://github.com/observablehq/runtime/blob/master/src/module.js "Source")
147 |
148 | A convenience method for [*variable*.define](#variable_define); equivalent to:
149 |
150 | ```js
151 | module.variable().define(name, inputs, definition)
152 | ```
153 |
154 |
# module.
import(
name, [
alias, ]
from) [<>](https://github.com/observablehq/runtime/blob/master/src/module.js "Source")
155 |
156 | A convenience method for [*variable*.import](#variable_import); equivalent to:
157 |
158 | ```js
159 | module.variable().import(name, alias, from)
160 | ```
161 |
162 |
# module.
redefine(
name[,
inputs],
definition) [<>](https://github.com/observablehq/runtime/blob/master/src/module.js "Source")
163 |
164 | Redefines the *variable* with the specified *name* on this module. If no such variable exists, or if more than one variable has the specified *name*, throws a runtime error.
165 |
166 |
# module.
value(
name) [<>](https://github.com/observablehq/runtime/blob/master/src/module.js "Source")
167 |
168 | Returns a promise to the next value of the *variable* with the specified *name* on this module. If no such variable exists, or if more than one variable has the specified *name*, throws a runtime error.
169 |
170 | ### Variables
171 |
172 | A variable defines a piece of state in a reactive program, akin to a cell in a spreadsheet. Variables may be named to allow the definition of derived variables: variables whose value is computed from other variables’ values. Variables are scoped by a [module](#modules) and evaluated by a [runtime](#runtimes).
173 |
174 |
# variable.
define(\[
name, \]\[
inputs, \]
definition) [<>](https://github.com/observablehq/runtime/blob/master/src/variable.js "Source")
175 |
176 | Redefines this variable to have the specified *name*, taking the variables with the names specified in *inputs* as arguments to the specified *definition* function. If *name* is null or not specified, this variable is anonymous and may not be referred to by other variables. The named *inputs* refer to other variables (possibly [imported](#variable_import)) in this variable’s module. Circular inputs are not allowed; the variable will throw a ReferenceError upon evaluation. If *inputs* is not specified, it defaults to the empty array. If *definition* is not a function, the variable is defined to have the constant value of *definition*.
177 |
178 | The *definition* function may return a promise; derived variables will be computed after the promise resolves. The *definition* function may likewise return a generator; the runtime will pull values from the generator on every animation frame, or if the generator yielded a promise, after the promise is resolved. When the *definition* is invoked, the value of `this` is the variable’s previous value, or undefined if this is the first time the variable is being computed under its current definition. Thus, the previous value is preserved only when input values change; it is *not* preserved if the variable is explicitly redefined.
179 |
180 | For example, consider the following module that starts with a single undefined variable, *a*:
181 |
182 | ```js
183 | const runtime = new Runtime(builtins);
184 |
185 | const module = runtime.module();
186 |
187 | const a = module.variable();
188 | ```
189 |
190 | To define variable *a* with the name `foo` and the constant value 42:
191 |
192 | ```js
193 | a.define("foo", 42);
194 | ```
195 |
196 | This is equivalent to:
197 |
198 | ```js
199 | a.define("foo", [], () => 42);
200 | ```
201 |
202 | To define an anonymous variable *b* that takes `foo` as input:
203 |
204 | ```js
205 | const b = module.variable();
206 |
207 | b.define(["foo"], foo => foo * 2);
208 | ```
209 |
210 | This is equivalent to:
211 |
212 | ```js
213 | b.define(null, ["foo"], foo => foo * 2);
214 | ```
215 |
216 | Note that the JavaScript symbols in the above example code (*a* and *b*) have no relation to the variable names (`foo` and null); variable names can change when a variable is redefined or deleted. Each variable corresponds to a cell in an Observable notebook, but the cell can be redefined to have a different name or definition.
217 |
218 | If more than one variable has the same *name* at the same time in the same module, these variables’ definitions are temporarily overridden to throw a ReferenceError. When and if the duplicate variables are [deleted](#variable_delete), or are redefined to have unique names, the original definition of the remaining variable (if any) is restored. For example, here variables *a* and *b* will throw a ReferenceError:
219 |
220 | ```js
221 | const module = new Runtime(builtins).module();
222 | const a = module.variable().define("foo", 1);
223 | const b = module.variable().define("foo", 2);
224 | ```
225 |
226 | If *a* or *b* is redefined to have a different name, both *a* and *b* will subsequently resolve to their desired values:
227 |
228 | ```js
229 | b.define("bar", 2);
230 | ```
231 |
232 | Likewise deleting *a* or *b* would allow the other variable to resolve to its desired value.
233 |
234 |
# variable.
import(
name, [
alias, ]
module) [<>](https://github.com/observablehq/runtime/blob/master/src/variable.js "Source")
235 |
236 | Redefines this variable as an alias of the variable with the specified *name* in the specified [*module*](#modules). The subsequent name of this variable is the specified *name*, or if specified, the given *alias*. The order of arguments corresponds to the standard import statement: `import {name as alias} from "module"`. For example, consider a module which defines a variable named `foo`:
237 |
238 | ```js
239 | const runtime = new Runtime(builtins);
240 |
241 | const module0 = runtime.module();
242 |
243 | module0.variable().define("foo", 42);
244 | ```
245 |
246 | To import `foo` into another module:
247 |
248 | ```js
249 | const module1 = runtime.module();
250 |
251 | module1.variable().import("foo", module0);
252 | ```
253 |
254 | Now the variable `foo` is available to other variables in *module1*:
255 |
256 | ```js
257 | module1.variable().define(["foo"], foo => `Hello, ${foo}.`);
258 | ```
259 |
260 | This would produce the following output:
261 |
262 | > Hello, 42.
263 |
264 | To import `foo` into *module1* under the alias `bar`:
265 |
266 | ```js
267 | module1.variable().import("foo", "bar", module0);
268 | ```
269 |
270 |
# variable.
delete() [<>](https://github.com/observablehq/runtime/blob/master/src/variable.js "Source")
271 |
272 | Deletes this variable’s current definition and name, if any. Any variable in this module that references this variable as an input will subsequently throw a ReferenceError. If exactly one other variable defined this variable’s previous name, such that that variable throws a ReferenceError due to its duplicate definition, that variable’s original definition is restored.
273 |
274 | ### Observers
275 |
276 | An observer watches a [variable](#variables), being notified via asynchronous callback whenever the variable changes state. See the [standard inspector](https://github.com/observablehq/inspector) for reference.
277 |
278 |
# observer.
pending()
279 |
280 | Called shortly before the variable is computed. For a generator variable, this occurs before the generator is constructed, but not before each subsequent value is pulled from the generator.
281 |
282 |
# observer.
fulfilled(
value)
283 |
284 | Called shortly after the variable is fulfilled with a new *value*.
285 |
286 |
# observer.
rejected(
error)
287 |
288 | Called shortly after the variable is rejected with the given *error*.
289 |
290 | ### Library
291 |
292 | For convenience, this module re-exports the [Observable standard library](https://github.com/observablehq/stdlib).
293 |
294 | ### Inspector
295 |
296 | For convenience, this module re-exports the [Observable standard inspector](https://github.com/observablehq/inspector).
297 |
--------------------------------------------------------------------------------
/test/variable/define-test.js:
--------------------------------------------------------------------------------
1 | import {Runtime} from "../../src/";
2 | import tape from "../tape";
3 | import valueof from "./valueof";
4 |
5 | tape("variable.define(name, inputs, definition) can define a variable", async test => {
6 | const runtime = new Runtime();
7 | const module = runtime.module();
8 | const foo = module.variable(true).define("foo", [], () => 42);
9 | test.deepEqual(await valueof(foo), {value: 42});
10 | });
11 |
12 | tape("variable.define(inputs, function) can define an anonymous variable", async test => {
13 | const runtime = new Runtime();
14 | const module = runtime.module();
15 | const foo = module.variable(true).define([], () => 42);
16 | test.deepEqual(await valueof(foo), {value: 42});
17 | });
18 |
19 | tape("variable.define(name, function) can define a named variable", async test => {
20 | const runtime = new Runtime();
21 | const module = runtime.module();
22 | const foo = module.variable(true).define("foo", () => 42);
23 | const bar = module.variable(true).define("bar", ["foo"], foo => foo);
24 | test.deepEqual(await valueof(foo), {value: 42});
25 | test.deepEqual(await valueof(bar), {value: 42});
26 | });
27 |
28 | tape("variable.define(function) can define an anonymous variable", async test => {
29 | const runtime = new Runtime();
30 | const module = runtime.module();
31 | const foo = module.variable(true).define(() => 42);
32 | test.deepEqual(await valueof(foo), {value: 42});
33 | });
34 |
35 | tape("variable.define(null, inputs, value) can define an anonymous constant", async test => {
36 | const runtime = new Runtime();
37 | const module = runtime.module();
38 | const foo = module.variable(true).define(null, [], 42);
39 | test.deepEqual(await valueof(foo), {value: 42});
40 | });
41 |
42 | tape("variable.define(inputs, value) can define an anonymous constant", async test => {
43 | const runtime = new Runtime();
44 | const module = runtime.module();
45 | const foo = module.variable(true).define([], 42);
46 | test.deepEqual(await valueof(foo), {value: 42});
47 | });
48 |
49 | tape("variable.define(null, value) can define an anonymous constant", async test => {
50 | const runtime = new Runtime();
51 | const module = runtime.module();
52 | const foo = module.variable(true).define(null, 42);
53 | test.deepEqual(await valueof(foo), {value: 42});
54 | });
55 |
56 | tape("variable.define(value) can define an anonymous constant", async test => {
57 | const runtime = new Runtime();
58 | const module = runtime.module();
59 | const foo = module.variable(true).define(42);
60 | test.deepEqual(await valueof(foo), {value: 42});
61 | });
62 |
63 | tape("variable.define detects missing inputs", async test => {
64 | const runtime = new Runtime();
65 | const module = runtime.module();
66 | const foo = module.variable(true);
67 | const bar = module.variable(true).define("bar", ["foo"], foo => foo);
68 | test.deepEqual(await valueof(foo), {value: undefined});
69 | test.deepEqual(await valueof(bar), {error: "RuntimeError: foo is not defined"});
70 | foo.define("foo", 1);
71 | test.deepEqual(await valueof(foo), {value: 1});
72 | test.deepEqual(await valueof(bar), {value: 1});
73 | });
74 |
75 | tape("variable.define detects duplicate names", async test => {
76 | const runtime = new Runtime();
77 | const module = runtime.module();
78 | const foo = module.variable(true).define("foo", 1);
79 | const bar = module.variable(true).define("foo", 2);
80 | test.deepEqual(await valueof(foo), {error: "RuntimeError: foo is defined more than once"});
81 | test.deepEqual(await valueof(bar), {error: "RuntimeError: foo is defined more than once"});
82 | bar.define("bar", 2);
83 | test.deepEqual(await valueof(foo), {value: 1});
84 | test.deepEqual(await valueof(bar), {value: 2});
85 | });
86 |
87 | tape("variable.define recomputes reachability as expected", async test => {
88 | const runtime = new Runtime();
89 | const main = runtime.module();
90 | const module = runtime.module();
91 | const quux = module.define("quux", [], () => 42);
92 | const baz = module.define("baz", ["quux"], quux => `baz-${quux}`);
93 | const bar = module.define("bar", ["quux"], quux => `bar-${quux}`);
94 | const foo = main.variable(true).define("foo", ["bar", "baz", "quux"], (bar, baz, quux) => [bar, baz, quux]);
95 | main.variable().import("bar", module);
96 | main.variable().import("baz", module);
97 | main.variable().import("quux", module);
98 | await runtime._compute();
99 | test.equal(quux._reachable, true);
100 | test.equal(baz._reachable, true);
101 | test.equal(bar._reachable, true);
102 | test.equal(foo._reachable, true);
103 | test.deepEqual(await valueof(foo), {value: ["bar-42", "baz-42", 42]});
104 | foo.define("foo", [], () => "foo");
105 | await runtime._compute();
106 | test.equal(quux._reachable, false);
107 | test.equal(baz._reachable, false);
108 | test.equal(bar._reachable, false);
109 | test.equal(foo._reachable, true);
110 | test.deepEqual(await valueof(foo), {value: "foo"});
111 | });
112 |
113 | tape("variable.define correctly detects reachability for unreachable cycles", async test => {
114 | let returned = false;
115 | const runtime = new Runtime();
116 | const main = runtime.module();
117 | const module = runtime.module();
118 | const bar = module.define("bar", ["baz"], baz => `bar-${baz}`);
119 | const baz = module.define("baz", ["quux"], quux => `baz-${quux}`);
120 | const quux = module.define("quux", ["zapp"], function*(zapp) { try { while (true) yield `quux-${zapp}`; } finally { returned = true; }});
121 | const zapp = module.define("zapp", ["bar"], bar => `zaap-${bar}`);
122 | await runtime._compute();
123 | test.equal(bar._reachable, false);
124 | test.equal(baz._reachable, false);
125 | test.equal(quux._reachable, false);
126 | test.equal(zapp._reachable, false);
127 | test.deepEqual(await valueof(bar), {value: undefined});
128 | test.deepEqual(await valueof(baz), {value: undefined});
129 | test.deepEqual(await valueof(quux), {value: undefined});
130 | test.deepEqual(await valueof(zapp), {value: undefined});
131 | main.variable().import("bar", module);
132 | const foo = main.variable(true).define("foo", ["bar"], bar => bar);
133 | await runtime._compute();
134 | test.equal(foo._reachable, true);
135 | test.equal(bar._reachable, true);
136 | test.equal(baz._reachable, true);
137 | test.equal(quux._reachable, true);
138 | test.equal(zapp._reachable, true);
139 | test.deepEqual(await valueof(bar), {error: "RuntimeError: circular definition"});
140 | test.deepEqual(await valueof(baz), {error: "RuntimeError: circular definition"});
141 | test.deepEqual(await valueof(quux), {error: "RuntimeError: circular definition"});
142 | test.deepEqual(await valueof(zapp), {error: "RuntimeError: circular definition"});
143 | test.deepEqual(await valueof(foo), {error: "RuntimeError: bar could not be resolved"});
144 | foo.define("foo", [], () => "foo");
145 | await runtime._compute();
146 | test.equal(foo._reachable, true);
147 | test.equal(bar._reachable, false);
148 | test.equal(baz._reachable, false);
149 | test.equal(quux._reachable, false);
150 | test.equal(zapp._reachable, false);
151 | test.deepEqual(await valueof(bar), {error: "RuntimeError: circular definition"});
152 | test.deepEqual(await valueof(baz), {error: "RuntimeError: circular definition"});
153 | test.deepEqual(await valueof(quux), {error: "RuntimeError: circular definition"});
154 | test.deepEqual(await valueof(zapp), {error: "RuntimeError: circular definition"});
155 | test.deepEqual(await valueof(foo), {value: "foo"});
156 | test.equal(returned, false); // Generator is never finalized because it has never run.
157 | });
158 |
159 | tape("variable.define terminates previously reachable generators", async test => {
160 | let returned = false;
161 | const runtime = new Runtime();
162 | const main = runtime.module();
163 | const module = runtime.module();
164 | const bar = module.define("bar", [], function*() { try { while (true) yield 1; } finally { returned = true; }});
165 | const foo = main.variable(true).define("foo", ["bar"], bar => bar);
166 | main.variable().import("bar", module);
167 | test.deepEqual(await valueof(foo), {value: 1});
168 | foo.define("foo", [], () => "foo");
169 | test.deepEqual(await valueof(foo), {value: "foo"});
170 | test.equal(bar._generator, undefined);
171 | test.equal(returned, true);
172 | });
173 |
174 | tape("variable.define does not terminate reachable generators", async test => {
175 | let returned = false;
176 | const runtime = new Runtime();
177 | const main = runtime.module();
178 | const module = runtime.module();
179 | const bar = module.define("bar", [], function*() { try { while (true) yield 1; } finally { returned = true; }});
180 | const baz = main.variable(true).define("baz", ["bar"], bar => bar);
181 | const foo = main.variable(true).define("foo", ["bar"], bar => bar);
182 | main.variable().import("bar", module);
183 | test.deepEqual(await valueof(foo), {value: 1});
184 | test.deepEqual(await valueof(baz), {value: 1});
185 | foo.define("foo", [], () => "foo");
186 | test.deepEqual(await valueof(foo), {value: "foo"});
187 | test.deepEqual(await valueof(baz), {value: 1});
188 | test.equal(returned, false);
189 | bar._invalidate();
190 | await runtime._compute();
191 | test.equal(returned, true);
192 | });
193 |
194 | tape("variable.define detects duplicate declarations", async test => {
195 | const runtime = new Runtime();
196 | const main = runtime.module();
197 | const v1 = main.variable(true).define("foo", [], () => 1);
198 | const v2 = main.variable(true).define("foo", [], () => 2);
199 | const v3 = main.variable(true).define(null, ["foo"], foo => foo);
200 | test.deepEqual(await valueof(v1), {error: "RuntimeError: foo is defined more than once"});
201 | test.deepEqual(await valueof(v2), {error: "RuntimeError: foo is defined more than once"});
202 | test.deepEqual(await valueof(v3), {error: "RuntimeError: foo could not be resolved"});
203 | });
204 |
205 | tape("variable.define detects missing inputs and erroneous inputs", async test => {
206 | const runtime = new Runtime();
207 | const main = runtime.module();
208 | const v1 = main.variable(true).define("foo", ["baz"], () => 1);
209 | const v2 = main.variable(true).define("bar", ["foo"], () => 2);
210 | test.deepEqual(await valueof(v1), {error: "RuntimeError: baz is not defined"});
211 | test.deepEqual(await valueof(v2), {error: "RuntimeError: foo could not be resolved"});
212 | });
213 |
214 | tape("variable.define allows masking of builtins", async test => {
215 | const runtime = new Runtime({color: "red"});
216 | const main = runtime.module();
217 | const mask = main.define("color", "green");
218 | const foo = main.variable(true).define(null, ["color"], color => color);
219 | test.deepEqual(await valueof(foo), {value: "green"});
220 | mask.delete();
221 | test.deepEqual(await valueof(foo), {value: "red"});
222 | });
223 |
224 | tape("variable.define supports promises", async test => {
225 | const runtime = new Runtime();
226 | const main = runtime.module();
227 | const foo = main.variable(true).define("foo", [], () => new Promise(resolve => setImmediate(() => resolve(42))));
228 | test.deepEqual(await valueof(foo), {value: 42});
229 | });
230 |
231 | tape("variable.define supports generator cells", async test => {
232 | let i = 0;
233 | const runtime = new Runtime();
234 | const main = runtime.module();
235 | const foo = main.variable(true).define("foo", [], function*() { while (i < 3) yield ++i; });
236 | test.deepEqual(await valueof(foo), {value: 1});
237 | test.deepEqual(await valueof(foo), {value: 2});
238 | test.deepEqual(await valueof(foo), {value: 3});
239 | });
240 |
241 | tape("variable.define supports generator objects", async test => {
242 | function* range(n) { for (let i = 0; i < n; ++i) yield i; }
243 | const runtime = new Runtime();
244 | const main = runtime.module();
245 | const foo = main.variable(true).define("foo", [], () => range(3));
246 | test.deepEqual(await valueof(foo), {value: 0});
247 | test.deepEqual(await valueof(foo), {value: 1});
248 | test.deepEqual(await valueof(foo), {value: 2});
249 | });
250 |
251 | tape("variable.define supports a promise that resolves to a generator object", async test => {
252 | function* range(n) { for (let i = 0; i < n; ++i) yield i; }
253 | const runtime = new Runtime();
254 | const main = runtime.module();
255 | const foo = main.variable(true).define("foo", [], async () => range(3));
256 | test.deepEqual(await valueof(foo), {value: 0});
257 | test.deepEqual(await valueof(foo), {value: 1});
258 | test.deepEqual(await valueof(foo), {value: 2});
259 | });
260 |
261 | tape("variable.define supports generators that yield promises", async test => {
262 | let i = 0;
263 | const runtime = new Runtime();
264 | const main = runtime.module();
265 | const foo = main.variable(true).define("foo", [], function*() { while (i < 3) yield Promise.resolve(++i); });
266 | test.deepEqual(await valueof(foo), {value: 1});
267 | test.deepEqual(await valueof(foo), {value: 2});
268 | test.deepEqual(await valueof(foo), {value: 3});
269 | });
270 |
271 | tape("variable.define allows a variable to be redefined", async test => {
272 | const runtime = new Runtime();
273 | const main = runtime.module();
274 | const foo = main.variable(true).define("foo", [], () => 1);
275 | const bar = main.variable(true).define("bar", ["foo"], foo => new Promise(resolve => setImmediate(() => resolve(foo))));
276 | test.deepEqual(await valueof(foo), {value: 1});
277 | test.deepEqual(await valueof(bar), {value: 1});
278 | foo.define("foo", [], () => 2);
279 | test.deepEqual(await valueof(foo), {value: 2});
280 | test.deepEqual(await valueof(bar), {value: 2});
281 | });
282 |
283 | tape("variable.define ignores an asynchronous result from a redefined variable", async test => {
284 | const runtime = new Runtime();
285 | const main = runtime.module();
286 | const foo = main.variable(true).define("foo", [], () => new Promise(resolve => setTimeout(() => resolve("fail"), 150)));
287 | await new Promise(setImmediate);
288 | foo.define("foo", [], () => "success");
289 | await new Promise(resolve => setTimeout(resolve, 250));
290 | test.deepEqual(await valueof(foo), {value: "success"});
291 | test.deepEqual(foo._value, "success");
292 | });
293 |
294 | tape("variable.define ignores an asynchronous result from a redefined input", async test => {
295 | const runtime = new Runtime();
296 | const main = runtime.module();
297 | const bar = main.variable().define("bar", [], () => new Promise(resolve => setTimeout(() => resolve("fail"), 150)));
298 | const foo = main.variable(true).define("foo", ["bar"], bar => bar);
299 | await new Promise(setImmediate);
300 | bar.define("bar", [], () => "success");
301 | await new Promise(resolve => setTimeout(resolve, 250));
302 | test.deepEqual(await valueof(foo), {value: "success"});
303 | test.deepEqual(foo._value, "success");
304 | });
305 |
306 | tape("variable.define does not try to compute unreachable variables", async test => {
307 | const runtime = new Runtime();
308 | const main = runtime.module();
309 | let evaluated = false;
310 | const foo = main.variable(true).define("foo", [], () => 1);
311 | const bar = main.variable().define("bar", ["foo"], (foo) => evaluated = foo);
312 | test.deepEqual(await valueof(foo), {value: 1});
313 | test.deepEqual(await valueof(bar), {value: undefined});
314 | test.equals(evaluated, false);
315 | });
316 |
317 | tape("variable.define does not try to compute unreachable variables that are outputs of reachable variables", async test => {
318 | const runtime = new Runtime();
319 | const main = runtime.module();
320 | let evaluated = false;
321 | const foo = main.variable(true).define("foo", [], () => 1);
322 | const bar = main.variable(true).define("bar", [], () => 2);
323 | const baz = main.variable().define("baz", ["foo", "bar"], (foo, bar) => evaluated = foo + bar);
324 | test.deepEqual(await valueof(foo), {value: 1});
325 | test.deepEqual(await valueof(bar), {value: 2});
326 | test.deepEqual(await valueof(baz), {value: undefined});
327 | test.equals(evaluated, false);
328 | });
329 |
330 | tape("variable.define can reference whitelisted globals", async test => {
331 | const runtime = new Runtime(null, name => name === "magic" ? 21 : undefined);
332 | const module = runtime.module();
333 | const foo = module.variable(true).define(["magic"], magic => magic * 2);
334 | test.deepEqual(await valueof(foo), {value: 42});
335 | });
336 |
337 | tape("variable.define captures the value of whitelisted globals", async test => {
338 | let magic = 0;
339 | const runtime = new Runtime(null, name => name === "magic" ? ++magic : undefined);
340 | const module = runtime.module();
341 | const foo = module.variable(true).define(["magic"], magic => magic * 2);
342 | test.deepEqual(await valueof(foo), {value: 2});
343 | test.deepEqual(await valueof(foo), {value: 2});
344 | });
345 |
346 | tape("variable.define can override whitelisted globals", async test => {
347 | const runtime = new Runtime(null, name => name === "magic" ? 1 : undefined);
348 | const module = runtime.module();
349 | module.variable().define("magic", [], () => 2);
350 | const foo = module.variable(true).define(["magic"], magic => magic * 2);
351 | test.deepEqual(await valueof(foo), {value: 4});
352 | });
353 |
354 | tape("variable.define can dynamically override whitelisted globals", async test => {
355 | const runtime = new Runtime(null, name => name === "magic" ? 1 : undefined);
356 | const module = runtime.module();
357 | const foo = module.variable(true).define(["magic"], magic => magic * 2);
358 | test.deepEqual(await valueof(foo), {value: 2});
359 | module.variable().define("magic", [], () => 2);
360 | test.deepEqual(await valueof(foo), {value: 4});
361 | });
362 |
363 | tape("variable.define cannot reference non-whitelisted globals", async test => {
364 | const runtime = new Runtime();
365 | const module = runtime.module();
366 | const foo = module.variable(true).define(["magic"], magic => magic * 2);
367 | test.deepEqual(await valueof(foo), {error: "RuntimeError: magic is not defined"});
368 | });
369 |
370 | tape("variable.define correctly handles globals that throw", async test => {
371 | const runtime = new Runtime(null, name => { if (name === "oops") throw new Error("oops"); });
372 | const module = runtime.module();
373 | const foo = module.variable(true).define(["oops"], oops => oops);
374 | test.deepEqual(await valueof(foo), {error: "RuntimeError: oops could not be resolved"});
375 | });
376 |
--------------------------------------------------------------------------------
/yarn.lock:
--------------------------------------------------------------------------------
1 | # THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY.
2 | # yarn lockfile v1
3 |
4 |
5 | "@babel/code-frame@^7.0.0", "@babel/code-frame@^7.5.5":
6 | version "7.8.3"
7 | resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.8.3.tgz#33e25903d7481181534e12ec0a25f16b6fcf419e"
8 | integrity sha512-a9gxpmdXtZEInkCSHUJDLHZVBgb1QS0jhss4cPP93EW7s+uC5bikET2twEF3KV+7rDblJcmNvTR7VJejqd2C2g==
9 | dependencies:
10 | "@babel/highlight" "^7.8.3"
11 |
12 | "@babel/highlight@^7.8.3":
13 | version "7.8.3"
14 | resolved "https://registry.yarnpkg.com/@babel/highlight/-/highlight-7.8.3.tgz#28f173d04223eaaa59bc1d439a3836e6d1265797"
15 | integrity sha512-PX4y5xQUvy0fnEVHrYOarRPXVWafSjTW9T0Hab8gVIawpl2Sj0ORyrygANq+KjcNlSSTw0YCLSNA8OyZ1I4yEg==
16 | dependencies:
17 | chalk "^2.0.0"
18 | esutils "^2.0.2"
19 | js-tokens "^4.0.0"
20 |
21 | "@observablehq/inspector@^3.2.0":
22 | version "3.2.1"
23 | resolved "https://registry.yarnpkg.com/@observablehq/inspector/-/inspector-3.2.1.tgz#c953fd95f1b90fac6f39e41965a72cc079d3e465"
24 | integrity sha512-U8EASUAUYCQmCprOF9HafRMnU4yyD0IXjRuDwAjBMjVpm36KXPzXWxHcdzlt/3CbIEu8GOhKQqHBAX9pv6OyUQ==
25 | dependencies:
26 | esm "^3.2.25"
27 |
28 | "@observablehq/stdlib@^3.2.0":
29 | version "3.3.0"
30 | resolved "https://registry.yarnpkg.com/@observablehq/stdlib/-/stdlib-3.3.0.tgz#e500b3485d29f31b567d28d734d5c7b0a128cbe2"
31 | integrity sha512-FFqmB3KgFHKEVxn7ZFloxg1rL+mKayV46Tw8IhEbjEce8OhkhbhzfhuEBTmq+aD9XciZOwWLBdd5dJYxreXUNg==
32 | dependencies:
33 | d3-require "^1.2.4"
34 |
35 | "@types/estree@*":
36 | version "0.0.39"
37 | resolved "https://registry.yarnpkg.com/@types/estree/-/estree-0.0.39.tgz#e177e699ee1b8c22d23174caaa7422644389509f"
38 | integrity sha512-EYNwp3bU+98cpU4lAWYYL7Zz+2gryWH1qbdDTidVd6hkiR6weksdbMadyXKXNPEkQFhXM+hVO9ZygomHXp+AIw==
39 |
40 | "@types/node@*":
41 | version "12.7.2"
42 | resolved "https://registry.yarnpkg.com/@types/node/-/node-12.7.2.tgz#c4e63af5e8823ce9cc3f0b34f7b998c2171f0c44"
43 | integrity sha512-dyYO+f6ihZEtNPDcWNR1fkoTDf3zAK3lAABDze3mz6POyIercH0lEUawUFXlG8xaQZmm1yEBON/4TsYv/laDYg==
44 |
45 | "@types/normalize-package-data@^2.4.0":
46 | version "2.4.0"
47 | resolved "https://registry.yarnpkg.com/@types/normalize-package-data/-/normalize-package-data-2.4.0.tgz#e486d0d97396d79beedd0a6e33f4534ff6b4973e"
48 | integrity sha512-f5j5b/Gf71L+dbqxIpQ4Z2WlmI/mPJ0fOkGGmFgtb6sAu97EPczzbS3/tJKxmcYDj55OX6ssqwDAWOHIYDRDGA==
49 |
50 | "@types/resolve@0.0.8":
51 | version "0.0.8"
52 | resolved "https://registry.yarnpkg.com/@types/resolve/-/resolve-0.0.8.tgz#f26074d238e02659e323ce1a13d041eee280e194"
53 | integrity sha512-auApPaJf3NPfe18hSoJkp8EbZzer2ISk7o8mCC3M9he/a04+gbMF97NkpD2S8riMGvm4BMRI59/SZQSaLTKpsQ==
54 | dependencies:
55 | "@types/node" "*"
56 |
57 | abab@^2.0.0:
58 | version "2.0.0"
59 | resolved "https://registry.yarnpkg.com/abab/-/abab-2.0.0.tgz#aba0ab4c5eee2d4c79d3487d85450fb2376ebb0f"
60 | integrity sha512-sY5AXXVZv4Y1VACTtR11UJCPHHudgY5i26Qj5TypE6DKlIApbwb5uqhXcJ5UUGbvZNRh7EeIoW+LrJumBsKp7w==
61 |
62 | acorn-globals@^4.3.2:
63 | version "4.3.3"
64 | resolved "https://registry.yarnpkg.com/acorn-globals/-/acorn-globals-4.3.3.tgz#a86f75b69680b8780d30edd21eee4e0ea170c05e"
65 | integrity sha512-vkR40VwS2SYO98AIeFvzWWh+xyc2qi9s7OoXSFEGIP/rOJKzjnhykaZJNnHdoq4BL2gGxI5EZOU16z896EYnOQ==
66 | dependencies:
67 | acorn "^6.0.1"
68 | acorn-walk "^6.0.1"
69 |
70 | acorn-jsx@^5.1.0:
71 | version "5.1.0"
72 | resolved "https://registry.yarnpkg.com/acorn-jsx/-/acorn-jsx-5.1.0.tgz#294adb71b57398b0680015f0a38c563ee1db5384"
73 | integrity sha512-tMUqwBWfLFbJbizRmEcWSLw6HnFzfdJs2sOJEOwwtVPMoH/0Ay+E703oZz78VSXZiiDcZrQ5XKjPIUQixhmgVw==
74 |
75 | acorn-walk@^6.0.1:
76 | version "6.2.0"
77 | resolved "https://registry.yarnpkg.com/acorn-walk/-/acorn-walk-6.2.0.tgz#123cb8f3b84c2171f1f7fb252615b1c78a6b1a8c"
78 | integrity sha512-7evsyfH1cLOCdAzZAd43Cic04yKydNx0cF+7tiA19p1XnLLPU4dpCQOqpjqwokFe//vS0QqfqqjCS2JkiIs0cA==
79 |
80 | acorn@^6.0.1:
81 | version "6.4.1"
82 | resolved "https://registry.yarnpkg.com/acorn/-/acorn-6.4.1.tgz#531e58ba3f51b9dacb9a6646ca4debf5b14ca474"
83 | integrity sha512-ZVA9k326Nwrj3Cj9jlh3wGFutC2ZornPNARZwsNYqQYgN0EsV2d53w5RN/co65Ohn4sUAUtb1rSUAOD6XN9idA==
84 |
85 | acorn@^7.1.0:
86 | version "7.1.0"
87 | resolved "https://registry.yarnpkg.com/acorn/-/acorn-7.1.0.tgz#949d36f2c292535da602283586c2477c57eb2d6c"
88 | integrity sha512-kL5CuoXA/dgxlBbVrflsflzQ3PAas7RYZB52NOm/6839iVYJgKMJ3cQJD+t2i5+qFa8h3MDpEOJiS64E8JLnSQ==
89 |
90 | ajv@^6.10.0, ajv@^6.10.2, ajv@^6.5.5:
91 | version "6.10.2"
92 | resolved "https://registry.yarnpkg.com/ajv/-/ajv-6.10.2.tgz#d3cea04d6b017b2894ad69040fec8b623eb4bd52"
93 | integrity sha512-TXtUUEYHuaTEbLZWIKUr5pmBuhDLy+8KYtPYdcV8qC+pOZL+NKqYwvWSRrVXHn+ZmRRAu8vJTAznH7Oag6RVRw==
94 | dependencies:
95 | fast-deep-equal "^2.0.1"
96 | fast-json-stable-stringify "^2.0.0"
97 | json-schema-traverse "^0.4.1"
98 | uri-js "^4.2.2"
99 |
100 | ansi-escapes@^4.2.1:
101 | version "4.2.1"
102 | resolved "https://registry.yarnpkg.com/ansi-escapes/-/ansi-escapes-4.2.1.tgz#4dccdb846c3eee10f6d64dea66273eab90c37228"
103 | integrity sha512-Cg3ymMAdN10wOk/VYfLV7KCQyv7EDirJ64500sU7n9UlmioEtDuU5Gd+hj73hXSU/ex7tHJSssmyftDdkMLO8Q==
104 | dependencies:
105 | type-fest "^0.5.2"
106 |
107 | ansi-regex@^4.1.0:
108 | version "4.1.0"
109 | resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-4.1.0.tgz#8b9f8f08cf1acb843756a839ca8c7e3168c51997"
110 | integrity sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg==
111 |
112 | ansi-styles@^3.2.0, ansi-styles@^3.2.1:
113 | version "3.2.1"
114 | resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-3.2.1.tgz#41fbb20243e50b12be0f04b8dedbf07520ce841d"
115 | integrity sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==
116 | dependencies:
117 | color-convert "^1.9.0"
118 |
119 | argparse@^1.0.7:
120 | version "1.0.10"
121 | resolved "https://registry.yarnpkg.com/argparse/-/argparse-1.0.10.tgz#bcd6791ea5ae09725e17e5ad988134cd40b3d911"
122 | integrity sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==
123 | dependencies:
124 | sprintf-js "~1.0.2"
125 |
126 | array-equal@^1.0.0:
127 | version "1.0.0"
128 | resolved "https://registry.yarnpkg.com/array-equal/-/array-equal-1.0.0.tgz#8c2a5ef2472fd9ea742b04c77a75093ba2757c93"
129 | integrity sha1-jCpe8kcv2ep0KwTHenUJO6J1fJM=
130 |
131 | asn1@~0.2.3:
132 | version "0.2.4"
133 | resolved "https://registry.yarnpkg.com/asn1/-/asn1-0.2.4.tgz#8d2475dfab553bb33e77b54e59e880bb8ce23136"
134 | integrity sha512-jxwzQpLQjSmWXgwaCZE9Nz+glAG01yF1QnWgbhGwHI5A6FRIEY6IVqtHhIepHqI7/kyEyQEagBC5mBEFlIYvdg==
135 | dependencies:
136 | safer-buffer "~2.1.0"
137 |
138 | assert-plus@1.0.0, assert-plus@^1.0.0:
139 | version "1.0.0"
140 | resolved "https://registry.yarnpkg.com/assert-plus/-/assert-plus-1.0.0.tgz#f12e0f3c5d77b0b1cdd9146942e4e96c1e4dd525"
141 | integrity sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU=
142 |
143 | astral-regex@^1.0.0:
144 | version "1.0.0"
145 | resolved "https://registry.yarnpkg.com/astral-regex/-/astral-regex-1.0.0.tgz#6c8c3fb827dd43ee3918f27b82782ab7658a6fd9"
146 | integrity sha512-+Ryf6g3BKoRc7jfp7ad8tM4TtMiaWvbF/1/sQcZPkkS7ag3D5nMBCe2UfOTONtAkaG0tO0ij3C5Lwmf1EiyjHg==
147 |
148 | async-limiter@^1.0.0:
149 | version "1.0.1"
150 | resolved "https://registry.yarnpkg.com/async-limiter/-/async-limiter-1.0.1.tgz#dd379e94f0db8310b08291f9d64c3209766617fd"
151 | integrity sha512-csOlWGAcRFJaI6m+F2WKdnMKr4HhdhFVBk0H/QbJFMCr+uO2kwohwXQPxw/9OCxp05r5ghVBFSyioixx3gfkNQ==
152 |
153 | asynckit@^0.4.0:
154 | version "0.4.0"
155 | resolved "https://registry.yarnpkg.com/asynckit/-/asynckit-0.4.0.tgz#c79ed97f7f34cb8f2ba1bc9790bcc366474b4b79"
156 | integrity sha1-x57Zf380y48robyXkLzDZkdLS3k=
157 |
158 | aws-sign2@~0.7.0:
159 | version "0.7.0"
160 | resolved "https://registry.yarnpkg.com/aws-sign2/-/aws-sign2-0.7.0.tgz#b46e890934a9591f2d2f6f86d7e6a9f1b3fe76a8"
161 | integrity sha1-tG6JCTSpWR8tL2+G1+ap8bP+dqg=
162 |
163 | aws4@^1.8.0:
164 | version "1.8.0"
165 | resolved "https://registry.yarnpkg.com/aws4/-/aws4-1.8.0.tgz#f0e003d9ca9e7f59c7a508945d7b2ef9a04a542f"
166 | integrity sha512-ReZxvNHIOv88FlT7rxcXIIC0fPt4KZqZbOlivyWtXLt8ESx84zd3kMC6iK5jVeS2qt+g7ftS7ye4fi06X5rtRQ==
167 |
168 | balanced-match@^1.0.0:
169 | version "1.0.0"
170 | resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-1.0.0.tgz#89b4d199ab2bee49de164ea02b89ce462d71b767"
171 | integrity sha1-ibTRmasr7kneFk6gK4nORi1xt2c=
172 |
173 | bcrypt-pbkdf@^1.0.0:
174 | version "1.0.2"
175 | resolved "https://registry.yarnpkg.com/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.2.tgz#a4301d389b6a43f9b67ff3ca11a3f6637e360e9e"
176 | integrity sha1-pDAdOJtqQ/m2f/PKEaP2Y342Dp4=
177 | dependencies:
178 | tweetnacl "^0.14.3"
179 |
180 | brace-expansion@^1.1.7:
181 | version "1.1.11"
182 | resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-1.1.11.tgz#3c7fcbf529d87226f3d2f52b966ff5271eb441dd"
183 | integrity sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==
184 | dependencies:
185 | balanced-match "^1.0.0"
186 | concat-map "0.0.1"
187 |
188 | browser-process-hrtime@^0.1.2:
189 | version "0.1.3"
190 | resolved "https://registry.yarnpkg.com/browser-process-hrtime/-/browser-process-hrtime-0.1.3.tgz#616f00faef1df7ec1b5bf9cfe2bdc3170f26c7b4"
191 | integrity sha512-bRFnI4NnjO6cnyLmOV/7PVoDEMJChlcfN0z4s1YMBY989/SvlfMI1lgCnkFUs53e9gQF+w7qu7XdllSTiSl8Aw==
192 |
193 | buffer-from@^1.0.0:
194 | version "1.1.1"
195 | resolved "https://registry.yarnpkg.com/buffer-from/-/buffer-from-1.1.1.tgz#32713bc028f75c02fdb710d7c7bcec1f2c6070ef"
196 | integrity sha512-MQcXEUbCKtEo7bhqEs6560Hyd4XaovZlO/k9V3hjVUF/zwW7KBVdSK4gIt/bzwS9MbR5qob+F5jusZsb0YQK2A==
197 |
198 | builtin-modules@^3.1.0:
199 | version "3.1.0"
200 | resolved "https://registry.yarnpkg.com/builtin-modules/-/builtin-modules-3.1.0.tgz#aad97c15131eb76b65b50ef208e7584cd76a7484"
201 | integrity sha512-k0KL0aWZuBt2lrxrcASWDfwOLMnodeQjodT/1SxEQAXsHANgo6ZC/VEaSEHCXt7aSTZ4/4H5LKa+tBXmW7Vtvw==
202 |
203 | caller-callsite@^2.0.0:
204 | version "2.0.0"
205 | resolved "https://registry.yarnpkg.com/caller-callsite/-/caller-callsite-2.0.0.tgz#847e0fce0a223750a9a027c54b33731ad3154134"
206 | integrity sha1-hH4PzgoiN1CpoCfFSzNzGtMVQTQ=
207 | dependencies:
208 | callsites "^2.0.0"
209 |
210 | caller-path@^2.0.0:
211 | version "2.0.0"
212 | resolved "https://registry.yarnpkg.com/caller-path/-/caller-path-2.0.0.tgz#468f83044e369ab2010fac5f06ceee15bb2cb1f4"
213 | integrity sha1-Ro+DBE42mrIBD6xfBs7uFbsssfQ=
214 | dependencies:
215 | caller-callsite "^2.0.0"
216 |
217 | callsites@^2.0.0:
218 | version "2.0.0"
219 | resolved "https://registry.yarnpkg.com/callsites/-/callsites-2.0.0.tgz#06eb84f00eea413da86affefacbffb36093b3c50"
220 | integrity sha1-BuuE8A7qQT2oav/vrL/7Ngk7PFA=
221 |
222 | callsites@^3.0.0:
223 | version "3.1.0"
224 | resolved "https://registry.yarnpkg.com/callsites/-/callsites-3.1.0.tgz#b3630abd8943432f54b3f0519238e33cd7df2f73"
225 | integrity sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==
226 |
227 | caseless@~0.12.0:
228 | version "0.12.0"
229 | resolved "https://registry.yarnpkg.com/caseless/-/caseless-0.12.0.tgz#1b681c21ff84033c826543090689420d187151dc"
230 | integrity sha1-G2gcIf+EAzyCZUMJBolCDRhxUdw=
231 |
232 | chalk@^2.0.0, chalk@^2.1.0, chalk@^2.4.2:
233 | version "2.4.2"
234 | resolved "https://registry.yarnpkg.com/chalk/-/chalk-2.4.2.tgz#cd42541677a54333cf541a49108c1432b44c9424"
235 | integrity sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==
236 | dependencies:
237 | ansi-styles "^3.2.1"
238 | escape-string-regexp "^1.0.5"
239 | supports-color "^5.3.0"
240 |
241 | chardet@^0.7.0:
242 | version "0.7.0"
243 | resolved "https://registry.yarnpkg.com/chardet/-/chardet-0.7.0.tgz#90094849f0937f2eedc2425d0d28a9e5f0cbad9e"
244 | integrity sha512-mT8iDcrh03qDGRRmoA2hmBJnxpllMR+0/0qlzjqZES6NdiWDcZkCNAk4rPFZ9Q85r27unkiNNg8ZOiwZXBHwcA==
245 |
246 | ci-info@^2.0.0:
247 | version "2.0.0"
248 | resolved "https://registry.yarnpkg.com/ci-info/-/ci-info-2.0.0.tgz#67a9e964be31a51e15e5010d58e6f12834002f46"
249 | integrity sha512-5tK7EtrZ0N+OLFMthtqOj4fI2Jeb88C4CAZPu25LDVUgXJ0A3Js4PMGqrn0JU1W0Mh1/Z8wZzYPxqUrXeBboCQ==
250 |
251 | cli-cursor@^3.1.0:
252 | version "3.1.0"
253 | resolved "https://registry.yarnpkg.com/cli-cursor/-/cli-cursor-3.1.0.tgz#264305a7ae490d1d03bf0c9ba7c925d1753af307"
254 | integrity sha512-I/zHAwsKf9FqGoXM4WWRACob9+SNukZTd94DWF57E4toouRulbCxcUh6RKUEOQlYTHJnzkPMySvPNaaSLNfLZw==
255 | dependencies:
256 | restore-cursor "^3.1.0"
257 |
258 | cli-width@^2.0.0:
259 | version "2.2.0"
260 | resolved "https://registry.yarnpkg.com/cli-width/-/cli-width-2.2.0.tgz#ff19ede8a9a5e579324147b0c11f0fbcbabed639"
261 | integrity sha1-/xnt6Kml5XkyQUewwR8PvLq+1jk=
262 |
263 | color-convert@^1.9.0:
264 | version "1.9.3"
265 | resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-1.9.3.tgz#bb71850690e1f136567de629d2d5471deda4c1e8"
266 | integrity sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==
267 | dependencies:
268 | color-name "1.1.3"
269 |
270 | color-name@1.1.3:
271 | version "1.1.3"
272 | resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.3.tgz#a7d0558bd89c42f795dd42328f740831ca53bc25"
273 | integrity sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=
274 |
275 | combined-stream@^1.0.6, combined-stream@~1.0.6:
276 | version "1.0.8"
277 | resolved "https://registry.yarnpkg.com/combined-stream/-/combined-stream-1.0.8.tgz#c3d45a8b34fd730631a110a8a2520682b31d5a7f"
278 | integrity sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==
279 | dependencies:
280 | delayed-stream "~1.0.0"
281 |
282 | commander@^2.20.0:
283 | version "2.20.0"
284 | resolved "https://registry.yarnpkg.com/commander/-/commander-2.20.0.tgz#d58bb2b5c1ee8f87b0d340027e9e94e222c5a422"
285 | integrity sha512-7j2y+40w61zy6YC2iRNpUe/NwhNyoXrYpHMrSunaMG64nRnaf96zO/KMQR4OyN/UnE5KLyEBnKHd4aG3rskjpQ==
286 |
287 | concat-map@0.0.1:
288 | version "0.0.1"
289 | resolved "https://registry.yarnpkg.com/concat-map/-/concat-map-0.0.1.tgz#d8a96bd77fd68df7793a73036a3ba0d5405d477b"
290 | integrity sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=
291 |
292 | core-util-is@1.0.2:
293 | version "1.0.2"
294 | resolved "https://registry.yarnpkg.com/core-util-is/-/core-util-is-1.0.2.tgz#b5fd54220aa2bc5ab57aab7140c940754503c1a7"
295 | integrity sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=
296 |
297 | cosmiconfig@^5.2.1:
298 | version "5.2.1"
299 | resolved "https://registry.yarnpkg.com/cosmiconfig/-/cosmiconfig-5.2.1.tgz#040f726809c591e77a17c0a3626ca45b4f168b1a"
300 | integrity sha512-H65gsXo1SKjf8zmrJ67eJk8aIRKV5ff2D4uKZIBZShbhGSpEmsQOPW/SKMKYhSTrqR7ufy6RP69rPogdaPh/kA==
301 | dependencies:
302 | import-fresh "^2.0.0"
303 | is-directory "^0.3.1"
304 | js-yaml "^3.13.1"
305 | parse-json "^4.0.0"
306 |
307 | cross-spawn@^6.0.0, cross-spawn@^6.0.5:
308 | version "6.0.5"
309 | resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-6.0.5.tgz#4a5ec7c64dfae22c3a14124dbacdee846d80cbc4"
310 | integrity sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ==
311 | dependencies:
312 | nice-try "^1.0.4"
313 | path-key "^2.0.1"
314 | semver "^5.5.0"
315 | shebang-command "^1.2.0"
316 | which "^1.2.9"
317 |
318 | cssom@^0.4.1:
319 | version "0.4.1"
320 | resolved "https://registry.yarnpkg.com/cssom/-/cssom-0.4.1.tgz#b24111d236b6dbd00cdfacb5ab67a20473381fe3"
321 | integrity sha512-6Aajq0XmukE7HdXUU6IoSWuH1H6gH9z6qmagsstTiN7cW2FNTsb+J2Chs+ufPgZCsV/yo8oaEudQLrb9dGxSVQ==
322 |
323 | cssom@~0.3.6:
324 | version "0.3.8"
325 | resolved "https://registry.yarnpkg.com/cssom/-/cssom-0.3.8.tgz#9f1276f5b2b463f2114d3f2c75250af8c1a36f4a"
326 | integrity sha512-b0tGHbfegbhPJpxpiBPU2sCkigAqtM9O121le6bbOlgyV+NyGyCmVfJ6QW9eRjz8CpNfWEOYBIMIGRYkLwsIYg==
327 |
328 | cssstyle@^2.0.0:
329 | version "2.0.0"
330 | resolved "https://registry.yarnpkg.com/cssstyle/-/cssstyle-2.0.0.tgz#911f0fe25532db4f5d44afc83f89cc4b82c97fe3"
331 | integrity sha512-QXSAu2WBsSRXCPjvI43Y40m6fMevvyRm8JVAuF9ksQz5jha4pWP1wpaK7Yu5oLFc6+XAY+hj8YhefyXcBB53gg==
332 | dependencies:
333 | cssom "~0.3.6"
334 |
335 | d3-require@^1.2.4:
336 | version "1.2.4"
337 | resolved "https://registry.yarnpkg.com/d3-require/-/d3-require-1.2.4.tgz#59afc591d5089f99fecd8c45ef7539e1fee112b3"
338 | integrity sha512-8UseEGCkBkBxIMouLMPONUBmU8DUPC1q12LARV1Lk/2Jwa32SVgmRfX8GdIeR06ZP+CG85YD3N13K2s14qCNyA==
339 |
340 | dashdash@^1.12.0:
341 | version "1.14.1"
342 | resolved "https://registry.yarnpkg.com/dashdash/-/dashdash-1.14.1.tgz#853cfa0f7cbe2fed5de20326b8dd581035f6e2f0"
343 | integrity sha1-hTz6D3y+L+1d4gMmuN1YEDX24vA=
344 | dependencies:
345 | assert-plus "^1.0.0"
346 |
347 | data-urls@^1.1.0:
348 | version "1.1.0"
349 | resolved "https://registry.yarnpkg.com/data-urls/-/data-urls-1.1.0.tgz#15ee0582baa5e22bb59c77140da8f9c76963bbfe"
350 | integrity sha512-YTWYI9se1P55u58gL5GkQHW4P6VJBJ5iBT+B5a7i2Tjadhv52paJG0qHX4A0OR6/t52odI64KP2YvFpkDOi3eQ==
351 | dependencies:
352 | abab "^2.0.0"
353 | whatwg-mimetype "^2.2.0"
354 | whatwg-url "^7.0.0"
355 |
356 | debug@^4.0.1:
357 | version "4.1.1"
358 | resolved "https://registry.yarnpkg.com/debug/-/debug-4.1.1.tgz#3b72260255109c6b589cee050f1d516139664791"
359 | integrity sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw==
360 | dependencies:
361 | ms "^2.1.1"
362 |
363 | deep-equal@~1.0.1:
364 | version "1.0.1"
365 | resolved "https://registry.yarnpkg.com/deep-equal/-/deep-equal-1.0.1.tgz#f5d260292b660e084eff4cdbc9f08ad3247448b5"
366 | integrity sha1-9dJgKStmDghO/0zbyfCK0yR0SLU=
367 |
368 | deep-is@~0.1.3:
369 | version "0.1.3"
370 | resolved "https://registry.yarnpkg.com/deep-is/-/deep-is-0.1.3.tgz#b369d6fb5dbc13eecf524f91b070feedc357cf34"
371 | integrity sha1-s2nW+128E+7PUk+RsHD+7cNXzzQ=
372 |
373 | define-properties@^1.1.2:
374 | version "1.1.3"
375 | resolved "https://registry.yarnpkg.com/define-properties/-/define-properties-1.1.3.tgz#cf88da6cbee26fe6db7094f61d870cbd84cee9f1"
376 | integrity sha512-3MqfYKj2lLzdMSf8ZIZE/V+Zuy+BgD6f164e8K2w7dgnpKArBDerGYpM46IYYcjnkdPNMjPk9A6VFB8+3SKlXQ==
377 | dependencies:
378 | object-keys "^1.0.12"
379 |
380 | defined@~1.0.0:
381 | version "1.0.0"
382 | resolved "https://registry.yarnpkg.com/defined/-/defined-1.0.0.tgz#c98d9bcef75674188e110969151199e39b1fa693"
383 | integrity sha1-yY2bzvdWdBiOEQlpFRGZ45sfppM=
384 |
385 | delayed-stream@~1.0.0:
386 | version "1.0.0"
387 | resolved "https://registry.yarnpkg.com/delayed-stream/-/delayed-stream-1.0.0.tgz#df3ae199acadfb7d440aaae0b29e2272b24ec619"
388 | integrity sha1-3zrhmayt+31ECqrgsp4icrJOxhk=
389 |
390 | doctrine@^3.0.0:
391 | version "3.0.0"
392 | resolved "https://registry.yarnpkg.com/doctrine/-/doctrine-3.0.0.tgz#addebead72a6574db783639dc87a121773973961"
393 | integrity sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==
394 | dependencies:
395 | esutils "^2.0.2"
396 |
397 | domexception@^1.0.1:
398 | version "1.0.1"
399 | resolved "https://registry.yarnpkg.com/domexception/-/domexception-1.0.1.tgz#937442644ca6a31261ef36e3ec677fe805582c90"
400 | integrity sha512-raigMkn7CJNNo6Ihro1fzG7wr3fHuYVytzquZKX5n0yizGsTcYgzdIUwj1X9pK0VvjeihV+XiclP+DjwbsSKug==
401 | dependencies:
402 | webidl-conversions "^4.0.2"
403 |
404 | ecc-jsbn@~0.1.1:
405 | version "0.1.2"
406 | resolved "https://registry.yarnpkg.com/ecc-jsbn/-/ecc-jsbn-0.1.2.tgz#3a83a904e54353287874c564b7549386849a98c9"
407 | integrity sha1-OoOpBOVDUyh4dMVkt1SThoSamMk=
408 | dependencies:
409 | jsbn "~0.1.0"
410 | safer-buffer "^2.1.0"
411 |
412 | emoji-regex@^7.0.1:
413 | version "7.0.3"
414 | resolved "https://registry.yarnpkg.com/emoji-regex/-/emoji-regex-7.0.3.tgz#933a04052860c85e83c122479c4748a8e4c72156"
415 | integrity sha512-CwBLREIQ7LvYFB0WyRvwhq5N5qPhc6PMjD6bYggFlI5YyDgl+0vxq5VHbMOFqLg7hfWzmu8T5Z1QofhmTIhItA==
416 |
417 | emoji-regex@^8.0.0:
418 | version "8.0.0"
419 | resolved "https://registry.yarnpkg.com/emoji-regex/-/emoji-regex-8.0.0.tgz#e818fd69ce5ccfcb404594f842963bf53164cc37"
420 | integrity sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==
421 |
422 | end-of-stream@^1.1.0:
423 | version "1.4.1"
424 | resolved "https://registry.yarnpkg.com/end-of-stream/-/end-of-stream-1.4.1.tgz#ed29634d19baba463b6ce6b80a37213eab71ec43"
425 | integrity sha512-1MkrZNvWTKCaigbn+W15elq2BB/L22nqrSY5DKlo3X6+vclJm8Bb5djXJBmEX6fS3+zCh/F4VBK5Z2KxJt4s2Q==
426 | dependencies:
427 | once "^1.4.0"
428 |
429 | error-ex@^1.3.1:
430 | version "1.3.2"
431 | resolved "https://registry.yarnpkg.com/error-ex/-/error-ex-1.3.2.tgz#b4ac40648107fdcdcfae242f428bea8a14d4f1bf"
432 | integrity sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==
433 | dependencies:
434 | is-arrayish "^0.2.1"
435 |
436 | es-abstract@^1.5.0:
437 | version "1.13.0"
438 | resolved "https://registry.yarnpkg.com/es-abstract/-/es-abstract-1.13.0.tgz#ac86145fdd5099d8dd49558ccba2eaf9b88e24e9"
439 | integrity sha512-vDZfg/ykNxQVwup/8E1BZhVzFfBxs9NqMzGcvIJrqg5k2/5Za2bWo40dK2J1pgLngZ7c+Shh8lwYtLGyrwPutg==
440 | dependencies:
441 | es-to-primitive "^1.2.0"
442 | function-bind "^1.1.1"
443 | has "^1.0.3"
444 | is-callable "^1.1.4"
445 | is-regex "^1.0.4"
446 | object-keys "^1.0.12"
447 |
448 | es-to-primitive@^1.2.0:
449 | version "1.2.0"
450 | resolved "https://registry.yarnpkg.com/es-to-primitive/-/es-to-primitive-1.2.0.tgz#edf72478033456e8dda8ef09e00ad9650707f377"
451 | integrity sha512-qZryBOJjV//LaxLTV6UC//WewneB3LcXOL9NP++ozKVXsIIIpm/2c13UDiD9Jp2eThsecw9m3jPqDwTyobcdbg==
452 | dependencies:
453 | is-callable "^1.1.4"
454 | is-date-object "^1.0.1"
455 | is-symbol "^1.0.2"
456 |
457 | escape-string-regexp@^1.0.5:
458 | version "1.0.5"
459 | resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz#1b61c0562190a8dff6ae3bb2cf0200ca130b86d4"
460 | integrity sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=
461 |
462 | escodegen@^1.11.1:
463 | version "1.12.0"
464 | resolved "https://registry.yarnpkg.com/escodegen/-/escodegen-1.12.0.tgz#f763daf840af172bb3a2b6dd7219c0e17f7ff541"
465 | integrity sha512-TuA+EhsanGcme5T3R0L80u4t8CpbXQjegRmf7+FPTJrtCTErXFeelblRgHQa1FofEzqYYJmJ/OqjTwREp9qgmg==
466 | dependencies:
467 | esprima "^3.1.3"
468 | estraverse "^4.2.0"
469 | esutils "^2.0.2"
470 | optionator "^0.8.1"
471 | optionalDependencies:
472 | source-map "~0.6.1"
473 |
474 | eslint-scope@^5.0.0:
475 | version "5.0.0"
476 | resolved "https://registry.yarnpkg.com/eslint-scope/-/eslint-scope-5.0.0.tgz#e87c8887c73e8d1ec84f1ca591645c358bfc8fb9"
477 | integrity sha512-oYrhJW7S0bxAFDvWqzvMPRm6pcgcnWc4QnofCAqRTRfQC0JcwenzGglTtsLyIuuWFfkqDG9vz67cnttSd53djw==
478 | dependencies:
479 | esrecurse "^4.1.0"
480 | estraverse "^4.1.1"
481 |
482 | eslint-utils@^1.4.3:
483 | version "1.4.3"
484 | resolved "https://registry.yarnpkg.com/eslint-utils/-/eslint-utils-1.4.3.tgz#74fec7c54d0776b6f67e0251040b5806564e981f"
485 | integrity sha512-fbBN5W2xdY45KulGXmLHZ3c3FHfVYmKg0IrAKGOkT/464PQsx2UeIzfz1RmEci+KLm1bBaAzZAh8+/E+XAeZ8Q==
486 | dependencies:
487 | eslint-visitor-keys "^1.1.0"
488 |
489 | eslint-visitor-keys@^1.1.0:
490 | version "1.1.0"
491 | resolved "https://registry.yarnpkg.com/eslint-visitor-keys/-/eslint-visitor-keys-1.1.0.tgz#e2a82cea84ff246ad6fb57f9bde5b46621459ec2"
492 | integrity sha512-8y9YjtM1JBJU/A9Kc+SbaOV4y29sSWckBwMHa+FGtVj5gN/sbnKDf6xJUl+8g7FAij9LVaP8C24DUiH/f/2Z9A==
493 |
494 | eslint@^6.7.2:
495 | version "6.7.2"
496 | resolved "https://registry.yarnpkg.com/eslint/-/eslint-6.7.2.tgz#c17707ca4ad7b2d8af986a33feba71e18a9fecd1"
497 | integrity sha512-qMlSWJaCSxDFr8fBPvJM9kJwbazrhNcBU3+DszDW1OlEwKBBRWsJc7NJFelvwQpanHCR14cOLD41x8Eqvo3Nng==
498 | dependencies:
499 | "@babel/code-frame" "^7.0.0"
500 | ajv "^6.10.0"
501 | chalk "^2.1.0"
502 | cross-spawn "^6.0.5"
503 | debug "^4.0.1"
504 | doctrine "^3.0.0"
505 | eslint-scope "^5.0.0"
506 | eslint-utils "^1.4.3"
507 | eslint-visitor-keys "^1.1.0"
508 | espree "^6.1.2"
509 | esquery "^1.0.1"
510 | esutils "^2.0.2"
511 | file-entry-cache "^5.0.1"
512 | functional-red-black-tree "^1.0.1"
513 | glob-parent "^5.0.0"
514 | globals "^12.1.0"
515 | ignore "^4.0.6"
516 | import-fresh "^3.0.0"
517 | imurmurhash "^0.1.4"
518 | inquirer "^7.0.0"
519 | is-glob "^4.0.0"
520 | js-yaml "^3.13.1"
521 | json-stable-stringify-without-jsonify "^1.0.1"
522 | levn "^0.3.0"
523 | lodash "^4.17.14"
524 | minimatch "^3.0.4"
525 | mkdirp "^0.5.1"
526 | natural-compare "^1.4.0"
527 | optionator "^0.8.3"
528 | progress "^2.0.0"
529 | regexpp "^2.0.1"
530 | semver "^6.1.2"
531 | strip-ansi "^5.2.0"
532 | strip-json-comments "^3.0.1"
533 | table "^5.2.3"
534 | text-table "^0.2.0"
535 | v8-compile-cache "^2.0.3"
536 |
537 | esm@^3.0.84, esm@^3.2.25:
538 | version "3.2.25"
539 | resolved "https://registry.yarnpkg.com/esm/-/esm-3.2.25.tgz#342c18c29d56157688ba5ce31f8431fbb795cc10"
540 | integrity sha512-U1suiZ2oDVWv4zPO56S0NcR5QriEahGtdN2OR6FiOG4WJvcjBVFB0qI4+eKoWFH483PKGuLuu6V8Z4T5g63UVA==
541 |
542 | espree@^6.1.2:
543 | version "6.1.2"
544 | resolved "https://registry.yarnpkg.com/espree/-/espree-6.1.2.tgz#6c272650932b4f91c3714e5e7b5f5e2ecf47262d"
545 | integrity sha512-2iUPuuPP+yW1PZaMSDM9eyVf8D5P0Hi8h83YtZ5bPc/zHYjII5khoixIUTMO794NOY8F/ThF1Bo8ncZILarUTA==
546 | dependencies:
547 | acorn "^7.1.0"
548 | acorn-jsx "^5.1.0"
549 | eslint-visitor-keys "^1.1.0"
550 |
551 | esprima@^3.1.3:
552 | version "3.1.3"
553 | resolved "https://registry.yarnpkg.com/esprima/-/esprima-3.1.3.tgz#fdca51cee6133895e3c88d535ce49dbff62a4633"
554 | integrity sha1-/cpRzuYTOJXjyI1TXOSdv/YqRjM=
555 |
556 | esprima@^4.0.0:
557 | version "4.0.1"
558 | resolved "https://registry.yarnpkg.com/esprima/-/esprima-4.0.1.tgz#13b04cdb3e6c5d19df91ab6987a8695619b0aa71"
559 | integrity sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==
560 |
561 | esquery@^1.0.1:
562 | version "1.0.1"
563 | resolved "https://registry.yarnpkg.com/esquery/-/esquery-1.0.1.tgz#406c51658b1f5991a5f9b62b1dc25b00e3e5c708"
564 | integrity sha512-SmiyZ5zIWH9VM+SRUReLS5Q8a7GxtRdxEBVZpm98rJM7Sb+A9DVCndXfkeFUd3byderg+EbDkfnevfCwynWaNA==
565 | dependencies:
566 | estraverse "^4.0.0"
567 |
568 | esrecurse@^4.1.0:
569 | version "4.2.1"
570 | resolved "https://registry.yarnpkg.com/esrecurse/-/esrecurse-4.2.1.tgz#007a3b9fdbc2b3bb87e4879ea19c92fdbd3942cf"
571 | integrity sha512-64RBB++fIOAXPw3P9cy89qfMlvZEXZkqqJkjqqXIvzP5ezRZjW+lPWjw35UX/3EhUPFYbg5ER4JYgDw4007/DQ==
572 | dependencies:
573 | estraverse "^4.1.0"
574 |
575 | estraverse@^4.0.0, estraverse@^4.1.0, estraverse@^4.1.1, estraverse@^4.2.0:
576 | version "4.3.0"
577 | resolved "https://registry.yarnpkg.com/estraverse/-/estraverse-4.3.0.tgz#398ad3f3c5a24948be7725e83d11a7de28cdbd1d"
578 | integrity sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==
579 |
580 | estree-walker@^0.6.1:
581 | version "0.6.1"
582 | resolved "https://registry.yarnpkg.com/estree-walker/-/estree-walker-0.6.1.tgz#53049143f40c6eb918b23671d1fe3219f3a1b362"
583 | integrity sha512-SqmZANLWS0mnatqbSfRP5g8OXZC12Fgg1IwNtLsyHDzJizORW4khDfjPqJZsemPWBB2uqykUah5YpQ6epsqC/w==
584 |
585 | esutils@^2.0.2:
586 | version "2.0.3"
587 | resolved "https://registry.yarnpkg.com/esutils/-/esutils-2.0.3.tgz#74d2eb4de0b8da1293711910d50775b9b710ef64"
588 | integrity sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==
589 |
590 | execa@^1.0.0:
591 | version "1.0.0"
592 | resolved "https://registry.yarnpkg.com/execa/-/execa-1.0.0.tgz#c6236a5bb4df6d6f15e88e7f017798216749ddd8"
593 | integrity sha512-adbxcyWV46qiHyvSp50TKt05tB4tK3HcmF7/nxfAdhnox83seTDbwnaqKO4sXRy7roHAIFqJP/Rw/AuEbX61LA==
594 | dependencies:
595 | cross-spawn "^6.0.0"
596 | get-stream "^4.0.0"
597 | is-stream "^1.1.0"
598 | npm-run-path "^2.0.0"
599 | p-finally "^1.0.0"
600 | signal-exit "^3.0.0"
601 | strip-eof "^1.0.0"
602 |
603 | extend@~3.0.2:
604 | version "3.0.2"
605 | resolved "https://registry.yarnpkg.com/extend/-/extend-3.0.2.tgz#f8b1136b4071fbd8eb140aff858b1019ec2915fa"
606 | integrity sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==
607 |
608 | external-editor@^3.0.3:
609 | version "3.1.0"
610 | resolved "https://registry.yarnpkg.com/external-editor/-/external-editor-3.1.0.tgz#cb03f740befae03ea4d283caed2741a83f335495"
611 | integrity sha512-hMQ4CX1p1izmuLYyZqLMO/qGNw10wSv9QDCPfzXfyFrOaCSSoRfqE1Kf1s5an66J5JZC62NewG+mK49jOCtQew==
612 | dependencies:
613 | chardet "^0.7.0"
614 | iconv-lite "^0.4.24"
615 | tmp "^0.0.33"
616 |
617 | extsprintf@1.3.0:
618 | version "1.3.0"
619 | resolved "https://registry.yarnpkg.com/extsprintf/-/extsprintf-1.3.0.tgz#96918440e3041a7a414f8c52e3c574eb3c3e1e05"
620 | integrity sha1-lpGEQOMEGnpBT4xS48V06zw+HgU=
621 |
622 | extsprintf@^1.2.0:
623 | version "1.4.0"
624 | resolved "https://registry.yarnpkg.com/extsprintf/-/extsprintf-1.4.0.tgz#e2689f8f356fad62cca65a3a91c5df5f9551692f"
625 | integrity sha1-4mifjzVvrWLMplo6kcXfX5VRaS8=
626 |
627 | fast-deep-equal@^2.0.1:
628 | version "2.0.1"
629 | resolved "https://registry.yarnpkg.com/fast-deep-equal/-/fast-deep-equal-2.0.1.tgz#7b05218ddf9667bf7f370bf7fdb2cb15fdd0aa49"
630 | integrity sha1-ewUhjd+WZ79/Nwv3/bLLFf3Qqkk=
631 |
632 | fast-json-stable-stringify@^2.0.0:
633 | version "2.0.0"
634 | resolved "https://registry.yarnpkg.com/fast-json-stable-stringify/-/fast-json-stable-stringify-2.0.0.tgz#d5142c0caee6b1189f87d3a76111064f86c8bbf2"
635 | integrity sha1-1RQsDK7msRifh9OnYREGT4bIu/I=
636 |
637 | fast-levenshtein@~2.0.6:
638 | version "2.0.6"
639 | resolved "https://registry.yarnpkg.com/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz#3d8a5c66883a16a30ca8643e851f19baa7797917"
640 | integrity sha1-PYpcZog6FqMMqGQ+hR8Zuqd5eRc=
641 |
642 | figures@^3.0.0:
643 | version "3.0.0"
644 | resolved "https://registry.yarnpkg.com/figures/-/figures-3.0.0.tgz#756275c964646163cc6f9197c7a0295dbfd04de9"
645 | integrity sha512-HKri+WoWoUgr83pehn/SIgLOMZ9nAWC6dcGj26RY2R4F50u4+RTUz0RCrUlOV3nKRAICW1UGzyb+kcX2qK1S/g==
646 | dependencies:
647 | escape-string-regexp "^1.0.5"
648 |
649 | file-entry-cache@^5.0.1:
650 | version "5.0.1"
651 | resolved "https://registry.yarnpkg.com/file-entry-cache/-/file-entry-cache-5.0.1.tgz#ca0f6efa6dd3d561333fb14515065c2fafdf439c"
652 | integrity sha512-bCg29ictuBaKUwwArK4ouCaqDgLZcysCFLmM/Yn/FDoqndh/9vNuQfXRDvTuXKLxfD/JtZQGKFT8MGcJBK644g==
653 | dependencies:
654 | flat-cache "^2.0.1"
655 |
656 | find-up@^4.0.0:
657 | version "4.1.0"
658 | resolved "https://registry.yarnpkg.com/find-up/-/find-up-4.1.0.tgz#97afe7d6cdc0bc5928584b7c8d7b16e8a9aa5d19"
659 | integrity sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==
660 | dependencies:
661 | locate-path "^5.0.0"
662 | path-exists "^4.0.0"
663 |
664 | flat-cache@^2.0.1:
665 | version "2.0.1"
666 | resolved "https://registry.yarnpkg.com/flat-cache/-/flat-cache-2.0.1.tgz#5d296d6f04bda44a4630a301413bdbc2ec085ec0"
667 | integrity sha512-LoQe6yDuUMDzQAEH8sgmh4Md6oZnc/7PjtwjNFSzveXqSHt6ka9fPBuso7IGf9Rz4uqnSnWiFH2B/zj24a5ReA==
668 | dependencies:
669 | flatted "^2.0.0"
670 | rimraf "2.6.3"
671 | write "1.0.3"
672 |
673 | flatted@^2.0.0:
674 | version "2.0.1"
675 | resolved "https://registry.yarnpkg.com/flatted/-/flatted-2.0.1.tgz#69e57caa8f0eacbc281d2e2cb458d46fdb449e08"
676 | integrity sha512-a1hQMktqW9Nmqr5aktAux3JMNqaucxGcjtjWnZLHX7yyPCmlSV3M54nGYbqT8K+0GhF3NBgmJCc3ma+WOgX8Jg==
677 |
678 | for-each@~0.3.3:
679 | version "0.3.3"
680 | resolved "https://registry.yarnpkg.com/for-each/-/for-each-0.3.3.tgz#69b447e88a0a5d32c3e7084f3f1710034b21376e"
681 | integrity sha512-jqYfLp7mo9vIyQf8ykW2v7A+2N4QjeCeI5+Dz9XraiO1ign81wjiH7Fb9vSOWvQfNtmSa4H2RoQTrrXivdUZmw==
682 | dependencies:
683 | is-callable "^1.1.3"
684 |
685 | forever-agent@~0.6.1:
686 | version "0.6.1"
687 | resolved "https://registry.yarnpkg.com/forever-agent/-/forever-agent-0.6.1.tgz#fbc71f0c41adeb37f96c577ad1ed42d8fdacca91"
688 | integrity sha1-+8cfDEGt6zf5bFd60e1C2P2sypE=
689 |
690 | form-data@~2.3.2:
691 | version "2.3.3"
692 | resolved "https://registry.yarnpkg.com/form-data/-/form-data-2.3.3.tgz#dcce52c05f644f298c6a7ab936bd724ceffbf3a6"
693 | integrity sha512-1lLKB2Mu3aGP1Q/2eCOx0fNbRMe7XdwktwOruhfqqd0rIJWwN4Dh+E3hrPSlDCXnSR7UtZ1N38rVXm+6+MEhJQ==
694 | dependencies:
695 | asynckit "^0.4.0"
696 | combined-stream "^1.0.6"
697 | mime-types "^2.1.12"
698 |
699 | fs.realpath@^1.0.0:
700 | version "1.0.0"
701 | resolved "https://registry.yarnpkg.com/fs.realpath/-/fs.realpath-1.0.0.tgz#1504ad2523158caa40db4a2787cb01411994ea4f"
702 | integrity sha1-FQStJSMVjKpA20onh8sBQRmU6k8=
703 |
704 | function-bind@^1.0.2, function-bind@^1.1.1, function-bind@~1.1.1:
705 | version "1.1.1"
706 | resolved "https://registry.yarnpkg.com/function-bind/-/function-bind-1.1.1.tgz#a56899d3ea3c9bab874bb9773b7c5ede92f4895d"
707 | integrity sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==
708 |
709 | functional-red-black-tree@^1.0.1:
710 | version "1.0.1"
711 | resolved "https://registry.yarnpkg.com/functional-red-black-tree/-/functional-red-black-tree-1.0.1.tgz#1b0ab3bd553b2a0d6399d29c0e3ea0b252078327"
712 | integrity sha1-GwqzvVU7Kg1jmdKcDj6gslIHgyc=
713 |
714 | get-stdin@^7.0.0:
715 | version "7.0.0"
716 | resolved "https://registry.yarnpkg.com/get-stdin/-/get-stdin-7.0.0.tgz#8d5de98f15171a125c5e516643c7a6d0ea8a96f6"
717 | integrity sha512-zRKcywvrXlXsA0v0i9Io4KDRaAw7+a1ZpjRwl9Wox8PFlVCCHra7E9c4kqXCoCM9nR5tBkaTTZRBoCm60bFqTQ==
718 |
719 | get-stream@^4.0.0:
720 | version "4.1.0"
721 | resolved "https://registry.yarnpkg.com/get-stream/-/get-stream-4.1.0.tgz#c1b255575f3dc21d59bfc79cd3d2b46b1c3a54b5"
722 | integrity sha512-GMat4EJ5161kIy2HevLlr4luNjBgvmj413KaQA7jt4V8B4RDsfpHk7WQ9GVqfYyyx8OS/L66Kox+rJRNklLK7w==
723 | dependencies:
724 | pump "^3.0.0"
725 |
726 | getpass@^0.1.1:
727 | version "0.1.7"
728 | resolved "https://registry.yarnpkg.com/getpass/-/getpass-0.1.7.tgz#5eff8e3e684d569ae4cb2b1282604e8ba62149fa"
729 | integrity sha1-Xv+OPmhNVprkyysSgmBOi6YhSfo=
730 | dependencies:
731 | assert-plus "^1.0.0"
732 |
733 | glob-parent@^5.0.0:
734 | version "5.0.0"
735 | resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-5.0.0.tgz#1dc99f0f39b006d3e92c2c284068382f0c20e954"
736 | integrity sha512-Z2RwiujPRGluePM6j699ktJYxmPpJKCfpGA13jz2hmFZC7gKetzrWvg5KN3+OsIFmydGyZ1AVwERCq1w/ZZwRg==
737 | dependencies:
738 | is-glob "^4.0.1"
739 |
740 | glob@^7.1.3, glob@~7.1.4:
741 | version "7.1.4"
742 | resolved "https://registry.yarnpkg.com/glob/-/glob-7.1.4.tgz#aa608a2f6c577ad357e1ae5a5c26d9a8d1969255"
743 | integrity sha512-hkLPepehmnKk41pUGm3sYxoFs/umurYfYJCerbXEyFIWcAzvpipAgVkBqqT9RBKMGjnq6kMuyYwha6csxbiM1A==
744 | dependencies:
745 | fs.realpath "^1.0.0"
746 | inflight "^1.0.4"
747 | inherits "2"
748 | minimatch "^3.0.4"
749 | once "^1.3.0"
750 | path-is-absolute "^1.0.0"
751 |
752 | globals@^12.1.0:
753 | version "12.3.0"
754 | resolved "https://registry.yarnpkg.com/globals/-/globals-12.3.0.tgz#1e564ee5c4dded2ab098b0f88f24702a3c56be13"
755 | integrity sha512-wAfjdLgFsPZsklLJvOBUBmzYE8/CwhEqSBEMRXA3qxIiNtyqvjYurAtIfDh6chlEPUfmTY3MnZh5Hfh4q0UlIw==
756 | dependencies:
757 | type-fest "^0.8.1"
758 |
759 | har-schema@^2.0.0:
760 | version "2.0.0"
761 | resolved "https://registry.yarnpkg.com/har-schema/-/har-schema-2.0.0.tgz#a94c2224ebcac04782a0d9035521f24735b7ec92"
762 | integrity sha1-qUwiJOvKwEeCoNkDVSHyRzW37JI=
763 |
764 | har-validator@~5.1.0:
765 | version "5.1.3"
766 | resolved "https://registry.yarnpkg.com/har-validator/-/har-validator-5.1.3.tgz#1ef89ebd3e4996557675eed9893110dc350fa080"
767 | integrity sha512-sNvOCzEQNr/qrvJgc3UG/kD4QtlHycrzwS+6mfTrrSq97BvaYcPZZI1ZSqGSPR73Cxn4LKTD4PttRwfU7jWq5g==
768 | dependencies:
769 | ajv "^6.5.5"
770 | har-schema "^2.0.0"
771 |
772 | has-flag@^3.0.0:
773 | version "3.0.0"
774 | resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-3.0.0.tgz#b5d454dc2199ae225699f3467e5a07f3b955bafd"
775 | integrity sha1-tdRU3CGZriJWmfNGfloH87lVuv0=
776 |
777 | has-symbols@^1.0.0:
778 | version "1.0.0"
779 | resolved "https://registry.yarnpkg.com/has-symbols/-/has-symbols-1.0.0.tgz#ba1a8f1af2a0fc39650f5c850367704122063b44"
780 | integrity sha1-uhqPGvKg/DllD1yFA2dwQSIGO0Q=
781 |
782 | has@^1.0.1, has@^1.0.3, has@~1.0.3:
783 | version "1.0.3"
784 | resolved "https://registry.yarnpkg.com/has/-/has-1.0.3.tgz#722d7cbfc1f6aa8241f16dd814e011e1f41e8796"
785 | integrity sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==
786 | dependencies:
787 | function-bind "^1.1.1"
788 |
789 | hosted-git-info@^2.1.4:
790 | version "2.8.4"
791 | resolved "https://registry.yarnpkg.com/hosted-git-info/-/hosted-git-info-2.8.4.tgz#44119abaf4bc64692a16ace34700fed9c03e2546"
792 | integrity sha512-pzXIvANXEFrc5oFFXRMkbLPQ2rXRoDERwDLyrcUxGhaZhgP54BBSl9Oheh7Vv0T090cszWBxPjkQQ5Sq1PbBRQ==
793 |
794 | html-encoding-sniffer@^1.0.2:
795 | version "1.0.2"
796 | resolved "https://registry.yarnpkg.com/html-encoding-sniffer/-/html-encoding-sniffer-1.0.2.tgz#e70d84b94da53aa375e11fe3a351be6642ca46f8"
797 | integrity sha512-71lZziiDnsuabfdYiUeWdCVyKuqwWi23L8YeIgV9jSSZHCtb6wB1BKWooH7L3tn4/FuZJMVWyNaIDr4RGmaSYw==
798 | dependencies:
799 | whatwg-encoding "^1.0.1"
800 |
801 | http-signature@~1.2.0:
802 | version "1.2.0"
803 | resolved "https://registry.yarnpkg.com/http-signature/-/http-signature-1.2.0.tgz#9aecd925114772f3d95b65a60abb8f7c18fbace1"
804 | integrity sha1-muzZJRFHcvPZW2WmCruPfBj7rOE=
805 | dependencies:
806 | assert-plus "^1.0.0"
807 | jsprim "^1.2.2"
808 | sshpk "^1.7.0"
809 |
810 | husky@^3.1.0:
811 | version "3.1.0"
812 | resolved "https://registry.yarnpkg.com/husky/-/husky-3.1.0.tgz#5faad520ab860582ed94f0c1a77f0f04c90b57c0"
813 | integrity sha512-FJkPoHHB+6s4a+jwPqBudBDvYZsoQW5/HBuMSehC8qDiCe50kpcxeqFoDSlow+9I6wg47YxBoT3WxaURlrDIIQ==
814 | dependencies:
815 | chalk "^2.4.2"
816 | ci-info "^2.0.0"
817 | cosmiconfig "^5.2.1"
818 | execa "^1.0.0"
819 | get-stdin "^7.0.0"
820 | opencollective-postinstall "^2.0.2"
821 | pkg-dir "^4.2.0"
822 | please-upgrade-node "^3.2.0"
823 | read-pkg "^5.2.0"
824 | run-node "^1.0.0"
825 | slash "^3.0.0"
826 |
827 | iconv-lite@0.4.24, iconv-lite@^0.4.24:
828 | version "0.4.24"
829 | resolved "https://registry.yarnpkg.com/iconv-lite/-/iconv-lite-0.4.24.tgz#2022b4b25fbddc21d2f524974a474aafe733908b"
830 | integrity sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==
831 | dependencies:
832 | safer-buffer ">= 2.1.2 < 3"
833 |
834 | ignore@^4.0.6:
835 | version "4.0.6"
836 | resolved "https://registry.yarnpkg.com/ignore/-/ignore-4.0.6.tgz#750e3db5862087b4737ebac8207ffd1ef27b25fc"
837 | integrity sha512-cyFDKrqc/YdcWFniJhzI42+AzS+gNwmUzOSFcRCQYwySuBBBy/KjuxWLZ/FHEH6Moq1NizMOBWyTcv8O4OZIMg==
838 |
839 | import-fresh@^2.0.0:
840 | version "2.0.0"
841 | resolved "https://registry.yarnpkg.com/import-fresh/-/import-fresh-2.0.0.tgz#d81355c15612d386c61f9ddd3922d4304822a546"
842 | integrity sha1-2BNVwVYS04bGH53dOSLUMEgipUY=
843 | dependencies:
844 | caller-path "^2.0.0"
845 | resolve-from "^3.0.0"
846 |
847 | import-fresh@^3.0.0:
848 | version "3.1.0"
849 | resolved "https://registry.yarnpkg.com/import-fresh/-/import-fresh-3.1.0.tgz#6d33fa1dcef6df930fae003446f33415af905118"
850 | integrity sha512-PpuksHKGt8rXfWEr9m9EHIpgyyaltBy8+eF6GJM0QCAxMgxCfucMF3mjecK2QsJr0amJW7gTqh5/wht0z2UhEQ==
851 | dependencies:
852 | parent-module "^1.0.0"
853 | resolve-from "^4.0.0"
854 |
855 | imurmurhash@^0.1.4:
856 | version "0.1.4"
857 | resolved "https://registry.yarnpkg.com/imurmurhash/-/imurmurhash-0.1.4.tgz#9218b9b2b928a238b13dc4fb6b6d576f231453ea"
858 | integrity sha1-khi5srkoojixPcT7a21XbyMUU+o=
859 |
860 | inflight@^1.0.4:
861 | version "1.0.6"
862 | resolved "https://registry.yarnpkg.com/inflight/-/inflight-1.0.6.tgz#49bd6331d7d02d0c09bc910a1075ba8165b56df9"
863 | integrity sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=
864 | dependencies:
865 | once "^1.3.0"
866 | wrappy "1"
867 |
868 | inherits@2, inherits@~2.0.4:
869 | version "2.0.4"
870 | resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.4.tgz#0fa2c64f932917c3433a0ded55363aae37416b7c"
871 | integrity sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==
872 |
873 | inquirer@^7.0.0:
874 | version "7.0.0"
875 | resolved "https://registry.yarnpkg.com/inquirer/-/inquirer-7.0.0.tgz#9e2b032dde77da1db5db804758b8fea3a970519a"
876 | integrity sha512-rSdC7zelHdRQFkWnhsMu2+2SO41mpv2oF2zy4tMhmiLWkcKbOAs87fWAJhVXttKVwhdZvymvnuM95EyEXg2/tQ==
877 | dependencies:
878 | ansi-escapes "^4.2.1"
879 | chalk "^2.4.2"
880 | cli-cursor "^3.1.0"
881 | cli-width "^2.0.0"
882 | external-editor "^3.0.3"
883 | figures "^3.0.0"
884 | lodash "^4.17.15"
885 | mute-stream "0.0.8"
886 | run-async "^2.2.0"
887 | rxjs "^6.4.0"
888 | string-width "^4.1.0"
889 | strip-ansi "^5.1.0"
890 | through "^2.3.6"
891 |
892 | ip-regex@^2.1.0:
893 | version "2.1.0"
894 | resolved "https://registry.yarnpkg.com/ip-regex/-/ip-regex-2.1.0.tgz#fa78bf5d2e6913c911ce9f819ee5146bb6d844e9"
895 | integrity sha1-+ni/XS5pE8kRzp+BnuUUa7bYROk=
896 |
897 | is-arrayish@^0.2.1:
898 | version "0.2.1"
899 | resolved "https://registry.yarnpkg.com/is-arrayish/-/is-arrayish-0.2.1.tgz#77c99840527aa8ecb1a8ba697b80645a7a926a9d"
900 | integrity sha1-d8mYQFJ6qOyxqLppe4BkWnqSap0=
901 |
902 | is-callable@^1.1.3, is-callable@^1.1.4:
903 | version "1.1.4"
904 | resolved "https://registry.yarnpkg.com/is-callable/-/is-callable-1.1.4.tgz#1e1adf219e1eeb684d691f9d6a05ff0d30a24d75"
905 | integrity sha512-r5p9sxJjYnArLjObpjA4xu5EKI3CuKHkJXMhT7kwbpUyIFD1n5PMAsoPvWnvtZiNz7LjkYDRZhd7FlI0eMijEA==
906 |
907 | is-date-object@^1.0.1:
908 | version "1.0.1"
909 | resolved "https://registry.yarnpkg.com/is-date-object/-/is-date-object-1.0.1.tgz#9aa20eb6aeebbff77fbd33e74ca01b33581d3a16"
910 | integrity sha1-mqIOtq7rv/d/vTPnTKAbM1gdOhY=
911 |
912 | is-directory@^0.3.1:
913 | version "0.3.1"
914 | resolved "https://registry.yarnpkg.com/is-directory/-/is-directory-0.3.1.tgz#61339b6f2475fc772fd9c9d83f5c8575dc154ae1"
915 | integrity sha1-YTObbyR1/Hcv2cnYP1yFddwVSuE=
916 |
917 | is-extglob@^2.1.1:
918 | version "2.1.1"
919 | resolved "https://registry.yarnpkg.com/is-extglob/-/is-extglob-2.1.1.tgz#a88c02535791f02ed37c76a1b9ea9773c833f8c2"
920 | integrity sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=
921 |
922 | is-fullwidth-code-point@^2.0.0:
923 | version "2.0.0"
924 | resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz#a3b30a5c4f199183167aaab93beefae3ddfb654f"
925 | integrity sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=
926 |
927 | is-fullwidth-code-point@^3.0.0:
928 | version "3.0.0"
929 | resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz#f116f8064fe90b3f7844a38997c0b75051269f1d"
930 | integrity sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==
931 |
932 | is-glob@^4.0.0, is-glob@^4.0.1:
933 | version "4.0.1"
934 | resolved "https://registry.yarnpkg.com/is-glob/-/is-glob-4.0.1.tgz#7567dbe9f2f5e2467bc77ab83c4a29482407a5dc"
935 | integrity sha512-5G0tKtBTFImOqDnLB2hG6Bp2qcKEFduo4tZu9MT/H6NQv/ghhy30o55ufafxJ/LdH79LLs2Kfrn85TLKyA7BUg==
936 | dependencies:
937 | is-extglob "^2.1.1"
938 |
939 | is-module@^1.0.0:
940 | version "1.0.0"
941 | resolved "https://registry.yarnpkg.com/is-module/-/is-module-1.0.0.tgz#3258fb69f78c14d5b815d664336b4cffb6441591"
942 | integrity sha1-Mlj7afeMFNW4FdZkM2tM/7ZEFZE=
943 |
944 | is-promise@^2.1.0:
945 | version "2.1.0"
946 | resolved "https://registry.yarnpkg.com/is-promise/-/is-promise-2.1.0.tgz#79a2a9ece7f096e80f36d2b2f3bc16c1ff4bf3fa"
947 | integrity sha1-eaKp7OfwlugPNtKy87wWwf9L8/o=
948 |
949 | is-regex@^1.0.4:
950 | version "1.0.4"
951 | resolved "https://registry.yarnpkg.com/is-regex/-/is-regex-1.0.4.tgz#5517489b547091b0930e095654ced25ee97e9491"
952 | integrity sha1-VRdIm1RwkbCTDglWVM7SXul+lJE=
953 | dependencies:
954 | has "^1.0.1"
955 |
956 | is-stream@^1.1.0:
957 | version "1.1.0"
958 | resolved "https://registry.yarnpkg.com/is-stream/-/is-stream-1.1.0.tgz#12d4a3dd4e68e0b79ceb8dbc84173ae80d91ca44"
959 | integrity sha1-EtSj3U5o4Lec6428hBc66A2RykQ=
960 |
961 | is-symbol@^1.0.2:
962 | version "1.0.2"
963 | resolved "https://registry.yarnpkg.com/is-symbol/-/is-symbol-1.0.2.tgz#a055f6ae57192caee329e7a860118b497a950f38"
964 | integrity sha512-HS8bZ9ox60yCJLH9snBpIwv9pYUAkcuLhSA1oero1UB5y9aiQpRA8y2ex945AOtCZL1lJDeIk3G5LthswI46Lw==
965 | dependencies:
966 | has-symbols "^1.0.0"
967 |
968 | is-typedarray@~1.0.0:
969 | version "1.0.0"
970 | resolved "https://registry.yarnpkg.com/is-typedarray/-/is-typedarray-1.0.0.tgz#e479c80858df0c1b11ddda6940f96011fcda4a9a"
971 | integrity sha1-5HnICFjfDBsR3dppQPlgEfzaSpo=
972 |
973 | isexe@^2.0.0:
974 | version "2.0.0"
975 | resolved "https://registry.yarnpkg.com/isexe/-/isexe-2.0.0.tgz#e8fbf374dc556ff8947a10dcb0572d633f2cfa10"
976 | integrity sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=
977 |
978 | isstream@~0.1.2:
979 | version "0.1.2"
980 | resolved "https://registry.yarnpkg.com/isstream/-/isstream-0.1.2.tgz#47e63f7af55afa6f92e1500e690eb8b8529c099a"
981 | integrity sha1-R+Y/evVa+m+S4VAOaQ64uFKcCZo=
982 |
983 | jest-worker@^24.9.0:
984 | version "24.9.0"
985 | resolved "https://registry.yarnpkg.com/jest-worker/-/jest-worker-24.9.0.tgz#5dbfdb5b2d322e98567898238a9697bcce67b3e5"
986 | integrity sha512-51PE4haMSXcHohnSMdM42anbvZANYTqMrr52tVKPqqsPJMzoP6FYYDVqahX/HrAoKEKz3uUPzSvKs9A3qR4iVw==
987 | dependencies:
988 | merge-stream "^2.0.0"
989 | supports-color "^6.1.0"
990 |
991 | js-tokens@^4.0.0:
992 | version "4.0.0"
993 | resolved "https://registry.yarnpkg.com/js-tokens/-/js-tokens-4.0.0.tgz#19203fb59991df98e3a287050d4647cdeaf32499"
994 | integrity sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==
995 |
996 | js-yaml@^3.13.1:
997 | version "3.13.1"
998 | resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-3.13.1.tgz#aff151b30bfdfa8e49e05da22e7415e9dfa37847"
999 | integrity sha512-YfbcO7jXDdyj0DGxYVSlSeQNHbD7XPWvrVWeVUujrQEoZzWJIRrCPoyk6kL6IAjAG2IolMK4T0hNUe0HOUs5Jw==
1000 | dependencies:
1001 | argparse "^1.0.7"
1002 | esprima "^4.0.0"
1003 |
1004 | jsbn@~0.1.0:
1005 | version "0.1.1"
1006 | resolved "https://registry.yarnpkg.com/jsbn/-/jsbn-0.1.1.tgz#a5e654c2e5a2deb5f201d96cefbca80c0ef2f513"
1007 | integrity sha1-peZUwuWi3rXyAdls77yoDA7y9RM=
1008 |
1009 | jsdom@^15.2.0:
1010 | version "15.2.0"
1011 | resolved "https://registry.yarnpkg.com/jsdom/-/jsdom-15.2.0.tgz#4baead4f464e733533ed6ac607ce440918cf5cbb"
1012 | integrity sha512-+hRyEfjRPFwTYMmSQ3/f7U9nP8ZNZmbkmUek760ZpxnCPWJIhaaLRuUSvpJ36fZKCGENxLwxClzwpOpnXNfChQ==
1013 | dependencies:
1014 | abab "^2.0.0"
1015 | acorn "^7.1.0"
1016 | acorn-globals "^4.3.2"
1017 | array-equal "^1.0.0"
1018 | cssom "^0.4.1"
1019 | cssstyle "^2.0.0"
1020 | data-urls "^1.1.0"
1021 | domexception "^1.0.1"
1022 | escodegen "^1.11.1"
1023 | html-encoding-sniffer "^1.0.2"
1024 | nwsapi "^2.1.4"
1025 | parse5 "5.1.0"
1026 | pn "^1.1.0"
1027 | request "^2.88.0"
1028 | request-promise-native "^1.0.7"
1029 | saxes "^3.1.9"
1030 | symbol-tree "^3.2.2"
1031 | tough-cookie "^3.0.1"
1032 | w3c-hr-time "^1.0.1"
1033 | w3c-xmlserializer "^1.1.2"
1034 | webidl-conversions "^4.0.2"
1035 | whatwg-encoding "^1.0.5"
1036 | whatwg-mimetype "^2.3.0"
1037 | whatwg-url "^7.0.0"
1038 | ws "^7.0.0"
1039 | xml-name-validator "^3.0.0"
1040 |
1041 | json-parse-better-errors@^1.0.1:
1042 | version "1.0.2"
1043 | resolved "https://registry.yarnpkg.com/json-parse-better-errors/-/json-parse-better-errors-1.0.2.tgz#bb867cfb3450e69107c131d1c514bab3dc8bcaa9"
1044 | integrity sha512-mrqyZKfX5EhL7hvqcV6WG1yYjnjeuYDzDhhcAAUrq8Po85NBQBJP+ZDUT75qZQ98IkUoBqdkExkukOU7Ts2wrw==
1045 |
1046 | json-schema-traverse@^0.4.1:
1047 | version "0.4.1"
1048 | resolved "https://registry.yarnpkg.com/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz#69f6a87d9513ab8bb8fe63bdb0979c448e684660"
1049 | integrity sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==
1050 |
1051 | json-schema@0.2.3:
1052 | version "0.2.3"
1053 | resolved "https://registry.yarnpkg.com/json-schema/-/json-schema-0.2.3.tgz#b480c892e59a2f05954ce727bd3f2a4e882f9e13"
1054 | integrity sha1-tIDIkuWaLwWVTOcnvT8qTogvnhM=
1055 |
1056 | json-stable-stringify-without-jsonify@^1.0.1:
1057 | version "1.0.1"
1058 | resolved "https://registry.yarnpkg.com/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz#9db7b59496ad3f3cfef30a75142d2d930ad72651"
1059 | integrity sha1-nbe1lJatPzz+8wp1FC0tkwrXJlE=
1060 |
1061 | json-stringify-safe@~5.0.1:
1062 | version "5.0.1"
1063 | resolved "https://registry.yarnpkg.com/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz#1296a2d58fd45f19a0f6ce01d65701e2c735b6eb"
1064 | integrity sha1-Epai1Y/UXxmg9s4B1lcB4sc1tus=
1065 |
1066 | jsprim@^1.2.2:
1067 | version "1.4.1"
1068 | resolved "https://registry.yarnpkg.com/jsprim/-/jsprim-1.4.1.tgz#313e66bc1e5cc06e438bc1b7499c2e5c56acb6a2"
1069 | integrity sha1-MT5mvB5cwG5Di8G3SZwuXFastqI=
1070 | dependencies:
1071 | assert-plus "1.0.0"
1072 | extsprintf "1.3.0"
1073 | json-schema "0.2.3"
1074 | verror "1.10.0"
1075 |
1076 | levn@^0.3.0, levn@~0.3.0:
1077 | version "0.3.0"
1078 | resolved "https://registry.yarnpkg.com/levn/-/levn-0.3.0.tgz#3b09924edf9f083c0490fdd4c0bc4421e04764ee"
1079 | integrity sha1-OwmSTt+fCDwEkP3UwLxEIeBHZO4=
1080 | dependencies:
1081 | prelude-ls "~1.1.2"
1082 | type-check "~0.3.2"
1083 |
1084 | lines-and-columns@^1.1.6:
1085 | version "1.1.6"
1086 | resolved "https://registry.yarnpkg.com/lines-and-columns/-/lines-and-columns-1.1.6.tgz#1c00c743b433cd0a4e80758f7b64a57440d9ff00"
1087 | integrity sha1-HADHQ7QzzQpOgHWPe2SldEDZ/wA=
1088 |
1089 | locate-path@^5.0.0:
1090 | version "5.0.0"
1091 | resolved "https://registry.yarnpkg.com/locate-path/-/locate-path-5.0.0.tgz#1afba396afd676a6d42504d0a67a3a7eb9f62aa0"
1092 | integrity sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==
1093 | dependencies:
1094 | p-locate "^4.1.0"
1095 |
1096 | lodash.sortby@^4.7.0:
1097 | version "4.7.0"
1098 | resolved "https://registry.yarnpkg.com/lodash.sortby/-/lodash.sortby-4.7.0.tgz#edd14c824e2cc9c1e0b0a1b42bb5210516a42438"
1099 | integrity sha1-7dFMgk4sycHgsKG0K7UhBRakJDg=
1100 |
1101 | lodash@^4.17.11, lodash@^4.17.14, lodash@^4.17.15:
1102 | version "4.17.15"
1103 | resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.15.tgz#b447f6670a0455bbfeedd11392eff330ea097548"
1104 | integrity sha512-8xOcRHvCjnocdS5cpwXQXVzmmh5e5+saE2QGoeQmbKmRS6J3VQppPOIt0MnmE+4xlZoumy0GPG0D0MVIQbNA1A==
1105 |
1106 | merge-stream@^2.0.0:
1107 | version "2.0.0"
1108 | resolved "https://registry.yarnpkg.com/merge-stream/-/merge-stream-2.0.0.tgz#52823629a14dd00c9770fb6ad47dc6310f2c1f60"
1109 | integrity sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==
1110 |
1111 | mime-db@1.40.0:
1112 | version "1.40.0"
1113 | resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.40.0.tgz#a65057e998db090f732a68f6c276d387d4126c32"
1114 | integrity sha512-jYdeOMPy9vnxEqFRRo6ZvTZ8d9oPb+k18PKoYNYUe2stVEBPPwsln/qWzdbmaIvnhZ9v2P+CuecK+fpUfsV2mA==
1115 |
1116 | mime-types@^2.1.12, mime-types@~2.1.19:
1117 | version "2.1.24"
1118 | resolved "https://registry.yarnpkg.com/mime-types/-/mime-types-2.1.24.tgz#b6f8d0b3e951efb77dedeca194cff6d16f676f81"
1119 | integrity sha512-WaFHS3MCl5fapm3oLxU4eYDw77IQM2ACcxQ9RIxfaC3ooc6PFuBMGZZsYpvoXS5D5QTWPieo1jjLdAm3TBP3cQ==
1120 | dependencies:
1121 | mime-db "1.40.0"
1122 |
1123 | mimic-fn@^2.1.0:
1124 | version "2.1.0"
1125 | resolved "https://registry.yarnpkg.com/mimic-fn/-/mimic-fn-2.1.0.tgz#7ed2c2ccccaf84d3ffcb7a69b57711fc2083401b"
1126 | integrity sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==
1127 |
1128 | minimatch@^3.0.4:
1129 | version "3.0.4"
1130 | resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.0.4.tgz#5166e286457f03306064be5497e8dbb0c3d32083"
1131 | integrity sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==
1132 | dependencies:
1133 | brace-expansion "^1.1.7"
1134 |
1135 | minimist@0.0.8:
1136 | version "0.0.8"
1137 | resolved "https://registry.yarnpkg.com/minimist/-/minimist-0.0.8.tgz#857fcabfc3397d2625b8228262e86aa7a011b05d"
1138 | integrity sha1-hX/Kv8M5fSYluCKCYuhqp6ARsF0=
1139 |
1140 | minimist@~1.2.0:
1141 | version "1.2.0"
1142 | resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.0.tgz#a35008b20f41383eec1fb914f4cd5df79a264284"
1143 | integrity sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ=
1144 |
1145 | mkdirp@^0.5.1:
1146 | version "0.5.1"
1147 | resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-0.5.1.tgz#30057438eac6cf7f8c4767f38648d6697d75c903"
1148 | integrity sha1-MAV0OOrGz3+MR2fzhkjWaX11yQM=
1149 | dependencies:
1150 | minimist "0.0.8"
1151 |
1152 | ms@^2.1.1:
1153 | version "2.1.2"
1154 | resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.2.tgz#d09d1f357b443f493382a8eb3ccd183872ae6009"
1155 | integrity sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==
1156 |
1157 | mute-stream@0.0.8:
1158 | version "0.0.8"
1159 | resolved "https://registry.yarnpkg.com/mute-stream/-/mute-stream-0.0.8.tgz#1630c42b2251ff81e2a283de96a5497ea92e5e0d"
1160 | integrity sha512-nnbWWOkoWyUsTjKrhgD0dcz22mdkSnpYqbEjIm2nhwhuxlSkpywJmBo8h0ZqJdkp73mb90SssHkN4rsRaBAfAA==
1161 |
1162 | natural-compare@^1.4.0:
1163 | version "1.4.0"
1164 | resolved "https://registry.yarnpkg.com/natural-compare/-/natural-compare-1.4.0.tgz#4abebfeed7541f2c27acfb29bdbbd15c8d5ba4f7"
1165 | integrity sha1-Sr6/7tdUHywnrPspvbvRXI1bpPc=
1166 |
1167 | nice-try@^1.0.4:
1168 | version "1.0.5"
1169 | resolved "https://registry.yarnpkg.com/nice-try/-/nice-try-1.0.5.tgz#a3378a7696ce7d223e88fc9b764bd7ef1089e366"
1170 | integrity sha512-1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ==
1171 |
1172 | normalize-package-data@^2.5.0:
1173 | version "2.5.0"
1174 | resolved "https://registry.yarnpkg.com/normalize-package-data/-/normalize-package-data-2.5.0.tgz#e66db1838b200c1dfc233225d12cb36520e234a8"
1175 | integrity sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA==
1176 | dependencies:
1177 | hosted-git-info "^2.1.4"
1178 | resolve "^1.10.0"
1179 | semver "2 || 3 || 4 || 5"
1180 | validate-npm-package-license "^3.0.1"
1181 |
1182 | npm-run-path@^2.0.0:
1183 | version "2.0.2"
1184 | resolved "https://registry.yarnpkg.com/npm-run-path/-/npm-run-path-2.0.2.tgz#35a9232dfa35d7067b4cb2ddf2357b1871536c5f"
1185 | integrity sha1-NakjLfo11wZ7TLLd8jV7GHFTbF8=
1186 | dependencies:
1187 | path-key "^2.0.0"
1188 |
1189 | nwsapi@^2.1.4:
1190 | version "2.1.4"
1191 | resolved "https://registry.yarnpkg.com/nwsapi/-/nwsapi-2.1.4.tgz#e006a878db23636f8e8a67d33ca0e4edf61a842f"
1192 | integrity sha512-iGfd9Y6SFdTNldEy2L0GUhcarIutFmk+MPWIn9dmj8NMIup03G08uUF2KGbbmv/Ux4RT0VZJoP/sVbWA6d/VIw==
1193 |
1194 | oauth-sign@~0.9.0:
1195 | version "0.9.0"
1196 | resolved "https://registry.yarnpkg.com/oauth-sign/-/oauth-sign-0.9.0.tgz#47a7b016baa68b5fa0ecf3dee08a85c679ac6455"
1197 | integrity sha512-fexhUFFPTGV8ybAtSIGbV6gOkSv8UtRbDBnAyLQw4QPKkgNlsH2ByPGtMUqdWkos6YCRmAqViwgZrJc/mRDzZQ==
1198 |
1199 | object-inspect@~1.6.0:
1200 | version "1.6.0"
1201 | resolved "https://registry.yarnpkg.com/object-inspect/-/object-inspect-1.6.0.tgz#c70b6cbf72f274aab4c34c0c82f5167bf82cf15b"
1202 | integrity sha512-GJzfBZ6DgDAmnuaM3104jR4s1Myxr3Y3zfIyN4z3UdqN69oSRacNK8UhnobDdC+7J2AHCjGwxQubNJfE70SXXQ==
1203 |
1204 | object-keys@^1.0.12:
1205 | version "1.1.1"
1206 | resolved "https://registry.yarnpkg.com/object-keys/-/object-keys-1.1.1.tgz#1c47f272df277f3b1daf061677d9c82e2322c60e"
1207 | integrity sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==
1208 |
1209 | once@^1.3.0, once@^1.3.1, once@^1.4.0:
1210 | version "1.4.0"
1211 | resolved "https://registry.yarnpkg.com/once/-/once-1.4.0.tgz#583b1aa775961d4b113ac17d9c50baef9dd76bd1"
1212 | integrity sha1-WDsap3WWHUsROsF9nFC6753Xa9E=
1213 | dependencies:
1214 | wrappy "1"
1215 |
1216 | onetime@^5.1.0:
1217 | version "5.1.0"
1218 | resolved "https://registry.yarnpkg.com/onetime/-/onetime-5.1.0.tgz#fff0f3c91617fe62bb50189636e99ac8a6df7be5"
1219 | integrity sha512-5NcSkPHhwTVFIQN+TUqXoS5+dlElHXdpAWu9I0HP20YOtIi+aZ0Ct82jdlILDxjLEAWwvm+qj1m6aEtsDVmm6Q==
1220 | dependencies:
1221 | mimic-fn "^2.1.0"
1222 |
1223 | opencollective-postinstall@^2.0.2:
1224 | version "2.0.2"
1225 | resolved "https://registry.yarnpkg.com/opencollective-postinstall/-/opencollective-postinstall-2.0.2.tgz#5657f1bede69b6e33a45939b061eb53d3c6c3a89"
1226 | integrity sha512-pVOEP16TrAO2/fjej1IdOyupJY8KDUM1CvsaScRbw6oddvpQoOfGk4ywha0HKKVAD6RkW4x6Q+tNBwhf3Bgpuw==
1227 |
1228 | optionator@^0.8.1, optionator@^0.8.3:
1229 | version "0.8.3"
1230 | resolved "https://registry.yarnpkg.com/optionator/-/optionator-0.8.3.tgz#84fa1d036fe9d3c7e21d99884b601167ec8fb495"
1231 | integrity sha512-+IW9pACdk3XWmmTXG8m3upGUJst5XRGzxMRjXzAuJ1XnIFNvfhjjIuYkDvysnPQ7qzqVzLt78BCruntqRhWQbA==
1232 | dependencies:
1233 | deep-is "~0.1.3"
1234 | fast-levenshtein "~2.0.6"
1235 | levn "~0.3.0"
1236 | prelude-ls "~1.1.2"
1237 | type-check "~0.3.2"
1238 | word-wrap "~1.2.3"
1239 |
1240 | os-tmpdir@~1.0.2:
1241 | version "1.0.2"
1242 | resolved "https://registry.yarnpkg.com/os-tmpdir/-/os-tmpdir-1.0.2.tgz#bbe67406c79aa85c5cfec766fe5734555dfa1274"
1243 | integrity sha1-u+Z0BseaqFxc/sdm/lc0VV36EnQ=
1244 |
1245 | p-finally@^1.0.0:
1246 | version "1.0.0"
1247 | resolved "https://registry.yarnpkg.com/p-finally/-/p-finally-1.0.0.tgz#3fbcfb15b899a44123b34b6dcc18b724336a2cae"
1248 | integrity sha1-P7z7FbiZpEEjs0ttzBi3JDNqLK4=
1249 |
1250 | p-limit@^2.2.0:
1251 | version "2.2.1"
1252 | resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-2.2.1.tgz#aa07a788cc3151c939b5131f63570f0dd2009537"
1253 | integrity sha512-85Tk+90UCVWvbDavCLKPOLC9vvY8OwEX/RtKF+/1OADJMVlFfEHOiMTPVyxg7mk/dKa+ipdHm0OUkTvCpMTuwg==
1254 | dependencies:
1255 | p-try "^2.0.0"
1256 |
1257 | p-locate@^4.1.0:
1258 | version "4.1.0"
1259 | resolved "https://registry.yarnpkg.com/p-locate/-/p-locate-4.1.0.tgz#a3428bb7088b3a60292f66919278b7c297ad4f07"
1260 | integrity sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==
1261 | dependencies:
1262 | p-limit "^2.2.0"
1263 |
1264 | p-try@^2.0.0:
1265 | version "2.2.0"
1266 | resolved "https://registry.yarnpkg.com/p-try/-/p-try-2.2.0.tgz#cb2868540e313d61de58fafbe35ce9004d5540e6"
1267 | integrity sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==
1268 |
1269 | parent-module@^1.0.0:
1270 | version "1.0.1"
1271 | resolved "https://registry.yarnpkg.com/parent-module/-/parent-module-1.0.1.tgz#691d2709e78c79fae3a156622452d00762caaaa2"
1272 | integrity sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==
1273 | dependencies:
1274 | callsites "^3.0.0"
1275 |
1276 | parse-json@^4.0.0:
1277 | version "4.0.0"
1278 | resolved "https://registry.yarnpkg.com/parse-json/-/parse-json-4.0.0.tgz#be35f5425be1f7f6c747184f98a788cb99477ee0"
1279 | integrity sha1-vjX1Qlvh9/bHRxhPmKeIy5lHfuA=
1280 | dependencies:
1281 | error-ex "^1.3.1"
1282 | json-parse-better-errors "^1.0.1"
1283 |
1284 | parse-json@^5.0.0:
1285 | version "5.0.0"
1286 | resolved "https://registry.yarnpkg.com/parse-json/-/parse-json-5.0.0.tgz#73e5114c986d143efa3712d4ea24db9a4266f60f"
1287 | integrity sha512-OOY5b7PAEFV0E2Fir1KOkxchnZNCdowAJgQ5NuxjpBKTRP3pQhwkrkxqQjeoKJ+fO7bCpmIZaogI4eZGDMEGOw==
1288 | dependencies:
1289 | "@babel/code-frame" "^7.0.0"
1290 | error-ex "^1.3.1"
1291 | json-parse-better-errors "^1.0.1"
1292 | lines-and-columns "^1.1.6"
1293 |
1294 | parse5@5.1.0:
1295 | version "5.1.0"
1296 | resolved "https://registry.yarnpkg.com/parse5/-/parse5-5.1.0.tgz#c59341c9723f414c452975564c7c00a68d58acd2"
1297 | integrity sha512-fxNG2sQjHvlVAYmzBZS9YlDp6PTSSDwa98vkD4QgVDDCAo84z5X1t5XyJQ62ImdLXx5NdIIfihey6xpum9/gRQ==
1298 |
1299 | path-exists@^4.0.0:
1300 | version "4.0.0"
1301 | resolved "https://registry.yarnpkg.com/path-exists/-/path-exists-4.0.0.tgz#513bdbe2d3b95d7762e8c1137efa195c6c61b5b3"
1302 | integrity sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==
1303 |
1304 | path-is-absolute@^1.0.0:
1305 | version "1.0.1"
1306 | resolved "https://registry.yarnpkg.com/path-is-absolute/-/path-is-absolute-1.0.1.tgz#174b9268735534ffbc7ace6bf53a5a9e1b5c5f5f"
1307 | integrity sha1-F0uSaHNVNP+8es5r9TpanhtcX18=
1308 |
1309 | path-key@^2.0.0, path-key@^2.0.1:
1310 | version "2.0.1"
1311 | resolved "https://registry.yarnpkg.com/path-key/-/path-key-2.0.1.tgz#411cadb574c5a140d3a4b1910d40d80cc9f40b40"
1312 | integrity sha1-QRyttXTFoUDTpLGRDUDYDMn0C0A=
1313 |
1314 | path-parse@^1.0.6:
1315 | version "1.0.6"
1316 | resolved "https://registry.yarnpkg.com/path-parse/-/path-parse-1.0.6.tgz#d62dbb5679405d72c4737ec58600e9ddcf06d24c"
1317 | integrity sha512-GSmOT2EbHrINBf9SR7CDELwlJ8AENk3Qn7OikK4nFYAu3Ote2+JYNVvkpAEQm3/TLNEJFD/xZJjzyxg3KBWOzw==
1318 |
1319 | performance-now@^2.1.0:
1320 | version "2.1.0"
1321 | resolved "https://registry.yarnpkg.com/performance-now/-/performance-now-2.1.0.tgz#6309f4e0e5fa913ec1c69307ae364b4b377c9e7b"
1322 | integrity sha1-Ywn04OX6kT7BxpMHrjZLSzd8nns=
1323 |
1324 | pkg-dir@^4.2.0:
1325 | version "4.2.0"
1326 | resolved "https://registry.yarnpkg.com/pkg-dir/-/pkg-dir-4.2.0.tgz#f099133df7ede422e81d1d8448270eeb3e4261f3"
1327 | integrity sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ==
1328 | dependencies:
1329 | find-up "^4.0.0"
1330 |
1331 | please-upgrade-node@^3.2.0:
1332 | version "3.2.0"
1333 | resolved "https://registry.yarnpkg.com/please-upgrade-node/-/please-upgrade-node-3.2.0.tgz#aeddd3f994c933e4ad98b99d9a556efa0e2fe942"
1334 | integrity sha512-gQR3WpIgNIKwBMVLkpMUeR3e1/E1y42bqDQZfql+kDeXd8COYfM8PQA4X6y7a8u9Ua9FHmsrrmirW2vHs45hWg==
1335 | dependencies:
1336 | semver-compare "^1.0.0"
1337 |
1338 | pn@^1.1.0:
1339 | version "1.1.0"
1340 | resolved "https://registry.yarnpkg.com/pn/-/pn-1.1.0.tgz#e2f4cef0e219f463c179ab37463e4e1ecdccbafb"
1341 | integrity sha512-2qHaIQr2VLRFoxe2nASzsV6ef4yOOH+Fi9FBOVH6cqeSgUnoyySPZkxzLuzd+RYOQTRpROA0ztTMqxROKSb/nA==
1342 |
1343 | prelude-ls@~1.1.2:
1344 | version "1.1.2"
1345 | resolved "https://registry.yarnpkg.com/prelude-ls/-/prelude-ls-1.1.2.tgz#21932a549f5e52ffd9a827f570e04be62a97da54"
1346 | integrity sha1-IZMqVJ9eUv/ZqCf1cOBL5iqX2lQ=
1347 |
1348 | progress@^2.0.0:
1349 | version "2.0.3"
1350 | resolved "https://registry.yarnpkg.com/progress/-/progress-2.0.3.tgz#7e8cf8d8f5b8f239c1bc68beb4eb78567d572ef8"
1351 | integrity sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA==
1352 |
1353 | psl@^1.1.24, psl@^1.1.28:
1354 | version "1.3.0"
1355 | resolved "https://registry.yarnpkg.com/psl/-/psl-1.3.0.tgz#e1ebf6a3b5564fa8376f3da2275da76d875ca1bd"
1356 | integrity sha512-avHdspHO+9rQTLbv1RO+MPYeP/SzsCoxofjVnHanETfQhTJrmB0HlDoW+EiN/R+C0BZ+gERab9NY0lPN2TxNag==
1357 |
1358 | pump@^3.0.0:
1359 | version "3.0.0"
1360 | resolved "https://registry.yarnpkg.com/pump/-/pump-3.0.0.tgz#b4a2116815bde2f4e1ea602354e8c75565107a64"
1361 | integrity sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww==
1362 | dependencies:
1363 | end-of-stream "^1.1.0"
1364 | once "^1.3.1"
1365 |
1366 | punycode@^1.4.1:
1367 | version "1.4.1"
1368 | resolved "https://registry.yarnpkg.com/punycode/-/punycode-1.4.1.tgz#c0d5a63b2718800ad8e1eb0fa5269c84dd41845e"
1369 | integrity sha1-wNWmOycYgArY4esPpSachN1BhF4=
1370 |
1371 | punycode@^2.1.0, punycode@^2.1.1:
1372 | version "2.1.1"
1373 | resolved "https://registry.yarnpkg.com/punycode/-/punycode-2.1.1.tgz#b58b010ac40c22c5657616c8d2c2c02c7bf479ec"
1374 | integrity sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==
1375 |
1376 | qs@~6.5.2:
1377 | version "6.5.2"
1378 | resolved "https://registry.yarnpkg.com/qs/-/qs-6.5.2.tgz#cb3ae806e8740444584ef154ce8ee98d403f3e36"
1379 | integrity sha512-N5ZAX4/LxJmF+7wN74pUD6qAh9/wnvdQcjq9TZjevvXzSUo7bfmw91saqMjzGS2xq91/odN2dW/WOl7qQHNDGA==
1380 |
1381 | read-pkg@^5.2.0:
1382 | version "5.2.0"
1383 | resolved "https://registry.yarnpkg.com/read-pkg/-/read-pkg-5.2.0.tgz#7bf295438ca5a33e56cd30e053b34ee7250c93cc"
1384 | integrity sha512-Ug69mNOpfvKDAc2Q8DRpMjjzdtrnv9HcSMX+4VsZxD1aZ6ZzrIE7rlzXBtWTyhULSMKg076AW6WR5iZpD0JiOg==
1385 | dependencies:
1386 | "@types/normalize-package-data" "^2.4.0"
1387 | normalize-package-data "^2.5.0"
1388 | parse-json "^5.0.0"
1389 | type-fest "^0.6.0"
1390 |
1391 | regexpp@^2.0.1:
1392 | version "2.0.1"
1393 | resolved "https://registry.yarnpkg.com/regexpp/-/regexpp-2.0.1.tgz#8d19d31cf632482b589049f8281f93dbcba4d07f"
1394 | integrity sha512-lv0M6+TkDVniA3aD1Eg0DVpfU/booSu7Eev3TDO/mZKHBfVjgCGTV4t4buppESEYDtkArYFOxTJWv6S5C+iaNw==
1395 |
1396 | request-promise-core@1.1.2:
1397 | version "1.1.2"
1398 | resolved "https://registry.yarnpkg.com/request-promise-core/-/request-promise-core-1.1.2.tgz#339f6aababcafdb31c799ff158700336301d3346"
1399 | integrity sha512-UHYyq1MO8GsefGEt7EprS8UrXsm1TxEvFUX1IMTuSLU2Rh7fTIdFtl8xD7JiEYiWU2dl+NYAjCTksTehQUxPag==
1400 | dependencies:
1401 | lodash "^4.17.11"
1402 |
1403 | request-promise-native@^1.0.7:
1404 | version "1.0.7"
1405 | resolved "https://registry.yarnpkg.com/request-promise-native/-/request-promise-native-1.0.7.tgz#a49868a624bdea5069f1251d0a836e0d89aa2c59"
1406 | integrity sha512-rIMnbBdgNViL37nZ1b3L/VfPOpSi0TqVDQPAvO6U14lMzOLrt5nilxCQqtDKhZeDiW0/hkCXGoQjhgJd/tCh6w==
1407 | dependencies:
1408 | request-promise-core "1.1.2"
1409 | stealthy-require "^1.1.1"
1410 | tough-cookie "^2.3.3"
1411 |
1412 | request@^2.88.0:
1413 | version "2.88.0"
1414 | resolved "https://registry.yarnpkg.com/request/-/request-2.88.0.tgz#9c2fca4f7d35b592efe57c7f0a55e81052124fef"
1415 | integrity sha512-NAqBSrijGLZdM0WZNsInLJpkJokL72XYjUpnB0iwsRgxh7dB6COrHnTBNwN0E+lHDAJzu7kLAkDeY08z2/A0hg==
1416 | dependencies:
1417 | aws-sign2 "~0.7.0"
1418 | aws4 "^1.8.0"
1419 | caseless "~0.12.0"
1420 | combined-stream "~1.0.6"
1421 | extend "~3.0.2"
1422 | forever-agent "~0.6.1"
1423 | form-data "~2.3.2"
1424 | har-validator "~5.1.0"
1425 | http-signature "~1.2.0"
1426 | is-typedarray "~1.0.0"
1427 | isstream "~0.1.2"
1428 | json-stringify-safe "~5.0.1"
1429 | mime-types "~2.1.19"
1430 | oauth-sign "~0.9.0"
1431 | performance-now "^2.1.0"
1432 | qs "~6.5.2"
1433 | safe-buffer "^5.1.2"
1434 | tough-cookie "~2.4.3"
1435 | tunnel-agent "^0.6.0"
1436 | uuid "^3.3.2"
1437 |
1438 | resolve-from@^3.0.0:
1439 | version "3.0.0"
1440 | resolved "https://registry.yarnpkg.com/resolve-from/-/resolve-from-3.0.0.tgz#b22c7af7d9d6881bc8b6e653335eebcb0a188748"
1441 | integrity sha1-six699nWiBvItuZTM17rywoYh0g=
1442 |
1443 | resolve-from@^4.0.0:
1444 | version "4.0.0"
1445 | resolved "https://registry.yarnpkg.com/resolve-from/-/resolve-from-4.0.0.tgz#4abcd852ad32dd7baabfe9b40e00a36db5f392e6"
1446 | integrity sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==
1447 |
1448 | resolve@^1.10.0, resolve@^1.11.1:
1449 | version "1.12.0"
1450 | resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.12.0.tgz#3fc644a35c84a48554609ff26ec52b66fa577df6"
1451 | integrity sha512-B/dOmuoAik5bKcD6s6nXDCjzUKnaDvdkRyAk6rsmsKLipWj4797iothd7jmmUhWTfinVMU+wc56rYKsit2Qy4w==
1452 | dependencies:
1453 | path-parse "^1.0.6"
1454 |
1455 | resolve@~1.11.1:
1456 | version "1.11.1"
1457 | resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.11.1.tgz#ea10d8110376982fef578df8fc30b9ac30a07a3e"
1458 | integrity sha512-vIpgF6wfuJOZI7KKKSP+HmiKggadPQAdsp5HiC1mvqnfp0gF1vdwgBWZIdrVft9pgqoMFQN+R7BSWZiBxx+BBw==
1459 | dependencies:
1460 | path-parse "^1.0.6"
1461 |
1462 | restore-cursor@^3.1.0:
1463 | version "3.1.0"
1464 | resolved "https://registry.yarnpkg.com/restore-cursor/-/restore-cursor-3.1.0.tgz#39f67c54b3a7a58cea5236d95cf0034239631f7e"
1465 | integrity sha512-l+sSefzHpj5qimhFSE5a8nufZYAM3sBSVMAPtYkmC+4EH2anSGaEMXSD0izRQbu9nfyQ9y5JrVmp7E8oZrUjvA==
1466 | dependencies:
1467 | onetime "^5.1.0"
1468 | signal-exit "^3.0.2"
1469 |
1470 | resumer@~0.0.0:
1471 | version "0.0.0"
1472 | resolved "https://registry.yarnpkg.com/resumer/-/resumer-0.0.0.tgz#f1e8f461e4064ba39e82af3cdc2a8c893d076759"
1473 | integrity sha1-8ej0YeQGS6Oegq883CqMiT0HZ1k=
1474 | dependencies:
1475 | through "~2.3.4"
1476 |
1477 | rimraf@2.6.3:
1478 | version "2.6.3"
1479 | resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-2.6.3.tgz#b2d104fe0d8fb27cf9e0a1cda8262dd3833c6cab"
1480 | integrity sha512-mwqeW5XsA2qAejG46gYdENaxXjx9onRNCfn7L0duuP4hCuTIi/QO7PDK07KJfp1d+izWPrzEJDcSqBa0OZQriA==
1481 | dependencies:
1482 | glob "^7.1.3"
1483 |
1484 | rollup-plugin-node-resolve@^5.0.0:
1485 | version "5.2.0"
1486 | resolved "https://registry.yarnpkg.com/rollup-plugin-node-resolve/-/rollup-plugin-node-resolve-5.2.0.tgz#730f93d10ed202473b1fb54a5997a7db8c6d8523"
1487 | integrity sha512-jUlyaDXts7TW2CqQ4GaO5VJ4PwwaV8VUGA7+km3n6k6xtOEacf61u0VXwN80phY/evMcaS+9eIeJ9MOyDxt5Zw==
1488 | dependencies:
1489 | "@types/resolve" "0.0.8"
1490 | builtin-modules "^3.1.0"
1491 | is-module "^1.0.0"
1492 | resolve "^1.11.1"
1493 | rollup-pluginutils "^2.8.1"
1494 |
1495 | rollup-plugin-terser@^5.2.0:
1496 | version "5.2.0"
1497 | resolved "https://registry.yarnpkg.com/rollup-plugin-terser/-/rollup-plugin-terser-5.2.0.tgz#ba758adf769347b7f1eaf9ef35978d2e207dccc7"
1498 | integrity sha512-jQI+nYhtDBc9HFRBz8iGttQg7li9klmzR62RG2W2nN6hJ/FI2K2ItYQ7kJ7/zn+vs+BP1AEccmVRjRN989I+Nw==
1499 | dependencies:
1500 | "@babel/code-frame" "^7.5.5"
1501 | jest-worker "^24.9.0"
1502 | rollup-pluginutils "^2.8.2"
1503 | serialize-javascript "^2.1.2"
1504 | terser "^4.6.2"
1505 |
1506 | rollup-pluginutils@^2.8.1, rollup-pluginutils@^2.8.2:
1507 | version "2.8.2"
1508 | resolved "https://registry.yarnpkg.com/rollup-pluginutils/-/rollup-pluginutils-2.8.2.tgz#72f2af0748b592364dbd3389e600e5a9444a351e"
1509 | integrity sha512-EEp9NhnUkwY8aif6bxgovPHMoMoNr2FulJziTndpt5H9RdwC47GSGuII9XxpSdzVGM0GWrNPHV6ie1LTNJPaLQ==
1510 | dependencies:
1511 | estree-walker "^0.6.1"
1512 |
1513 | rollup@^1.26.2:
1514 | version "1.26.2"
1515 | resolved "https://registry.yarnpkg.com/rollup/-/rollup-1.26.2.tgz#33d1ad23ee94aff1057448bae267be51dab4bdc1"
1516 | integrity sha512-TLM8hlYP85TFFptYlXmr2VnhCLA8GaYXG4LBdWsHu9oBH/Wm5MMPAE9wsAnohfV21Dqq0ZvRHdmsKXomshaDSg==
1517 | dependencies:
1518 | "@types/estree" "*"
1519 | "@types/node" "*"
1520 | acorn "^7.1.0"
1521 |
1522 | run-async@^2.2.0:
1523 | version "2.3.0"
1524 | resolved "https://registry.yarnpkg.com/run-async/-/run-async-2.3.0.tgz#0371ab4ae0bdd720d4166d7dfda64ff7a445a6c0"
1525 | integrity sha1-A3GrSuC91yDUFm19/aZP96RFpsA=
1526 | dependencies:
1527 | is-promise "^2.1.0"
1528 |
1529 | run-node@^1.0.0:
1530 | version "1.0.0"
1531 | resolved "https://registry.yarnpkg.com/run-node/-/run-node-1.0.0.tgz#46b50b946a2aa2d4947ae1d886e9856fd9cabe5e"
1532 | integrity sha512-kc120TBlQ3mih1LSzdAJXo4xn/GWS2ec0l3S+syHDXP9uRr0JAT8Qd3mdMuyjqCzeZktgP3try92cEgf9Nks8A==
1533 |
1534 | rxjs@^6.4.0:
1535 | version "6.5.2"
1536 | resolved "https://registry.yarnpkg.com/rxjs/-/rxjs-6.5.2.tgz#2e35ce815cd46d84d02a209fb4e5921e051dbec7"
1537 | integrity sha512-HUb7j3kvb7p7eCUHE3FqjoDsC1xfZQ4AHFWfTKSpZ+sAhhz5X1WX0ZuUqWbzB2QhSLp3DoLUG+hMdEDKqWo2Zg==
1538 | dependencies:
1539 | tslib "^1.9.0"
1540 |
1541 | safe-buffer@^5.0.1, safe-buffer@^5.1.2:
1542 | version "5.2.0"
1543 | resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.2.0.tgz#b74daec49b1148f88c64b68d49b1e815c1f2f519"
1544 | integrity sha512-fZEwUGbVl7kouZs1jCdMLdt95hdIv0ZeHg6L7qPeciMZhZ+/gdesW4wgTARkrFWEpspjEATAzUGPG8N2jJiwbg==
1545 |
1546 | "safer-buffer@>= 2.1.2 < 3", safer-buffer@^2.0.2, safer-buffer@^2.1.0, safer-buffer@~2.1.0:
1547 | version "2.1.2"
1548 | resolved "https://registry.yarnpkg.com/safer-buffer/-/safer-buffer-2.1.2.tgz#44fa161b0187b9549dd84bb91802f9bd8385cd6a"
1549 | integrity sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==
1550 |
1551 | saxes@^3.1.9:
1552 | version "3.1.11"
1553 | resolved "https://registry.yarnpkg.com/saxes/-/saxes-3.1.11.tgz#d59d1fd332ec92ad98a2e0b2ee644702384b1c5b"
1554 | integrity sha512-Ydydq3zC+WYDJK1+gRxRapLIED9PWeSuuS41wqyoRmzvhhh9nc+QQrVMKJYzJFULazeGhzSV0QleN2wD3boh2g==
1555 | dependencies:
1556 | xmlchars "^2.1.1"
1557 |
1558 | semver-compare@^1.0.0:
1559 | version "1.0.0"
1560 | resolved "https://registry.yarnpkg.com/semver-compare/-/semver-compare-1.0.0.tgz#0dee216a1c941ab37e9efb1788f6afc5ff5537fc"
1561 | integrity sha1-De4hahyUGrN+nvsXiPavxf9VN/w=
1562 |
1563 | "semver@2 || 3 || 4 || 5", semver@^5.5.0:
1564 | version "5.7.1"
1565 | resolved "https://registry.yarnpkg.com/semver/-/semver-5.7.1.tgz#a954f931aeba508d307bbf069eff0c01c96116f7"
1566 | integrity sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==
1567 |
1568 | semver@^6.1.2:
1569 | version "6.3.0"
1570 | resolved "https://registry.yarnpkg.com/semver/-/semver-6.3.0.tgz#ee0a64c8af5e8ceea67687b133761e1becbd1d3d"
1571 | integrity sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==
1572 |
1573 | serialize-javascript@^2.1.2:
1574 | version "2.1.2"
1575 | resolved "https://registry.yarnpkg.com/serialize-javascript/-/serialize-javascript-2.1.2.tgz#ecec53b0e0317bdc95ef76ab7074b7384785fa61"
1576 | integrity sha512-rs9OggEUF0V4jUSecXazOYsLfu7OGK2qIn3c7IPBiffz32XniEp/TX9Xmc9LQfK2nQ2QKHvZ2oygKUGU0lG4jQ==
1577 |
1578 | shebang-command@^1.2.0:
1579 | version "1.2.0"
1580 | resolved "https://registry.yarnpkg.com/shebang-command/-/shebang-command-1.2.0.tgz#44aac65b695b03398968c39f363fee5deafdf1ea"
1581 | integrity sha1-RKrGW2lbAzmJaMOfNj/uXer98eo=
1582 | dependencies:
1583 | shebang-regex "^1.0.0"
1584 |
1585 | shebang-regex@^1.0.0:
1586 | version "1.0.0"
1587 | resolved "https://registry.yarnpkg.com/shebang-regex/-/shebang-regex-1.0.0.tgz#da42f49740c0b42db2ca9728571cb190c98efea3"
1588 | integrity sha1-2kL0l0DAtC2yypcoVxyxkMmO/qM=
1589 |
1590 | signal-exit@^3.0.0, signal-exit@^3.0.2:
1591 | version "3.0.2"
1592 | resolved "https://registry.yarnpkg.com/signal-exit/-/signal-exit-3.0.2.tgz#b5fdc08f1287ea1178628e415e25132b73646c6d"
1593 | integrity sha1-tf3AjxKH6hF4Yo5BXiUTK3NkbG0=
1594 |
1595 | slash@^3.0.0:
1596 | version "3.0.0"
1597 | resolved "https://registry.yarnpkg.com/slash/-/slash-3.0.0.tgz#6539be870c165adbd5240220dbe361f1bc4d4634"
1598 | integrity sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==
1599 |
1600 | slice-ansi@^2.1.0:
1601 | version "2.1.0"
1602 | resolved "https://registry.yarnpkg.com/slice-ansi/-/slice-ansi-2.1.0.tgz#cacd7693461a637a5788d92a7dd4fba068e81636"
1603 | integrity sha512-Qu+VC3EwYLldKa1fCxuuvULvSJOKEgk9pi8dZeCVK7TqBfUNTH4sFkk4joj8afVSfAYgJoSOetjx9QWOJ5mYoQ==
1604 | dependencies:
1605 | ansi-styles "^3.2.0"
1606 | astral-regex "^1.0.0"
1607 | is-fullwidth-code-point "^2.0.0"
1608 |
1609 | source-map-support@~0.5.12:
1610 | version "0.5.13"
1611 | resolved "https://registry.yarnpkg.com/source-map-support/-/source-map-support-0.5.13.tgz#31b24a9c2e73c2de85066c0feb7d44767ed52932"
1612 | integrity sha512-SHSKFHadjVA5oR4PPqhtAVdcBWwRYVd6g6cAXnIbRiIwc2EhPrTuKUBdSLvlEKyIP3GCf89fltvcZiP9MMFA1w==
1613 | dependencies:
1614 | buffer-from "^1.0.0"
1615 | source-map "^0.6.0"
1616 |
1617 | source-map@^0.6.0, source-map@~0.6.1:
1618 | version "0.6.1"
1619 | resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.6.1.tgz#74722af32e9614e9c287a8d0bbde48b5e2f1a263"
1620 | integrity sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==
1621 |
1622 | spdx-correct@^3.0.0:
1623 | version "3.1.0"
1624 | resolved "https://registry.yarnpkg.com/spdx-correct/-/spdx-correct-3.1.0.tgz#fb83e504445268f154b074e218c87c003cd31df4"
1625 | integrity sha512-lr2EZCctC2BNR7j7WzJ2FpDznxky1sjfxvvYEyzxNyb6lZXHODmEoJeFu4JupYlkfha1KZpJyoqiJ7pgA1qq8Q==
1626 | dependencies:
1627 | spdx-expression-parse "^3.0.0"
1628 | spdx-license-ids "^3.0.0"
1629 |
1630 | spdx-exceptions@^2.1.0:
1631 | version "2.2.0"
1632 | resolved "https://registry.yarnpkg.com/spdx-exceptions/-/spdx-exceptions-2.2.0.tgz#2ea450aee74f2a89bfb94519c07fcd6f41322977"
1633 | integrity sha512-2XQACfElKi9SlVb1CYadKDXvoajPgBVPn/gOQLrTvHdElaVhr7ZEbqJaRnJLVNeaI4cMEAgVCeBMKF6MWRDCRA==
1634 |
1635 | spdx-expression-parse@^3.0.0:
1636 | version "3.0.0"
1637 | resolved "https://registry.yarnpkg.com/spdx-expression-parse/-/spdx-expression-parse-3.0.0.tgz#99e119b7a5da00e05491c9fa338b7904823b41d0"
1638 | integrity sha512-Yg6D3XpRD4kkOmTpdgbUiEJFKghJH03fiC1OPll5h/0sO6neh2jqRDVHOQ4o/LMea0tgCkbMgea5ip/e+MkWyg==
1639 | dependencies:
1640 | spdx-exceptions "^2.1.0"
1641 | spdx-license-ids "^3.0.0"
1642 |
1643 | spdx-license-ids@^3.0.0:
1644 | version "3.0.5"
1645 | resolved "https://registry.yarnpkg.com/spdx-license-ids/-/spdx-license-ids-3.0.5.tgz#3694b5804567a458d3c8045842a6358632f62654"
1646 | integrity sha512-J+FWzZoynJEXGphVIS+XEh3kFSjZX/1i9gFBaWQcB+/tmpe2qUsSBABpcxqxnAxFdiUFEgAX1bjYGQvIZmoz9Q==
1647 |
1648 | sprintf-js@~1.0.2:
1649 | version "1.0.3"
1650 | resolved "https://registry.yarnpkg.com/sprintf-js/-/sprintf-js-1.0.3.tgz#04e6926f662895354f3dd015203633b857297e2c"
1651 | integrity sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw=
1652 |
1653 | sshpk@^1.7.0:
1654 | version "1.16.1"
1655 | resolved "https://registry.yarnpkg.com/sshpk/-/sshpk-1.16.1.tgz#fb661c0bef29b39db40769ee39fa70093d6f6877"
1656 | integrity sha512-HXXqVUq7+pcKeLqqZj6mHFUMvXtOJt1uoUx09pFW6011inTMxqI8BA8PM95myrIyyKwdnzjdFjLiE6KBPVtJIg==
1657 | dependencies:
1658 | asn1 "~0.2.3"
1659 | assert-plus "^1.0.0"
1660 | bcrypt-pbkdf "^1.0.0"
1661 | dashdash "^1.12.0"
1662 | ecc-jsbn "~0.1.1"
1663 | getpass "^0.1.1"
1664 | jsbn "~0.1.0"
1665 | safer-buffer "^2.0.2"
1666 | tweetnacl "~0.14.0"
1667 |
1668 | stealthy-require@^1.1.1:
1669 | version "1.1.1"
1670 | resolved "https://registry.yarnpkg.com/stealthy-require/-/stealthy-require-1.1.1.tgz#35b09875b4ff49f26a777e509b3090a3226bf24b"
1671 | integrity sha1-NbCYdbT/SfJqd35QmzCQoyJr8ks=
1672 |
1673 | string-width@^3.0.0:
1674 | version "3.1.0"
1675 | resolved "https://registry.yarnpkg.com/string-width/-/string-width-3.1.0.tgz#22767be21b62af1081574306f69ac51b62203961"
1676 | integrity sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w==
1677 | dependencies:
1678 | emoji-regex "^7.0.1"
1679 | is-fullwidth-code-point "^2.0.0"
1680 | strip-ansi "^5.1.0"
1681 |
1682 | string-width@^4.1.0:
1683 | version "4.1.0"
1684 | resolved "https://registry.yarnpkg.com/string-width/-/string-width-4.1.0.tgz#ba846d1daa97c3c596155308063e075ed1c99aff"
1685 | integrity sha512-NrX+1dVVh+6Y9dnQ19pR0pP4FiEIlUvdTGn8pw6CKTNq5sgib2nIhmUNT5TAmhWmvKr3WcxBcP3E8nWezuipuQ==
1686 | dependencies:
1687 | emoji-regex "^8.0.0"
1688 | is-fullwidth-code-point "^3.0.0"
1689 | strip-ansi "^5.2.0"
1690 |
1691 | string.prototype.trim@~1.1.2:
1692 | version "1.1.2"
1693 | resolved "https://registry.yarnpkg.com/string.prototype.trim/-/string.prototype.trim-1.1.2.tgz#d04de2c89e137f4d7d206f086b5ed2fae6be8cea"
1694 | integrity sha1-0E3iyJ4Tf019IG8Ia17S+ua+jOo=
1695 | dependencies:
1696 | define-properties "^1.1.2"
1697 | es-abstract "^1.5.0"
1698 | function-bind "^1.0.2"
1699 |
1700 | strip-ansi@^5.1.0, strip-ansi@^5.2.0:
1701 | version "5.2.0"
1702 | resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-5.2.0.tgz#8c9a536feb6afc962bdfa5b104a5091c1ad9c0ae"
1703 | integrity sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==
1704 | dependencies:
1705 | ansi-regex "^4.1.0"
1706 |
1707 | strip-eof@^1.0.0:
1708 | version "1.0.0"
1709 | resolved "https://registry.yarnpkg.com/strip-eof/-/strip-eof-1.0.0.tgz#bb43ff5598a6eb05d89b59fcd129c983313606bf"
1710 | integrity sha1-u0P/VZim6wXYm1n80SnJgzE2Br8=
1711 |
1712 | strip-json-comments@^3.0.1:
1713 | version "3.0.1"
1714 | resolved "https://registry.yarnpkg.com/strip-json-comments/-/strip-json-comments-3.0.1.tgz#85713975a91fb87bf1b305cca77395e40d2a64a7"
1715 | integrity sha512-VTyMAUfdm047mwKl+u79WIdrZxtFtn+nBxHeb844XBQ9uMNTuTHdx2hc5RiAJYqwTj3wc/xe5HLSdJSkJ+WfZw==
1716 |
1717 | supports-color@^5.3.0:
1718 | version "5.5.0"
1719 | resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-5.5.0.tgz#e2e69a44ac8772f78a1ec0b35b689df6530efc8f"
1720 | integrity sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==
1721 | dependencies:
1722 | has-flag "^3.0.0"
1723 |
1724 | supports-color@^6.1.0:
1725 | version "6.1.0"
1726 | resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-6.1.0.tgz#0764abc69c63d5ac842dd4867e8d025e880df8f3"
1727 | integrity sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==
1728 | dependencies:
1729 | has-flag "^3.0.0"
1730 |
1731 | symbol-tree@^3.2.2:
1732 | version "3.2.4"
1733 | resolved "https://registry.yarnpkg.com/symbol-tree/-/symbol-tree-3.2.4.tgz#430637d248ba77e078883951fb9aa0eed7c63fa2"
1734 | integrity sha512-9QNk5KwDF+Bvz+PyObkmSYjI5ksVUYtjW7AU22r2NKcfLJcXp96hkDWU3+XndOsUb+AQ9QhfzfCT2O+CNWT5Tw==
1735 |
1736 | table@^5.2.3:
1737 | version "5.4.6"
1738 | resolved "https://registry.yarnpkg.com/table/-/table-5.4.6.tgz#1292d19500ce3f86053b05f0e8e7e4a3bb21079e"
1739 | integrity sha512-wmEc8m4fjnob4gt5riFRtTu/6+4rSe12TpAELNSqHMfF3IqnA+CH37USM6/YR3qRZv7e56kAEAtd6nKZaxe0Ug==
1740 | dependencies:
1741 | ajv "^6.10.2"
1742 | lodash "^4.17.14"
1743 | slice-ansi "^2.1.0"
1744 | string-width "^3.0.0"
1745 |
1746 | tape-await@0.1.2:
1747 | version "0.1.2"
1748 | resolved "https://registry.yarnpkg.com/tape-await/-/tape-await-0.1.2.tgz#41f99110a2bc4728732d8bc058278b2fbf3c0bec"
1749 | integrity sha512-Gt1bXilp9uRTVj+DecLDs37tP1XwGXfFzWVqQEfW7foO9TNacy+aN5TdT0Kv6LI5t/9l3iOE4nX2hr2SQ4+OSg==
1750 |
1751 | tape@^4.9.1:
1752 | version "4.11.0"
1753 | resolved "https://registry.yarnpkg.com/tape/-/tape-4.11.0.tgz#63d41accd95e45a23a874473051c57fdbc58edc1"
1754 | integrity sha512-yixvDMX7q7JIs/omJSzSZrqulOV51EC9dK8dM0TzImTIkHWfe2/kFyL5v+d9C+SrCMaICk59ujsqFAVidDqDaA==
1755 | dependencies:
1756 | deep-equal "~1.0.1"
1757 | defined "~1.0.0"
1758 | for-each "~0.3.3"
1759 | function-bind "~1.1.1"
1760 | glob "~7.1.4"
1761 | has "~1.0.3"
1762 | inherits "~2.0.4"
1763 | minimist "~1.2.0"
1764 | object-inspect "~1.6.0"
1765 | resolve "~1.11.1"
1766 | resumer "~0.0.0"
1767 | string.prototype.trim "~1.1.2"
1768 | through "~2.3.8"
1769 |
1770 | terser@^4.6.2:
1771 | version "4.6.3"
1772 | resolved "https://registry.yarnpkg.com/terser/-/terser-4.6.3.tgz#e33aa42461ced5238d352d2df2a67f21921f8d87"
1773 | integrity sha512-Lw+ieAXmY69d09IIc/yqeBqXpEQIpDGZqT34ui1QWXIUpR2RjbqEkT8X7Lgex19hslSqcWM5iMN2kM11eMsESQ==
1774 | dependencies:
1775 | commander "^2.20.0"
1776 | source-map "~0.6.1"
1777 | source-map-support "~0.5.12"
1778 |
1779 | text-table@^0.2.0:
1780 | version "0.2.0"
1781 | resolved "https://registry.yarnpkg.com/text-table/-/text-table-0.2.0.tgz#7f5ee823ae805207c00af2df4a84ec3fcfa570b4"
1782 | integrity sha1-f17oI66AUgfACvLfSoTsP8+lcLQ=
1783 |
1784 | through@^2.3.6, through@~2.3.4, through@~2.3.8:
1785 | version "2.3.8"
1786 | resolved "https://registry.yarnpkg.com/through/-/through-2.3.8.tgz#0dd4c9ffaabc357960b1b724115d7e0e86a2e1f5"
1787 | integrity sha1-DdTJ/6q8NXlgsbckEV1+Doai4fU=
1788 |
1789 | tmp@^0.0.33:
1790 | version "0.0.33"
1791 | resolved "https://registry.yarnpkg.com/tmp/-/tmp-0.0.33.tgz#6d34335889768d21b2bcda0aa277ced3b1bfadf9"
1792 | integrity sha512-jRCJlojKnZ3addtTOjdIqoRuPEKBvNXcGYqzO6zWZX8KfKEpnGY5jfggJQ3EjKuu8D4bJRr0y+cYJFmYbImXGw==
1793 | dependencies:
1794 | os-tmpdir "~1.0.2"
1795 |
1796 | tough-cookie@^2.3.3:
1797 | version "2.5.0"
1798 | resolved "https://registry.yarnpkg.com/tough-cookie/-/tough-cookie-2.5.0.tgz#cd9fb2a0aa1d5a12b473bd9fb96fa3dcff65ade2"
1799 | integrity sha512-nlLsUzgm1kfLXSXfRZMc1KLAugd4hqJHDTvc2hDIwS3mZAfMEuMbc03SujMF+GEcpaX/qboeycw6iO8JwVv2+g==
1800 | dependencies:
1801 | psl "^1.1.28"
1802 | punycode "^2.1.1"
1803 |
1804 | tough-cookie@^3.0.1:
1805 | version "3.0.1"
1806 | resolved "https://registry.yarnpkg.com/tough-cookie/-/tough-cookie-3.0.1.tgz#9df4f57e739c26930a018184887f4adb7dca73b2"
1807 | integrity sha512-yQyJ0u4pZsv9D4clxO69OEjLWYw+jbgspjTue4lTQZLfV0c5l1VmK2y1JK8E9ahdpltPOaAThPcp5nKPUgSnsg==
1808 | dependencies:
1809 | ip-regex "^2.1.0"
1810 | psl "^1.1.28"
1811 | punycode "^2.1.1"
1812 |
1813 | tough-cookie@~2.4.3:
1814 | version "2.4.3"
1815 | resolved "https://registry.yarnpkg.com/tough-cookie/-/tough-cookie-2.4.3.tgz#53f36da3f47783b0925afa06ff9f3b165280f781"
1816 | integrity sha512-Q5srk/4vDM54WJsJio3XNn6K2sCG+CQ8G5Wz6bZhRZoAe/+TxjWB/GlFAnYEbkYVlON9FMk/fE3h2RLpPXo4lQ==
1817 | dependencies:
1818 | psl "^1.1.24"
1819 | punycode "^1.4.1"
1820 |
1821 | tr46@^1.0.1:
1822 | version "1.0.1"
1823 | resolved "https://registry.yarnpkg.com/tr46/-/tr46-1.0.1.tgz#a8b13fd6bfd2489519674ccde55ba3693b706d09"
1824 | integrity sha1-qLE/1r/SSJUZZ0zN5VujaTtwbQk=
1825 | dependencies:
1826 | punycode "^2.1.0"
1827 |
1828 | tslib@^1.9.0:
1829 | version "1.10.0"
1830 | resolved "https://registry.yarnpkg.com/tslib/-/tslib-1.10.0.tgz#c3c19f95973fb0a62973fb09d90d961ee43e5c8a"
1831 | integrity sha512-qOebF53frne81cf0S9B41ByenJ3/IuH8yJKngAX35CmiZySA0khhkovshKK+jGCaMnVomla7gVlIcc3EvKPbTQ==
1832 |
1833 | tunnel-agent@^0.6.0:
1834 | version "0.6.0"
1835 | resolved "https://registry.yarnpkg.com/tunnel-agent/-/tunnel-agent-0.6.0.tgz#27a5dea06b36b04a0a9966774b290868f0fc40fd"
1836 | integrity sha1-J6XeoGs2sEoKmWZ3SykIaPD8QP0=
1837 | dependencies:
1838 | safe-buffer "^5.0.1"
1839 |
1840 | tweetnacl@^0.14.3, tweetnacl@~0.14.0:
1841 | version "0.14.5"
1842 | resolved "https://registry.yarnpkg.com/tweetnacl/-/tweetnacl-0.14.5.tgz#5ae68177f192d4456269d108afa93ff8743f4f64"
1843 | integrity sha1-WuaBd/GS1EViadEIr6k/+HQ/T2Q=
1844 |
1845 | type-check@~0.3.2:
1846 | version "0.3.2"
1847 | resolved "https://registry.yarnpkg.com/type-check/-/type-check-0.3.2.tgz#5884cab512cf1d355e3fb784f30804b2b520db72"
1848 | integrity sha1-WITKtRLPHTVeP7eE8wgEsrUg23I=
1849 | dependencies:
1850 | prelude-ls "~1.1.2"
1851 |
1852 | type-fest@^0.5.2:
1853 | version "0.5.2"
1854 | resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.5.2.tgz#d6ef42a0356c6cd45f49485c3b6281fc148e48a2"
1855 | integrity sha512-DWkS49EQKVX//Tbupb9TFa19c7+MK1XmzkrZUR8TAktmE/DizXoaoJV6TZ/tSIPXipqNiRI6CyAe7x69Jb6RSw==
1856 |
1857 | type-fest@^0.6.0:
1858 | version "0.6.0"
1859 | resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.6.0.tgz#8d2a2370d3df886eb5c90ada1c5bf6188acf838b"
1860 | integrity sha512-q+MB8nYR1KDLrgr4G5yemftpMC7/QLqVndBmEEdqzmNj5dcFOO4Oo8qlwZE3ULT3+Zim1F8Kq4cBnikNhlCMlg==
1861 |
1862 | type-fest@^0.8.1:
1863 | version "0.8.1"
1864 | resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.8.1.tgz#09e249ebde851d3b1e48d27c105444667f17b83d"
1865 | integrity sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA==
1866 |
1867 | uri-js@^4.2.2:
1868 | version "4.2.2"
1869 | resolved "https://registry.yarnpkg.com/uri-js/-/uri-js-4.2.2.tgz#94c540e1ff772956e2299507c010aea6c8838eb0"
1870 | integrity sha512-KY9Frmirql91X2Qgjry0Wd4Y+YTdrdZheS8TFwvkbLWf/G5KNJDCh6pKL5OZctEW4+0Baa5idK2ZQuELRwPznQ==
1871 | dependencies:
1872 | punycode "^2.1.0"
1873 |
1874 | uuid@^3.3.2:
1875 | version "3.3.3"
1876 | resolved "https://registry.yarnpkg.com/uuid/-/uuid-3.3.3.tgz#4568f0216e78760ee1dbf3a4d2cf53e224112866"
1877 | integrity sha512-pW0No1RGHgzlpHJO1nsVrHKpOEIxkGg1xB+v0ZmdNH5OAeAwzAVrCnI2/6Mtx+Uys6iaylxa+D3g4j63IKKjSQ==
1878 |
1879 | v8-compile-cache@^2.0.3:
1880 | version "2.1.0"
1881 | resolved "https://registry.yarnpkg.com/v8-compile-cache/-/v8-compile-cache-2.1.0.tgz#e14de37b31a6d194f5690d67efc4e7f6fc6ab30e"
1882 | integrity sha512-usZBT3PW+LOjM25wbqIlZwPeJV+3OSz3M1k1Ws8snlW39dZyYL9lOGC5FgPVHfk0jKmjiDV8Z0mIbVQPiwFs7g==
1883 |
1884 | validate-npm-package-license@^3.0.1:
1885 | version "3.0.4"
1886 | resolved "https://registry.yarnpkg.com/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz#fc91f6b9c7ba15c857f4cb2c5defeec39d4f410a"
1887 | integrity sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew==
1888 | dependencies:
1889 | spdx-correct "^3.0.0"
1890 | spdx-expression-parse "^3.0.0"
1891 |
1892 | verror@1.10.0:
1893 | version "1.10.0"
1894 | resolved "https://registry.yarnpkg.com/verror/-/verror-1.10.0.tgz#3a105ca17053af55d6e270c1f8288682e18da400"
1895 | integrity sha1-OhBcoXBTr1XW4nDB+CiGguGNpAA=
1896 | dependencies:
1897 | assert-plus "^1.0.0"
1898 | core-util-is "1.0.2"
1899 | extsprintf "^1.2.0"
1900 |
1901 | w3c-hr-time@^1.0.1:
1902 | version "1.0.1"
1903 | resolved "https://registry.yarnpkg.com/w3c-hr-time/-/w3c-hr-time-1.0.1.tgz#82ac2bff63d950ea9e3189a58a65625fedf19045"
1904 | integrity sha1-gqwr/2PZUOqeMYmlimViX+3xkEU=
1905 | dependencies:
1906 | browser-process-hrtime "^0.1.2"
1907 |
1908 | w3c-xmlserializer@^1.1.2:
1909 | version "1.1.2"
1910 | resolved "https://registry.yarnpkg.com/w3c-xmlserializer/-/w3c-xmlserializer-1.1.2.tgz#30485ca7d70a6fd052420a3d12fd90e6339ce794"
1911 | integrity sha512-p10l/ayESzrBMYWRID6xbuCKh2Fp77+sA0doRuGn4tTIMrrZVeqfpKjXHY+oDh3K4nLdPgNwMTVP6Vp4pvqbNg==
1912 | dependencies:
1913 | domexception "^1.0.1"
1914 | webidl-conversions "^4.0.2"
1915 | xml-name-validator "^3.0.0"
1916 |
1917 | webidl-conversions@^4.0.2:
1918 | version "4.0.2"
1919 | resolved "https://registry.yarnpkg.com/webidl-conversions/-/webidl-conversions-4.0.2.tgz#a855980b1f0b6b359ba1d5d9fb39ae941faa63ad"
1920 | integrity sha512-YQ+BmxuTgd6UXZW3+ICGfyqRyHXVlD5GtQr5+qjiNW7bF0cqrzX500HVXPBOvgXb5YnzDd+h0zqyv61KUD7+Sg==
1921 |
1922 | whatwg-encoding@^1.0.1, whatwg-encoding@^1.0.5:
1923 | version "1.0.5"
1924 | resolved "https://registry.yarnpkg.com/whatwg-encoding/-/whatwg-encoding-1.0.5.tgz#5abacf777c32166a51d085d6b4f3e7d27113ddb0"
1925 | integrity sha512-b5lim54JOPN9HtzvK9HFXvBma/rnfFeqsic0hSpjtDbVxR3dJKLc+KB4V6GgiGOvl7CY/KNh8rxSo9DKQrnUEw==
1926 | dependencies:
1927 | iconv-lite "0.4.24"
1928 |
1929 | whatwg-mimetype@^2.2.0, whatwg-mimetype@^2.3.0:
1930 | version "2.3.0"
1931 | resolved "https://registry.yarnpkg.com/whatwg-mimetype/-/whatwg-mimetype-2.3.0.tgz#3d4b1e0312d2079879f826aff18dbeeca5960fbf"
1932 | integrity sha512-M4yMwr6mAnQz76TbJm914+gPpB/nCwvZbJU28cUD6dR004SAxDLOOSUaB1JDRqLtaOV/vi0IC5lEAGFgrjGv/g==
1933 |
1934 | whatwg-url@^7.0.0:
1935 | version "7.0.0"
1936 | resolved "https://registry.yarnpkg.com/whatwg-url/-/whatwg-url-7.0.0.tgz#fde926fa54a599f3adf82dff25a9f7be02dc6edd"
1937 | integrity sha512-37GeVSIJ3kn1JgKyjiYNmSLP1yzbpb29jdmwBSgkD9h40/hyrR/OifpVUndji3tmwGgD8qpw7iQu3RSbCrBpsQ==
1938 | dependencies:
1939 | lodash.sortby "^4.7.0"
1940 | tr46 "^1.0.1"
1941 | webidl-conversions "^4.0.2"
1942 |
1943 | which@^1.2.9:
1944 | version "1.3.1"
1945 | resolved "https://registry.yarnpkg.com/which/-/which-1.3.1.tgz#a45043d54f5805316da8d62f9f50918d3da70b0a"
1946 | integrity sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==
1947 | dependencies:
1948 | isexe "^2.0.0"
1949 |
1950 | word-wrap@~1.2.3:
1951 | version "1.2.3"
1952 | resolved "https://registry.yarnpkg.com/word-wrap/-/word-wrap-1.2.3.tgz#610636f6b1f703891bd34771ccb17fb93b47079c"
1953 | integrity sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ==
1954 |
1955 | wrappy@1:
1956 | version "1.0.2"
1957 | resolved "https://registry.yarnpkg.com/wrappy/-/wrappy-1.0.2.tgz#b5243d8f3ec1aa35f1364605bc0d1036e30ab69f"
1958 | integrity sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=
1959 |
1960 | write@1.0.3:
1961 | version "1.0.3"
1962 | resolved "https://registry.yarnpkg.com/write/-/write-1.0.3.tgz#0800e14523b923a387e415123c865616aae0f5c3"
1963 | integrity sha512-/lg70HAjtkUgWPVZhZcm+T4hkL8Zbtp1nFNOn3lRrxnlv50SRBv7cR7RqR+GMsd3hUXy9hWBo4CHTbFTcOYwig==
1964 | dependencies:
1965 | mkdirp "^0.5.1"
1966 |
1967 | ws@^7.0.0:
1968 | version "7.1.2"
1969 | resolved "https://registry.yarnpkg.com/ws/-/ws-7.1.2.tgz#c672d1629de8bb27a9699eb599be47aeeedd8f73"
1970 | integrity sha512-gftXq3XI81cJCgkUiAVixA0raD9IVmXqsylCrjRygw4+UOOGzPoxnQ6r/CnVL9i+mDncJo94tSkyrtuuQVBmrg==
1971 | dependencies:
1972 | async-limiter "^1.0.0"
1973 |
1974 | xml-name-validator@^3.0.0:
1975 | version "3.0.0"
1976 | resolved "https://registry.yarnpkg.com/xml-name-validator/-/xml-name-validator-3.0.0.tgz#6ae73e06de4d8c6e47f9fb181f78d648ad457c6a"
1977 | integrity sha512-A5CUptxDsvxKJEU3yO6DuWBSJz/qizqzJKOMIfUJHETbBw/sFaDxgd6fxm1ewUaM0jZ444Fc5vC5ROYurg/4Pw==
1978 |
1979 | xmlchars@^2.1.1:
1980 | version "2.1.1"
1981 | resolved "https://registry.yarnpkg.com/xmlchars/-/xmlchars-2.1.1.tgz#ef1a81c05bff629c2280007f12daca21bd6f6c93"
1982 | integrity sha512-7hew1RPJ1iIuje/Y01bGD/mXokXxegAgVS+e+E0wSi2ILHQkYAH1+JXARwTjZSM4Z4Z+c73aKspEcqj+zPPL/w==
1983 |
--------------------------------------------------------------------------------