Merge pull request #26 from marcus13345/testing

Unit testing
sdl
Marcus • Valerie 2021-05-23 21:32:02 -04:00 committed by GitHub
commit 11eab6565c
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
39 changed files with 1412 additions and 669 deletions

4
.gitignore vendored
View File

@ -1,4 +1,6 @@
node_modules
out
.system
*.tgz
*.tgz
.nyc_output
coverage

8
.mocharc.json 100644
View File

@ -0,0 +1,8 @@
{
"spec": [
"test/**/*.test.ts"
],
"loader": [
"ts-node/esm.mjs"
]
}

View File

@ -4,4 +4,10 @@ test
.editorconfig
tsconfig.json
.system
*.tgz
*.tgz
.nyc_output
coverage
syntax.md
testinglib
.travis.yml
.mocharc.json

View File

@ -509,6 +509,7 @@ tar-stream@^2.1.4:
terminal-kit@^2.1.2:
version "2.1.2"
resolved "https://registry.yarnpkg.com/terminal-kit/-/terminal-kit-2.1.2.tgz#08689ff9f8efc6614d34d4cc7be916a91742b896"
integrity sha512-1eG7CrQfE1dd5ZHPG5WrTk/DTeskFPqSLEl+QYmvwvI41dRCN2j1qVyxA4FwE0/x24AbjhSA3FJSIgWqQD610Q==
dependencies:
"@cronvel/get-pixels" "^3.4.0"
chroma-js "^2.1.1"

View File

@ -1,6 +0,0 @@
singleton;
link window
restore {
window ??= create('SDL.window');
}

View File

