diff --git a/.gitignore b/.gitignore index b017598..a4f0abd 100644 --- a/.gitignore +++ b/.gitignore @@ -1,4 +1,6 @@ node_modules out .system -*.tgz \ No newline at end of file +*.tgz +.nyc_output +coverage \ No newline at end of file diff --git a/.mocharc.json b/.mocharc.json new file mode 100644 index 0000000..f2ab853 --- /dev/null +++ b/.mocharc.json @@ -0,0 +1,8 @@ +{ + "spec": [ + "test/**/*.test.ts" + ], + "loader": [ + "ts-node/esm.mjs" + ] +} \ No newline at end of file diff --git a/.npmignore b/.npmignore index 76e8274..9475183 100644 --- a/.npmignore +++ b/.npmignore @@ -4,4 +4,6 @@ test .editorconfig tsconfig.json .system -*.tgz \ No newline at end of file +*.tgz +.nyc_output +coverage \ No newline at end of file diff --git a/.nycrc.json b/.nycrc.json new file mode 100644 index 0000000..c686840 --- /dev/null +++ b/.nycrc.json @@ -0,0 +1,9 @@ +{ + "extension": [ + ".ts" + ], + "require": [ + "ts-node/esm.mjs" + ], + "cache": false +} \ No newline at end of file diff --git a/examples/test/main.v b/examples/test/main.v new file mode 100644 index 0000000..745b90d --- /dev/null +++ b/examples/test/main.v @@ -0,0 +1,5 @@ +singleton; + +restore { + console.log('worked!\n'.repeat(10)); +} \ No newline at end of file diff --git a/examples/valyria/package.json b/examples/test/package.json similarity index 100% rename from examples/valyria/package.json rename to examples/test/package.json diff --git a/examples/valyria/yarn.lock b/examples/test/yarn.lock similarity index 96% rename from examples/valyria/yarn.lock rename to examples/test/yarn.lock index e5e646d..c5dc1d0 100644 --- a/examples/valyria/yarn.lock +++ b/examples/test/yarn.lock @@ -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" diff --git a/examples/valyria/main.v b/examples/valyria/main.v deleted file mode 100644 index c2e4461..0000000 --- a/examples/valyria/main.v +++ /dev/null @@ -1,6 +0,0 @@ -singleton; -link window - -restore { - window ??= create('SDL.window'); -} \ No newline at end of file diff --git a/package.json b/package.json index bcbc433..fd1ada1 100644 --- a/package.json +++ b/package.json @@ -8,33 +8,39 @@ "vogue": "out/run.js" }, "scripts": { - "test": "mocha tests", - "test:watch": "supervisor -n exit -w out,tests --exec mocha -- tests", + "test": "c8 --all mocha", + "test:watch": "mocha", "debug": "cross-env DEBUG=vogue:* yarn node --enable-source-maps --unhandled-rejections=strict out/run.js 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" + "debug:watch": "supervisor -w out,test/system/**/*.v,lib -n exit --exec yarn -- clear_and yarn debug", + "compile": "tsc --listEmittedFiles", + "compile:watch": "yarn compile --watch --preserveWatchOutput", + "postinstall": "yarn compile" }, "dependencies": { + "@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", + "c8": "^7.7.2", "chai": "^4.3.4", "cross-env": "^7.0.3", "debug": "^4.3.1", + "esm": "^3.2.25", "fs-extra": "^10.0.0", "lodash": "^4.17.21", "mocha": "^8.4.0", + "mocha-lcov-reporter": "^1.3.0", "moo": "^0.5.1", "nearley": "^2.20.1", - "nedb": "^1.8.0", + "sinon": "^10.0.0", "supervisor": "^0.12.0", + "ts-node": "^9.1.1", "typescript": "^4.2.4", "uglify-js": "^3.13.5", "uuid": "^8.3.2", diff --git a/src/createAst.ts b/src/createAst.ts index e527371..fa7f6b4 100644 --- a/src/createAst.ts +++ b/src/createAst.ts @@ -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'); diff --git a/src/extensions.ts b/src/extensions.ts index 06b0441..c1422e4 100644 --- a/src/extensions.ts +++ b/src/extensions.ts @@ -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...'); -}); \ No newline at end of file +// 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...'); +// }); \ No newline at end of file diff --git a/src/minify.ts b/src/minify.ts index 20535d1..d64f379 100644 --- a/src/minify.ts +++ b/src/minify.ts @@ -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; -} \ No newline at end of file +// export default (code: string): string => { +// return uglify.minify(code, { +// compress: { +// dead_code: true, +// global_defs: { +// DEBUG: false +// } +// }, +// sourceMap: { +// content: 'inline' +// } +// }).code; +// } \ No newline at end of file diff --git a/test/extensions.test.ts b/test/extensions.test.ts new file mode 100644 index 0000000..d22e16e --- /dev/null +++ b/test/extensions.test.ts @@ -0,0 +1,11 @@ +import { expect } from 'chai'; +import '../src/extensions.ts'; +import sinon from 'sinon'; + +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; + }); +}) \ No newline at end of file diff --git a/test/lexer.test.ts b/test/lexer.test.ts new file mode 100644 index 0000000..817b0ce --- /dev/null +++ b/test/lexer.test.ts @@ -0,0 +1,82 @@ +import { createAst } from '../out/createAst.js'; +import { expect } from 'chai'; +import * as ModuleFiles from './lib/ModuleFiles.js' + +describe('Lexer', () => { + + it('parses blank file', () => { + const ast = createAst(ModuleFiles.blank); + expect(ast).to.deep.equal([]); + }); + + describe('namespaces', () => { + it('parses namespaces without dots', () => { + const ast = createAst(ModuleFiles.namespaceX); + expect(ast).to.deep.equal([{type: 'namespace', namespace: 'x'}]); + }); + it('parses namespaces with a single dot', () => { + const ast = createAst(ModuleFiles.namespaceXY); + expect(ast).to.deep.equal([{type: 'namespace', namespace: 'x.y'}]); + }); + it('parses namespaces two dots', () => { + const ast = createAst(ModuleFiles.namespaceXYZ); + expect(ast).to.deep.equal([{type: 'namespace', namespace: 'x.y.z'}]); + }); + }); + + describe('links', () => { + it('parses link', () => { + const ast = createAst(ModuleFiles.link); + expect(ast).to.deep.equal([{type: 'link', array: false, required: false, name: 'test'}]); + }); + it('parses required link', () => { + const ast = createAst(ModuleFiles.requiredLink); + expect(ast).to.deep.equal([{type: 'link', array: false, required: true, name: 'test'}]); + }); + it('parses link array', () => { + const ast = createAst(ModuleFiles.linkArray); + expect(ast).to.deep.equal([{type: 'link', array: true, required: false, name: 'test'}]); + }); + it('parses required link array', () => { + const ast = 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 = createAst(ModuleFiles.functionNoParams); + expect(ast).to.deep.equal([{type: 'function', name: 'test', block: '{\n\t\n}', parameters: [], async: false}]); + }); + it('function with empty parameters', () => { + const ast = createAst(ModuleFiles.functionEmptyParams); + expect(ast).to.deep.equal([{type: 'function', name: 'test', block: '{\n\t\n}', parameters: [], async: false}]); + }); + it('function with one parameter', () => { + const ast = createAst(ModuleFiles.functionOneParam); + expect(ast).to.deep.equal([{type: 'function', name: 'test', block: '{\n\t\n}', parameters: ["a"], async: false}]); + }); + it('function with two parameters', () => { + const ast = createAst(ModuleFiles.functionTwoParams); + expect(ast).to.deep.equal([{type: 'function', name: 'test', block: '{\n\t\n}', parameters: ["a", "b"], async: false}]); + }); + + it('async function with parameters omitted', () => { + const ast = createAst(ModuleFiles.asyncFunctionNoParams); + expect(ast).to.deep.equal([{type: 'function', name: 'test', block: '{\n\t\n}', parameters: [], async: true}]); + }); + it('async function with empty parameters', () => { + const ast = createAst(ModuleFiles.asyncFunctionEmptyParams); + expect(ast).to.deep.equal([{type: 'function', name: 'test', block: '{\n\t\n}', parameters: [], async: true}]); + }); + it('async function with one parameter', () => { + const ast = createAst(ModuleFiles.asyncFunctionOneParam); + expect(ast).to.deep.equal([{type: 'function', name: 'test', block: '{\n\t\n}', parameters: ["a"], async: true}]); + }); + it('async function with two parameters', () => { + const ast = createAst(ModuleFiles.asyncFunctionTwoParams); + expect(ast).to.deep.equal([{type: 'function', name: 'test', block: '{\n\t\n}', parameters: ["a", "b"], async: true}]); + }); + }); + +}); \ No newline at end of file diff --git a/test/lib/ModuleFiles.ts b/test/lib/ModuleFiles.ts new file mode 100644 index 0000000..e25cb18 --- /dev/null +++ b/test/lib/ModuleFiles.ts @@ -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'); diff --git a/test/modules/AsyncFunctionOneParam.v b/test/modules/AsyncFunctionOneParam.v new file mode 100644 index 0000000..82c38fb --- /dev/null +++ b/test/modules/AsyncFunctionOneParam.v @@ -0,0 +1,3 @@ +async test(a) { + +} \ No newline at end of file diff --git a/test/modules/asyncFunctionEmptyParams.v b/test/modules/asyncFunctionEmptyParams.v new file mode 100644 index 0000000..3f5cd15 --- /dev/null +++ b/test/modules/asyncFunctionEmptyParams.v @@ -0,0 +1,3 @@ +async test() { + +} \ No newline at end of file diff --git a/test/modules/asyncFunctionNoParams.v b/test/modules/asyncFunctionNoParams.v new file mode 100644 index 0000000..bbe429f --- /dev/null +++ b/test/modules/asyncFunctionNoParams.v @@ -0,0 +1,3 @@ +async test { + +} \ No newline at end of file diff --git a/test/modules/asyncFunctionTwoParams.v b/test/modules/asyncFunctionTwoParams.v new file mode 100644 index 0000000..8e5d3f0 --- /dev/null +++ b/test/modules/asyncFunctionTwoParams.v @@ -0,0 +1,3 @@ +async test(a, b) { + +} \ No newline at end of file diff --git a/test/modules/blank.v b/test/modules/blank.v new file mode 100644 index 0000000..e69de29 diff --git a/test/modules/functionEmptyParams.v b/test/modules/functionEmptyParams.v new file mode 100644 index 0000000..25be7c8 --- /dev/null +++ b/test/modules/functionEmptyParams.v @@ -0,0 +1,3 @@ +test() { + +} \ No newline at end of file diff --git a/test/modules/functionNoParams.v b/test/modules/functionNoParams.v new file mode 100644 index 0000000..a8c71a8 --- /dev/null +++ b/test/modules/functionNoParams.v @@ -0,0 +1,3 @@ +test { + +} \ No newline at end of file diff --git a/test/modules/functionOneParam.v b/test/modules/functionOneParam.v new file mode 100644 index 0000000..c9ca1d5 --- /dev/null +++ b/test/modules/functionOneParam.v @@ -0,0 +1,3 @@ +test(a) { + +} \ No newline at end of file diff --git a/test/modules/functionTwoParams.v b/test/modules/functionTwoParams.v new file mode 100644 index 0000000..76398e2 --- /dev/null +++ b/test/modules/functionTwoParams.v @@ -0,0 +1,3 @@ +test(a, b) { + +} \ No newline at end of file diff --git a/tests/modules/link.v b/test/modules/link.v similarity index 100% rename from tests/modules/link.v rename to test/modules/link.v diff --git a/tests/modules/linkArray.v b/test/modules/linkArray.v similarity index 100% rename from tests/modules/linkArray.v rename to test/modules/linkArray.v diff --git a/tests/modules/namespaceX.v b/test/modules/namespaceX.v similarity index 100% rename from tests/modules/namespaceX.v rename to test/modules/namespaceX.v diff --git a/tests/modules/namespaceXY.v b/test/modules/namespaceXY.v similarity index 100% rename from tests/modules/namespaceXY.v rename to test/modules/namespaceXY.v diff --git a/tests/modules/namespaceXYZ.v b/test/modules/namespaceXYZ.v similarity index 100% rename from tests/modules/namespaceXYZ.v rename to test/modules/namespaceXYZ.v diff --git a/tests/modules/requiredLink.v b/test/modules/requiredLink.v similarity index 100% rename from tests/modules/requiredLink.v rename to test/modules/requiredLink.v diff --git a/tests/modules/requiredLinkArray.v b/test/modules/requiredLinkArray.v similarity index 100% rename from tests/modules/requiredLinkArray.v rename to test/modules/requiredLinkArray.v diff --git a/test/pawn.v b/test/pawn.v deleted file mode 100644 index 72a7433..0000000 --- a/test/pawn.v +++ /dev/null @@ -1,6 +0,0 @@ - - - -restore { - -} \ No newline at end of file diff --git a/test/counter.v b/test/system/counter.v similarity index 100% rename from test/counter.v rename to test/system/counter.v diff --git a/test/main.v b/test/system/main.v similarity index 100% rename from test/main.v rename to test/system/main.v diff --git a/test/package.json b/test/system/package.json similarity index 60% rename from test/package.json rename to test/system/package.json index be685c5..eed6f0b 100644 --- a/test/package.json +++ b/test/system/package.json @@ -1,12 +1,9 @@ { - "name": "test", + "name": "system", "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" } diff --git a/test/system/yarn.lock b/test/system/yarn.lock new file mode 100644 index 0000000..fcf7cdd --- /dev/null +++ b/test/system/yarn.lock @@ -0,0 +1,176 @@ +# 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.yarnpkg.com/@cronvel/get-pixels/-/get-pixels-3.4.0.tgz#697cd691c16bbb8b29ed596da73fd6a7e9a2f34d" + integrity sha512-do5jDoX9oCR/dGHE4POVQ3PYDCmQ2Fow4CA72UL4WoE8zUImA/0lChczjfl+ucNjE4sXFWUnzoO6j4WzrUvLnw== + 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" + +chroma-js@^2.1.1: + version "2.1.2" + resolved "https://registry.yarnpkg.com/chroma-js/-/chroma-js-2.1.2.tgz#1075cb9ae25bcb2017c109394168b5cf3aa500ec" + integrity sha512-ri/ouYDWuxfus3UcaMxC1Tfp3IE9K5iQzxc2hSxbBRVNQFut1UuGAsZmiAf2mOUubzGJwgMSv9lHg+XqLaz1QQ== + dependencies: + cross-env "^6.0.3" + +cross-env@^6.0.3: + version "6.0.3" + resolved "https://registry.yarnpkg.com/cross-env/-/cross-env-6.0.3.tgz#4256b71e49b3a40637a0ce70768a6ef5c72ae941" + integrity sha512-+KqxF6LCvfhWvADcDPqo64yVIB31gv/jQulX2NGzKS/g3GEVz6/pt4wjHFtFWsHMddebWD/sDthJemzM4MaAag== + dependencies: + cross-spawn "^7.0.0" + +cross-spawn@^7.0.0: + version "7.0.3" + resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-7.0.3.tgz#f73a85b9d5d41d045551c177e2882d4ac85728a6" + integrity sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w== + 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.yarnpkg.com/cwise-compiler/-/cwise-compiler-1.1.3.tgz#f4d667410e850d3a313a7d2db7b1e505bb034cc5" + integrity sha1-9NZnQQ6FDToxOn0tt7HlBbsDTMU= + dependencies: + uniq "^1.0.0" + +iota-array@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/iota-array/-/iota-array-1.0.0.tgz#81ef57fe5d05814cd58c2483632a99c30a0e8087" + integrity sha1-ge9X/l0FgUzVjCSDYyqZwwoOgIc= + +is-buffer@^1.0.2: + version "1.1.6" + resolved "https://registry.yarnpkg.com/is-buffer/-/is-buffer-1.1.6.tgz#efaa2ea9daa0d7ab2ea13a97b2b8ad51fefbe8be" + integrity sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w== + +isexe@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/isexe/-/isexe-2.0.0.tgz#e8fbf374dc556ff8947a10dcb0572d633f2cfa10" + integrity sha1-6PvzdNxVb/iUehDcsFctYz8s+hA= + +jpeg-js@^0.4.1: + version "0.4.3" + resolved "https://registry.yarnpkg.com/jpeg-js/-/jpeg-js-0.4.3.tgz#6158e09f1983ad773813704be80680550eff977b" + integrity sha512-ru1HWKek8octvUHFHvE5ZzQ1yAsJmIvRdGWvSoKV52XKyuyYA437QWDttXT8eZXDSbuMpHlLzPDZUPd6idIz+Q== + +lazyness@^1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/lazyness/-/lazyness-1.2.0.tgz#5dc0f02c37280436b21f0e4918ce6e72a109c657" + integrity sha512-KenL6EFbwxBwRxG93t0gcUyi0Nw0Ub31FJKN1laA4UscdkL1K1AxUd0gYZdcLU3v+x+wcFi4uQKS5hL+fk500g== + +ndarray-pack@^1.1.1: + version "1.2.1" + resolved "https://registry.yarnpkg.com/ndarray-pack/-/ndarray-pack-1.2.1.tgz#8caebeaaa24d5ecf70ff86020637977da8ee585a" + integrity sha1-jK6+qqJNXs9w/4YCBjeXfajuWFo= + 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.yarnpkg.com/ndarray/-/ndarray-1.0.19.tgz#6785b5f5dfa58b83e31ae5b2a058cfd1ab3f694e" + integrity sha512-B4JHA4vdyZU30ELBw3g7/p9bZupyew5a7tX1Y/gGeF2hafrPaQZhgrGQfsvgfYbgdFZjYwuEcnaobeM/WMW+HQ== + dependencies: + iota-array "^1.0.0" + is-buffer "^1.0.2" + +nextgen-events@^1.3.4: + version "1.4.0" + resolved "https://registry.yarnpkg.com/nextgen-events/-/nextgen-events-1.4.0.tgz#82e7201e4d8421f1cb4dcfce973c10b455fdc2be" + integrity sha512-bwSpShfuLg/lcRFokZvtUcrn5kumy6uRI6Jc+QWzH+bW6ZRdog7LfwAwhqeTzVfsprZgDGrctr6rO5aJhcdAfg== + +node-bitmap@0.0.1: + version "0.0.1" + resolved "https://registry.yarnpkg.com/node-bitmap/-/node-bitmap-0.0.1.tgz#180eac7003e0c707618ef31368f62f84b2a69091" + integrity sha1-GA6scAPgxwdhjvMTaPYvhLKmkJE= + +omggif@^1.0.10: + version "1.0.10" + resolved "https://registry.yarnpkg.com/omggif/-/omggif-1.0.10.tgz#ddaaf90d4a42f532e9e7cb3a95ecdd47f17c7b19" + integrity sha512-LMJTtvgc/nugXj0Vcrrs68Mn2D1r0zf630VNtqtpI1FEO7e+O9FP4gqs9AcnBaSEeoHIPm28u6qgPR0oyEpGSw== + +path-key@^3.1.0: + version "3.1.1" + resolved "https://registry.yarnpkg.com/path-key/-/path-key-3.1.1.tgz#581f6ade658cbba65a0d3380de7753295054f375" + integrity sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q== + +pngjs@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/pngjs/-/pngjs-5.0.0.tgz#e79dd2b215767fd9c04561c01236df960bce7fbb" + integrity sha512-40QW5YalBNfQo5yRYmiw7Yz6TKKVr3h6970B2YE+3fQpsWcrbj1PzJgxeJ19DRQjhMbKPIuMY8rFaXc8moolVw== + +setimmediate@^1.0.5: + version "1.0.5" + resolved "https://registry.yarnpkg.com/setimmediate/-/setimmediate-1.0.5.tgz#290cbb232e306942d7d7ea9b83732ab7856f8285" + integrity sha1-KQy7Iy4waULX1+qbg3Mqt4VvgoU= + +seventh@^0.7.40: + version "0.7.40" + resolved "https://registry.yarnpkg.com/seventh/-/seventh-0.7.40.tgz#a5a010496cb84421bb81f524840484a5aa473be9" + integrity sha512-7sxUydQx4iEh17uJUFjZDAwbffJirldZaNIJvVB/hk9mPEL3J4GpLGSL+mHFH2ydkye46DAsLGqzFJ+/Qj5foQ== + dependencies: + setimmediate "^1.0.5" + +shebang-command@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/shebang-command/-/shebang-command-2.0.0.tgz#ccd0af4f8835fbdc265b82461aaf0c36663f34ea" + integrity sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA== + dependencies: + shebang-regex "^3.0.0" + +shebang-regex@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/shebang-regex/-/shebang-regex-3.0.0.tgz#ae16f1644d873ecad843b0307b143362d4c42172" + integrity sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A== + +sisteransi@^1.0.5: + version "1.0.5" + resolved "https://registry.yarnpkg.com/sisteransi/-/sisteransi-1.0.5.tgz#134d681297756437cc05ca01370d3a7a571075ed" + integrity sha512-bLGGlR1QxBcynn2d5YmDX4MGjlZvy2MRBDRNHLJ8VI6l6+9FUiyTFNJ0IveOSP0bcXgVDPRcfGqA0pjaqUpfVg== + +string-kit@^0.12.5: + version "0.12.5" + resolved "https://registry.yarnpkg.com/string-kit/-/string-kit-0.12.5.tgz#e7f646e7740e54b7ecae6cf67b73bb616aa16652" + integrity sha512-aB7yK0RgOx3SElEfQ6lZu2xS5hWr4ToJispiy+djJ4yh3f2zaTMCm44ZrHZnN1RiQQCLfpa5Btz2bishyBm8IQ== + +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" + 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.yarnpkg.com/tree-kit/-/tree-kit-0.7.0.tgz#f677b10f79d9b4442ba20e0d87c8a12ecabe5fbb" + integrity sha512-MAqFo2oJJ39zmxq3xETx0nMAgZw2z6pnJPjIAehEcrDaeePDhBBTshAlyhCDtezMDTIu1Av+vGE501xN3Sh8VA== + +uniq@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/uniq/-/uniq-1.0.1.tgz#b31c5ae8254844a3a8281541ce2b04b865a734ff" + integrity sha1-sxxa6CVIRKOoKBVBzisEuGWnNP8= + +which@^2.0.1: + version "2.0.2" + resolved "https://registry.yarnpkg.com/which/-/which-2.0.2.tgz#7c6a8dd0a636a0327e10b59c9286eee93f3f51b1" + integrity sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA== + dependencies: + isexe "^2.0.0" diff --git a/test/trees.v b/test/trees.v deleted file mode 100644 index 7c5f230..0000000 --- a/test/trees.v +++ /dev/null @@ -1,11 +0,0 @@ -namespace structures; - -member alive; -member age; - -required link land; - -restore { - alive ??= true; - age ??= 0; -} \ No newline at end of file diff --git a/test/tsconfig.json b/test/tsconfig.json new file mode 100644 index 0000000..0472462 --- /dev/null +++ b/test/tsconfig.json @@ -0,0 +1,14 @@ +{ + "compilerOptions": { + "module": "esnext", + "moduleResolution": "node", + "strict": true, + "allowSyntheticDefaultImports": true, + "target": "esnext", + "sourceMap": true, + "declaration": true + }, + "include": [ + "**/*.ts" + ] +} \ No newline at end of file diff --git a/test/world.v b/test/world.v deleted file mode 100644 index 2625b35..0000000 --- a/test/world.v +++ /dev/null @@ -1,16 +0,0 @@ -link[] pawns; - -member map; -member size; - -restore { - for(let i = 0; i < 3; i ++) { - - } - - this.size ??= 64; -} - -async render() { - -} \ No newline at end of file diff --git a/test/yarn.lock b/test/yarn.lock deleted file mode 100644 index d7295b4..0000000 --- a/test/yarn.lock +++ /dev/null @@ -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" diff --git a/tests/lexer.js b/tests/lexer.js deleted file mode 100644 index 9ec60c3..0000000 --- a/tests/lexer.js +++ /dev/null @@ -1,39 +0,0 @@ -import { createAst } from './../out/createAst.js'; -import { expect } from 'chai'; -import * as ModuleFiles from './lib/ModuleFiles.js' - -describe('Lexer', () => { - describe('namespaces', () => { - it('parses namespaces without dots', () => { - const ast = createAst(ModuleFiles.namespaceX); - expect(ast).to.deep.equal([{type: 'namespace', namespace: 'x'}]); - }); - it('parses namespaces with a single dot', () => { - const ast = createAst(ModuleFiles.namespaceXY); - expect(ast).to.deep.equal([{type: 'namespace', namespace: 'x.y'}]); - }); - it('parses namespaces two dots', () => { - const ast = createAst(ModuleFiles.namespaceXYZ); - expect(ast).to.deep.equal([{type: 'namespace', namespace: 'x.y.z'}]); - }); - }) - - describe('links', () => { - it('parses link', () => { - const ast = createAst(ModuleFiles.link); - expect(ast).to.deep.equal([{type: 'link', array: false, required: false, name: 'test'}]); - }); - it('parses required link', () => { - const ast = createAst(ModuleFiles.requiredLink); - expect(ast).to.deep.equal([{type: 'link', array: false, required: true, name: 'test'}]); - }); - it('parses link array', () => { - const ast = createAst(ModuleFiles.linkArray); - expect(ast).to.deep.equal([{type: 'link', array: true, required: false, name: 'test'}]); - }); - it('parses required link array', () => { - const ast = createAst(ModuleFiles.requiredLinkArray); - expect(ast).to.deep.equal([{type: 'link', array: true, required: true, name: 'test'}]); - }); - }) -}) \ No newline at end of file diff --git a/tests/lib/ModuleFiles.js b/tests/lib/ModuleFiles.js deleted file mode 100644 index 1432925..0000000 --- a/tests/lib/ModuleFiles.js +++ /dev/null @@ -1,16 +0,0 @@ - -import { resolve, parse } from 'path'; -import { fileURLToPath } from 'node:url'; - -function file(str) { - return resolve(parse(fileURLToPath(import.meta.url)).dir, '..', 'modules', str + '.v') -} - -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'); diff --git a/yarn.lock b/yarn.lock index 8bec488..78466cd 100644 --- a/yarn.lock +++ b/yarn.lock @@ -2,6 +2,67 @@ # yarn lockfile v1 +"@bcoe/v8-coverage@^0.2.3": + version "0.2.3" + resolved "https://registry.yarnpkg.com/@bcoe/v8-coverage/-/v8-coverage-0.2.3.tgz#75a2e8b51cb758a7553d6804a5932d7aace75c39" + integrity sha512-0hYQ8SB4Db5zvZB4axdMHGwEaQjkZzFjQiN9LVYvIFB2nSUHW9tYpxWriPrWDASIxiaXax83REcLxuSdnGPZtw== + +"@istanbuljs/schema@^0.1.2": + version "0.1.3" + resolved "https://registry.yarnpkg.com/@istanbuljs/schema/-/schema-0.1.3.tgz#e45e384e4b8ec16bce2fd903af78450f6bf7ec98" + integrity sha512-ZXRY4jNvVgSVQ8DL3LTcakaAtXwTVUxE81hslsyD2AtoXW/wVob10HkOJ1X/pAlcI7D+2YoZKg5do8G/w6RYgA== + +"@jest/types@^26.6.2": + version "26.6.2" + resolved "https://registry.yarnpkg.com/@jest/types/-/types-26.6.2.tgz#bef5a532030e1d88a2f5a6d933f84e97226ed48e" + integrity sha512-fC6QCp7Sc5sX6g8Tvbmj4XUTbyrik0akgRy03yjXbQaBWWNWGE7SGtJk98m0N8nzegD/7SggrUlivxo5ax4KWQ== + dependencies: + "@types/istanbul-lib-coverage" "^2.0.0" + "@types/istanbul-reports" "^3.0.0" + "@types/node" "*" + "@types/yargs" "^15.0.0" + chalk "^4.0.0" + +"@sinonjs/commons@^1.6.0", "@sinonjs/commons@^1.7.0", "@sinonjs/commons@^1.8.1": + version "1.8.3" + resolved "https://registry.yarnpkg.com/@sinonjs/commons/-/commons-1.8.3.tgz#3802ddd21a50a949b6721ddd72da36e67e7f1b2d" + integrity sha512-xkNcLAn/wZaX14RPlwizcKicDk9G3F8m2nU3L7Ukm5zBgTwiT0wsoFAHx9Jq56fJA1z/7uKGtCRu16sOUCLIHQ== + dependencies: + type-detect "4.0.8" + +"@sinonjs/fake-timers@^6.0.0", "@sinonjs/fake-timers@^6.0.1": + version "6.0.1" + resolved "https://registry.yarnpkg.com/@sinonjs/fake-timers/-/fake-timers-6.0.1.tgz#293674fccb3262ac782c7aadfdeca86b10c75c40" + integrity sha512-MZPUxrmFubI36XS1DI3qmI0YdN1gks62JtFZvxR67ljjSNCeK6U08Zx4msEWOXuofgqUt6zPHSi1H9fbjR/NRA== + dependencies: + "@sinonjs/commons" "^1.7.0" + +"@sinonjs/fake-timers@^7.0.4": + version "7.1.0" + resolved "https://registry.yarnpkg.com/@sinonjs/fake-timers/-/fake-timers-7.1.0.tgz#8f13af27d842cbf51ad4502e05562fe9391d084e" + integrity sha512-hAEzXi6Wbvlb67NnGMGSNOeAflLVnMa4yliPU/ty1qjgW/vAletH15/v/esJwASSIA0YlIyjnloenFbEZc9q9A== + dependencies: + "@sinonjs/commons" "^1.7.0" + +"@sinonjs/samsam@^5.3.1": + version "5.3.1" + resolved "https://registry.yarnpkg.com/@sinonjs/samsam/-/samsam-5.3.1.tgz#375a45fe6ed4e92fca2fb920e007c48232a6507f" + integrity sha512-1Hc0b1TtyfBu8ixF/tpfSHTVWKwCBLY4QJbkgnE7HcwyvT2xArDxb4K7dMgqRm3szI+LJbzmW/s4xxEhv6hwDg== + dependencies: + "@sinonjs/commons" "^1.6.0" + lodash.get "^4.4.2" + type-detect "^4.0.8" + +"@sinonjs/text-encoding@^0.7.1": + version "0.7.1" + resolved "https://registry.yarnpkg.com/@sinonjs/text-encoding/-/text-encoding-0.7.1.tgz#8da5c6530915653f3a1f38fd5f101d8c3f8079c5" + integrity sha512-+iTbntw2IZPb/anVDbypzfQa+ay64MW0Zo8aJ8gZPWMMK6/OubMVb6lUPMagqjOPnmtauXnFCACVl3O7ogjeqQ== + +"@types/chai@^4.2.18": + version "4.2.18" + resolved "https://registry.yarnpkg.com/@types/chai/-/chai-4.2.18.tgz#0c8e298dbff8205e2266606c1ea5fbdba29b46e4" + integrity sha512-rS27+EkB/RE1Iz3u0XtVL5q36MGDWbgYe7zWiodyKNUnthxY0rukK5V36eiUCtCisB7NN8zKYH6DO2M37qxFEQ== + "@types/debug@^4.1.5": version "4.1.5" resolved "https://registry.npmjs.org/@types/debug/-/debug-4.1.5.tgz" @@ -13,6 +74,33 @@ dependencies: "@types/node" "*" +"@types/istanbul-lib-coverage@*", "@types/istanbul-lib-coverage@^2.0.0", "@types/istanbul-lib-coverage@^2.0.1": + version "2.0.3" + resolved "https://registry.yarnpkg.com/@types/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.3.tgz#4ba8ddb720221f432e443bd5f9117fd22cfd4762" + integrity sha512-sz7iLqvVUg1gIedBOvlkxPlc8/uVzyS5OwGz1cKjXzkl3FpL3al0crU8YGU1WoHkxn0Wxbw5tyi6hvzJKNzFsw== + +"@types/istanbul-lib-report@*": + version "3.0.0" + resolved "https://registry.yarnpkg.com/@types/istanbul-lib-report/-/istanbul-lib-report-3.0.0.tgz#c14c24f18ea8190c118ee7562b7ff99a36552686" + integrity sha512-plGgXAPfVKFoYfa9NpYDAkseG+g6Jr294RqeqcqDixSbU34MZVJRi/P+7Y8GDpzkEwLaGZZOpKIEmeVZNtKsrg== + dependencies: + "@types/istanbul-lib-coverage" "*" + +"@types/istanbul-reports@^3.0.0": + version "3.0.0" + resolved "https://registry.yarnpkg.com/@types/istanbul-reports/-/istanbul-reports-3.0.0.tgz#508b13aa344fa4976234e75dddcc34925737d821" + integrity sha512-nwKNbvnwJ2/mndE9ItP/zc2TCzw6uuodnF4EHYWD+gCQDVBuRQL5UzbZD0/ezy1iKsFU2ZQiDqg4M9dN4+wZgA== + dependencies: + "@types/istanbul-lib-report" "*" + +"@types/jest@^26.0.23": + version "26.0.23" + resolved "https://registry.yarnpkg.com/@types/jest/-/jest-26.0.23.tgz#a1b7eab3c503b80451d019efb588ec63522ee4e7" + integrity sha512-ZHLmWMJ9jJ9PTiT58juykZpL7KjwJywFN3Rr2pTSkyQfydf/rk22yS7W8p5DaVUMQ2BQC7oYiU3FjbTM/mYrOA== + dependencies: + jest-diff "^26.0.0" + pretty-format "^26.0.0" + "@types/lodash@^4.14.169": version "4.14.169" resolved "https://registry.npmjs.org/@types/lodash/-/lodash-4.14.169.tgz" @@ -30,6 +118,13 @@ version "15.3.0" resolved "https://registry.npmjs.org/@types/node/-/node-15.3.0.tgz" +"@types/sinon@^10.0.0": + version "10.0.0" + resolved "https://registry.yarnpkg.com/@types/sinon/-/sinon-10.0.0.tgz#eecc3847af03d45ffe53d55aaaaf6ecb28b5e584" + integrity sha512-jDZ55oCKxqlDmoTBBbBBEx+N8ZraUVhggMZ9T5t+6/Dh8/4NiOjSUfpLrPiEwxQDlAe3wpAkoXhWvE6LibtsMQ== + dependencies: + "@sinonjs/fake-timers" "^7.0.4" + "@types/uglify-js@^3.13.0": version "3.13.0" resolved "https://registry.npmjs.org/@types/uglify-js/-/uglify-js-3.13.0.tgz" @@ -41,6 +136,18 @@ resolved "https://registry.yarnpkg.com/@types/uuid/-/uuid-8.3.0.tgz#215c231dff736d5ba92410e6d602050cce7e273f" integrity sha512-eQ9qFW/fhfGJF8WKHGEHZEyVWfZxrT+6CLIJGBcZPfxUh/+BnEj+UCGYMlr9qZuX/2AltsvwrGqp0LhEW8D0zQ== +"@types/yargs-parser@*": + version "20.2.0" + resolved "https://registry.yarnpkg.com/@types/yargs-parser/-/yargs-parser-20.2.0.tgz#dd3e6699ba3237f0348cd085e4698780204842f9" + integrity sha512-37RSHht+gzzgYeobbG+KWryeAW8J33Nhr69cjTqSYymXVZEN9NbRYWoYlRtDhHKPVT1FyNKwaTPC1NynKZpzRA== + +"@types/yargs@^15.0.0": + version "15.0.13" + resolved "https://registry.yarnpkg.com/@types/yargs/-/yargs-15.0.13.tgz#34f7fec8b389d7f3c1fd08026a5763e072d3c6dc" + integrity sha512-kQ5JNTrbDv3Rp5X2n/iUu37IJBDU2gsZ5R/g1/KHOOEc5IKfUFjXT6DENPGduh08I/pamwtEq4oul7gUqKTQDQ== + dependencies: + "@types/yargs-parser" "*" + "@ungap/promise-all-settled@1.1.2": version "1.1.2" resolved "https://registry.yarnpkg.com/@ungap/promise-all-settled/-/promise-all-settled-1.1.2.tgz#aa58042711d6e3275dd37dc597e5d31e8c290a44" @@ -76,6 +183,11 @@ anymatch@~3.1.1: normalize-path "^3.0.0" picomatch "^2.0.4" +arg@^4.1.0: + version "4.1.3" + resolved "https://registry.yarnpkg.com/arg/-/arg-4.1.3.tgz#269fc7ad5b8e42cb63c896d5666017261c144089" + integrity sha512-58S9QDqG0Xx27YwPSt9fJxivjYl432YCwfDMfZ+71RAqUrZef7LrKQZ3LHLOwCS4FLNBplP533Zx895SeOCHvA== + argparse@^2.0.1: version "2.0.1" resolved "https://registry.yarnpkg.com/argparse/-/argparse-2.0.1.tgz#246f50f3ca78a3240f6c997e8a9bd1eac49e4b38" @@ -86,10 +198,6 @@ assertion-error@^1.1.0: resolved "https://registry.yarnpkg.com/assertion-error/-/assertion-error-1.1.0.tgz#e60b6b0e8f301bd97e5375215bda406c85118c0b" integrity sha512-jgsaNduz+ndvGyFt3uSuWqvy4lCnIJiovtouQN5JZHOKCS2QuhEdbcQHFhVksz2N2U9hXJo8odG7ETyWlEeuDw== -async@0.2.10: - version "0.2.10" - resolved "https://registry.npmjs.org/async/-/async-0.2.10.tgz" - balanced-match@^1.0.0: version "1.0.2" resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-1.0.2.tgz#e83e3a7e3f300b34cb9d87f615fa0cbf357690ee" @@ -100,12 +208,6 @@ binary-extensions@^2.0.0: resolved "https://registry.yarnpkg.com/binary-extensions/-/binary-extensions-2.2.0.tgz#75f502eeaf9ffde42fc98829645be4ea76bd9e2d" integrity sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA== -binary-search-tree@0.2.5: - version "0.2.5" - resolved "https://registry.npmjs.org/binary-search-tree/-/binary-search-tree-0.2.5.tgz" - dependencies: - underscore "~1.4.4" - brace-expansion@^1.1.7: version "1.1.11" resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-1.1.11.tgz#3c7fcbf529d87226f3d2f52b966ff5271eb441dd" @@ -126,6 +228,29 @@ browser-stdout@1.3.1: resolved "https://registry.yarnpkg.com/browser-stdout/-/browser-stdout-1.3.1.tgz#baa559ee14ced73452229bad7326467c61fabd60" integrity sha512-qhAVI1+Av2X7qelOfAIYwXONood6XlZE/fXaBSmW/T5SzLAmCgzi+eiWE7fUvbHaeNBQH13UftjpXxsfLkMpgw== +buffer-from@^1.0.0: + version "1.1.1" + resolved "https://registry.yarnpkg.com/buffer-from/-/buffer-from-1.1.1.tgz#32713bc028f75c02fdb710d7c7bcec1f2c6070ef" + integrity sha512-MQcXEUbCKtEo7bhqEs6560Hyd4XaovZlO/k9V3hjVUF/zwW7KBVdSK4gIt/bzwS9MbR5qob+F5jusZsb0YQK2A== + +c8@^7.7.2: + version "7.7.2" + resolved "https://registry.yarnpkg.com/c8/-/c8-7.7.2.tgz#30ff37b8125d96cab3eb065895a0b68dbc495a0f" + integrity sha512-8AqNnUMxB3hsgYCYso2GJjlwnaNPlrEEbYbCQb7N76V1nrOgCKXiTcE3gXU18rIj0FeduPywROrIBMC7XAKApg== + dependencies: + "@bcoe/v8-coverage" "^0.2.3" + "@istanbuljs/schema" "^0.1.2" + find-up "^5.0.0" + foreground-child "^2.0.0" + istanbul-lib-coverage "^3.0.0" + istanbul-lib-report "^3.0.0" + istanbul-reports "^3.0.2" + rimraf "^3.0.0" + test-exclude "^6.0.0" + v8-to-istanbul "^7.1.0" + yargs "^16.2.0" + yargs-parser "^20.2.7" + camelcase@^6.0.0: version "6.2.0" resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-6.2.0.tgz#924af881c9d525ac9d87f40d964e5cea982a1809" @@ -201,13 +326,25 @@ concat-map@0.0.1: resolved "https://registry.yarnpkg.com/concat-map/-/concat-map-0.0.1.tgz#d8a96bd77fd68df7793a73036a3ba0d5405d477b" integrity sha1-2Klr13/Wjfd5OnMDajug1UBdR3s= +convert-source-map@^1.6.0: + version "1.7.0" + resolved "https://registry.yarnpkg.com/convert-source-map/-/convert-source-map-1.7.0.tgz#17a2cb882d7f77d3490585e2ce6c524424a3a442" + integrity sha512-4FJkXzKXEDB1snCFZlLP4gpC3JILicCpGbzG9f9G7tGqGCzETQ2hWPrcinA9oU4wtf2biUaEH5065UnMeR33oA== + dependencies: + safe-buffer "~5.1.1" + +create-require@^1.1.0: + version "1.1.1" + resolved "https://registry.yarnpkg.com/create-require/-/create-require-1.1.1.tgz#c1d7e8f1e5f6cfc9ff65f9cd352d37348756c333" + integrity sha512-dcKFX3jn0MpIaXjisoRvexIJVEKzaq7z2rZKxf+MSr9TkdmHmsU4m2lcLojrj/FHl8mk5VxMmYA+ftRkP/3oKQ== + cross-env@^7.0.3: version "7.0.3" resolved "https://registry.npmjs.org/cross-env/-/cross-env-7.0.3.tgz" dependencies: cross-spawn "^7.0.1" -cross-spawn@^7.0.1: +cross-spawn@^7.0.0, cross-spawn@^7.0.1: version "7.0.3" resolved "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz" dependencies: @@ -233,11 +370,21 @@ deep-eql@^3.0.1: dependencies: type-detect "^4.0.0" +diff-sequences@^26.6.2: + version "26.6.2" + resolved "https://registry.yarnpkg.com/diff-sequences/-/diff-sequences-26.6.2.tgz#48ba99157de1923412eed41db6b6d4aa9ca7c0b1" + integrity sha512-Mv/TDa3nZ9sbc5soK+OoA74BsS3mL37yixCvUAQkiuA4Wz6YtwP/K47n2rv2ovzHZvoiQeA5FTQOschKkEwB0Q== + diff@5.0.0: version "5.0.0" resolved "https://registry.yarnpkg.com/diff/-/diff-5.0.0.tgz#7ed6ad76d859d030787ec35855f5b1daf31d852b" integrity sha512-/VTCrvm5Z0JGty/BWHljh+BAiw3IK+2j87NGMu8Nwc/f48WoDAC395uomO9ZD117ZOBaHmkX1oyLvkVM/aIT3w== +diff@^4.0.1, diff@^4.0.2: + version "4.0.2" + resolved "https://registry.yarnpkg.com/diff/-/diff-4.0.2.tgz#60f3aecb89d5fae520c11aa19efc2bb982aade7d" + integrity sha512-58lmxKSA4BNyLz+HHMUzlOEpg09FV+ev6ZMe3vJihgdxzgcwZ8VoEEPmALCZG9LmqfVoNMMKpttIYTVG6uDY7A== + discontinuous-range@1.0.0: version "1.0.0" resolved "https://registry.npmjs.org/discontinuous-range/-/discontinuous-range-1.0.0.tgz" @@ -257,6 +404,11 @@ escape-string-regexp@4.0.0: resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz#14ba83a5d373e3d311e5afca29cf5bfad965bf34" integrity sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA== +esm@^3.2.25: + version "3.2.25" + resolved "https://registry.yarnpkg.com/esm/-/esm-3.2.25.tgz#342c18c29d56157688ba5ce31f8431fbb795cc10" + integrity sha512-U1suiZ2oDVWv4zPO56S0NcR5QriEahGtdN2OR6FiOG4WJvcjBVFB0qI4+eKoWFH483PKGuLuu6V8Z4T5g63UVA== + fill-range@^7.0.1: version "7.0.1" resolved "https://registry.yarnpkg.com/fill-range/-/fill-range-7.0.1.tgz#1919a6a7c75fe38b2c7c77e5198535da9acdda40" @@ -264,7 +416,7 @@ fill-range@^7.0.1: dependencies: to-regex-range "^5.0.1" -find-up@5.0.0: +find-up@5.0.0, find-up@^5.0.0: version "5.0.0" resolved "https://registry.yarnpkg.com/find-up/-/find-up-5.0.0.tgz#4c92819ecb7083561e4f4a240a86be5198f536fc" integrity sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng== @@ -277,6 +429,14 @@ flat@^5.0.2: resolved "https://registry.yarnpkg.com/flat/-/flat-5.0.2.tgz#8ca6fe332069ffa9d324c327198c598259ceb241" integrity sha512-b6suED+5/3rTpUBdG1gupIl8MPFCAMA0QXwmljLhvCUKcUvdE4gWky9zpuGCcXHOsz4J9wPGNWq6OKpmIzz3hQ== +foreground-child@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/foreground-child/-/foreground-child-2.0.0.tgz#71b32800c9f15aa8f2f83f4a6bd9bff35d861a53" + integrity sha512-dCIq9FpEcyQyXKCkyzmlPTFNgrCzPudOe+mhvJU5zAtlBnGVy2yKxtfsxK2tQBThwq225jcvBjpw1Gr40uzZCA== + dependencies: + cross-spawn "^7.0.0" + signal-exit "^3.0.2" + fs-extra@^10.0.0: version "10.0.0" resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-10.0.0.tgz#9ff61b655dde53fb34a82df84bb214ce802e17c1" @@ -325,6 +485,18 @@ glob@7.1.6: once "^1.3.0" path-is-absolute "^1.0.0" +glob@^7.1.3, glob@^7.1.4: + version "7.1.7" + resolved "https://registry.yarnpkg.com/glob/-/glob-7.1.7.tgz#3b193e9233f01d42d0b3f78294bbeeb418f94a90" + integrity sha512-OvD9ENzPLbegENnYP5UUfJIirTg4+XwMWGaQfQTY0JenxNvvIKP3U3/tAQSPIu/lHxXYSZmpXlUHeqAIdKzBLQ== + dependencies: + fs.realpath "^1.0.0" + inflight "^1.0.4" + inherits "2" + minimatch "^3.0.4" + once "^1.3.0" + path-is-absolute "^1.0.0" + graceful-fs@^4.1.6, graceful-fs@^4.2.0: version "4.2.6" resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.2.6.tgz#ff040b2b0853b23c3d31027523706f1885d76bee" @@ -345,9 +517,10 @@ he@1.2.0: resolved "https://registry.yarnpkg.com/he/-/he-1.2.0.tgz#84ae65fa7eafb165fddb61566ae14baf05664f0f" integrity sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw== -immediate@~3.0.5: - version "3.0.6" - resolved "https://registry.npmjs.org/immediate/-/immediate-3.0.6.tgz" +html-escaper@^2.0.0: + version "2.0.2" + resolved "https://registry.yarnpkg.com/html-escaper/-/html-escaper-2.0.2.tgz#dfd60027da36a36dfcbe236262c00a5822681453" + integrity sha512-H2iMtd0I4Mt5eYiapRdIDjp+XzelXQ0tFE4JS7YFwFevXXMmOp9myNrUvCg0D6ws8iqkRPBfKHgbwig1SmlLfg== inflight@^1.0.4: version "1.0.6" @@ -401,10 +574,52 @@ is-plain-obj@^2.1.0: resolved "https://registry.yarnpkg.com/is-plain-obj/-/is-plain-obj-2.1.0.tgz#45e42e37fccf1f40da8e5f76ee21515840c09287" integrity sha512-YWnfyRwxL/+SsrWYfOpUtz5b3YD+nyfkHvjbcanzk8zgyO4ASD67uVMRt8k5bM4lLMDnXfriRhOpemw+NfT1eA== +isarray@0.0.1: + version "0.0.1" + resolved "https://registry.yarnpkg.com/isarray/-/isarray-0.0.1.tgz#8a18acfca9a8f4177e09abfc6038939b05d1eedf" + integrity sha1-ihis/Kmo9Bd+Cav8YDiTmwXR7t8= + isexe@^2.0.0: version "2.0.0" resolved "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz" +istanbul-lib-coverage@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/istanbul-lib-coverage/-/istanbul-lib-coverage-3.0.0.tgz#f5944a37c70b550b02a78a5c3b2055b280cec8ec" + integrity sha512-UiUIqxMgRDET6eR+o5HbfRYP1l0hqkWOs7vNxC/mggutCMUIhWMm8gAHb8tHlyfD3/l6rlgNA5cKdDzEAf6hEg== + +istanbul-lib-report@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/istanbul-lib-report/-/istanbul-lib-report-3.0.0.tgz#7518fe52ea44de372f460a76b5ecda9ffb73d8a6" + integrity sha512-wcdi+uAKzfiGT2abPpKZ0hSU1rGQjUQnLvtY5MpQ7QCTahD3VODhcu4wcfY1YtkGaDD5yuydOLINXsfbus9ROw== + dependencies: + istanbul-lib-coverage "^3.0.0" + make-dir "^3.0.0" + supports-color "^7.1.0" + +istanbul-reports@^3.0.2: + version "3.0.2" + resolved "https://registry.yarnpkg.com/istanbul-reports/-/istanbul-reports-3.0.2.tgz#d593210e5000683750cb09fc0644e4b6e27fd53b" + integrity sha512-9tZvz7AiR3PEDNGiV9vIouQ/EAcqMXFmkcA1CDFTwOB98OZVDL0PH9glHotf5Ugp6GCOTypfzGWI/OqjWNCRUw== + dependencies: + html-escaper "^2.0.0" + istanbul-lib-report "^3.0.0" + +jest-diff@^26.0.0: + version "26.6.2" + resolved "https://registry.yarnpkg.com/jest-diff/-/jest-diff-26.6.2.tgz#1aa7468b52c3a68d7d5c5fdcdfcd5e49bd164394" + integrity sha512-6m+9Z3Gv9wN0WFVasqjCL/06+EFCMTqDEUl/b87HYK2rAPTyfz4ZIuSlPhY51PIQRWx5TaxeF1qmXKe9gfN3sA== + dependencies: + chalk "^4.0.0" + diff-sequences "^26.6.2" + jest-get-type "^26.3.0" + pretty-format "^26.6.2" + +jest-get-type@^26.3.0: + version "26.3.0" + resolved "https://registry.yarnpkg.com/jest-get-type/-/jest-get-type-26.3.0.tgz#e97dc3c3f53c2b406ca7afaed4493b1d099199e0" + integrity sha512-TpfaviN1R2pQWkIihlfEanwOXK0zcxrKEE4MlU6Tn7keoXdN6/3gK/xl0yEh8DOunn5pOVGKf8hB4R9gVh04ig== + js-yaml@4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-4.0.0.tgz#f426bc0ff4b4051926cd588c71113183409a121f" @@ -421,17 +636,10 @@ jsonfile@^6.0.1: optionalDependencies: graceful-fs "^4.1.6" -lie@3.1.1: - version "3.1.1" - resolved "https://registry.npmjs.org/lie/-/lie-3.1.1.tgz" - dependencies: - immediate "~3.0.5" - -localforage@^1.3.0: - version "1.9.0" - resolved "https://registry.npmjs.org/localforage/-/localforage-1.9.0.tgz" - dependencies: - lie "3.1.1" +just-extend@^4.0.2: + version "4.2.1" + resolved "https://registry.yarnpkg.com/just-extend/-/just-extend-4.2.1.tgz#ef5e589afb61e5d66b24eca749409a8939a8c744" + integrity sha512-g3UB796vUFIY90VIv/WX3L2c8CS2MdWUww3CNrYmqza1Fg0DURc2K/O4YrnklBdQarSJ/y8JnJYDGc+1iumQjg== locate-path@^6.0.0: version "6.0.0" @@ -440,6 +648,11 @@ locate-path@^6.0.0: dependencies: p-locate "^5.0.0" +lodash.get@^4.4.2: + version "4.4.2" + resolved "https://registry.yarnpkg.com/lodash.get/-/lodash.get-4.4.2.tgz#2d177f652fa31e939b4438d5341499dfa3825e99" + integrity sha1-LRd/ZS+jHpObRDjVNBSZ36OCXpk= + lodash@^4.17.21: version "4.17.21" resolved "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz" @@ -451,6 +664,18 @@ log-symbols@4.0.0: dependencies: chalk "^4.0.0" +make-dir@^3.0.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/make-dir/-/make-dir-3.1.0.tgz#415e967046b3a7f1d185277d84aa58203726a13f" + integrity sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw== + dependencies: + semver "^6.0.0" + +make-error@^1.1.1: + version "1.3.6" + resolved "https://registry.yarnpkg.com/make-error/-/make-error-1.3.6.tgz#2eb2e37ea9b67c4891f684a1394799af484cf7a2" + integrity sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw== + minimatch@3.0.4, minimatch@^3.0.4: version "3.0.4" resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.0.4.tgz#5166e286457f03306064be5497e8dbb0c3d32083" @@ -458,15 +683,10 @@ minimatch@3.0.4, minimatch@^3.0.4: dependencies: brace-expansion "^1.1.7" -minimist@^1.2.5: - version "1.2.5" - resolved "https://registry.npmjs.org/minimist/-/minimist-1.2.5.tgz" - -mkdirp@~0.5.1: - version "0.5.5" - resolved "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.5.tgz" - dependencies: - minimist "^1.2.5" +mocha-lcov-reporter@^1.3.0: + version "1.3.0" + resolved "https://registry.yarnpkg.com/mocha-lcov-reporter/-/mocha-lcov-reporter-1.3.0.tgz#469bdef4f8afc9a116056f079df6182d0afb0384" + integrity sha1-Rpve9PivyaEWBW8HnfYYLQr7A4Q= mocha@^8.4.0: version "8.4.0" @@ -526,15 +746,16 @@ nearley@^2.20.1: railroad-diagrams "^1.0.0" randexp "0.4.6" -nedb@^1.8.0: - version "1.8.0" - resolved "https://registry.npmjs.org/nedb/-/nedb-1.8.0.tgz" +nise@^4.1.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/nise/-/nise-4.1.0.tgz#8fb75a26e90b99202fa1e63f448f58efbcdedaf6" + integrity sha512-eQMEmGN/8arp0xsvGoQ+B1qvSkR73B1nWSCh7nOt5neMCtwcQVYQGdzQMhcNscktTsWB54xnlSQFzOAPJD8nXA== dependencies: - async "0.2.10" - binary-search-tree "0.2.5" - localforage "^1.3.0" - mkdirp "~0.5.1" - underscore "~1.4.4" + "@sinonjs/commons" "^1.7.0" + "@sinonjs/fake-timers" "^6.0.0" + "@sinonjs/text-encoding" "^0.7.1" + just-extend "^4.0.2" + path-to-regexp "^1.7.0" normalize-path@^3.0.0, normalize-path@~3.0.0: version "3.0.0" @@ -576,6 +797,13 @@ path-key@^3.1.0: version "3.1.1" resolved "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz" +path-to-regexp@^1.7.0: + version "1.8.0" + resolved "https://registry.yarnpkg.com/path-to-regexp/-/path-to-regexp-1.8.0.tgz#887b3ba9d84393e87a0a0b9f4cb756198b53548a" + integrity sha512-n43JRhlUKUAlibEJhPeir1ncUID16QnEjNpwzNdO3Lm4ywrBpBZ5oLD0I6br9evr1Y9JTqwRtAh7JLoOzAQdVA== + dependencies: + isarray "0.0.1" + pathval@^1.1.1: version "1.1.1" resolved "https://registry.yarnpkg.com/pathval/-/pathval-1.1.1.tgz#8534e77a77ce7ac5a2512ea21e0fdb8fcf6c3d8d" @@ -586,6 +814,16 @@ picomatch@^2.0.4, picomatch@^2.2.1: resolved "https://registry.yarnpkg.com/picomatch/-/picomatch-2.3.0.tgz#f1f061de8f6a4bf022892e2d128234fb98302972" integrity sha512-lY1Q/PiJGC2zOv/z391WOTD+Z02bCgsFfvxoXXf6h7kv9o+WmsmzYqrAwY63sNgOxE4xEdq0WyUnXfKeBrSvYw== +pretty-format@^26.0.0, pretty-format@^26.6.2: + version "26.6.2" + resolved "https://registry.yarnpkg.com/pretty-format/-/pretty-format-26.6.2.tgz#e35c2705f14cb7fe2fe94fa078345b444120fc93" + integrity sha512-7AeGuCYNGmycyQbCqd/3PWH4eOoX/OiCa0uphp57NVTeAGdJGaAliecxwBDHYQCIvrW7aDBZCYeNTP/WX69mkg== + dependencies: + "@jest/types" "^26.6.2" + ansi-regex "^5.0.0" + ansi-styles "^4.0.0" + react-is "^17.0.1" + railroad-diagrams@^1.0.0: version "1.0.0" resolved "https://registry.npmjs.org/railroad-diagrams/-/railroad-diagrams-1.0.0.tgz" @@ -604,6 +842,11 @@ randombytes@^2.1.0: dependencies: safe-buffer "^5.1.0" +react-is@^17.0.1: + version "17.0.2" + resolved "https://registry.yarnpkg.com/react-is/-/react-is-17.0.2.tgz#e691d4a8e9c789365655539ab372762b0efb54f0" + integrity sha512-w2GsyukL62IJnlaff/nRegPQR94C/XXamvMWmSHRJ4y7Ts/4ocGRmTHvOs8PSE6pB3dWOrD/nueuU5sduBsQ4w== + readdirp@~3.5.0: version "3.5.0" resolved "https://registry.yarnpkg.com/readdirp/-/readdirp-3.5.0.tgz#9ba74c019b15d365278d2e91bb8c48d7b4d42c9e" @@ -620,11 +863,28 @@ ret@~0.1.10: version "0.1.15" resolved "https://registry.npmjs.org/ret/-/ret-0.1.15.tgz" +rimraf@^3.0.0: + version "3.0.2" + resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-3.0.2.tgz#f1a5402ba6220ad52cc1282bac1ae3aa49fd061a" + integrity sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA== + dependencies: + glob "^7.1.3" + safe-buffer@^5.1.0: version "5.2.1" resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.2.1.tgz#1eaf9fa9bdb1fdd4ec75f58f9cdb4e6b7827eec6" integrity sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ== +safe-buffer@~5.1.1: + version "5.1.2" + resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.1.2.tgz#991ec69d296e0313747d59bdfd2b745c35f8828d" + integrity sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g== + +semver@^6.0.0: + version "6.3.0" + resolved "https://registry.yarnpkg.com/semver/-/semver-6.3.0.tgz#ee0a64c8af5e8ceea67687b133761e1becbd1d3d" + integrity sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw== + serialize-javascript@5.0.1: version "5.0.1" resolved "https://registry.yarnpkg.com/serialize-javascript/-/serialize-javascript-5.0.1.tgz#7886ec848049a462467a97d3d918ebb2aaf934f4" @@ -642,10 +902,40 @@ shebang-regex@^3.0.0: version "3.0.0" resolved "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz" -source-map@^0.6.1: +signal-exit@^3.0.2: + version "3.0.3" + resolved "https://registry.yarnpkg.com/signal-exit/-/signal-exit-3.0.3.tgz#a1410c2edd8f077b08b4e253c8eacfcaf057461c" + integrity sha512-VUJ49FC8U1OxwZLxIbTTrDvLnf/6TDgxZcK8wxR8zs13xpx7xbG60ndBlhNrFi2EMuFRoeDoJO7wthSLq42EjA== + +sinon@^10.0.0: + version "10.0.0" + resolved "https://registry.yarnpkg.com/sinon/-/sinon-10.0.0.tgz#52279f97e35646ff73d23207d0307977c9b81430" + integrity sha512-XAn5DxtGVJBlBWYrcYKEhWCz7FLwZGdyvANRyK06419hyEpdT0dMc5A8Vcxg5SCGHc40CsqoKsc1bt1CbJPfNw== + dependencies: + "@sinonjs/commons" "^1.8.1" + "@sinonjs/fake-timers" "^6.0.1" + "@sinonjs/samsam" "^5.3.1" + diff "^4.0.2" + nise "^4.1.0" + supports-color "^7.1.0" + +source-map-support@^0.5.17: + version "0.5.19" + resolved "https://registry.yarnpkg.com/source-map-support/-/source-map-support-0.5.19.tgz#a98b62f86dcaf4f67399648c085291ab9e8fed61" + integrity sha512-Wonm7zOCIJzBGQdB+thsPar0kYuCIzYvxZwlBa87yi/Mdjv7Tip2cyVbLj5o0cFPN4EVkuTwb3GDDyUx2DGnGw== + dependencies: + buffer-from "^1.0.0" + source-map "^0.6.0" + +source-map@^0.6.0, source-map@^0.6.1: version "0.6.1" resolved "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz" +source-map@^0.7.3: + version "0.7.3" + resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.7.3.tgz#5302f8169031735226544092e64981f751750383" + integrity sha512-CkCj6giN3S+n9qrYiBTX5gystlENnRW5jZeNLHpe6aue+SrHcG5VYwujhW9s4dY31mEGsxBDrHR6oI69fTXsaQ== + "string-width@^1.0.2 || 2": version "2.1.1" resolved "https://registry.yarnpkg.com/string-width/-/string-width-2.1.1.tgz#ab93f27a8dc13d28cac815c462143a6d9012ae9e" @@ -700,6 +990,15 @@ supports-color@^7.1.0: dependencies: has-flag "^4.0.0" +test-exclude@^6.0.0: + version "6.0.0" + resolved "https://registry.yarnpkg.com/test-exclude/-/test-exclude-6.0.0.tgz#04a8698661d805ea6fa293b6cb9e63ac044ef15e" + integrity sha512-cAGWPIyOHU6zlmg88jwm7VRyXnMN7iV68OGAbYDk/Mh/xC/pzVPlQtY6ngoIH/5/tciuhGfvESU8GrHrcxD56w== + dependencies: + "@istanbuljs/schema" "^0.1.2" + glob "^7.1.4" + minimatch "^3.0.4" + to-regex-range@^5.0.1: version "5.0.1" resolved "https://registry.yarnpkg.com/to-regex-range/-/to-regex-range-5.0.1.tgz#1648c44aae7c8d988a326018ed72f5b4dd0392e4" @@ -707,7 +1006,19 @@ to-regex-range@^5.0.1: dependencies: is-number "^7.0.0" -type-detect@^4.0.0, type-detect@^4.0.5: +ts-node@^9.1.1: + version "9.1.1" + resolved "https://registry.yarnpkg.com/ts-node/-/ts-node-9.1.1.tgz#51a9a450a3e959401bda5f004a72d54b936d376d" + integrity sha512-hPlt7ZACERQGf03M253ytLY3dHbGNGrAq9qIHWUY9XHYl1z7wYngSr3OQ5xmui8o2AaxsONxIzjafLUiWBo1Fg== + dependencies: + arg "^4.1.0" + create-require "^1.1.0" + diff "^4.0.1" + make-error "^1.1.1" + source-map-support "^0.5.17" + yn "3.1.1" + +type-detect@4.0.8, type-detect@^4.0.0, type-detect@^4.0.5, type-detect@^4.0.8: version "4.0.8" resolved "https://registry.yarnpkg.com/type-detect/-/type-detect-4.0.8.tgz#7646fb5f18871cfbb7749e69bd39a6388eb7450c" integrity sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g== @@ -720,10 +1031,6 @@ uglify-js@^3.13.5: version "3.13.5" resolved "https://registry.npmjs.org/uglify-js/-/uglify-js-3.13.5.tgz" -underscore@~1.4.4: - version "1.4.4" - resolved "https://registry.npmjs.org/underscore/-/underscore-1.4.4.tgz" - universalify@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/universalify/-/universalify-2.0.0.tgz#75a4984efedc4b08975c5aeb73f530d02df25717" @@ -734,6 +1041,15 @@ uuid@^8.3.2: resolved "https://registry.yarnpkg.com/uuid/-/uuid-8.3.2.tgz#80d5b5ced271bb9af6c445f21a1a04c606cefbe2" integrity sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg== +v8-to-istanbul@^7.1.0: + version "7.1.2" + resolved "https://registry.yarnpkg.com/v8-to-istanbul/-/v8-to-istanbul-7.1.2.tgz#30898d1a7fa0c84d225a2c1434fb958f290883c1" + integrity sha512-TxNb7YEUwkLXCQYeudi6lgQ/SZrzNO4kMdlqVxaZPUIUjCv6iSSypUQX70kNBSERpQ8fk48+d61FXk+tgqcWow== + dependencies: + "@types/istanbul-lib-coverage" "^2.0.1" + convert-source-map "^1.6.0" + source-map "^0.7.3" + which@2.0.2, which@^2.0.1: version "2.0.2" resolved "https://registry.npmjs.org/which/-/which-2.0.2.tgz" @@ -776,7 +1092,7 @@ yargs-parser@20.2.4: resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-20.2.4.tgz#b42890f14566796f85ae8e3a25290d205f154a54" integrity sha512-WOkpgNhPTlE73h4VFAFsOnomJVaovO8VqLDzy5saChRBFQFBoMYirowyW+Q9HB4HFF4Z7VZTiG3iSzJJA29yRA== -yargs-parser@^20.2.2: +yargs-parser@^20.2.2, yargs-parser@^20.2.7: version "20.2.7" resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-20.2.7.tgz#61df85c113edfb5a7a4e36eb8aa60ef423cbc90a" integrity sha512-FiNkvbeHzB/syOjIUxFDCnhSfzAL8R5vs40MgLFBorXACCOAEaWu0gRZl14vG8MR9AOJIZbmkjhusqBYZ3HTHw== @@ -791,7 +1107,7 @@ yargs-unparser@2.0.0: flat "^5.0.2" is-plain-obj "^2.1.0" -yargs@16.2.0: +yargs@16.2.0, yargs@^16.2.0: version "16.2.0" resolved "https://registry.yarnpkg.com/yargs/-/yargs-16.2.0.tgz#1c82bf0f6b6a66eafce7ef30e376f49a12477f66" integrity sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw== @@ -808,6 +1124,11 @@ yarn@^1.22.10: version "1.22.10" resolved "https://registry.npmjs.org/yarn/-/yarn-1.22.10.tgz" +yn@3.1.1: + version "3.1.1" + resolved "https://registry.yarnpkg.com/yn/-/yn-3.1.1.tgz#1e87401a09d767c1d5eab26a6e4c185182d2eb50" + integrity sha512-Ux4ygGWsu2c7isFWe8Yu1YluJmqVhxqK2cLXNQA5AcC3QfbGNpM7fu0Y8b/z16pXLnFxZYvWhd3fhBY9DLmC6Q== + yocto-queue@^0.1.0: version "0.1.0" resolved "https://registry.yarnpkg.com/yocto-queue/-/yocto-queue-0.1.0.tgz#0294eb3dee05028d31ee1a5fa2c556a6aaf10a1b"