@ -1,40 +1,55 @@
{
"name": "vogue",
"version": "0.0.1",
"version": "0.1.0",
"main": "index.js",
"license": "MIT",
"type": "module",
"bin": {
"vogue": "out/run.js"
},
"scripts": {
"test": "node --enable-source-maps --unhandled-rejections=strict out/run.js test",
"debug": "cross-env DEBUG=vogue:* yarn test",
"debug:watch": "cross-env DEBUG=vogue:* supervisor -w out,test/**/*.v,lib -n exit --exec yarn -- test",
"postinstall": "yarn compile && cd test && yarn",
"postcompile:watch": "echo DONE",
"compile": "tsc",
"compile:watch": "tsc --watch"
"repository": {
"url": "https://github.com/marcus13345/vogue"
},
"dependencies": {
"scripts": {
"dev": "multiview [ yarn test:watch ] [ yarn compile:watch ] [ yarn debug:watch ]",
"test": "c8 --all mocha",
"test:watch": "cross-env FORCE_COLOR=true supervisor -t -w src,test,.mocharc.json -n exit --extensions js,ts,node --exec cross-env -- yarn test",
"debug": "cross-env DEBUG=vogue:* FORCE_COLOR=true DEBUG_COLORS=true DEBUG_HIDE_DATE=true node --enable-source-maps --unhandled-rejections=strict out/run.js examples/test",
"debug:watch": "supervisor -t -w out,test/system/**/*.v,lib -n exit --exec yarn -- debug",
"compile": "tsc",
"compile:watch": "yarn compile --watch --preserveWatchOutput",
"postinstall": "yarn compile && cd examples/test && yarn"
},
"devDependencies": {
"c8": "^7.7.2",
"cross-env": "^7.0.3",
"multiview": "^3.0.1",
"yarn": "^1.22.10",
"@types/chai": "^4.2.18",
"@types/debug": "^4.1.5",
"@types/fs-extra": "^9.0.11",
"@types/jest": "^26.0.23",
"@types/lodash": "^4.14.169",
"@types/nearley": "^2.11.1",
"@types/node": "^15.3.0",
"@types/sinon": "^10.0.0",
"@types/uglify-js": "^3.13.0",
"@types/uuid": "^8.3.0",
"cross-env": "^7.0.3",
"chai": "^4.3.4",
"mocha": "^8.4.0",
"mocha-lcov-reporter": "^1.3.0",
"supervisor": "^0.12.0",
"sinon": "^10.0.0",
"ts-node": "^9.1.1",
"typescript": "^4.2.4"
},
"dependencies": {
"debug": "^4.3.1",
"fs-extra": "^10.0.0",
"lodash": "^4.17.21",
"moo": "^0.5.1",
"nearley": "^2.20.1",
"nedb": "^1.8.0",
"supervisor": "^0.12.0",
"typescript": "^4.2.4",
"uglify-js": "^3.13.5",
"uuid": "^8.3.2",
"yarn": "^1.22.10"
"uuid": "^8.3.2"
}
}

View File

@ -14,7 +14,6 @@ import { readFileSync } from 'fs';
import debug from 'debug';
import { resolve, dirname } from 'path';
import { fileURLToPath } from 'url';
import minify from './minify.js';
const log = debug('vogue:ast');
const grammarFile = resolve(fileURLToPath(dirname(import.meta.url)), '..', 'lib', 'grammar.ne');

View File

@ -5,7 +5,7 @@ Object.defineProperty(Array.prototype, 'empty', {
}
});
process.on('unhandledRejection', (reason: Error, p) => {
console.log(reason.stack ?? reason.name + '\n\nStack trace unavailable...');
});
// in theory we dont need this anymore... with strict promise rejections...
// process.on('unhandledRejection', (reason: Error, p) => {
// console.log(reason.stack ?? reason.name + '\n\nStack trace unavailable...');
// });

View File

@ -1,16 +1,16 @@
import uglify from 'uglify-js';
// import uglify from 'uglify-js';
export default (code: string): string => {
return uglify.minify(code, {
compress: {
dead_code: true,
global_defs: {
DEBUG: false
}
},
sourceMap: {
content: 'inline'
}
}).code;
}
// export default (code: string): string => {
// return uglify.minify(code, {
// compress: {
// dead_code: true,
// global_defs: {
// DEBUG: false
// }
// },
// sourceMap: {
// content: 'inline'
// }
// }).code;
// }

View File

@ -0,0 +1,10 @@
import { expect } from 'chai';
import '../src/extensions.ts';
describe('extensions', () => {
it('creates empty array extensions', () => {
expect(([] as any).empty).to.be.true;
expect(([1] as any).empty).to.be.false;
expect(([1, 2, 3] as any).empty).to.be.false;
});
})

106
test/lexer.test.ts 100644
View File

@ -0,0 +1,106 @@
import { createAst } from '../src/createAst.js';
import { expect } from 'chai';
import * as ModuleFiles from './lib/ModuleFiles.js'
describe('Lexer', () => {
it('parses blank file', () => {
const ast: any = createAst(ModuleFiles.blank);
expect(ast).to.deep.equal([]);
});
describe('namespaces', () => {
it('parses namespaces without dots', () => {
const ast: any = createAst(ModuleFiles.namespaceX);
expect(ast).to.deep.equal([{type: 'namespace', namespace: 'x'}]);
});
it('parses namespaces with a single dot', () => {
const ast: any = createAst(ModuleFiles.namespaceXY);
expect(ast).to.deep.equal([{type: 'namespace', namespace: 'x.y'}]);
});
it('parses namespaces two dots', () => {
const ast: any = createAst(ModuleFiles.namespaceXYZ);
expect(ast).to.deep.equal([{type: 'namespace', namespace: 'x.y.z'}]);
});
});
describe('links', () => {
it('parses link', () => {
const ast: any = createAst(ModuleFiles.link);
expect(ast).to.deep.equal([{type: 'link', array: false, required: false, name: 'test'}]);
});
it('parses required link', () => {
const ast: any = createAst(ModuleFiles.requiredLink);
expect(ast).to.deep.equal([{type: 'link', array: false, required: true, name: 'test'}]);
});
it('parses link array', () => {
const ast: any = createAst(ModuleFiles.linkArray);
expect(ast).to.deep.equal([{type: 'link', array: true, required: false, name: 'test'}]);
});
it('parses required link array', () => {
const ast: any = createAst(ModuleFiles.requiredLinkArray);
expect(ast).to.deep.equal([{type: 'link', array: true, required: true, name: 'test'}]);
});
});
describe('functions', () => {
it('function with parameters omitted', () => {
const ast: any = createAst(ModuleFiles.functionNoParams);
expect(ast).to.be.an('array').with.length(1);
expect(ast[0]).to.be.an('object');
expect(ast[0]).to.include({type: 'function', name: 'test', async: false});
expect(ast[0].parameters).to.be.an('array').of.length(0);
});
it('function with empty parameters', () => {
const ast: any = createAst(ModuleFiles.functionEmptyParams);
expect(ast).to.be.an('array').with.length(1);
expect(ast[0]).to.be.an('object');
expect(ast[0]).to.include({type: 'function', name: 'test', async: false});
expect(ast[0].parameters).to.be.an('array').of.length(0);
});
it('function with one parameter', () => {
const ast: any = createAst(ModuleFiles.functionOneParam);
expect(ast).to.be.an('array').with.length(1);
expect(ast[0]).to.be.an('object');
expect(ast[0]).to.include({type: 'function', name: 'test', async: false});
expect(ast[0].parameters).to.be.an('array').deep.equals(["a"]);
});
it('function with two parameters', () => {
const ast: any = createAst(ModuleFiles.functionTwoParams);
expect(ast).to.be.an('array').with.length(1);
expect(ast[0]).to.be.an('object');
expect(ast[0]).to.include({type: 'function', name: 'test', async: false});
expect(ast[0].parameters).to.be.an('array').deep.equals(["a", "b"]);
});
it('async function with parameters omitted', () => {
const ast: any = createAst(ModuleFiles.asyncFunctionNoParams);
expect(ast).to.be.an('array').with.length(1);
expect(ast[0]).to.be.an('object');
expect(ast[0]).to.deep.include({type: 'function', name: 'test', async: true});
expect(ast[0].parameters).to.be.an('array').of.length(0);
});
it('async function with empty parameters', () => {
const ast: any = createAst(ModuleFiles.asyncFunctionEmptyParams);
expect(ast).to.be.an('array').with.length(1);
expect(ast[0]).to.be.an('object');
expect(ast[0]).to.deep.include({type: 'function', name: 'test', async: true});
expect(ast[0].parameters).to.be.an('array').of.length(0);
});
it('async function with one parameter', () => {
const ast: any = createAst(ModuleFiles.asyncFunctionOneParam);
expect(ast).to.be.an('array').with.length(1);
expect(ast[0]).to.be.an('object');
expect(ast[0]).to.deep.include({type: 'function', name: 'test', async: true});
expect(ast[0].parameters).to.be.an('array').deep.equals(["a"]);
});
it('async function with two parameters', () => {
const ast: any = createAst(ModuleFiles.asyncFunctionTwoParams);
expect(ast).to.be.an('array').with.length(1);
expect(ast[0]).to.be.an('object');
expect(ast[0]).to.deep.include({type: 'function', name: 'test', async: true});
expect(ast[0].parameters).to.be.an('array').deep.equals(["a", "b"]);
});
});
});

View File

@ -0,0 +1,27 @@
import { resolve, parse } from 'path';
import { fileURLToPath } from 'url';
function file(str: string) {
return resolve(parse(fileURLToPath(import.meta.url)).dir, '..', 'modules', str + '.v')
}
export const blank = file('blank');
export const namespaceX = file('namespaceX');
export const namespaceXY = file('namespaceXY');
export const namespaceXYZ = file('namespaceXYZ');
export const link = file('link');
export const linkArray = file('linkArray');
export const requiredLink = file('requiredLink');
export const requiredLinkArray = file('requiredLinkArray');
export const functionNoParams = file('functionNoParams');
export const functionEmptyParams = file('functionEmptyParams');
export const functionOneParam = file('functionOneParam');
export const functionTwoParams = file('functionTwoParams');
export const asyncFunctionNoParams = file('asyncFunctionNoParams');
export const asyncFunctionEmptyParams = file('asyncFunctionEmptyParams');
export const asyncFunctionOneParam = file('asyncFunctionOneParam');
export const asyncFunctionTwoParams = file('asyncFunctionTwoParams');

View File

@ -0,0 +1,3 @@
async test() {
}

View File

@ -0,0 +1,3 @@
async test {
}

View File

@ -0,0 +1,3 @@
async test(a) {
}

View File

@ -0,0 +1,3 @@
async test(a, b) {
}

View File

View File

@ -0,0 +1,3 @@
test() {
}

View File

@ -0,0 +1,3 @@
test {
}

View File

@ -0,0 +1,3 @@
test(a) {
}

View File

@ -0,0 +1,3 @@
test(a, b) {
}

View File

@ -0,0 +1 @@
link test;

View File

@ -0,0 +1 @@
link[] test;

View File

@ -0,0 +1 @@
namespace x;

View File

@ -0,0 +1 @@
namespace x.y;

View File

@ -0,0 +1 @@
namespace x.y.z;

View File

@ -0,0 +1 @@
required link test;

View File

@ -0,0 +1 @@
required link[] test;

View File

@ -1,13 +0,0 @@
{
"name": "test",
"version": "1.0.0",
"main": "index.js",
"license": "MIT",
"dependencies": {
"chalk": "^4.1.1",
"random-world": "^1.2.1",
"signale": "^1.4.0",
"sisteransi": "^1.0.5",
"terminal-kit": "^2.1.2"
}
}

View File

@ -1,6 +0,0 @@
restore {
}

View File

@ -1,11 +0,0 @@
namespace structures;
member alive;
member age;
required link land;
restore {
alive ??= true;
age ??= 0;
}

10
test/tsconfig.json 100644
View File

@ -0,0 +1,10 @@
{
"compilerOptions": {
"module": "ES6",
"moduleResolution": "node",
"target": "es2020"
},
"include": [
"**/*.ts"
]
}

View File

@ -1,16 +0,0 @@
link[] pawns;
member map;
member size;
restore {
for(let i = 0; i < 3; i ++) {
}
this.size ??= 64;
}
async render() {
}

View File

@ -1,346 +0,0 @@
# THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY.
# yarn lockfile v1
"@cronvel/get-pixels@^3.4.0":
version "3.4.0"
resolved "https://registry.npmjs.org/@cronvel/get-pixels/-/get-pixels-3.4.0.tgz"
dependencies:
jpeg-js "^0.4.1"
ndarray "^1.0.19"
ndarray-pack "^1.1.1"
node-bitmap "0.0.1"
omggif "^1.0.10"
pngjs "^5.0.0"
ansi-styles@^3.2.1:
version "3.2.1"
resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-3.2.1.tgz#41fbb20243e50b12be0f04b8dedbf07520ce841d"
dependencies:
color-convert "^1.9.0"
ansi-styles@^4.1.0:
version "4.3.0"
resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-4.3.0.tgz#edd803628ae71c04c85ae7a0906edad34b648937"
dependencies:
color-convert "^2.0.1"
chalk@^2.3.2:
version "2.4.2"
resolved "https://registry.yarnpkg.com/chalk/-/chalk-2.4.2.tgz#cd42541677a54333cf541a49108c1432b44c9424"
dependencies:
ansi-styles "^3.2.1"
escape-string-regexp "^1.0.5"
supports-color "^5.3.0"
chalk@^4.1.1:
version "4.1.1"
resolved "https://registry.yarnpkg.com/chalk/-/chalk-4.1.1.tgz#c80b3fab28bf6371e6863325eee67e618b77e6ad"
dependencies:
ansi-styles "^4.1.0"
supports-color "^7.1.0"
chroma-js@^2.1.1:
version "2.1.1"
resolved "https://registry.npmjs.org/chroma-js/-/chroma-js-2.1.1.tgz"
dependencies:
cross-env "^6.0.3"
color-convert@^1.9.0:
version "1.9.3"
resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-1.9.3.tgz#bb71850690e1f136567de629d2d5471deda4c1e8"
dependencies:
color-name "1.1.3"
color-convert@^2.0.1:
version "2.0.1"
resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-2.0.1.tgz#72d3a68d598c9bdb3af2ad1e84f21d896abd4de3"
dependencies:
color-name "~1.1.4"
color-name@1.1.3:
version "1.1.3"
resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.3.tgz#a7d0558bd89c42f795dd42328f740831ca53bc25"
color-name@~1.1.4:
version "1.1.4"
resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.4.tgz#c2a09a87acbde69543de6f63fa3995c826c536a2"
cross-env@^6.0.3:
version "6.0.3"
resolved "https://registry.npmjs.org/cross-env/-/cross-env-6.0.3.tgz"
dependencies:
cross-spawn "^7.0.0"
cross-spawn@^7.0.0:
version "7.0.3"
resolved "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz"
dependencies:
path-key "^3.1.0"
shebang-command "^2.0.0"
which "^2.0.1"
cwise-compiler@^1.1.2:
version "1.1.3"
resolved "https://registry.npmjs.org/cwise-compiler/-/cwise-compiler-1.1.3.tgz"
dependencies:
uniq "^1.0.0"
error-ex@^1.3.1:
version "1.3.2"
resolved "https://registry.yarnpkg.com/error-ex/-/error-ex-1.3.2.tgz#b4ac40648107fdcdcfae242f428bea8a14d4f1bf"
dependencies:
is-arrayish "^0.2.1"
escape-string-regexp@^1.0.5:
version "1.0.5"
resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz#1b61c0562190a8dff6ae3bb2cf0200ca130b86d4"
figures@^2.0.0:
version "2.0.0"
resolved "https://registry.yarnpkg.com/figures/-/figures-2.0.0.tgz#3ab1a2d2a62c8bfb431a0c94cb797a2fce27c962"
dependencies:
escape-string-regexp "^1.0.5"
find-up@^2.0.0:
version "2.1.0"
resolved "https://registry.yarnpkg.com/find-up/-/find-up-2.1.0.tgz#45d1b7e506c717ddd482775a2b77920a3c0c57a7"
dependencies:
locate-path "^2.0.0"
graceful-fs@^4.1.2:
version "4.2.6"
resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.2.6.tgz#ff040b2b0853b23c3d31027523706f1885d76bee"
has-flag@^3.0.0:
version "3.0.0"
resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-3.0.0.tgz#b5d454dc2199ae225699f3467e5a07f3b955bafd"
has-flag@^4.0.0:
version "4.0.0"
resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-4.0.0.tgz#944771fd9c81c81265c4d6941860da06bb59479b"
iota-array@^1.0.0:
version "1.0.0"
resolved "https://registry.npmjs.org/iota-array/-/iota-array-1.0.0.tgz"
is-arrayish@^0.2.1:
version "0.2.1"
resolved "https://registry.yarnpkg.com/is-arrayish/-/is-arrayish-0.2.1.tgz#77c99840527aa8ecb1a8ba697b80645a7a926a9d"
is-buffer@^1.0.2:
version "1.1.6"
resolved "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz"
isexe@^2.0.0:
version "2.0.0"
resolved "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz"
jpeg-js@^0.4.1:
version "0.4.3"
resolved "https://registry.npmjs.org/jpeg-js/-/jpeg-js-0.4.3.tgz"
json-parse-better-errors@^1.0.1:
version "1.0.2"
resolved "https://registry.yarnpkg.com/json-parse-better-errors/-/json-parse-better-errors-1.0.2.tgz#bb867cfb3450e69107c131d1c514bab3dc8bcaa9"
lazyness@^1.2.0:
version "1.2.0"
resolved "https://registry.npmjs.org/lazyness/-/lazyness-1.2.0.tgz"
load-json-file@^4.0.0:
version "4.0.0"
resolved "https://registry.yarnpkg.com/load-json-file/-/load-json-file-4.0.0.tgz#2f5f45ab91e33216234fd53adab668eb4ec0993b"
dependencies:
graceful-fs "^4.1.2"
parse-json "^4.0.0"
pify "^3.0.0"
strip-bom "^3.0.0"
locate-path@^2.0.0:
version "2.0.0"
resolved "https://registry.yarnpkg.com/locate-path/-/locate-path-2.0.0.tgz#2b568b265eec944c6d9c0de9c3dbbbca0354cd8e"
dependencies:
p-locate "^2.0.0"
path-exists "^3.0.0"
moment@^2.11.2:
version "2.29.1"
resolved "https://registry.yarnpkg.com/moment/-/moment-2.29.1.tgz#b2be769fa31940be9eeea6469c075e35006fa3d3"
integrity sha512-kHmoybcPV8Sqy59DwNDY3Jefr64lK/by/da0ViFcuA4DH0vQg5Q6Ze5VimxkfQNSC+Mls/Kx53s7TjP1RhFEDQ==
ndarray-pack@^1.1.1:
version "1.2.1"
resolved "https://registry.npmjs.org/ndarray-pack/-/ndarray-pack-1.2.1.tgz"
dependencies:
cwise-compiler "^1.1.2"
ndarray "^1.0.13"
ndarray@^1.0.13, ndarray@^1.0.19:
version "1.0.19"
resolved "https://registry.npmjs.org/ndarray/-/ndarray-1.0.19.tgz"
dependencies:
iota-array "^1.0.0"
is-buffer "^1.0.2"
nextgen-events@^1.3.4:
version "1.3.4"
resolved "https://registry.npmjs.org/nextgen-events/-/nextgen-events-1.3.4.tgz"
node-bitmap@0.0.1:
version "0.0.1"
resolved "https://registry.npmjs.org/node-bitmap/-/node-bitmap-0.0.1.tgz"
omggif@^1.0.10:
version "1.0.10"
resolved "https://registry.npmjs.org/omggif/-/omggif-1.0.10.tgz"
p-limit@^1.1.0:
version "1.3.0"
resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-1.3.0.tgz#b86bd5f0c25690911c7590fcbfc2010d54b3ccb8"
dependencies:
p-try "^1.0.0"
p-locate@^2.0.0:
version "2.0.0"
resolved "https://registry.yarnpkg.com/p-locate/-/p-locate-2.0.0.tgz#20a0103b222a70c8fd39cc2e580680f3dde5ec43"
dependencies:
p-limit "^1.1.0"
p-try@^1.0.0:
version "1.0.0"
resolved "https://registry.yarnpkg.com/p-try/-/p-try-1.0.0.tgz#cbc79cdbaf8fd4228e13f621f2b1a237c1b207b3"
parse-json@^4.0.0:
version "4.0.0"
resolved "https://registry.yarnpkg.com/parse-json/-/parse-json-4.0.0.tgz#be35f5425be1f7f6c747184f98a788cb99477ee0"
dependencies:
error-ex "^1.3.1"
json-parse-better-errors "^1.0.1"
path-exists@^3.0.0:
version "3.0.0"
resolved "https://registry.yarnpkg.com/path-exists/-/path-exists-3.0.0.tgz#ce0ebeaa5f78cb18925ea7d810d7b59b010fd515"
path-key@^3.1.0:
version "3.1.1"
resolved "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz"
pify@^3.0.0:
version "3.0.0"
resolved "https://registry.yarnpkg.com/pify/-/pify-3.0.0.tgz#e5a4acd2c101fdf3d9a4d07f0dbc4db49dd28176"
pkg-conf@^2.1.0:
version "2.1.0"
resolved "https://registry.yarnpkg.com/pkg-conf/-/pkg-conf-2.1.0.tgz#2126514ca6f2abfebd168596df18ba57867f0058"
dependencies:
find-up "^2.0.0"
load-json-file "^4.0.0"
pngjs@^5.0.0:
version "5.0.0"
resolved "https://registry.npmjs.org/pngjs/-/pngjs-5.0.0.tgz"
random-world@^1.2.1:
version "1.2.1"
resolved "https://registry.yarnpkg.com/random-world/-/random-world-1.2.1.tgz#aca953a169dc5ffa455a2bc39d7ee81da6f12480"
integrity sha1-rKlToWncX/pFWivDnX7oHabxJIA=
dependencies:
moment "^2.11.2"
seedrandom "^2.4.2"
underscore "^1.8.3"
uuid "^3.0.1"
seedrandom@^2.4.2:
version "2.4.4"
resolved "https://registry.yarnpkg.com/seedrandom/-/seedrandom-2.4.4.tgz#b25ea98632c73e45f58b77cfaa931678df01f9ba"
integrity sha512-9A+PDmgm+2du77B5i0Ip2cxOqqHjgNxnBgglxLcX78A2D6c2rTo61z4jnVABpF4cKeDMDG+cmXXvdnqse2VqMA==
setimmediate@^1.0.5:
version "1.0.5"
resolved "https://registry.npmjs.org/setimmediate/-/setimmediate-1.0.5.tgz"
seventh@^0.7.40:
version "0.7.40"
resolved "https://registry.npmjs.org/seventh/-/seventh-0.7.40.tgz"
dependencies:
setimmediate "^1.0.5"
shebang-command@^2.0.0:
version "2.0.0"
resolved "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz"
dependencies:
shebang-regex "^3.0.0"
shebang-regex@^3.0.0:
version "3.0.0"
resolved "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz"
signale@^1.4.0:
version "1.4.0"
resolved "https://registry.yarnpkg.com/signale/-/signale-1.4.0.tgz#c4be58302fb0262ac00fc3d886a7c113759042f1"
dependencies:
chalk "^2.3.2"
figures "^2.0.0"
pkg-conf "^2.1.0"
sisteransi@^1.0.5:
version "1.0.5"
resolved "https://registry.yarnpkg.com/sisteransi/-/sisteransi-1.0.5.tgz#134d681297756437cc05ca01370d3a7a571075ed"
string-kit@^0.12.5:
version "0.12.5"
resolved "https://registry.npmjs.org/string-kit/-/string-kit-0.12.5.tgz"
strip-bom@^3.0.0:
version "3.0.0"
resolved "https://registry.yarnpkg.com/strip-bom/-/strip-bom-3.0.0.tgz#2334c18e9c759f7bdd56fdef7e9ae3d588e68ed3"
supports-color@^5.3.0:
version "5.5.0"
resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-5.5.0.tgz#e2e69a44ac8772f78a1ec0b35b689df6530efc8f"
dependencies:
has-flag "^3.0.0"
supports-color@^7.1.0:
version "7.2.0"
resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-7.2.0.tgz#1b7dcdcb32b8138801b3e478ba6a51caa89648da"
dependencies:
has-flag "^4.0.0"
terminal-kit@^2.1.2:
version "2.1.2"
resolved "https://registry.npmjs.org/terminal-kit/-/terminal-kit-2.1.2.tgz"
dependencies:
"@cronvel/get-pixels" "^3.4.0"
chroma-js "^2.1.1"
lazyness "^1.2.0"
ndarray "^1.0.19"
nextgen-events "^1.3.4"
seventh "^0.7.40"
string-kit "^0.12.5"
tree-kit "^0.7.0"
tree-kit@^0.7.0:
version "0.7.0"
resolved "https://registry.npmjs.org/tree-kit/-/tree-kit-0.7.0.tgz"
underscore@^1.8.3:
version "1.13.1"
resolved "https://registry.yarnpkg.com/underscore/-/underscore-1.13.1.tgz#0c1c6bd2df54b6b69f2314066d65b6cde6fcf9d1"
integrity sha512-hzSoAVtJF+3ZtiFX0VgfFPHEDRm7Y/QPjGyNo4TVdnDTdft3tr8hEkD25a1jC+TjTuE7tkHGKkhwCgs9dgBB2g==
uniq@^1.0.0:
version "1.0.1"
resolved "https://registry.npmjs.org/uniq/-/uniq-1.0.1.tgz"
uuid@^3.0.1:
version "3.4.0"
resolved "https://registry.yarnpkg.com/uuid/-/uuid-3.4.0.tgz#b23e4358afa8a202fe7a100af1f5f883f02007ee"
integrity sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A==
which@^2.0.1:
version "2.0.2"
resolved "https://registry.npmjs.org/which/-/which-2.0.2.tgz"
dependencies:
isexe "^2.0.0"

View File

@ -7,7 +7,8 @@
"target": "esnext",
"outDir": "out",
"sourceMap": true,
"declaration": true
"declaration": true,
"pretty": true
},
"include": [
"src/**/*.ts"

1391
yarn.lock

File diff suppressed because it is too large Load Diff